Oracle Administrator’s Guide(Oracle 19c):1.7 Creating and Maintaining a Database Password File

2024年 4月 17日 40.6k 0

您可以使用密码文件创建实用程序 ORAPWD 创建数据库密码文件。对于某些操作系统,您可以将此文件创建为标准安装的一部分。

ORAPWD 语法和命令行参数说明

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 DESCRIBE FILE=filename

命令参数总结如下表所示。

参数 描述
FILE 如果未包含 DESCRIBE 参数,则指定要分配给新密码文件的名称。您必须提供完整的路径。如果只提供文件名,则将该文件写入当前目录。
如果包含了 DESCRIBE 参数,则指定现有密码文件的名称。
FORCE (可选)如果是y,则允许覆盖已有密码文件。
ASM (可选)在 Oracle ASM 磁盘组中创建 Oracle ASM 密码文件。
如果为 n,则在操作系统文件系统中创建密码文件。当指定了 DBUNIQUENAME 参数时,密码文件是数据库密码文件。当不指定 DBUNIQUENAME 参数时,密码文件可以是数据库密码文件,也可以是 Oracle ASM 密码文件。
DBUNIQUENAME 唯一的数据库名称,仅用于标识 ASM 磁盘组中的数据库密码文件。当数据库密码文件存储在 Oracle ASM 磁盘组上时,需要此参数。当通过将 ASM 参数设置为 y 来创建 Oracle ASM 密码文件时,此参数将被忽略。
FORMAT (可选)输入以下任意值:
- 默认情况下 12.2:以 12.2 的格式创建密码文件。这种格式支持向外部用户授予管理权限,并为管理用户启用 SSL 和 Kerberos 身份验证。
- 12:创建 Oracle Database 12c 格式的密码文件。该格式支持 SYSBACKUPSYSDGSYSKM 管理权限。
SYS (可选)该参数指定 SYS 用户是密码认证、外部认证还是全局认证。
该参数可以设置为 ynpasswordexternal('sys-external-name')global(sys-directory-DN)
如果是 SYS=yINPUT_FILE 被指定为迁移密码文件条目,那么系统将提示您输入 SYS 管理用户的新密码。
如果是 password,那么系统将提示您输入 SYS 管理用户的密码。
如果是 external('sys-external-name'),那么将 sys-external-name 替换为 SYS 管理用户的 SSL 或 Kerberos 身份验证的外部名称。
如果是 global(sys-directory-DN),则指定全局 SYS 用户的目录服务名称。(Optional)
SYSBACKUP (可选)创建 SYSBACKUP 条目。该参数指定 SYSBACKUP 用户是密码身份验证、外部身份验证还是全局身份验证。
该参数可以设置为 ynpasswordexternal('sysbackup-external-name')global(sysbackup-directory-DN)
如果是 password,那么系统将提示您输入 SYSBACKUP 管理用户的密码。
如果是 external('sysbackup-external-name'),那么将 sysbackup-external-name 替换为 SYSBACKUP 管理用户的 SSL 或 Kerberos 身份验证的外部名称。
如果是 global(sysbackup-directory-DN),则指定全局 SYSBACKUP 用户的目录服务名称。
SYSDG (可选)创建 SYSDG 条目。该参数指定 SYSDG 用户是密码身份验证、外部身份验证还是全局身份验证。
该参数可以设置为 ynpasswordexternal('sysdg-external-name')global(sysdg-directory-DN)
如果是 password,那么系统将提示您输入 SYSDG 管理用户的密码。
如果是 external('sysdg-external-name'),那么将 sysdg-external-name 替换为 SYSDG 管理用户的 SSL 或 Kerberos 身份验证的外部名称。

如果是 global(sysdg-directory-DN),则指定全局 SYSDG 用户的目录服务名称。

