改Oracle用戶名是很常見的操作。下面為您詳細介紹了修改Oracle用戶名的方法步驟,如果您對Oracle用戶名方面感興趣的話,不妨一看。
在實際工作中,有時候需要修改用戶名,而通常的做法是exp imp這樣的方式,而如果數據量大的話exp imp的方式會很浪費時間,所以下面寫上如何通過修改Oracle基表的方式來修改用戶名,按下面的步驟執行:
--直接修改底層表 USER$ 更換用戶名
1、Windows 平台下運行 cmd
2、sqlplus /nolog
3、SQL> connsys/lmis@lmisdx_localas sysdba 連接到數據庫。通常可以用sys用戶登陸。
4、SQL> select * from user$; 找到 name為需要修改的用戶的user#。
5、SQL> UPDATE USER$ SET NAME='新用戶名' WHERE USER#=38;
已更新 1 行。
6、SQL> COMMIT;提交完成。
7、SQL> ALTER SYSTEM CHECKPOINT;
系統已更改。
8、SQL> ALTER USER 新用戶名 IDENTIFIED BY 新密碼;
此時會提示新用戶不存在。
SQL> ALTER USER 新用戶名 IDENTIFIED BY 新密碼
*ERROR 位於第 1 行:ORA-01918: 用戶'新用戶'不存在
9、SQL> ALTER SYSTEM FLUSH SHARED_POOL;
系統已更改。
10、SQL> ALTER USER 新用戶 IDENTIFIED BY 新密碼;
用戶已更改。
11、測試連接
SQL> CONN 新用戶/新密碼@lmisdx_local;
已連接。
12、SQL> SELECT * FROM TAB;
查看新用戶下是否有原用戶的對象,包括表等。
13、SQL> CONN / AS SYSDBA已連接。
14、SQL> SHOW USER --查看當前連接用戶
為"SYS"
15、SQL> SHUTDOWN IMMEDIATE --關閉數據庫
數據庫已經關閉。已經卸載數據庫。Oracle 例程已經關閉。
16、SQL> STARTUP --啟動數據庫
Oracle 例程已經啟動。......數據庫裝載完畢。數據庫已經打開。
17、可以看出沒有再恢復為TEST
SQL> SELECT USER#,NAME,PASSWord FROM USER$ WHERE USER#=38;
18、查看數據對象
SQL> SELECT * FROM TAB;
19、SQL >connsys/lmis@lmisdx_localas sysdba
已連接。
SQL> SHOW USERUSE
為"SYS"
--DROP USER 也沒有問題
SQL> DROP USER TEST1 CASCADE; --刪除以前的用戶
用戶已丟棄