在Oracle数据库的管理体系中,口令文件是用于存储具有SYSDBA、SYSOPER权限用户口令的特殊文件,主要作用是支持远程以sys权限登录数据库,或者在没有数据库实例启动的情况下完成管理操作。下面我们详细介绍创建和使用Oracle口令文件的完整流程。

Oracle口令文件的作用
默认情况下,Oracle数据库的认证分为操作系统认证和口令文件认证两种。如果仅使用操作系统认证,只有服务器本地的oracle用户或者dba组用户才能以sys权限登录,远程客户端无法直接连接。而创建口令文件后,就可以允许远程用户通过口令验证的方式,使用SYSDBA、SYSOPER权限登录数据库,满足远程运维的需求。
创建Oracle口令文件的步骤
1 确认数据库参数配置
在创建口令文件前,需要先确认remote_login_passwordfile参数的当前配置,该参数控制口令文件的使用方式,有三种取值:
- NONE:不使用口令文件,仅支持操作系统认证
- EXCLUSIVE:使用口令文件,且只有一个数据库实例可以使用该文件,支持向口令文件中添加其他具有管理权限的用户
- SHARED:多个数据库实例可以共享同一个口令文件,但无法向文件中添加新用户
查看当前参数值的SQL语句如下:
-- 查看口令文件参数配置 SHOW PARAMETER remote_login_passwordfile;
2 使用orapwd工具创建口令文件
Oracle提供了orapwd命令行工具来创建口令文件,该工具位于Oracle软件的安装目录的bin路径下。创建口令文件的基本语法如下:
orapwd file=口令文件路径 password=sys用户口令 entries=最大用户数 force=是否覆盖已有文件
各参数说明:
file:指定口令文件的存放路径,不同平台的默认路径不同,Linux/Unix平台通常在$ORACLE_HOME/dbs目录下,文件名为orapw+实例名,例如实例名为orcl的话,文件名就是orapworcl;Windows平台通常在%ORACLE_HOME%\database目录下,文件名为PWD+实例名.orapassword:设置sys用户的初始口令entries:指定口令文件中最多可以存储多少个具有SYSDBA、SYSOPER权限的用户记录,超出该数值后需要重建口令文件force:取值为y或n,设置为y时如果目标路径已经存在同名口令文件,会直接覆盖
举个例子,针对实例名为orcl的数据库,创建口令文件的命令如下:
-- Linux/Unix平台创建口令文件 orapwd file=$ORACLE_HOME/dbs/orapworcl password=Oracle123 entries=10 force=y -- Windows平台创建口令文件 orapwd file=%ORACLE_HOME%\database\PWDorcl.ora password=Oracle123 entries=10 force=y
3 调整数据库参数启用口令文件
如果之前remote_login_passwordfile参数设置为NONE,需要将其修改为EXCLUSIVE,让数据库可以识别并使用新创建的口令文件:
-- 修改参数为EXCLUSIVE,需要重启数据库生效 ALTER SYSTEM SET remote_login_passwordfile=EXCLUSIVE SCOPE=SPFILE; -- 重启数据库 SHUTDOWN IMMEDIATE; STARTUP;
验证口令文件是否生效
创建并启用口令文件后,可以通过以下方式验证是否生效:
首先查看当前口令文件中的用户记录:
-- 查询口令文件中的用户信息 SELECT * FROM v$pwfile_users;
如果查询结果显示sys用户在列表中,且SYSDBA字段为TRUE,说明口令文件已经生效。
也可以尝试从远程客户端使用sys用户连接数据库,验证登录是否正常:
-- 远程连接测试,ipipp.com替换为实际数据库服务器地址 sqlplus sys/Oracle123@//ipipp.com:1521/orcl as sysdba
常见问题说明
- 如果修改了sys用户口令,需要重新创建口令文件,或者直接使用
ALTER USER sys IDENTIFIED BY 新口令语句修改,Oracle会自动更新口令文件中的sys口令记录 - 如果要给普通用户授予SYSDBA权限,使其也能通过口令文件登录,可以执行
GRANT SYSDBA TO 用户名,该用户会被自动添加到口令文件中 - 不要随意删除或者修改口令文件,否则会导致远程sys登录失败,如果出现问题可以重新创建口令文件解决