SYSKM (可选)创建 SYSKM 条目。该参数指定 SYSKM 用户是密码身份验证、外部身份验证还是全局身份验证。
该参数可以设置为 ynpasswordexternal('syskm-external-name')global(syskm-directory-DN)
如果是 password,那么系统将提示您输入 SYSKM 管理用户的密码。
如果是 external('syskm-external-name'),那么将 syskm-external-name 替换为 SYSKM 管理用户的 SSL 或 Kerberos 身份验证的外部名称。
如果是 y,则在密码文件中创建一个 SYSKM 条目。系统提示您输入密码。密码保存在创建的密码文件中。
如果是 n,则没有在密码文件中创建 SYSKM 表项。
如果是 global(syskm-directory-DN),则指定全局 SYSKM 用户的目录服务名称。
DELETE (可选)如果是 y,删除指定的密码文件。
如果是 n,则创建指定的密码文件。
INPUT_FILE (可选)输入密码文件名。ORAPWD 将输入文件中的条目迁移到新密码文件中。
此参数可用于将密码文件从一种格式转换为另一种格式,例如从 12 格式转换为 12.2 格式。
此参数也可用于重置 SYS 管理用户的密码。
ORAPWD 无法迁移存储在 Oracle ASM 磁盘组中的输入密码。
DESCRIBE 描述指定密码文件的属性,包括 FORMAT 值(12.2 或 12)。

等号(=)字符周围不允许有空格。

以下各节提供有关 ORAPWD 命令行参数的更多信息。

FILE

此参数设置正在创建的密码文件的名称。这条命令是强制性的。

如果您在 Oracle ASM 磁盘组上指定了一个位置,那么数据库密码文件将在集群中的节点之间自动共享。当您使用 Oracle ASM 磁盘组来存储密码文件,并且您不使用 Oracle Managed Files 时,您必须指定密码文件的名称,包括其完整路径。如果您使用的是 Oracle Managed Files,则不需要完整路径。

如果没有指定 Oracle ASM 磁盘组上的位置,则密码文件所需的文件名是特定于操作系统的。有些操作系统要求密码文件遵循特定的格式,并位于特定的目录中。其他操作系统允许使用环境变量来指定密码文件的名称和位置。

在 UNIX、Linux 和 Windows平台上,密码文件的名称和位置要求如下表所示。对于其他平台,请参考特定于平台的文档。

平台 所需名称 所需位置
UNIX and Linux orapwORACLE_SID ORACLE_BASE/dbs
Windows PWDORACLE_SID.ora ORACLE_BASE\database

例如,对于 SID 为 orcldw 的数据库实例,密码文件在 Linux 上必须命名为 orapworcldw,在 Windows 上必须命名为 PWDorcldw.ora

在需要将环境变量设置为密码文件路径的平台上的 Oracle Real Application Clusters(Oracle RAC)环境中,每个实例的环境变量必须指向相同的密码文件。

对于策略管理的 Oracle RAC 数据库或 Oracle RAC One Node 数据库,ORACLE_SID 的形式为db_unique_name_n,其中 n 为数字,首先使用 ORACLE_BASE/dbs/orapwsid_prefixORACLE_BASE\database\PWDsid_prefix.ora 搜索密码文件。sid_prefix(数据库名的前 8 个字符)用于定位密码文件。

FORCE

如果将此参数设置为 y,则允许覆盖现有密码文件。如果已经存在同名的密码文件,并且省略该参数或将其设置为 n,则返回错误。

ASM

如果这个参数被设置为 y,那么 ORAPWD 创建一个 Oracle ASM 密码文件。FILE 参数必须指定 Oracle ASM 磁盘组中的位置。

如果这个参数被设置为 n(默认值),那么 ORAPWD 将创建一个密码文件。FILE 参数可以指定 Oracle ASM 磁盘组或操作系统文件系统中的位置。当指定了 DBUNIQUENAME 参数时,密码文件是数据库密码文件。当不指定 DBUNIQUENAME 参数时,密码文件可以是数据库密码文件,也可以是 Oracle ASM 密码文件。

DBUNIQUENAME

此参数为在 Oracle ASM 磁盘组上创建的数据库密码文件设置唯一的数据库名称。它用数据库密码文件位置标识要更新的数据库资源。

当在操作系统文件系统上创建数据库密码文件时,不需要此参数。

当通过将 ASM 参数设置为 y 来创建 Oracle ASM 密码文件时,此参数将被忽略。

FORMAT

如果该参数设置为 12.2,即默认值,则 ORAPWD 将创建 12.2 格式的数据库密码文件。为了支持向外部用户授予管理权限以及为管理用户提供 SSL 和 Kerberos 身份验证,密码文件需要使用 12.2 格式。分配给用户的密码配置文件也对管理用户强制执行。

如果该参数设置为 12,则 ORAPWD 将创建一个 Oracle Database 12c 格式的数据库密码文件。为了支持 SYSBACKUPSYSDGSYSKM 管理权限,密码文件需要使用 Oracle Database 12c 格式。

