Oracle 中如何更改用户名

2014-11-24 17:29:52 · 作者: · 浏览: 0

-- 直接修改底层表USER$更改用户名(该方法在Oracle9i中测试通过)


SQL> UPDATE USER$ SET NAME='TT' WHERE USER#=91;


已更新 1 行。


SQL> COMMIT;


提交完成。


SQL> ALTER SYSTEM CHECKPOINT;


系统已更改。


SQL> ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';


ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890'


*


ERROR 位于第 1 行:


ORA-01918: 用户'TT'不存在


  强制 Oracle 读取实际数据,而不是读取缓存


SQL> ALTER SYSTEM FLUSH SHARED_POOL;


系统已更改。


SQL> ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';


用户已更改。


  测试连接


SQL> CONN TT/TT


已连接。


SQL> SELECT * FROM TAB;


TNAME TABTYPE CLUSTERID


------------------------------ ------- ----------


TEST_TT TABLE


SQL> CONN / AS SYSDBA


已连接。


SQL> SHOW USER


USER 为"SYS"


SQL> SHUTDOWN IMMEDIATE


数据库已经关闭。


已经卸载数据库


ORACLE 例程已经关闭。


SQL> STARTUP


ORACLE 例程已经启动。


......


数据库装载完毕。


数据库已经打开。


  可以看出没有再恢复为TEST


SQL> SELECT USER#,NAME,PASSWORD FROM USER$ WHERE USER#=91;


USER# NAME PASSWORD


---------- ------------------------------ ----------------


91 TT 294CE6E7131DD890


SQL> CONN TT/TT


已连接。


  查看数据对象


SQL> SELECT * FROM TAB;


TNAME TABTYPE CLUSTERID


------------------------------ ------- ----------


TEST_TT TABLE


SQL> SELECT * FROM TEST_TT;


A


-


A


  对象权限依然有效


SQL> SELECT * FROM TEST1.TEST1_TT;


A


-


A


  系统权限依然有效


SQL> CREATE TABLE KK AS SELECT * FROM TEST1.TEST1_TT;


表已创建。


SQL> SELECT * FROM TAB;


TNAME TABTYPE CLUSTERID


------------------------------ ------- ----------


KK TABLE


TEST_TT TABLE


SQL> CONN / AS SYSDBA


已连接。


SQL> SHOW USER


USER 为"SYS"


--DROP USER 也没有问题


SQL> DROP USER TT CASCADE;


用户已丢弃


SQL> DROP USER TEST1 CASCADE;


用户已丢弃