开发人员有个需求,要求把某个schema中所有对象移到另一个shema中,后来一想,不就是把schema的名字改了就可以了吗?这样就不用移来移去的,准备用DDL语句直接改的:
- alter user scott rename to scott2;
发现根本没有这个语句,后来在网上查了一下,才发现,Oracle本身没有提供这个功能的语句,但有一个数据字典的表:user$,所有的用户都存在这张表中,可以直接update,就尝试着改了一下,发现还挺管用的,实现如下:
- SQL> desc user$; --查看表结构www.linuxidc.com
- Name Null? Type
- ----------------------------------------- -------- --------------
-
- USER# NOT NULL NUMBER
- NAME NOT NULL VARCHAR2(30)
- TYPE# NOT NULL NUMBER
- PASSWORD VARCHAR2(30)
- DATATS# NOT NULL NUMBER
- TEMPTS# NOT NULL NUMBER
- CTIME NOT NULL DATE
- PTIME DATE
- EXPTIME DATE
- LTIME DATE
- RESOURCE$ NOT NULL NUMBER
- AUDIT$ VARCHAR2(38)
- DEFROLE NOT NULL NUMBER
- DEFGRP# NUMBER
- DEFGRP_SEQ# NUMBER
- ASTATUS NOT NULL NUMBER
- LCOUNT NOT NULL NUMBER
- DEFSCHCLASS VARCHAR2(30)
- EXT_USERNAME VARCHAR2(4000)
- SPARE1 NUMBER
- SPARE2 NUMBER
- SPARE3 NUMBER
- SPARE4 VARCHAR2(1000)
- SPARE5 VARCHAR2(1000)
- SPARE6 DATE
-
- SQL> select user#,name from user$ where name="SCOTT"; --找出需要更改的用户
-
- USER# NAME
- ---------- ------------------------------
- 84 SCOTT
-
- SQL> select count(*) from scott.emp;
-
- COUNT(*)
- ----------
- 14
-
- SQL> update user$ set name="SCOTT2" where user#=84; --更改用户名
-
- 1 row updated.
-
- SQL> commit; --记得提交 www.linuxidc.com
- Commit complete.
-
-
- SQL> select count(*) from scott.emp;
-
- COUNT(*)
- ----------
- 14
-
- SQL> alter system checkpoint;
- System altered.
-
- SQL> select count(*) from scott.emp;
-
- COUNT(*)
- ----------
- 14
-
- SQL> alter system flush shared_pool; --刷新shared_pool
- System altered.
-
- SQL> select count(*) from scott.emp;
- select count(*) from scott.emp
- *
- ERROR at line 1:
- ORA-00942: table or view does not exist
-
-
- SQL> select count(*) from scott2.emp; --已经更改成功
-
- COUNT(*)
- ----------
- 14
Oracle RAC环境下vip/public/private IP的区别Oracle中大批量删除数据的方法相关资讯 Oracle数据库 Oracle入门教程 oracle数据库教程
- Oracle数据库全球化 (03月01日)
- Oracle数据库日期过滤方法性能比较 (02/02/2015 13:20:26)
- Oracle数据库安装中端口被占用问题 (10/29/2014 07:42:24)
| - 在CentOS 6.6上搭建C++运行环境并 (10/10/2015 19:44:40)
- Oracle数据库无法使用localhost和 (11/14/2014 16:39:10)
- 使用SQLT来构建Oracle测试用例 (08/28/2014 06:17:41)
|
本文评论 查看全部评论 (0)