日期:2014-05-17  浏览次数:20788 次

修改用户名之后为何原用户仍可以登录?
我本地以SYSDBA的身份登录了ORACLE,
更新了user$这张表具体某个用户的NAME字段,就是改名
但发现改了之后,新用户名可以登录了,对应的附属对象也已存在,
但原用户名还是可以正常登录;
这是为什么?

------解决方案--------------------
正式环境不建议通过此种非常规方式来达到更名的效果。
最好通过建新用户、exp/imp、删除老用户来完成。

测试环境可试试重启数据库再确认一下。
------解决方案--------------------
alter system flush shared_pool;
试试,手动修改数据字典表的操作实在是……不推荐。
------解决方案--------------------
直接修改user$,需要刷新shared pool后生效 ,然后再测试,你这样修改,后果自负
------解决方案--------------------
引用:
引用:直接修改user$,需要刷新shared pool后生效 ,然后再测试,你这样修改,后果自负


网上查了下刷新shared pool的方法,可以了,追问下,这样的原理是什么?


原理大概是这样,因为数据字典对象全部都是在数据库打开的时候读入到shared pool内存池。你修改了数据字典但是并不会刷新shared pool内存池中的对象,所以就需要手工刷新。