Oracle 11.2.0.2新特性——用户重命名(Rename User)
11.2.0.2里新增了一個很有意思的新特性——用戶重命名(Rename User),以前俺們都是Rename datafile呀,tablespace呀,Index呀,抑或是constraint之類,沒想到User也可以重命名的。據說這個DDL操作的需求是來源于SAP: SAP identifies a specific SAP system by the name of the database schema. If the system is renamed, the schema needs also to be renamed. This happens quite often when a database is copied (i.e. for testing purposes) and the system gets therefore a new name. The schema should also get a new name.
廢話不多說,驗證一下先:
創建測試用戶下一個測試表,查看testusr的ID是84
SQL> CREATE TABLE testusr.emp AS SELECT * FROM scott.emp;
SQL> SELECT USERNAME,USER_ID FROM dba_users WHERE created>(sysdate-1);
USERNAME ? ? ? ? ? ? ? ? ? ? ? ? ?USER_ID
------------------------------ ----------
TESTUSR ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?84
啟用重命名特性需要修改隱含參數“_enable_rename_user”,并需要在restrict mode下Rename
SQL> CREATE ?pfile FROM spfile;
[oracle@cdcjp47 dbhome_1]$ vi dbs/initeastdb.ora
-- 添加
*._enable_rename_user=TRUE
SQL> shutdown immediate
SQL> startup restrict pfile='?/dbs/initeastdb.ora'
SQL> ALTER user testusr RENAME TO testusr1 IDENTIFIED BY Welcome1;
SQL> SELECT USERNAME,USER_ID FROM dba_users WHERE created>(sysdate-1);
?
USERNAME ? ? ? ? ? ? ? ? ? ? ? ? ?USER_ID
------------------------------ ----------
TESTUSR1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 84
-- 看看數據,都在的,說明Rename User并不影響Object里面的內容
SQL> SELECT * FROM testusr1.emp;
?? ? EMPNO ENAME ? ?JOB ? ? ? ? ? ? ? MGR HIREDATE ? ? ? ?SAL ? ? ? COMM ? ? DEPTNO
---------- -------- ---------- ---------- -------- ---------- ---------- ----------
?? ? ?7369 SMITH ? ?CLERK ? ? ? ? ? ?7902 80-12-17 ? ? ? ?800 ? ? ? ? ? ? ? ? ? ?20
?? ? ?7499 ALLEN ? ?SALESMAN ? ? ? ? 7698 81-02-20 ? ? ? 1600 ? ? ? ?300 ? ? ? ? 30
?? ? ?7521 WARD ? ? SALESMAN ? ? ? ? 7698 81-02-22 ? ? ? 1250 ? ? ? ?500 ? ? ? ? 30
?? ? ?7566 JONES ? ?MANAGER ? ? ? ? ?7839 81-04-02 ? ? ? 2975 ? ? ? ? ? ? ? ? ? ?20
?? ? ?7654 MARTIN ? SALESMAN ? ? ? ? 7698 81-09-28 ? ? ? 1250 ? ? ? 1400 ? ? ? ? 30
?? ? ?7698 BLAKE ? ?MANAGER ? ? ? ? ?7839 81-05-01 ? ? ? 2850 ? ? ? ? ? ? ? ? ? ?30
?? ? ?7782 CLARK ? ?MANAGER ? ? ? ? ?7839 81-06-09 ? ? ? 2450 ? ? ? ? ? ? ? ? ? ?10
?? ? ?7788 SCOTT ? ?ANALYST ? ? ? ? ?7566 87-04-19 ? ? ? 3000 ? ? ? ? ? ? ? ? ? ?20
?? ? ?7839 KING ? ? PRESIDENT ? ? ? ? ? ? 81-11-17 ? ? ? 5000 ? ? ? ? ? ? ? ? ? ?10
?? ? ?7844 TURNER ? SALESMAN ? ? ? ? 7698 81-09-08 ? ? ? 1500 ? ? ? ? ?0 ? ? ? ? 30
?? ? ?7876 ADAMS ? ?CLERK ? ? ? ? ? ?7788 87-05-23 ? ? ? 1100 ? ? ? ? ? ? ? ? ? ?20
?? ? ?7900 JAMES ? ?CLERK ? ? ? ? ? ?7698 81-12-03 ? ? ? ?950 ? ? ? ? ? ? ? ? ? ?30
?? ? ?7902 FORD ? ? ANALYST ? ? ? ? ?7566 81-12-03 ? ? ? 3000 ? ? ? ? ? ? ? ? ? ?20
?? ? ?7934 MILLER ? CLERK ? ? ? ? ? ?7782 82-01-23 ? ? ? 1300 ? ? ? ? ? ? ? ? ? ?10
注意新用戶名不要和現有用戶名重名
SQL> ALTER user testusr1 RENAME TO scott IDENTIFIED BY 123;
ALTER user testusr1 RENAME TO scott IDENTIFIED BY 123
*
ERROR IN Line 1:
ORA-00604: error occurred at recursive SQL level 1.?
ORA-00001:UNIQUE constraint (SYS.I_USER1) violated
總結
以上是生活随笔為你收集整理的Oracle 11.2.0.2新特性——用户重命名(Rename User)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重命名数据库表空间和数据文件
- 下一篇: Linux下安装rpm出现error: