修改底層表 user$ 更換使用者名
1、sqlplus /nolog
2、sql> conn sys/zzh_2046@rlzy as sysdba 連接配接到資料庫。通常可以用sys使用者登陸。
3、sql> select * from user$; 找到 name為insur_recover需要修改的使用者的user#。
sql> select user#,name,password from user$ where name='insur_recover';
user# name type# password
---------- ------------------------------ ---------- ------------------------------
124 insur_recover 1 89e995f8b999af00
4、update user$ set name='insur_redo' where user#=124;
已更新 1 行。
5、sql> commit;送出完成。
6、sql> alter system checkpoint;
系統已更改。
7、sql> alter user insur_redo identified by "redo";
此時會提示新使用者不存在。
sql> alter user insur_redo identified by "redo"
*error 位于第 1 行:ora-01918: 使用者'insur_redo'不存在
8、sql> alter system flush shared_pool;
9、sql> alter user insur_redo identified by "redo";
使用者已更改。
10、測試連接配接
sql> conn insur_redo/redo@rlzy;
已連接配接。
11、sql> select * from tab;
檢視新使用者下是否有原使用者的對象,包括表等。
12、sql> conn / as sysdba已連接配接。
13、sql> show user --檢視目前連接配接使用者
為"sys"
14、sql> shutdown immediate --關閉資料庫
資料庫已經關閉。已經解除安裝資料庫。oracle 例程已經關閉。
15、sql> startup --啟動資料庫
oracle 例程已經啟動。......資料庫裝載完畢。資料庫已經打開。
16、可以看出沒有再恢複為test
sql> select user#,name,password from user$ where user#=124;
在操作過程中有可能會導緻使用者被鎖
--檢視被鎖的使用者
select lock_date,username from dba_users where username='username';
lock_date為空說明沒有鎖定,非空為鎖定。
-解鎖方法
alter user user_name account unlock;