在 RDS for Oracle 上使用 Oracle Repository Creation Utility - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 RDS for Oracle 上使用 Oracle Repository Creation Utility

您可以使用 Amazon RDS 托管 RDS for Oracle 数据库实例,此实例保留架构以支持 Oracle Fusion Middleware 组件。必须先在数据库中为 Fusion Middleware 组件创建和填充架构,然后才能使用这些组件。可使用 Oracle Repository Creation Utility (RCU) 来创建和填充架构。

RCU 支持的版本和许可选项

Amazon RDS 仅支持 Oracle Repository Creation Utility (RCU) 版本 12c。您可以在以下配置中使用 RCU:

  • 带 Oracle Database 21c 的 RCU 12c

  • 带 Oracle Database 19c 的 RCU 12c

在使用 RCU 之前,请确保执行以下操作:

Fusion MiddleWare 支持 Oracle Database 企业版和标准版 2 上的存储库。Oracle 建议将 Enterprise Edition 用于需要分区的生产安装和需要在线重新建立索引的安装。

在创建 RDS for Oracle 数据库实例之前,确认支持要部署的组件所需的 Oracle 数据库版本。要查找要部署的 Fusion Middleware 组件和版本的要求,请使用 Certification Matrix。有关更多信息,请参阅 Oracle 文档中的 Oracle Fusion Middleware 支持的系统配置

Amazon RDS 根据需要支持 Oracle 数据库版本升级。有关更多信息,请参阅 升级数据库实例引擎版本

RCU 的要求和限制

您需要 Amazon VPC 才能使用 RCU。您的 Amazon RDS 数据库实例必须仅对您的 Fusion Middleware 组件可用,而不是公共互联网。因此,在私有子网中托管您的 Amazon RDS 数据库实例,可提供更好的安全性。您还需要 RDS for Oracle 数据库实例。有关更多信息,请参阅 创建并连接到 Oracle 数据库实例

可以为 Amazon RDS 数据库实例中的任何 Fusion Middleware 组件存储架构。已经验证以下架构安装正确:

  • 分析 (ACTIVITIES)

  • 审核服务 (IAU)

  • Audit Services Append (IAU_APPEND)

  • Audit Services Viewer (IAU_VIEWER)

  • 讨论 (DISCUSSIONS)

  • 元数据服务 (MDS)

  • Oracle Business Intelligence (BIPLATFORM)

  • Oracle Platform Security Services (OPSS)

  • 门户和服务 (WEBCENTER)

  • Portlet 创建者 (PORTLET)

  • 服务表 (STB)

  • SOA 基础设施 (SOAINFRA)

  • User Messaging Service (UCSUMS)

  • WebLogic Services (WLS)

RCU 的使用准则

以下是针对在此方案中使用数据库实例的一些建议:

  • 建议您对生产工作负载使用多可用区。有关使用多个可用区的更多信息,请参阅区域、可用区和 Local Zones

  • 为了提高安全性,Oracle 建议您使用透明数据加密 (TDE) 对静态数据进行加密。如果您拥有包含高级安全选项的 Enterprise Edition 许可证,则可使用 TDE 选项启用静态加密。有关更多信息,请参阅“Oracle 透明数据加密”。

    Amazon RDS 还提供适用于所有数据库版本的静态加密选项。有关更多信息,请参阅“加密 Amazon RDS 资源”。

  • 将 VPC 安全组配置为允许应用程序服务器和 Amazon RDS 数据库实例之间的通信。承载 Fusion Middleware 组件的应用程序服务器可位于 Amazon EC2 上或位于本地。

运行 RCU

要创建和填充架构以支持 Fusion Middleware 组件,请使用 Oracle Repository Creation Utility (RCU)。可通过不同方式运行 RCU。

使用命令行通过一个步骤运行 RCU

如果您在填充任何架构之前不需要对其进行编辑,则可通过一个步骤运行 RCU。否则,请参阅下一部分以了解通过多个步骤运行 RCU。

可使用命令行参数 -silent 在静默模式下运行 RCU。在静默模式下运行 RCU 时,可通过创建包含密码的文本文件来避免在命令行中输入密码。创建一个文本文件,其中 dbUser 的密码位于第一行,每个组件的密码位于后续行。您将密码文件的名称指定为 RCU 命令的最后一个参数。

以下示例通过一个步骤为 SOA 基础设施组件 (及其依赖项) 创建和填充建构。

对于 Linux、macOS 或 Unix:

export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw export JAVA_HOME=/usr/java/jdk1.8.0_65 ${ORACLE_HOME}/oracle_common/bin/rcu \ -silent \ -createRepository \ -connectString ${dbhost}:${dbport}:${dbname} \ -dbUser ${dbuser} \ -dbRole Normal \ -honorOMF \ -schemaPrefix ${SCHEMA_PREFIX} \ -component MDS \ -component STB \ -component OPSS \ -component IAU \ -component IAU_APPEND \ -component IAU_VIEWER \ -component UCSUMS \ -component WLS \ -component SOAINFRA \ -f < /tmp/passwordfile.txt

有关更多信息,请参阅 Oracle 文档中的从命令行运行 Repository Creation Utility

使用命令行通过多个步骤运行 RCU

要手动编辑架构脚本,请通过多个步骤运行 RCU:

  1. 使用 -generateScript 命令行参数在 Prepare Scripts for System Load 模式下运行 RCU 以便为架构创建脚本。

  2. 手动编辑和运行生成的脚本 script_systemLoad.sql

  3. 再次使用 -dataLoad 命令行参数在 Perform Product Load 模式下运行 RCU 以填充架构。

  4. 运行生成的清理脚本 script_postDataLoad.sql

