Oracle 密码文件

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=xxxxLinux : 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;