Oracle 的密码文件存放了 sysdba / sysoper 身份的用户名及口令。Oracle 允许用户在数据库未启动之前使用口令文件进行验证账号密码,从而启动实例进而加载并打开数据库。
密码文件的位置
-
Linux 密码文件默认路径:$ORACLE_HOME/dbs/
-
Windows 密码文件默认路径:%ORACLE_HOME%/database/
密码文件命名规则
-
Linux : orapw
-
Windows: PWD.ora
重置密码文件
Windows : orapwd file=PWDneubi.ora entries=30 password=xxxx
Linux : orapwd file=orapworcl entries=20 password=xxxx
Oracle 通过初始化参数 remote_login_passwordfile 来限制密码文件的使用,该参数有三个可选项
-
NONE
-
EXCLUSIVE
-
SHARE
当 remote_login_passwordfile 参数值为 NONE 时,不可以以 sysdba/sysoper 远程登陆数据库。这实际上是一个安全选项,防止远程启停数据库。
当 remote_login_passwordfile 参数值为 EXCLUSIVE 时,支持以 sysdba 身份远程登陆数据库。
sql> alter system set remote_login_passwordfile=exclusive scope=spfile;
此参数为静态参数,修改后需要重启数据库生效。
当 remote_login_passwordfile 参数值为 SHARE 时,允许多个数据库共享一个密码文件。
密码文件中的用户信息,可以在 v$pwfile_users 中查看。
SQL>select * from v$pwfile_users;
USERNAME SYSDB SYSOP SYSAS
--------------- ----- ----- -----
SYS TRUE TRUE FALSE
修改 SYS 账号的密码,同时会修改密码文件。
SQL> alter user sys identified by "passwdxxxx";
为用户授 sysdba 权限,同步会修改密码文件,重置密码文件时的 entries 参数代表密码文件最多可以存多少个 sysdba 权限的用户。
SQL> grant sysdba to xx_user_xx;