要在静默模式下运行 RCU,请指定命令行参数 -silent。在静默模式下运行 RCU 时,可通过创建包含密码的文本文件来避免在命令行中键入密码。创建一个文本文件,其中 dbUser 的密码位于第一行,每个组件的密码位于后续行。将密码文件的名称指定为 RCU 命令的最后一个参数。

以下示例为 SOA 基础设施组件及其依赖项创建架构脚本。

对于 Linux、macOS 或 Unix:

export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw export JAVA_HOME=/usr/java/jdk1.8.0_65 ${ORACLE_HOME}/oracle_common/bin/rcu \ -silent \ -generateScript \ -connectString ${dbhost}:${dbport}:${dbname} \ -dbUser ${dbuser} \ -dbRole Normal \ -honorOMF \ [-encryptTablespace true] \ -schemaPrefix ${SCHEMA_PREFIX} \ -component MDS \ -component STB \ -component OPSS \ -component IAU \ -component IAU_APPEND \ -component IAU_VIEWER \ -component UCSUMS \ -component WLS \ -component SOAINFRA \ -scriptLocation /tmp/rcuscripts \ -f < /tmp/passwordfile.txt

现在,您可以编辑生成的脚本,连接到您的 Oracle 数据库实例和运行脚本。生成的脚本名为 script_systemLoad.sql。有关连接到 Oracle 数据库实例的信息,请参阅步骤 3:将 SQL 客户端连接到 Oracle 数据库实例

以下示例为 SOA 基础设施组件 (及其依赖项) 填充架构。

对于 Linux、macOS 或 Unix:

export JAVA_HOME=/usr/java/jdk1.8.0_65 ${ORACLE_HOME}/oracle_common/bin/rcu \ -silent \ -dataLoad \ -connectString ${dbhost}:${dbport}:${dbname} \ -dbUser ${dbuser} \ -dbRole Normal \ -honorOMF \ -schemaPrefix ${SCHEMA_PREFIX} \ -component MDS \ -component STB \ -component OPSS \ -component IAU \ -component IAU_APPEND \ -component IAU_VIEWER \ -component UCSUMS \ -component WLS \ -component SOAINFRA \ -f < /tmp/passwordfile.txt

最后,您连接到 Oracle 数据库实例,并运行清除脚本。该脚本名为 script_postDataLoad.sql

有关更多信息,请参阅 Oracle 文档中的从命令行运行 Repository Creation Utility

以交互式模式运行 RCU

要使用 RCU 图形用户界面,请以交互模式运行 RCU。加入 -interactive 参数,然后省略 -silent 参数。有关更多信息,请参阅 Oracle 文档中的了解 Repository Creation Utility 屏幕

以下示例以交互模式启动 RCU 并预填写连接信息。

对于 Linux、macOS 或 Unix:

export ORACLE_HOME=/u01/app/oracle/product/12.2.1.0/fmw export JAVA_HOME=/usr/java/jdk1.8.0_65 ${ORACLE_HOME}/oracle_common/bin/rcu \ -interactive \ -createRepository \ -connectString ${dbhost}:${dbport}:${dbname} \ -dbUser ${dbuser} \ -dbRole Normal

RCU 问题排查

请注意以下问题。

Oracle Managed Files (OMF)

Amazon RDS 使用 OMF 数据文件来简化存储管理。您可以自定义表空间属性,例如大小和范围管理。但是,如果在运行 RCU 时指定数据文件名,则表空间代码将失败,错误为 ORA-20900。可通过以下方式将 RCU 与 OMF 结合使用:

  • 在 RCU 12.2.1.0 和更高版本中,使用 -honorOMF 命令行参数。

  • 在 RCU 12.1.0.3 和更高版本中,使用多个步骤并编辑生成的脚本。有关更多信息,请参阅 使用命令行通过多个步骤运行 RCU

对象权限

由于 Amazon RDS 是一项托管式服务,因此,您不具有对 RDS for Oracle 数据库实例的完全 SYSDBA 访问权限。不过,RCU 12c 支持具有较低权限的用户。在大多数情况下,主用户权限足以创建存储库。

主账户可以直接授予已授予 WITH GRANT OPTION 的权限。在某些情况下,在尝试授予 ORA-01031 对象权限时,RCU 可能失败,错误为 SYS。您可以重试并运行 rdsadmin_util.grant_sys_object 存储过程,如以下示例所示:

BEGIN rdsadmin.rdsadmin_util.grant_sys_object('GV_$SESSION','MY_DBA','SELECT'); END; /

如果您尝试授予对于对象 SCHEMA_VERSION_REGISTRYSYS 权限,则操作可能会失败,错误为 ORA-20199: Error in rdsadmin_util.grant_sys_object。您可以使用架构拥有者名称(即 SYSTEM)限定表 SCHEMA_VERSION_REGISTRY$ 和视图 SCHEMA_VERSION_REGISTRY,然后重试该操作。或者,您可以创建同义词。以主用户身份登录并运行以下语句:

CREATE OR REPLACE VIEW SYSTEM.SCHEMA_VERSION_REGISTRY AS SELECT * FROM SYSTEM.SCHEMA_VERSION_REGISTRY$; CREATE OR REPLACE PUBLIC SYNONYM SCHEMA_VERSION_REGISTRY FOR SYSTEM.SCHEMA_VERSION_REGISTRY; CREATE OR REPLACE PUBLIC SYNONYM SCHEMA_VERSION_REGISTRY$ FOR SCHEMA_VERSION_REGISTRY;

Enterprise Scheduler Service

当您使用 RCU 删除 Enterprise Scheduler Service 存储库时,RCU 可能失败,错误为 Error: Component drop check failed