Oracle的密码文件存放了 sysdba/sysoper 身份的用户名及口令。Oracle 允许用户在数据库未启动之前使用口令文件进行验证账号密码,从而启动实例进而加载并打开数据库。
当修改了用户密码,同时会修改密码文件 。
授权 sysdba 权限给用户时,同时会修改密码文件。
密码文件的存放目录:
$ORACLE_HOME/dbs/
密码文件的命名规则:
orapw<ORACLE-SID>
示例:orapwbaoyw
密码文件的内容查看:
[oracle@baoyw dbs]$ strings orapwbaoyw
]\[Z
ORACLE Remote Password file
INTERNAL
FC8FB80E943010DA
!3F*
66F0D77D50CDF9C9
7WZK3
[oracle@baoyw dbs]$
密码文件的重置(修改密码):
--entries 参数,代表密码文件最多可以存储多少个 sysdba 权限的用户
--一般不建议此方法
[oracle@baoyw dbs]$ orapwd file=orapwbaoyw entries=2 password=123456789 force=y
alter user sys identified by sys2024;
密码文件的重建(密码文件丢失):
--重建密码文件
--密码文件 不可随意删除
[oracle@baoyw dbs]$ orapwd file=orapwbaoyw entries=2 password=123456789 force=y
密码文件的参数解释:
Oracle 通过初始化参数 remote_login_passwordfile 来限制密码文件的使用,该参数有三个可选项:
NONE:不使用密码文件认证。
EXCLUSIVE:需要密码文件认证,自己独占使用(默认值)。
SHARE:需要密码文件认证,多个不同实例共享密码文件。
密码文件的参数配置:
此参数 remote_login_passwordfile
为静态参数,重启数据库后生效。
alter system set remote_login_passwordfile=none scope=spfile;
SQL> show parameter password
NAME TYPE VALUE
------------------------------ ------------ ------------
remote_login_passwordfile string EXCLUSIVE
SQL>
查看密码文件中的用户信息:
SQL> select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
--------------- ----- ----- -----
SYS TRUE TRUE FALSE
SQL>
授予/回收 sysdba 给用户:
--授权
grant sysdba to baoyw;
--回收
revoke sysdba from baoyw;