如果将此参数设置为 legacy,则 ORAPWD 将创建一个 Oracle Database 12c 之前格式的数据库密码文件。密码文件支持 SYSDBASYSOPER 管理权限,但不支持 SYSBACKUPSYSDGSYSKM 管理权限。

SYS

如果 SYS=yINPUT_FILE 被指定为迁移密码文件条目,那么系统将提示您输入 SYS 管理用户的新密码。

如果是 password,那么系统将提示您输入 SYS 管理用户的密码。

如果是 external('sys-external-name'),那么将 sys-external-name 替换为 SYS 管理用户的 SSL 或 Kerberos 身份验证的外部名称。

如果是 global(sys-directory-DN),则指定全局 SYS 用户的目录服务名称。

SYSBACKUP

如果是 password,那么系统将提示您输入 SYSBACKUP 管理用户的密码。

如果是 external('sysbackup-external-name'),那么将 sysbackup-external-name 替换为 SYSDG 管理用户的 SSL 或 Kerberos 身份验证的外部名称。

如果是 global(sysbackup-directory-DN),则指定全局 SYSBACKUP 用户的目录服务名称。

SYSDG

如果是 password,那么系统将提示您输入 SYSDG 管理用户的密码。

如果是 external('sysdg-external-name'),那么将 sysdg-external-name 替换为 SYSDG 管理用户的 SSL 或 Kerberos 身份验证的外部名称。

如果是 global(sysdg-directory-DN),则指定全局 SYSDG 用户的目录服务名称。

SYSKM

如果是 password,那么系统将提示您输入 SYSKM 管理用户的密码。

如果是 external('syskm-external-name'),那么将 syskm-external-name 替换为 SYSKM 管理用户的 SSL 或 Kerberos 身份验证的外部名称。

如果是 global(syskm-directory-DN),则指定全局 SYSKM 用户的目录服务名称。

DELETE

如果此参数设置为 y,则 ORAPWD 删除指定的密码文件。当指定 y 时,必须指定 FILEASMDBUNIQUENAME。当指定 FILE时,该文件必须位于 ASM 磁盘组中。

如果这个参数被设置为 n(默认值),那么 ORAPWD 将创建密码文件。

INPUT_FILE

此参数指定输入密码文件的名称。ORAPWD 将输入文件中的条目迁移到新密码文件中。该参数可以将密码文件从一种格式转换为另一种格式,例如从 12 格式转换为 12.2 格式。

此参数也可用于重置 SYS 管理用户的密码。

当指定 INPUT_FILE 参数时,ORAPWD 不创建任何新条目。因此,ORAPWD 忽略以下参数:

  • PASSWORD
  • SYSBACKUP
  • SYSDG
  • SYSKM

当指定了输入文件,并且新密码文件替换了输入文件时,FORCE 必须设置为 y

使用 ORAPWD 创建数据库密码文件

您可以使用 ORAPWD 创建数据库密码文件。

创建数据库密码文件:

  • 运行 ORAPWD 命令。

例 1:在 Oracle ASM 磁盘组中创建数据库密码文件

在 Oracle ASM 磁盘组中创建 12.2 格式的数据库密码文件 orapworclDBUNIQUENAME 参数是必需的,因为数据库密码文件位于 Oracle ASM 磁盘组中。

orapwd FILE='+DATA/orcl/orapworcl' DBUNIQUENAME='orcl' FORMAT=12.2

例 2:创建带有 SYSBACKUP 条目的数据库密码文件

下面的示例与例 1 类似,不同之处在于它在数据库密码文件中创建了 SYSBACKUP 条目。密码文件默认为 12.2 格式。

orapwd FILE='+DATA/orcl/orapworcl' DBUNIQUENAME='orcl' SYSBACKUP=password FORMAT=12.2

例 3:为 SYS 和 SYSKM 创建外部认证的数据库密码文件

下面的示例与例 1类似,只是它为 SYS 和 SYSKM 管理用户指定了一个外部名称。

orapwd FILE='+DATA/orcl/orapworcl' DBUNIQUENAME='orcl' FORMAT=12.2
sys=external('KerberosUserSYS@example.com')
syskm=external('KerberosUserSYSKM@example.com')

例 4:在文件系统中创建数据库密码文件

如下命令创建一个名为 orapworcl 的 12.2 格式数据库密码文件,该文件位于操作系统文件系统的默认位置。

orapwd FILE='/u01/oracle/dbs/orapworcl' FORMAT=12.2

例 5:迁移旧数据库密码文件到 Oracle Database 12c 格式

