更改oracle的用户名
之前有个需求,整理一个schema的表、索引等规划到一个表空间里,利用expdp/impdp然后remap就完成了,但是整理好的用户名remap变更了,应用又不想修改其连接信息,我便进行了修改用户名,大致过程如下:
oracle无法通过常规方法修改,但可以修改user的基表user$进行用户名的修改
1.查询要更改的用户名
SQL> select user#,name,password from user$ where name like 'ECPPLAN%'; USER# NAME PASSWORD
---------- ------------------------------ ------------------------------
78 ECPPLAN_TEST 46EDD78F89E6F5CH
112 ECPPLAN_TEST1 4R5T6Y7U8I9O0P3ER
2.更改用户名
SQL> update user$ set name='ECPPLAN_TEST_BK' where user#=78;
1 row updated. SQL> update user$ set name='ECPPLAN_TEST' where user#=112;
1 row updated. SQL> commit;
Commit complete.
3.此时需要两个步骤,否则用户操作会报错:
SQL> alter system checkpoint; /*强制写入数据文件*/
System altered. SQL> alter system flush shared_pool; /*清楚缓存数据字典信息,强制oracle读实际数据(即更改后的数据)*/
System altered.
4.再进行修改密码等操作即可登陆:
alter user ecpplan_test identified by "1"; conn ecpplan_test/1