问题:

新接手的Oracle数据库不知道sys用户密码,
虽然可以本地操作系统验证方式登录数据库,
但是指不定什么时候会用到sys密码,比如用sys用户远程登录数据库等场景。
然而数据库用户密码也不能随便更改,
即使各个应用系统连接数据库都是指定业务用户,没有使用sys用户,
但是也不能完全肯定没有其他什么系统在连接sys用户,
所以就算更改了sys密码,也要有方法可以快速恢复sys用户的历史密码。

方法:
常见的方法一般有两种。

一:在11g以前dba_users还记录用户密码的密文信息。

在修改sys或其他用户密码前,先将用户密码的密文信息查出来。
select username,password from dba_users;
还原密码操作如下,比重置密码多了一个values关键字。
alter user username identified by values 'hash密码值';
此种方法在11g时,dba_users已经不记录password了,但是可以在sys.user$里查到。
select user,password from sys.user$;
在12c开始又继续取消了user$有关password记录。

二:方法二适用于sysdba权限的用户,当然也包含sys用户

可以通过orapwd重置sys密码,重置前备份口令文件即可。
重置密码操作示例如下:
cp orapwchendb orapwchendb_20211026bak
orapwd file=orapwchendb entries=10 force=y  password=ChenJch#123
通过orapwd方式重置sys密码和使用alter user sys identified by '*****';方式相同,都可以达到重置密码的目的。
恢复sys原密码,只需要恢复原口令文件即可。
最后修改:2021 年 10 月 27 日
如果觉得我的文章对你有用,请随意赞赏