下面的命令将数据库密码文件迁移为遗留格式 12.2 格式。密码文件名为 orapworcl,位于操作系统文件系统中。新的数据库密码文件将替换现有的数据库密码文件。因此 FORCE 必须设置为 y

orapwd FILE='/u01/oracle/dbs/orapworcl' FORMAT=12.2 INPUT_FILE='/u01/oracle/dbs/orapworcl' FORCE=y

例 6:重置 SYS 管理用户密码

以下命令重置 SYS 管理用户的密码。新的数据库密码文件将替换现有的数据库密码文件。因此 FORCE 必须设置为 y

orapwd FILE='/u01/oracle/dbs/orapworcl' SYS=Y INPUT_FILE='/u01/oracle/dbs/orapworcl' FORCE=y

系统提示您输入 SYS 管理用户的新密码。

例 7:密码文件描述

orapworcl 密码文件描述如下:

orapwd DESCRIBE FILE='orapworcl'
Password file Description : format=12.2

注意:

如果修改了数据库密码文件名或位置,需要执行以下命令使修改生效。

SQL> ALTER SYSTEM FLUSH PASSWORDFILE_METADATA_CACHE;

此命令将刷新元数据缓存,然后使用新密码文件登录数据库。在 Oracle RAC 环境中,该命令清除所有 Oracle RAC 数据库中的缓存,但是可能有一些数据库仍然继续使用旧密码文件,直到更改传播到所有 Oracle RAC 数据库。

执行该命令后,可以通过查询 V$PASSWORDFILE_INFO 视图来验证修改的正确性。

共享和禁用数据库密码文件

您可以使用初始化参数 REMOTE_LOGIN_PASSWORDFILE 来控制数据库密码文件是否在多个 Oracle 数据库实例之间共享。也可以使用该参数关闭密码文件鉴权。

共享密码文件或禁用密码文件认证。

  • 设置 REMOTE_LOGIN_PASSWORDFILE 初始化参数。

可以将 REMOTE_LOGIN_PASSWORDFILE 初始化参数设置为以下值之一:

  • none:设置该参数为 none 时,Oracle 数据库将表现为密码文件不存在。也就是说,不允许在非安全连接上使用特权连接。
  • exclusive(默认值):唯一密码文件只能用于一个数据库。只能修改排他文件。使用独占密码文件可以添加、修改和删除用户。它还允许您使用 ALTER USER 命令更改 SYSSYSBACKUPSYSDGSYSKM 的密码。
    exclusive 密码文件存储在 Oracle ASM 磁盘组中时,它可以被单实例数据库或 Oracle RAC 数据库的多个实例使用。
    exclusive 密码文件存储在操作系统上时,它只能用于一个数据库的一个实例。
  • sharedshared 密码文件可以被运行在同一台服务器上的多个数据库或 Oracle RAC 数据库的多个实例使用,即使它存储在操作系统上也是如此。shared 密码文件是只读的,不能修改。因此,不能在 shared 密码文件中添加用户。任何尝试这样做或更改 SYS 或其他具有管理权限的用户的密码都会产生错误。当 REMOTE_LOGIN_PASSWORDFILE 设置为 exclusive 时,必须将需要管理权限的所有用户添加到密码文件中。添加完所有用户后,可以将 REMOTE_LOGIN_PASSWORDFILE 修改为 shared,然后共享文件。
    如果使用单个密码文件管理多个数据库,此选项非常有用。
    不能为 Oracle ASM 密码文件指定 shared

如果 REMOTE_LOGIN_PASSWORDFILE 设置为 exclusiveshared,而密码文件缺失,则相当于将 REMOTE_LOGIN_PASSWORDFILE 设置为 none

管理员密码与数据字典同步

如果将 REMOTE_LOGIN_PASSWORDFILE 初始化参数从 none 修改为 exclusiveshared,则必须确保数据字典中存储的密码和密码文件中存储的非 SYS 管理用户(如 SYSDBASYSOPERSYSBACKUPSYSDGSYSKM)的密码保持一致。

