ORAPWD 是 Oracle 数据库提供的一个实用程序,其主要功能是创建和维护用于数据库身份验证的密码文件。对于需要进行 SYSDBA、SYSOPER 等特权身份连接的数据数据库来说,密码文件是至关重要的组件。理解其命令语法和参数,是每一位 DBA 必备的基础技能。
ORAPWD 命令语法
ORAPWD 命令的基本语法结构如下,其中包含了一系列可选或必需的参数:
orapwd FILE=filename
[FORCE={y|n}]
[ASM={y|n}]
[DBUNIQUENAME=dbname]
[FORMAT={12.2|12}]
[SYS={y|n|password|external('sys-external-name')|global('sys-directory-DN')}]
[SYSBACKUP={y|n|password|external('sysbackup-external-name')|global('sysbackup-directory-DN')}]
[SYSDG={y|n|password|external('sysdg-external-name')|global('sysdg-directory-DN')}]
[SYSKM={y|n|password|external('syskm-external-name')|global('syskm-directory-DN')}]
[DELETE={y|n}]
[INPUT_FILE=input-fname]
查看密码文件属性
除了创建,orapwd 命令还可以用于描述现有密码文件的属性,包括其 FORMAT 值。命令格式非常简单:
orapwd DESCRIBE FILE=filename
实战应用示例
光看语法可能有些抽象,下面我们通过几个具体的场景来看看如何使用这些命令。
示例1:在 Oracle ASM 磁盘组中创建密码文件
如果你使用 Oracle ASM 作为存储,那么密码文件也可以存放在 ASM 磁盘组中。以下命令创建了一个名为 orapworcl、格式为 12.2 的数据库密码文件,并将其存放在 +DATA 磁盘组中。注意,当文件位于 ASM 时,DBUNIQUENAME 参数是必须指定的。
orapwd FILE='+DATA/orcl/orapworcl' DBUNIQUENAME='orcl' FORMAT=12.2
示例2:重置 SYS 用户的密码
有时我们需要重置 SYS 管理用户的密码。这可以通过 orapwd 命令来完成。请注意,此操作会生成一个新的密码文件并替换旧的,因此必须使用 FORCE=y 参数。
orapwd FILE='/u01/oracle/dbs/orapworcl' SYS=Y INPUT_FILE='/u01/oracle/dbs/orapworcl' FORCE=y
密码文件更改后的生效步骤
如果你更改了数据库密码文件的位置或名称,仅执行 orapwd 命令是不够的。你还需要在数据库中执行以下命令,以刷新元数据缓存,使新密码文件生效:
ALTER SYSTEM FLUSH PASSWORDFILE_METADATA_CACHE;
在 Oracle RAC 环境中,此命令会清除所有节点上的缓存。不过,变更可能需要一点时间才能在所有 RAC 实例中完全生效。
执行完刷新命令后,如何确认更改是否成功呢?你可以通过查询 V$PASSWORDFILE_INFO 视图来进行验证。为了获得更好的显示效果,可以预先设置一下格式:
set lin 200;
col FILE_NAME format a60;
select * from V$PASSWORDFILE_INFO;
查看密码文件中的特权用户
想了解当前有哪些用户被授予了 SYSDBA 等管理权限?V$PWFILE_USERS 视图提供了这些信息。直接查询可以获取所有列:
select * from V$PWFILE_USERS;
如果你只想关注用户名、权限状态和账户状态等关键信息,可以使用更精确的查询语句:
col USERNAME format a30;
select USERNAME,SYSDBA,SYSOPER,SYSASM,SYSBACKUP,SYSDG,SYSKM,ACCOUNT_STATUS,LOCK_DATE from V$PWFILE_USERS;
这个视图对于日常权限审计和故障排查非常有帮助,能让你一目了然地掌握数据库特权用户的构成。
熟练掌握 ORAPWD 工具的使用,是保障 Oracle 数据库管理员身份验证安全与顺畅的第一步。希望本文的梳理和示例能帮助你更好地理解和运用这个重要的 DBA 工具。如果你在实践中遇到了其他有趣的问题或技巧,欢迎在 云栈社区 与其他开发者一起交流探讨。