修改底层表 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;