Oracle用户名更改操作四步走
Oracle用户名修改是个不太常见的需求,但对很对入门者而言还是一个需要掌握的知识,这里通过四个简单步骤实现Oracle用户名的更改和替换。
我们的Oracle管理工作中经常涉及到更改Oracle用户属性、密码之类的常用操作;但在某些应用场景下,会遇到Oracle用户名更改的需求,如何解决?下面通过四个步骤实现Oracle用户名的修改。
一、查询更改Oracle用户名
- SQL> select user#,name,password from user$ where name ='TICKETS';
- USER# NAME PASSWORD
- ---------- ------------------------------ ------------------------------
- 78 TICKETS 21EDA78F89D6FACD
二、更改用户名
- SQL> update user$ set name='TICKETS_BAK' where user#=78;
- 1 row updated.
- SQL> commit;
- Commit complete.
三、创建同样的Oracle用户名
- SQL> create user tickets identified by "123456"
- 2 default tablespace yytickets
- 3 temporary tablespace temp;
- create user tickets identified by "123456"
- *
- ERROR at line 1:
- ORA-01920: user name 'TICKETS' conflicts with another user or role name
这时系统会提示“用户名冲突”,运行下面的SQL语句
- SQL> alter system checkpoint; ----强制写入数据文件 ,即让在 二、更改用户名 这一个步骤中修改的user$的结果(脏块)写入到数据文件上的user$中
- System altered.
- SQL> alter system flush shared_pool; ----在下一步(四、创建相同的用户名)create user tickets时,oracle系统会自动修改系统表user$。而这里
清除缓存中的数据字典信息(具体指user$),会使oracle系统在修改系统表user$前强制读取在数据文件上的user$里的实际数据(即更改后的数据)
- System altered.
四、创建相同的用户名
- SQL> create user tickets identified by "123456"
- 2 default tablespace yytickets
- 3 temporary tablespace temp;
- User created.
- SQL> grant connect,resource to tickets;
- Grant succeeded.
- SQL> commit;
- Commit complete.
这样基本完成Oracle用户名的查找、更改、替换、复制等操作,需要注意的是用户名冲突的排查和解决,以防发生后患。
【编辑推荐】