共计 3499 个字符,预计需要花费 9 分钟才能阅读完成。
接到一项任务是修改数据库 SYS 和 SYSTEM 用户的密码,老大在布置任务的时候还带了一句别忘了同步密码文件,于是想到了自己前几天写的一篇文章介绍 Oracle 密码文件的,当时只是写了如何创建密码文件,如何远程使用 SYSDBA 登录数据库做操作,但是并没有提到密码文件中用户的密码跟数据库中用户的密码是否有关系。
下面来测试一下,我用的平台是 11.2.0.4
首先修改 SYS 的密码
sys@ORCL>alter user sys identified by zhaoxu;
User altered.
– 由于 11g 里 dba_user 视图里的 password 是空值,所以选择 user$ 视图
sys@ORCL>select password from user$ where name=’SYS’;
PASSWORD
——————————————————————————————
C53B64BC84353309
– 建议 remote_login_passwordfile 需要为 EXCLUSIVE
sys@ORCL>show parameter remote_login_passwordfile
NAME TYPE VALUE
———————————— ——————————— ——————————
remote_login_passwordfile string EXCLUSIVE
创建一个密码文件然后测试远程登录
# 创建一个与 SYS 用户密码相同的密码文件
[oracle@rhel6 dbs]$ cd $ORACLE_HOME/dbs
[oracle@rhel6 dbs]$ orapwd file=orapworcl entries=3 password=zhaoxu
[oracle@rhel6 dbs]$ ls -l orapworcl
-rw-r—– 1 oracle oinstall 1536 Dec 26 21:32 orapworcl
# 测试连接成功
[c:\~]$ sqlplus sys/zhaoxu@192.168.56.2/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12 月 26 21:34:22 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select password from user$ where name=’SYS’;
PASSWORD
————————————————————
C53B64BC84353309
# 密码的 HASH 值没有变化
# 创建一个与 SYS 密码不同的密码文件
[oracle@rhel6 dbs]$ orapwd file=orapworcl entries=3 password=luoxi force=y
[oracle@rhel6 dbs]$ ls -l orapworcl
-rw-r—– 1 oracle oinstall 1536 Dec 26 21:36 orapworcl
# 测试连接,使用原密码文件的密码登录不成功,使用新密码文件的密码登录成功,但是 SYS 用户的密码 HASH 值仍没有变
[c:\~]$ sqlplus sys/zhaoxu@192.168.56.2/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12 月 26 21:36:20 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
[c:\~]$ sqlplus sys/luoxi@192.168.56.2/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12 月 26 21:36:30 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select password from user$ where name=’SYS’;
PASSWORD
————————————————————
C53B64BC84353309
测试直接修改 SYS 用户密码,查看密码文件会有什么变化
# 修改 SYS 密码成功,密码 HASH 值与之前不同
sys@ORCL>alter user sys identified by oracle;
User altered.
sys@ORCL>select password from user$ where name=’SYS’;
PASSWORD
——————————————————————————————
8A8F025737A9097A
# 查看密码文件,在修改 SYS 密码时密码文件也有更新
[oracle@rhel6 dbs]$ ls -l orapworcl
-rw-r—– 1 oracle oinstall 1536 Dec 26 21:39 orapworcl
# 测试远程登录,使用 luoxi 密码已不能登录数据库,但修改的 SYS 密码可以登录数据库
[c:\~]$ sqlplus sys/luoxi@192.168.56.2/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12 月 26 21:41:50 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
[c:\~]$ sqlplus sys/oracle@192.168.56.2/orcl as sysdba
SQL*Plus: Release 12.1.0.1.0 Production on 星期一 12 月 26 21:41:58 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
总结一下:修改 SYS 密码时,会同时修改密码文件中的密码,保持一致;如果是手工创建的密码文件,密码文件中的密码可以与 SYS 密码相同也可以不同,都不影响远程登录。不过还是建议全 SYS 密码与密码文件中的密码一致,以免需要急用远程登录时密码反而不对,造成维护上的问题。
查询 MOS 上也有相关的文档:Password or SYS Doesn’t Match the Hash Value in USER$ (文档 ID 2139304.1)
更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139045.htm