SYSDBA、SYSOPER、SYSBACKUP、SYSDG、SYSKM 等非系统管理员用户的密码需要同步,必须先撤销这些用户的密码,然后再重新授予权限,操作步骤如下:

  1. 查找已被授予 SYSDBA 权限的所有用户。

    SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSDBA='TRUE';

  2. 撤销并重新授予这些用户 SYSDBA 特权。

    REVOKE SYSDBA FROM non-SYS-user;
    GRANT SYSDBA TO non-SYS-user;

  3. 查找具有 SYSOPER 权限的所有用户。

    SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSOPER='TRUE';

  4. 撤销和重新授予这些用户的 SYSOPER 权限。

    REVOKE SYSOPER FROM non-SYS-user;
    GRANT SYSOPER TO non-SYS-user;

  5. 查找所有被授予 SYSBACKUP 特权的用户。

    SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSBACKUP ='TRUE';

  6. 撤销并重新授予这些用户 SYSBACKUP 特权。

    REVOKE SYSBACKUP FROM non-SYS-user;
    GRANT SYSBACKUP TO non-SYS-user;

  7. 查找已授予SYSDG 权限的所有用户。

    SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSDG='TRUE';

  8. 撤销和重新授予这些用户的 SYSDG 特权。

    REVOKE SYSDG FROM non-SYS-user;
    GRANT SYSDG TO non-SYS-user;

  9. 查找已被授予 SYSKM 权限的所有用户。

    SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSKM='TRUE';

  10. 撤销和重新授予这些用户的 SYSKM 特权。

    REVOKE SYSKM FROM non-SYS-user;
    GRANT SYSKM TO non-SYS-user;

添加用户到数据库密码文件

当您授予一个用户 SYSDBASYSOPERSYSBACKUPSYSDGSYSKM 管理权限时,该用户的名称和权限信息将被添加到数据库密码文件中。

只有当用户至少拥有这些特权中的一个时,用户名才会保留在密码文件中。如果您撤销所有这些权限,那么 Oracle 数据库将从密码文件中删除该用户。

创建密码文件并添加新用户

使用以下步骤创建密码文件并添加新用户:

  1. 请按照“使用 ORAPWD 创建数据库密码文件”中的说明创建密码文件。

  2. REMOTE_LOGIN_PASSWORDFILE 初始化参数设置为 exclusive。(这是默认设置。)
    如果您尝试授予这些权限,并且初始化参数 REMOTE_LOGIN_PASSWORDFILE设置不正确,Oracle 数据库会发出错误。

  3. 以如下示例连接 SYSDBA 权限,并在提示时输入 SYS 密码:

    CONNECT SYS AS SYSDBA

  4. 启动实例并在必要时创建数据库,或者挂载并打开现有数据库。

  5. 根据需要创建用户。酌情为您自己和其他用户授予

授予和撤销管理特权

使用 GRANT 语句授予管理权限。使用 REVOKE 语句撤销管理权限。

赋予用户 SYSDBASYSOPERSYSBACKUPSYSDGSYSKM 管理权限。

  • 运行GRANT语句。

例如:

GRANT SYSDBA TO mydba;

撤销用户的管理权限:

  • 执行REVOKE语句。

例如:

REVOKE SYSDBA FROM mydba;

如果在授予管理权限的 GRANT 语句中指定了 WITH ADMIN 选项,则忽略该选项,并且适用以下规则:

  • 当前以 SYSDBA 身份连接的用户可以向另一个用户授予任何管理特权,也可以从另一个用户撤销任何管理特权。
  • 当前以 SYSOPER 身份连接的用户不能授予其他用户任何管理权限,也不能撤销其他用户的任何管理权限。
  • 当前以 SYSBACKUP 身份连接的用户可以授予或撤销另一个用户的 SYSBACKUP 管理权限。
  • 当前以 SYSDG 连接的用户可以授予或撤销另一个用户的 SYSDG管理权限。
  • 当前以 SYSKM 连接的用户可以授予或撤销另一个用户的 SYSKM 管理权限。

不能将管理权限授予角色,因为角色只有在数据库启动后才可用。不要将数据库管理权限与操作系统角色混淆。

查看数据库密码文件成员

V$PWFILE_USERS 视图包含已被授予管理权限的用户的信息。

要确定哪些用户已被授予管理权限:

  • 查询 V$PWFILE_USERS 视图。

删除数据库密码文件

如果不再需要数据库密码文件,可以删除该文件。

如果您确定不再需要数据库密码文件来验证用户身份,则删除它:

  • 删除数据库密码文件,并可将 REMOTE_LOGIN_PASSWORDFILE 初始化参数重置为 none

删除该文件后,只有通过操作系统认证的用户才能执行 SYSDBASYSOPERSYSBACKUPSYSDGSYSKM 等数据库管理操作。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论