将 Oracle 电子商务套件迁移到亚马逊定制 RDS - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将 Oracle 电子商务套件迁移到亚马逊定制 RDS

由西蒙·坎宁安 (AWS)、Jaydeep Nandy ()、Nitin Saxena (AWS) 和 Vishnu Vinnakota (AWS) 创作 AWS

摘要

Oracle 电子商务套件是一款企业资源规划 (ERP) 解决方案,用于自动化企业范围的流程,例如财务、人力资源、供应链和制造。它具有三层架构:客户端、应用程序和数据库。以前,您必须在自行管理的亚马逊弹性计算云 (AmazonEC2) 实例上运行 Oracle 电子商务套件数据库,但现在您可以从亚马逊关系数据库服务 (亚马逊RDS) 定制版中受益。 

Amazon C RDS ustom for Oracle 是一项托管数据库服务,适用于需要访问底层操作系统和数据库环境的传统、定制和打包应用程序。它可以自动执行数据库管理任务和操作,并使您能够作为数据库管理员访问和自定义数据库环境和操作系统。当您将 Oracle 数据库迁移到 Amazon C RDS ustom 时,Amazon Web Services (AWS) 会处理诸如备份任务和确保高可用性之类的繁重工作,而您可以专注于维护 Oracle 电子商务套件应用程序和功能。有关迁移需要考虑的关键因素,请参阅《AWS规范性指南》中的 Oracle 数据库迁移策略

此模式侧重于使用 Oracle Recovery Manager (RMAN) 备份以及EC2实例与亚马逊RDS定制之间的亚马逊弹性文件系统 (AmazonEFS) 共享文件系统将亚马逊上的独立 Oracle 数据库迁移到 A mazon C RDS ustom 的步骤。EC2该模式使用RMAN完全备份(有时也称为 0 级备份)。 为简单起见,它使用冷备份,即关闭应用程序,装入数据库而不打开。(您也可以使用 Oracle Data Guard 或RMAN复制进行备份。 但是,这种模式不包括这些选项。)

有关构建 Oracle 电子商务套件AWS以实现高可用性和灾难恢复的信息,请参阅模式使用活动备用数据库在 A RDS mazon Custom 上为 Oracle 电子商务套件设置 HA/DR 架构

注意

此模式提供指向 Oracle 支持说明的链接。您需要 Oracle Support 账户才能访问这些文档。

先决条件和限制

先决条件

  • 在亚马逊上运行的 Oracle 版本 12.1.0.2 或 19c(最低 19.3)源数据库,EC2使用 Oracle Linux 7 或红帽企业 Linux (RHEL) 版本 7.x。此模式假设源数据库名称为 VIS,Oracle 19c 的其他容器数据库名称为 VISCDB,但您可以使用其他名称。

    注意

    您也可以将此模式用于本地 Oracle 源数据库,前提是本地网络与 Amazon Virt ual Private Cloud (AmazonVPC) 之间有适当的网络连接。

  • Oracle 电子商务套件 12.2.x 版应用程序(视觉实例)。此过程已在 12.2.11 版本上进行了测试。

  • 单个 Oracle 电子商务套件应用程序层。但是,您可以调整此模式以使用多个应用程序层。

  • 对于 Oracle 12.1.0.2,Amazon RDS Custom 配置了至少 16 GB 的交换空间。否则,12c 示例 CD 将显示一条警告。(如本文档后面所述,Oracle 19c 不需要示例 CD。)

开始迁移前,请完成以下步骤:

  1. 在亚马逊RDS控制台上,使用数据库名称VIS(或您的源数据库名称)创建适用于 Oracle 的亚马逊RDS自定义数据库实例。有关说明,请参阅AWS文档中的 “使用 Amazon C RDS ustom” 和 “适用于 Oracle 的 Amazon C RDS ustom — 数据库环境中的新控制功能” 博客文章。这样可以确保将数据库名称设置为与源数据库相同的名称。(如果留空,则EC2实例和数据库名称将设置为ORCL。)  请务必使用已应用于源代码的补丁创建自定义引擎版本 (CEV)。有关更多信息,请参阅 Amazon RDS 文档CEV中的准备创建

    Oracle 19c 注意事项:目前,对于 Oracle 19c,可以RDS自定义亚马逊容器数据库名称。默认为 RDSCDB。确保使用与源实例相同的系统 ID (SID) 创建RDS自定义 Oracle EC2 实例。例如,在这种模式中,假定 Oracle 19c SID 位于源实例VISCDB上。因此,A SID mazon C RDS ustom上的目标Oracle 19c也应该是。VISCDB

  2. 为 Amazon RDS 自定义数据库实例配置足够的存储CPU、v 和内存,以与 Amazon EC2 源数据库匹配。 为此,您可以根据 v CPU 和内存来匹配 Amazon EC2 实例类型。 

  3. 创建亚马逊EFS文件系统并将其挂载到亚马逊EC2和亚马逊RDS自定义实例上。 有关说明,请参阅 “将适用于 Oracle 的亚马逊RDS定制与亚马逊集成” EFS 博客文章。此模式假设您已在源 Amazon EC2 和目标 Amazon RDS 自定义数据库实例/RMAN上安装了 Amazon EFS 卷,并且源和目标数据库实例之间可以进行网络连接。您也可以通过使用 Amazon FSx 或任何共享云端硬盘来使用相同的方法。

假设

此模式假设应用程序和数据库使用的是逻辑主机名,从而减少了迁移步骤的数量。您可以调整这些步骤以使用物理主机名,但是逻辑主机名可以降低迁移过程的复杂性。有关使用逻辑主机名的优势的信息,请参阅以下支持说明:

  • 对于 12c,Oracle Support Note 2246690.1

  • 对于 19c,Oracle Support Note 2617788.1

这种模式不包括 Oracle 12c 到 19c 的升级场景,而是侧重于将亚马逊上运行的相同版本的 Oracle 数据库迁移到 A EC2 mazon C RDS ustom for Oracle。

适用于 Oracle 的 Amazon C RDS usto m 支持 Oracle (Oracle Home 存储 Oracle 二进制文件。) 您可以将 /rdsdbbin/oracle 的默认路径更改为您指定的路径,例如 /d01/oracle/VIS/19c。为简单起见,此模式中的指令采用默认路径 /rdsdbbin/oracle

限制

此模式不支持以下功能和配置:

  • 将数据库 ARCHIVE_LAG_TARGET 参数设置为 60–7200 范围之外的值

  • 禁用数据库实例日志模式(NOARCHIVELOG) 

  • 关闭EC2实例的EBS-optimized属性

  • 修改附加到EC2实例的原始 Amazon Elastic Block Store (AmazonEBS) 卷

  • 添加新EBS卷或将卷类型从更改gp2gp3

  • 对 TNS ifile 的 Support

  • 更改control_file位置和名称(必须VISCDB/rdsdbdata/db/VISCDB_A/controlfile/control-01.ctl,CDB名称在哪里)

有关这些配置和其他不支持的配置的更多信息,请参阅 Ama RDS zon 文档中的修复不支持的配置

产品版本

有关 Amazon C RDS ustom 支持的 Oracle 数据库版本和实例类,请参阅 Amazon Cu RDSstom for Oracle 的可用性和要求

架构

以下架构图表示在上的AWS单个可用区中运行的 Oracle 电子商务套件系统。应用程序层可通过 Application Loa d Bal ancer 访问,应用程序和数据库都在私有子网中,Amazon C RDS ustom 和 Amazon EC2 数据库层使用 Amazon EFS 共享文件系统来存储和访问RMAN备份文件。

在单个可用区中使用电子商务套件的架构 AWS

工具

AWS 服务

  • Amazon C RDS ustom for Oracle 是一项托管数据库服务,适用于需要访问底层操作系统和数据库环境的传统、定制和打包应用程序。它可以自动执行数据库管理任务和操作,并使您能够作为数据库管理员访问和自定义数据库环境和操作系统。 

  • Amazon Elastic File System (AmazonEFS) 是一个简单、无服务器的弹性文件系统,无需管理或预配置即可添加和删除文件。此模式使用 Amazon EFS 共享文件系统来存储和访问RMAN备份文件。

  • AWSS@@ ecrets Manager 是一项AWS托管服务,可让您轻松轮换、管理和检索数据库凭证、密API钥和其他机密信息。创建数据库后,Amazon C RDS ustom 会将密钥对和数据库用户凭证存储在 Secrets Manager 中。在这种模式中,您可以从 Secrets Manager 检索数据库用户密码来创建 RDSADMINADMIN 用户以及更改 Sys 和系统密码。

其他工具

  • RMAN是一种为 Oracle 数据库提供备份和恢复支持的工具。此模式用于RMAN对亚马逊上的源 Oracle 数据库执行冷备份,该数据库在 Amazon EC2 Cu RDS stom 上还原。

最佳实践

  • 使用逻辑主机名。这大大减少了必须运行的克隆后脚本的数量。有关更多信息,请参阅 Oracle Support Note 2246690.1。

  • 默认情况下,Amazon C RDS ustom 使用 Oracle 自动内存管理 (AMM)。 如果您想使用 hugemem 内核,可以将 Amazon Cu RDS stom 配置为改用自动共享内存管理 () ASMM。

  • 默认情况下启用 memory_max_target 参数。框架在后台使用此参数来创建只读副本。

  • 启用 Oracle 闪回数据库。此功能在失效转移(不是切换)测试场景中非常有用,可以恢复备用状态。

  • 对于数据库初始化参数,请自定义 Amazon RDS 定制数据库实例为 Oracle 电子商务套件提供的标准PFILE,而不是使用 Oracle 源数据库中的。SPFILE这是因为在 Amazon Cu RDS stom 中创建只读副本时,空格和注释会导致问题。有关数据库初始化参数的更多信息,请参阅 Oracle Support Note 396009.1。

在接下来的操作说明部分中,我们为 Oracle 12.1.0.2 和 19c 提供了单独的说明,其中的细节有所不同。

操作说明

任务描述所需技能

关闭应用程序。

要关闭源应用程序,请使用以下命令: 

$ su - applmgr $ cd $INST_TOP/admin/scripts $ ./adstpall.sh
DBA

创建 .zip 文件。

在源应用程序层上创建 appsutil.zip 文件。稍后您将使用此文件来配置 Amazon C RDS ustom 数据库节点。

$ perl $AD_TOP/bin/admkappsutil.pl
DBA

将.zip 文件复制到亚马逊EFS。

appsutil.zip从复制$INST_TOP/admin/out到您共享的 Amazon EFS 卷 (/RMAN/appsutil)。您可以使用安全副本 (SCP) 或其他传输机制手动传输文件。

DBA
任务描述所需技能

在 Amazon EC2 上预克隆数据库层。

以 Oracle 用户身份登录并运行:

$ cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME $ perl adpreclone.pl dbTier

检查生成的日志文件以确认操作成功完成。

DBA

将 appsutil.zip 复制到共享的亚马逊EFS文件系统。

创建 tar 备份并复制$ORACLE_HOME/appsutil到共享的 Amazon EFS 文件系统(例如,/RMAN/appsutil):

$ cd $ORACLE_HOME $ tar cvf sourceappsutil.tar appsutil $ cp sourceappsutil.tar /RMAN/appsutil
DBA
任务描述所需技能

创建备份脚本。

将源数据库RMAN完整备份到共享的 Amazon EFS 文件系统。

为简单起见,此模式执行冷RMAN备份。但是,您可以修改这些步骤,使用 Oracle Data Guard 执行热RMAN备份,从而减少停机时间。

1. 以挂载模式启动源 Amazon EC2 数据库:

$ sqlplus / as sysdba $ SQL> shutdown immediate $ SQL> startup mount

2. 创建RMAN备份脚本(根据您的 Oracle 版本使用以下示例之一,或运行现有RMAN脚本之一),将数据库备份到您安装的 Amazon EFS 文件系统(在本示例/RMAN中)。

对于 Oracle 12.1.0.2:

$ vi FullRMANColdBackup.sh #!/bin/bash . /home/oracle/.bash_profile export ORACLE_SID=VIS export ORACLE_HOME=/d01/oracle/VIS/12.1.0 export DATE=$(date +%y-%m-%d_%H%M%S) rman target / log=/RMAN/VISDB_${DATE}.log << EOF run { allocate channel ch1 device type disk format '/RMAN/visdb_full_bkp_%u'; allocate channel ch2 device type disk format '/RMAN/visdb_full_bkp_%u'; crosscheck backup; delete noprompt obsolete; BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG; backup archivelog all; release channel ch1; release channel ch2; } EOF

对于 Oracle 19c:

$ vi FullRMANColdBackup.sh #!/bin/bash . /home/oracle/.bash_profile export ORACLE_SID=VISCDB export ORACLE_HOME=/d01/oracle/VIS/19c export DATE=$(date +%y-%m-%d_%H%M%S) rman target / log=/RMAN/VISDB_${DATE}.log << EOF run { allocate channel ch1 device type disk format '/RMAN/visdb_full_bkp_%u'; allocate channel ch2 device type disk format '/RMAN/visdb_full_bkp_%u'; crosscheck backup; delete noprompt obsolete; BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG; backup archivelog all; backup current controlfile format '/RMAN/cntrl.bak'; release channel ch1; release channel ch2; } EOF
DBA

运行备份脚本。

更改权限,以 Oracle 用户身份登录,然后运行脚本:

$ chmod 755 FullRMANColdBackup.sh $ ./FullRMANColdBackup.sh
DBA

检查是否存在错误,并记下备份文件的名称。

检查RMAN日志文件中是否有错误。如果一切正常,请列出控制文件的备份。记下输出文件的名称。

对于 Oracle 12.1.0.2:

RMAN> connect target / RMAN> list backup of controlfile; BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 9 Full 1.11M DISK 00:00:04 23-APR-22 BP Key: 9 Status: AVAILABLE Compressed: YES Tag: TAG20220423T121011 Piece Name: /RMAN/visdb_full_bkp_100rlsbt Control File Included: Ckp SCN: 12204595396727 Ckp time: 23-APR-22

/RMAN/visdb_full_bkp_100rlsbt稍后,当您在 Amazon Custo RDS m 上恢复数据库时,您将使用备份文件。

对于 Oracle 19c:

RMAN> connect target / RMAN> list backup of controlfile; BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 38 Full 17.92M DISK 00:00:01 25-NOV-22 BP Key: 38 Status: AVAILABLE Compressed: NO Tag: TAG20221125T095014 Piece Name: /RMAN/cntrl.bak Control File Included: Ckp SCN: 12204620188873 Ckp time: 23-NOV-22

/RMAN/cntrl.bak稍后,当您在 Amazon Custo RDS m 上恢复数据库时,您将使用备份文件。

DBA
任务描述所需技能

更改主机文件并设置主机名。

注意

本节中的命令必须以 root 用户身份运行。

1. 编辑 Amazon RDS 自定义数据库实例上的/etc/hosts文件。实现此目的的一种简单方法是从源 Amazon 数据库主机文件中复制EC2数据库和应用程序主机条目。

<IP-address> OEBS-app01.localdomain OEBS-app01 OEBS-app01log.localdomain OEBS-app01log <IP-address> OEBS-db01.localdomain OEBS-db01 OEBS-db01log.localdomain OEBS-db01log

其中<IP-address>是数据库节点 IP 地址,您应将其替换为 Amazon RDS 自定义 IP 地址。逻辑主机名后面附有 *log

2. 运行 hostnamectl 命令来更改数据库主机名: 

$ sudo hostnamectl set-hostname --static persistent-hostname

例如:

$ sudo hostnamectl set-hostname --static OEBS-db01log

有关更多信息,请参阅知识中心关于分配静态主机名的文章

3. 重启 Amazon RDS 自定义数据库实例。 不用担心会关闭数据库,因为您将在以后的步骤中将其删除。

$ reboot

4. 当 Amazon RDS 自定义数据库实例恢复后,登录并验证主机名是否已更改: 

$ hostname oebs-db01
DBA

安装 Oracle 电子商务套件软件。

在 Amazon RDS 自定义数据库实例上安装推荐RPMs到 Oracle 主目录的 Oracle 电子商务套件。有关详细信息,请参阅 Oracle Support Note #1330701.1。以下是部分列表。每个版本的RPM列表都会发生变化,因此请检查并确保已安装所有必RPMs需的版本。

以根用户身份运行:

$ sudo yum -y update $ sudo yum install -y elfutils-libelf-devel* $ sudo yum install -y libXp-1.0.2-2.1*.i686 $ sudo yum install -y libXp-1.0.2-2.1* $ sudo yum install -y compat-libstdc++-*

在继续下一步之前,请确认所有必需的补丁都已安装。

DBA

安装VNC服务器。

注意

对于 Oracle 19c,你可以省略此步骤,因为不再需要示例 CD;请参阅 Oracle Support Note 2782085.1。

对于 Oracle 12.1.0.2:

安装VNC服务器及其相关桌面软件包。这是在下一步中安装 12c 示例 CD 的必要条件。

1. 以根用户身份运行:

$ sudo yum install -y tigervnc-server $ sudo yum install -y *kde* $ sudo yum install -y *xorg*

2. 为rdsdb用户启动VNC服务器,然后为以下用户设置密码VNC:

$ su - rdsdb $ vncserver :1 $ vncpassword
DBA

安装 12c 示例 CD。

注意

对于 Oracle 19c,你可以省略此步骤,因为不再需要示例 CD;请参阅 Oracle Support Note 2782085.1。

对于 Oracle 12.1.0.2:

1. 从 https://edelivery.oracle.com/下载安装文件。 对于 Oracle 电子商务套件 12.2.11 – Oracle 数据库 12c 第 1 版(12.1.0.2),请查看 Linux x86-64 V100102-01.zip 的示例

2. 创建用于存储示例 CD 的目录:

$ mkdir /RMAN/12cexamples

3. 使用您选择的传输机制将 Examples CD .zip 文件复制到此目录(例如,SCP):

V100102-01.zip

4. 将所有权更改为 rdsdb

$ chown -R rdsdb:rdsdb /RMAN/12cexamples

5. 以 rdsdb 用户身份解压缩文件:

$ unzip V10010201.zip

6. 通过有权访问客户端和 Amazon C RDS ustom 的VNC客户端进行连接。确保您已打开必要的网络连接和防火墙端口以允许访问VNC。例如,正在运行的VNC服务器display :1需要在与 Amazon Cu RDS stom EC2 主机关联的安全组上打开端口 5901。

7. 更改为复制了示例 CD 的目录:

$ cd /RMAN/12cexamples/examples

8. 运行安装程序。 请务必验证 oraInst.loc 文件的位置。 

./runInstaller -invPtrLoc /rdsdbbin/oracle.12.1.custom.r1.EE.1/oraInst.loc

9. 在安装示例 CD 的过程中使用以下参数: 

Skip Software Update Downloads Select Oracle Home 12.1.0.2 (Oracle Base = /rdsdbbin) (Software Location = /rdsdbbin/oracle/12.1.custom.r1.EE.1)

10. 安装程序包括五个带有提示的步骤。 按照这些步骤操作直到安装完成。 

DBA
任务描述所需技能

暂停自动化模式。

在继续执行后续步骤之前,您必须暂停 Amazon C RDS ustom 数据库实例的自动化模式,以确保自动化不会干扰RMAN活动。

使用以下AWS命令行界面 (AWSCLI) 命令暂停自动化。(确保您已经配置了AWSCLI第一个。)

aws rds modify-db-instance \ --db-instance-identifier VIS \ --automation-mode all-paused \ --resume-full-automation-mode-minute 360 \ --region eu-west-1

指定暂停时间时,请确保留出足够的时间进行RMAN恢复。这取决于源数据库的大小,因此请相应地修改 360 值。

DBA

删除起始数据库。

删除现有的 Amazon RDS 定制数据库。 

以 Oracle 主用户的身份运行以下命令。(除非您对其进行了自定义,否则默认用户为 rdsdb。)

$ sqlplus / as sysdba SQL> shutdown immediate; SQL> startup nomount restrict; SQL> alter database mount; SQL> drop database; SQL> exit
DBA

创建用于存储数据库文件的目录。

对于 Oracle 12.1.0.2:

为数据库、控制文件、数据文件和联机日志创建目录。使用上一个命令中 control_files 参数的父目录(在本例中为 VIS_A)。以 Oracle 主用户(默认为 rdsdb)的身份运行以下命令。

$ mkdir -p /rdsdbdata/db/VIS_A/controlfile $ mkdir -p /rdsdbdata/db/VIS_A/datafile $ mkdir -p /rdsdbdata/db/VIS_A/onlinelog

对于 Oracle 19c:

为数据库、控制文件、数据文件和联机日志创建目录。使用上一个命令中 control_files 参数的父目录(在本例中为 VISCDB_A)。以 Oracle 主用户(默认为 rdsdb)的身份运行以下命令。

$ mkdir -p /rdsdbdata/db/cdb/VISCDB_A/controlfile $ mkdir -p /rdsdbdata/db/cdb/VISCDB_A/datafile $ mkdir -p /rdsdbdata/db/cdb/VISCDB_A/onlinelog $ mkdir -p /rdsdbdata/db/cdb/VISCDB_A/onlinelog/arch $ mkdir /rdsdbdata/db/pdb/VISCDB_A
DBA

创建和修改 Oracle 电子商务套件的参数文件。

在此步骤中,您不会从源数据库复制服务器参数文件 (SPFILE)。相反,您将使用使用亚马逊RDS自定义数据库实例创建的标准参数文件 (PFILE),并添加 Oracle 电子商务套件所需的参数。

当您删除数据库时,Amazon A RDS utomation 会为该init.ora文件创建备份,该备份与 Amazon C RDS ustom 数据库相关联。此文件称为 oracle_pfile,位于 /rdsdbdata/config

对于 Oracle 12.1.0.2:

1. 将 /rdsdbdata/config/oracle_pfile 复制到 $ORACLE_HOME

$ cp /rdsdbdata/config/oracle_pfile $ORACLE_HOME/dbs/initVIS.ora

2. 编辑 Amazon RDS 自定义数据库实例上的initVIS.ora文件。验证源上的所有参数并根据需要添加任何参数。有关详细信息,请参阅 Oracle Support Note 396009.1。

重要

确保您添加的参数中没有注释。注释会导致自动化出现问题,例如创建只读副本和发布 point-in-time恢复 () PITRs。

3. 根据要求将与以下内容类似的参数添加到 initVIS.ora 文件中:

*.workarea_size_policy='AUTO' *.plsql_code_type='INTERPRETED' *.cursor_sharing='EXACT' *._b_tree_bitmap_plans=FALSE *.session_cached_cursors=500 *.optimizer_adaptive_features=false *.optimizer_secure_view_merging=false *.SQL92_SECURITY=TRUE *.temp_undo_enabled=true _system_trig_enabled = TRUE nls_language = american nls_territory = america nls_numeric_characters = ".," nls_comp = binary nls_sort = binary nls_date_format = DD-MON-RR nls_length_semantics = BYTE aq_tm_processes = 1 _sort_elimination_cost_ratio =5 _like_with_bind_as_equality = TRUE _fast_full_scan_enabled = FALSE _b_tree_bitmap_plans = FALSE optimizer_secure_view_merging = FALSE _optimizer_autostats_job = FALSE parallel_max_servers = 8 parallel_min_servers = 0 parallel_degree_policy = MANUAL sec_case_sensitive_logon = FALSE compatible = 12.1.0 o7_dictionary_accessibility = FALSE utl_file_dir =/tmp

4. 修改如下。这些值将取决于源系统,因此请根据您当前的设置对其进行修改。

*.open_cursors=500 *.undo_tablespace='APPS_UNDOTS1

5. 移除SPFILE引用。

*.spfile='/rdsdbbin/oracle/dbs/spfileVIS.ora'

备注:

  • 请勿更改 Amazon C RDS ustom PFILE 为control_files和提供的值db_unique_name。亚马逊RDS期望这些值。如果您将来尝试创建只读副本,偏离这些值会导致问题。

  • 默认情况下,Amazon C RDS ustom 使用自动内存管理 (AMM)。如果您想使用 hugemem,可以将 Amazon Cu RDS stom 配置为使用自动共享内存管理 ()。ASMM 

  • 默认情况下启用 memory_max_target 参数。Amazon RDS 框架在后台使用它来创建只读副本。

6. 运行以下 startup nomount 命令确认 initVIS.ora 文件没有问题:

SQL> startup nomount pfile=/rdsdbbin/oracle/dbs/initVIS.ora; SQL> create spfile='/rdsdbdata/admin/VIS/pfile/spfileVIS.ora' from pfile; SQL> exit

7. 为创建符号链接SPFILE。

$ ln -s /rdsdbdata/admin/VIS/pfile/spfileVIS.ora $ORACLE_HOME/dbs/

对于 Oracle 19c:

1. 将 /rdsdbdata/config/oracle_pfile 复制到 $ORACLE_HOME

$ cp /rdsdbdata/config/oracle_pfile $ORACLE_HOME/dbs/initVISCDB.ora

2. 编辑 Amazon RDS 自定义数据库实例上的initVISCDB.ora文件。验证源上的所有参数并根据需要添加任何参数。有关详细信息,请参阅 Oracle Support Note 396009.1。

重要

确保您添加的参数中没有注释。 如果有评论,它们将导致自动化出现问题,例如创建只读副本和发布 point-in-time恢复()PITRs。

3. 根据要求将与以下内容类似的参数添加到 initVISCDB.ora 文件中。

*.instance_name=VISCDB *.sec_case_sensitive_logon= FALSE *.result_cache_max_size = 600M *.optimizer_adaptive_plans =TRUE *.optimizer_adaptive_statistics = FALSE *.pga_aggregate_limit = 0 *.temp_undo_enabled = FALSE *._pdb_name_case_sensitive = TRUE *.event='10946 trace name context forever, level 8454144' *.workarea_size_policy='AUTO' *.plsql_code_type='INTERPRETED' *.cursor_sharing='EXACT' *._b_tree_bitmap_plans=FALSE *.session_cached_cursors=500 *.optimizer_secure_view_merging=false *.SQL92_SECURITY=TRUE _system_trig_enabled = TRUE nls_language = american nls_territory = america nls_numeric_characters = ".," nls_comp = binary nls_sort = binary nls_date_format = DD-MON-RR nls_length_semantics = BYTE aq_tm_processes = 1 _sort_elimination_cost_ratio =5 _like_with_bind_as_equality = TRUE _fast_full_scan_enabled = FALSE _b_tree_bitmap_plans = FALSE optimizer_secure_view_merging = FALSE _optimizer_autostats_job = FALSE parallel_max_servers = 8 parallel_min_servers = 0 parallel_degree_policy = MANUAL

4. 修改如下。这些值将取决于源系统,因此请根据您当前的设置对其进行修改。

*.open_cursors=500 *.undo_tablespace='UNDOTBS1'

5. 移除SPFILE引用:

*.spfile='/rdsdbbin/oracle/dbs/spfileVISCDB.ora'

备注:

  • 请勿更改 Amazon C RDS ustom PFILE 为control_files和提供的值db_unique_name。亚马逊RDS期望这些值。如果您将来尝试创建只读副本,偏离这些值会导致问题。

  • 默认情况下,Amazon C RDS ustom 使用自动内存管理 (AMM)。如果您想使用 hugemem,可以将 Amazon Cu RDS stom 配置为使用自动共享内存管理 ()。ASMM 

  • 默认情况下启用 memory_max_target 参数。Amazon RDS 框架在后台使用它来创建只读副本。

6. 运行以下 startup nomount 命令确认 initVISCDB.ora 文件没有问题:

SQL> startup nomount pfile=/rdsdbbin/oracle/dbs/initVISCDB.ora; SQL> create spfile='/rdsdbdata/admin/VISCDB/pfile/spfileVISCDB.ora' from pfile; SQL> exit

7. 为创建符号链接SPFILE。

$ ln -s /rdsdbdata/admin/VISCDB/pfile/spfileVISCDB.ora $ORACLE_HOME/dbs/
DBA

从备份中恢复 Amazon RDS 自定义数据库。

对于 Oracle 12.1.0.2:

1. 使用之前在源上捕获的备份文件恢复控制文件:

RMAN> connect target / RMAN> RESTORE CONTROLFILE FROM '/RMAN/visdb_full_bkp_100rlsbt'; Starting restore at 10-APR-22 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=201 device type=DISK channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 output file name=/rdsdbdata/db/VIS_A/controlfile/control-01.ctl Finished restore at 10-APR-22

2. 对备份片段进行编目,这样您就可以发出 RMAN restore

RMAN> alter database mount; RMAN> catalog start with '/RMAN/visdb';

3. 创建用于恢复数据库的脚本:

$ vi restore.sh rman target / log=/home/rdsdb/rman.log << EOF run { set newname for database to '/rdsdbdata/db/VIS_A/datafile/%b'; restore database; switch datafile all; switch tempfile all; } EOF

4. 将源文件恢复到目标 Amazon RDS 自定义数据库。必须更改脚本的权限才能运行脚本,然后运行 restore.sh 脚本以恢复数据库。

$ chmod 755 restore.sh $ nohup ./restore.sh &

对于 Oracle 19c:

1. 使用之前在源上捕获的备份文件恢复控制文件:

RMAN> connect target / RMAN> RESTORE CONTROLFILE FROM '/RMAN/cntrl.bak'; Starting restore at 07-JUN-23 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=201 device type=DISK channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:01 output file name=/rdsdbdata/db/cdb/VISCDB_A/controlfile/control-01.ctl Finished restore at 07-JUN-23

2. 对备份片段进行编目,这样您就可以发出 RMAN restore

RMAN> alter database mount; RMAN> catalog start with '/RMAN/visdb';

如果您在使用 start with 命令时遇到问题,可以单独添加备份片段;例如: 

RMAN> catalog backuppiece '/RMAN/visdb_full_bkp_1d1e507m';

然后对每个备份片段重复该命令。

3. 创建用于恢复数据库的脚本。根据要求修改可插拔数据库的名称。根据 vCPUs 可用通道的数量分配 parallel 通道以加快恢复过程。

$ vi restore.sh rman target / log=/home/rdsdb/rmancdb.log << EOF run { allocate channel c1 type disk; allocate channel c2 type disk; .... .... .... allocate channel c<N> type disk; set newname for database to '/rdsdbdata/db/cdb/VISCDB_A/datafile/%b'; set newname for database root to '/rdsdbdata/db/cdb/VISCDB_A/datafile/%f_%b'; set newname for database "PDB$SEED" to '/rdsdbdata/db/cdb/pdbseed/%f_%b'; set newname for pluggable database VIS to '/rdsdbdata/db/pdb/VISCDB_A/%f_%b'; restore database; switch datafile all; switch tempfile all; release channel c1; release channel c2; release channel c3; .... .... .... release channel c<N>; } EOF

4. 将源文件恢复到目标 Amazon RDS 自定义数据库。必须更改脚本的权限才能运行脚本,然后运行 restore.sh 脚本以恢复数据库。

$ chmod 755 restore.sh $ nohup ./restore.sh &
DBA

检查日志文件中是否存在问题。

对于 Oracle 12.1.0.2:

1. 通过查看 rman.log 文件确认没有问题:

$ cat /home/rdsdb/rman.log

2. 确认在控制文件中注册的日志文件的路径:

SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /d01/oracle/VIS/data/log1.dbf /d01/oracle/VIS/data/log2.dbf /d01/oracle/VIS/data/log3.dbf

3. 重命名日志文件以匹配目标的文件路径。替换路径以匹配上一步的输出:

SQL> ALTER DATABASE RENAME FILE '/d01/oracle/VIS/data/log1.dbf' TO '/rdsdbdata/db/VIS_A/onlinelog/log1.dbf'; SQL> ALTER DATABASE RENAME FILE '/d01/oracle/VIS/data/log2.dbf' TO '/rdsdbdata/db/VIS_A/onlinelog/log2.dbf'; SQL> ALTER DATABASE RENAME FILE '/d01/oracle/VIS/data/log3.dbf' TO '/rdsdbdata/db/VIS_A/onlinelog/log3.dbf';

对于 Oracle 19c:

1. 通过查看 rmancdb.log 文件确认没有问题:

$ cat /home/rdsdb/rmancdb.log

2. 确认在控制文件中注册的日志文件的路径:

SQL> select member from v$logfile; MEMBER -------------------------------------------------------------------------------- /d01/oracle/VIS/oradata/VISCDB/redo03.log /d01/oracle/VIS/oradata/VISCDB/redo02.log /d01/oracle/VIS/oradata/VISCDB/redo01.log

3. 重命名日志文件以匹配目标的文件路径。替换路径以匹配上一步的输出:

SQL> ALTER DATABASE RENAME FILE '/d01/oracle/VIS/oradata/VISCDB/redo01.log' TO '/rdsdbdata/db/cdb/VISCDB_A/onlinelog/log1.dbf'; SQL> ALTER DATABASE RENAME FILE '/d01/oracle/VIS/oradata/VISCDB/redo02.log' TO '/rdsdbdata/db/cdb/VISCDB_A/onlinelog/log2.dbf'; SQL> ALTER DATABASE RENAME FILE '/d01/oracle/VIS/oradata/VISCDB/redo03.log' TO '/rdsdbdata/db/cdb/VISCDB_A/onlinelog/log3.dbf';

4. 确认路径、日志文件的状态以及在控制文件中注册的组号:

SQL> column REDOLOG_FILE_NAME format a50 SQL> SELECT a.GROUP#, a.status, b.MEMBER AS REDOLOG_FILE_NAME, (a.BYTES/1024/1024) AS SIZE_MB FROM v$log a JOIN v$logfile b ON a.Group#=b.Group# ORDER BY a.GROUP#; GROUP# STATUS REDOLOG_FILE_NAME SIZE_MB 1 CURRENT /rdsdbdata/db/cdb/VISCDB_A/onlinelog/log1.dbf 512 2 INACTIVE /rdsdbdata/db/cdb/VISCDB_A/onlinelog/log2.dbf 512 3 INACTIVE /rdsdbdata/db/cdb/VISCDB_A/onlinelog/log3.dbf 512
DBA

确认您可以打开 Amazon RDS Custom 数据库并创建OMF日志文件。

适用于 Oracle 的 Amazon C RDS ustom 使用 Oracle 托管文件 (OMF) 来简化操作。您可以将只读副本提升为独立实例,但必须先使用OMF创建日志文件。这是为了确保在提升实例时使用正确的路径。有关如何提升只读副本的更多信息,请参阅 Amazon RDS 文档。当您尝试提升只读副本时,不使用OMF文件可能会导致问题。

1. 使用 resetlogs 打开数据库:

SQL> alter database open resetlogs;
注意

如果您收到错误消息 ORA-00392:线程 1 的日志 xx 正在清除,不允许操作,请按照 -00392 故障排除部分中的步骤进行操作。ORA

2. 确认该数据库打开:

SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE

3. 创建OMF日志文件。使用上一个日志文件查询的输出,根据要求更改组号、组数和大小。以下示例从组 4 开始,为简单起见,添加了三个组。

SQL> alter database add logfile group 4 size 512M; Database altered. SQL> alter database add logfile group 5 size 512M; Database altered. SQL> alter database add logfile group 6 size 512M; Database altered.

4. 删除之前的非OMF文件。以下是您可以根据自己的要求和前述步骤中查询的输出进行自定义的示例:

SQL> alter database drop logfile group 1; System altered. SQL> alter database drop logfile group 2; System altered. SQL> alter database drop logfile group 3; System altered.

5. 确认您可以看到已创建的OMF文件。(Oracle 12.1.0.2 和 19c 的目录路径各不相同,但概念是一样的。)

SQL> select member from v$logfile; MEMBER ----------------------------------------------------- /rdsdbdata/db/cdb/VISCDB_A/onlinelog/o1_mf_4_ksrbslny_.log /rdsdbdata/db/cdb/VISCDB_A/onlinelog/o1_mf_5_ksrchw0k_.log /rdsdbdata/db/cdb/VISCDB_A/onlinelog/o1_mf_6_ksrcnl9v_.log

6. 重新启动数据库并确认实例SPFILE正在使用该数据库:

SQL> shutdown immediate SQL> startup SQL> show parameter spfile

对于 Oracle 12.1.0.2,此查询会返回:

spfile /rdsdbbin/oracle/dbs/spfileVIS.ora

对于 Oracle 19c,该查询会返回:

spfile /rdsdbbin/oracle/dbs/spfileVISCDB.ora

7. 仅适用于 Oracle 19c,请检查容器数据库的状态,并在需要时将其打开:

SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------- ---------- 2 PDB$SEED READ ONLY NO 3 VIS MOUNTED NO SQL> alter session set container=VIS; Session altered. SQL> alter database open; Database altered. SQL> alter database save state; Database altered. SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ----- 3 VIS READ WRITE NO SQL> exit

8. 请从中删除该init.ora文件$ORACLE_HOME/dbs,因为您没有使用PFILE:

$ cd $ORACLE_HOME/dbs

对于 Oracle 12.1.0.2,使用命令:

$ pwd /rdsdbbin/oracle/dbs $ rm initVIS.ora

对于 Oracle 19c,使用命令:

$ pwd /rdsdbbin/oracle/dbs $ rm initVISCDB.ora
DBA
任务描述所需技能

从 Secrets Manager 中检索密码。

您可以在控制台中执行这些步骤,也可以使用执行这些步骤AWSCLI。以下步骤提供了控制台的说明。

1. 登录AWS管理控制台,然后通过以下网址打开 Amazon RDS 控制台https://console.aws.amazon.com/rds/

2. 在导航窗格中,选择 “数据库”,然后选择 Amazon RDS 数据库。

3. 选择配置,并记下实例的资源 ID(格式为:db-WZ4WLCK6AOQ6TJGZKMGRCDCI3Y)。

4. 打开 S AWS ecrets Manager 控制台,网址为https://console.aws.amazon.com/secretsmanager/

5. 选择与 do-not-delete-custom-<resource_id> 同名的密钥,其中 resource-id 指的是您在步骤 3 中记下的实例的 ID。

6. 选择 Retrieve secret value (检索密钥值)

DBA

创建 RDSADMIN 用户。

RDSADMIN是 Amazon RDS 自定义数据库实例中的监控和协调数据库用户。由于启动数据库已删除,目标数据库已通过使用从源数据库恢复RMAN,因此您必须在还原操作后重新创建此用户,以确保 Amazon C RDS ustom 监控按预期运行。您还必须为 RDSADMIN 用户创建单独的配置文件和表空间。Oracle 12.1.0.2 和 19c 的说明略有不同。

对于 Oracle 12.1.0.2:

1. 在SQL提示符下输入以下命令:

SQL> set echo on feedback on serverout on SQL> @?/rdbms/admin/utlpwdmg.sql SQL> ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED PASSWORD_VERIFY_FUNCTION NULL;

2. 创建配置文件 RDSADMIN

SQL> create profile RDSADMIN LIMIT COMPOSITE_LIMIT UNLIMITED SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL UNLIMITED LOGICAL_READS_PER_SESSION UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED IDLE_TIME UNLIMITED CONNECT_TIME UNLIMITED PRIVATE_SGA UNLIMITED FAILED_LOGIN_ATTEMPTS 10 PASSWORD_LIFE_TIME UNLIMITED PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION NULL PASSWORD_LOCK_TIME 86400/86400 PASSWORD_GRACE_TIME 604800/86400;

3. 将 SYSSYSTEMDBSNMP 用户配置文件设置为 RDSADMIN

SQL> set echo on feedback on serverout on SQL> alter user SYS profile RDSADMIN; SQL> alter user SYSTEM profile RDSADMIN; SQL> alter user DBSNMP profile RDSADMIN;

4. 创建 RDSADMIN 表空间:

SQL> create bigfile tablespace rdsadmin datafile size 7M autoextend on next 1m Logging online permanent blocksize 8192 extent management local autoallocate default nocompress segment space management auto;

5. 创建 RDSADMIN 用户。将 RDSADMIN 密码替换为您之前从 Secrets Manager 获得的密码:

SQL> create user rdsadmin identified by xxxxxxxxxx Default tablespace rdsadmin Temporary tablespace temp profile rdsadmin ;

6. 向 RDSADMIN 授予权限:

SQL> grant select on sys.v_$instance to rdsadmin; SQL> grant select on sys.v_$archived_log to rdsadmin; SQL> grant select on sys.v_$database to rdsadmin; SQL> grant select on sys.v_$database_incarnation to rdsadmin; SQL> grant select on dba_users to rdsadmin; SQL> grant alter system to rdsadmin; SQL> grant alter database to rdsadmin; SQL> grant connect to rdsadmin with admin option; SQL> grant resource to rdsadmin with admin option; SQL> alter user rdsadmin account unlock identified by xxxxxxxxxxx; SQL> @?/rdbms/admin/userlock.sql SQL> @?/rdbms/admin/utlrp.sql

对于 Oracle 19c:

1. 在SQL提示符下输入以下命令:

SQL> set echo on feedback on serverout on SQL> @?/rdbms/admin/utlpwdmg.sql SQL> alter profile default LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED PASSWORD_LIFE_TIME UNLIMITED PASSWORD_VERIFY_FUNCTION NULL;

2. 创建配置文件 RDSADMIN

注意

RDSADMINC##在 Oracle 19c 中有一个前缀。 这是因为数据库参数设置common_user_prefixC##RDSADMIN在 Oracle 12.1.0.2 中没有前缀。

SQL> create profile C##RDSADMIN LIMIT COMPOSITE_LIMIT UNLIMITED SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL UNLIMITED LOGICAL_READS_PER_SESSION UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED IDLE_TIME UNLIMITED CONNECT_TIME UNLIMITED PRIVATE_SGA UNLIMITED FAILED_LOGIN_ATTEMPTS 10 PASSWORD_LIFE_TIME UNLIMITED PASSWORD_REUSE_TIME UNLIMITED PASSWORD_REUSE_MAX UNLIMITED PASSWORD_VERIFY_FUNCTION NULL PASSWORD_LOCK_TIME 86400/86400 PASSWORD_GRACE_TIME 604800/86400;

3. 将 SYSSYSTEMDBSNMP 用户配置文件设置为 RDSADMIN

SQL> alter user SYS profile C##RDSADMIN; SQL> alter user SYSTEM profile C##RDSADMIN; SQL> alter user DBSNMP profile C##RDSADMIN;

4. 创建 RDSADMIN 表空间:

SQL> create bigfile tablespace rdsadmin datafile size 7M autoextend on next 1m Logging online permanent blocksize 8192 extent management local autoallocate default nocompress segment space management auto;

5. 创建 RDSADMIN 用户。将 RDSADMIN 密码替换为您之前从 Secrets Manager 获得的密码。

SQL> create user C##rdsadmin identified by xxxxxxxxxx profile C##rdsadmin container=all;

6. 向 RDSADMIN 授予权限:

SQL> grant select on sys.v_$instance to c##rdsadmin; SQL> grant select on sys.v_$archived_log to c##rdsadmin; SQL> grant select on sys.v_$database to c##rdsadmin; SQL> grant select on sys.v_$database_incarnation to c##rdsadmin; SQL> grant select on dba_users to c##rdsadmin; SQL> grant alter system to C##rdsadmin; SQL> grant alter database to C##rdsadmin; SQL> grant connect to C##rdsadmin with admin option; SQL> grant resource to C##rdsadmin with admin option; SQL> alter user C##rdsadmin account unlock identified by xxxxxxxxxxx; SQL> @?/rdbms/admin/userlock.sql SQL> @?/rdbms/admin/utlrp.sql
DBA

创建主用户。

由于启动数据库已被删除,目标数据库已通过使用从源数据库恢复RMAN,因此必须重新创建主用户。在此示例中,主用户名为 admin

对于 Oracle 12.1.0.2:

SQL> create user admin identified by <password>; SQL> grant dba to admin

对于 Oracle 19c:

SQL> alter session set container=VIS; Session altered. SQL> create user admin identified by <password>; User created. SQL> grant dba to admin; Grant succeeded.
DBA

更改超级用户密码。

1. 使用您从 Secrets Manager 中检索到的密码更改系统密码。

对于 Oracle 12.1.0.2:

SQL> alter user sys identified by xxxxxxxxxxx; SQL> alter user system identified by xxxxxxxxxx;

对于 Oracle 19c:

SQL> alter user sys identified by xxxxxxxxxxx container=all; SQL> alter user system identified by xxxxxxxxxx container=all;
  1. 更改 EBS_SYSTEM 密码。

对于 Oracle 12.1.0.2:

SQL> alter user ebs_system identified by xxxxxxxxxx;

对于 Oracle 19c:

对于此版本,您还必须连接到容器数据库,以更新那里的 EBS_SYSTEM 密码。

SQL> alter session set container=vis; SQL> alter user ebs_system identified by xxxxxxxxxx; SQL> exit;

如果您不更改这些密码,Amazon C RDS ustom 会显示错误消息:监控用户或用户凭证的数据库已更改

DBA
任务描述所需技能

创建 Oracle 电子商务套件所需目录。

1. 在 Amazon RDS Custom Oracle 数据库上,以 Oracle 主用户身份运行以下脚本,在中创建9idata目录$ORACLE_HOME/nls/data/9idata。Oracle 电子商务套件需要此目录。

perl $ORACLE_HOME/nls/data/old/cr9idata.pl

忽略该 ORA_NLS10 消息,因为您将在后续步骤中创建支持上下文的环境。

2. 复制您之前在共享的亚马逊appsutil.tar文件系统中创建的EFS文件,然后将其解压缩到亚马逊RDS自定义 Oracle 主目录中。 这将在 $ORACLE_HOME 目录中创建 appsutil 目录。

$ cd /RMAN/appsutil $ cp sourceappsutil.tar $ORACLE_HOME $ cd $ORACLE_HOME $ tar xvf sourceappsutil.tar appsutil

3. 复制您之前保存在 Amazon EFS 共享文件系统中的文件。appsutil.zip 这是您在应用程序层创建的文件。

作为 Amazon RDS 自定义数据库实例上的rdsdb用户:

$ cp /RMAN/appsutil/appsutil.zip $ORACLE_HOME $ cd $ORACLE_HOME

4. 解压缩 appsutil.zip 文件以在 Oracle 主目录中创建 appsutil 目录和子目录:

$ unzip -o appsutil.zip

-o 选项意味着将覆盖某些文件。

配置 tsanames.ora 和 sqlnet.ora 文件。

您必须配置 tnsnames.ora 文件,这样才能使用 Autoconfig 工具连接到数据库。在以下示例中,您可以看到该 tnsnames.ora 文件是软链接的,但默认情况下该文件为空。

$ cd $ORACLE_HOME/network/admin $ ls -ltr -rw-r--r-- 1 rdsdb database 373 Oct 31 2013 shrept.lst lrwxrwxrwx 1 rdsdb database 30 Feb 9 17:17 listener.ora -> /rdsdbdata/config/listener.ora lrwxrwxrwx 1 rdsdb database 28 Feb 9 17:17 sqlnet.ora -> /rdsdbdata/config/sqlnet.ora lrwxrwxrwx 1 rdsdb database 30 Feb 9 17:17 tnsnames.ora -> /rdsdbdata/config/tnsnames.ora

1. 创建 tnsnames.ora 条目。由于 Amazon RDS 自动解析文件的方式,您必须确保条目中不包含任何空格、注释或多余的行。否则,在使用某些方法(APIs例如 create-db-instance-read-replic a)时可能会遇到问题。使用以下内容作为示例。   

2. 根据您的要求更换端口、SID主机:

$ vi tnsnames.ora VIS=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(PORT=1521)(HOST=xx.xx.xx.xx)))(CONNECT_DATA=(SID=VIS)(SERVER=DEDICATED)))
注意

文件中不应有多余的行。如果不删除这些行,则将来在创建只读副本时可能会遇到问题。创建只读副本可能会失败,并显示错误消息:Act ivity 引发异常 HostManagerException::无法 restrictReplication 在任何主机上成功调用

3. 确认可以访问数据库:

$ tnsping vis OK (0 msec)

4. 仅适用于 Oracle 19c,请更新该 sqlnet.ora 文件。不这样做将导致错误 ORA-01017:用户名/密码无效;尝试连接数据库时登录被拒绝。编辑 $ORACLE_HOME/network/admin 中的 sqlnet.ora 以匹配以下内容:

NAMES.DIRECTORY_PATH=(TNSNAMES, ONAMES, HOSTNAME) SQLNET.EXPIRE_TIME= 10 SQLNET.INBOUND_CONNECT_TIMEOUT =60 SQLNET.ALLOWED_LOGON_VERSION_SERVER=10 HTTPS_SSL_VERSION=undetermined

5. 连接测试:

$ sqlplus apps/****@vis
DBA

配置数据库。

现在,您已经测试了与数据库的连接,可以使用 appsutil 实用程序配置数据库,以创建支持上下文的环境。

对于 Oracle 12.1.0.2:

1. 运行以下 命令:

$ cd $ORACLE_HOME/appsutil/bin $ perl adbldxml.pl appsuser=apps Enter Hostname of Database server: oebs-db01 Enter Port of Database server: 1521 Enter SID of Database server: VIS Enter Database Service Name: VIS Enter the value for Display Variable: :1 The context file has been created at: /rdsdbbin/oracle/appsutil/VIS_oebs-db01.xml

2. 从根用户创建 oraInst.loc

$ vi /etc/oraInst.loc inventory_loc=/rdsdbbin/oracle.12.1.custom.r1.EE.1/oraInventory inst_group=database

3. 使用上一步中创建的上下文文件克隆上下文文件以设置逻辑主机名。以 rdsdb 用户身份运行:

$ cd $ORACLE_HOME/appsutil/clone/bin $ perl adclonectx.pl \ contextfile=[ORACLE_HOME]/appsutil/[current context file] \ template=[ORACLE_HOME]/appsutil/template/adxdbctx.tmp

其中,oebs-db01log 指的是逻辑主机名。例如:

$ perl adclonectx.pl \ contextfile=/rdsdbbin/oracle.12.1.custom.r1.EE.1/appsutil/VIS_oebs-db01.xml \ template=/rdsdbbin/oracle/appsutil/template/adxdbctx.tmp Target System Hostname (virtual or normal) [oebs-db01] : oebs-db01log Target System Base Directory : /rdsdbbin/oracle Target Instance is RAC (y/n) [n] : n Target System Database SID : VIS Oracle OS User [rdsdb] : Oracle OS Group [rdsdb] : database Role separation is supported y/n [n] ? : n Target System utl_file_dir Directory List : /tmp Number of DATA_TOP's on the Target System [1] : Target System DATA_TOP Directory 1 [/rdsdbbin/oracle/data] : /rdsdbdata/db/VIS_A/datafile/ Target System RDBMS ORACLE_HOME Directory [/rdsdbbin/oracle/12.1.0] : /rdsdbbin/oracle Do you want to preserve the Display [:1] (y/n) : y Do you want the target system to have the same port values as the source system (y/n) [y] ? : y The new database context file has been created : /rdsdbbin/oracle.12.1.custom.r1.EE.1/appsutil/clone/bin/VIS_oebs-db01log.xml contextfile=/rdsdbbin/oracle.12.1.custom.r1.EE.1/appsutil/clone/bin/VIS_oebs-db01log.xml

对于 Oracle 19c:

1. 运行以下 命令:

$ cd $ORACLE_HOME/appsutil/bin $ perl adbldxml.pl appsuser=apps Enter Hostname of Database server: oebs-db01 Enter Port of Database server: 1521 Enter SID of Database server: VIS Enter the database listener name:L_VISCDB_001 Enter the value for Display Variable: :1 The context file has been created at: /rdsdbbin/oracle/appsutil/VIS_oebs-db01.xml

2. 从根用户创建 oraInst.loc

$ vi /etc/oraInst.loc inventory_loc=/rdsdbbin/oracle/oraInventory inst_group=database

3. 使用上一步中创建的上下文文件克隆上下文文件以设置逻辑主机名。以 rdsdb 用户身份运行:

$ cd $ORACLE_HOME/appsutil/clone/bin $ perl adclonectx.pl \ contextfile=[ORACLE_HOME]/appsutil/[current context file] \ template=[ORACLE_HOME]/appsutil/template/adxdbctx.tmp

其中,oebs-db01log 指的是逻辑主机名。例如:

$ perl adclonectx.pl \ contextfile=/rdsdbbin/oracle/appsutil/VIS_oebs-db01.xml \ template=/rdsdbbin/oracle/appsutil/template/adxdbctx.tmp Target System Hostname (virtual or normal) [oebs-db01] : oebs-db01log Target System Base Directory : /rdsdbbin/oracle Target Instance is RAC (y/n) [n] : n Target System CDB Name : VISCDB Target System PDB Name : VIS Oracle OS User [oracle] : rdsdb Oracle OS Group [dba] : database Role separation is supported y/n [n] ? : n Number of DATA_TOP's on the Target System [2] : Target System DATA_TOP Directory 1 [/d01/oracle/VISCDB] : /rdsdbdata/db/pdb/VISCDB_A Target System DATA_TOP Directory 2 [/d01/oracle/data] : /rdsdbdata/db/pdb/VISCDB_A/datafile Specify value for OSBACKUPDBA group [database] : Specify value for OSDGDBA group [database] : Specify value for OSKMDBA group [database] : Specify value for OSRACDBA group [database] : Target System RDBMS ORACLE_HOME Directory [/d01/oracle/19.0.0] : /rdsdbbin/oracle Do you want to preserve the Display [:1] (y/n) : y Do you want the target system to have the same port values as the source system (y/n) [y] ? : y Validating if the source port numbers are available on the target system.. Complete port information available at /rdsdbbin/oracle/appsutil/clone/bin/out/VIS_oebs-db01log/portpool.lst New context path and file name [VIS_oebs-db01log.xml] : /rdsdbbin/oracle/appsutil/VIS_oebs-db01log.xml Do you want to overwrite it (y/n) [n] ? : y Replacing /rdsdbbin/oracle/appsutil/VIS_oebs-db01log.xml file. The new database context file has been created : contextfile=/rdsdbbin/oracle/appsutil/VIS_oebs-db01log.xml Check Clone Context logfile /rdsdbbin/oracle/appsutil/clone/bin/CloneContext_0609141428.log for details.
DBA

安装ETCC并运行自动配置。

1. 安装 Oracle 电子商务套件技术代码级别检查器 ()。ETCC 

My Oracle Support 下载补丁 17537119,然后按照 README.txt 中的说明进行操作。您将在该 $ORACLE_HOME 目录中创建一个名为 etcc 的目录,解压缩补丁以创建名为 checkMTpatch.sh 的脚本,然后运行该脚本来检查补丁版本。

2. 运行 Autoconfig 实用程序,然后传递新的逻辑主机名上下文文件。

对于 Oracle 12.1.0.2:

cd $ORACLE_HOME/appsutil/bin $ ./adconfig.sh contextfile=/rdsdbbin/oracle.12.1.custom.r1.EE.1/appsutil/clone/bin/VIS_oebs-db01log.xml

对于 Oracle 19c:

Autoconfig 需要侦听器名称以匹配 CDBNAME。因此,备份的原始侦听器配置文件将暂时使用 L_<CDBNAME>_001

$ lsnrctl stop L_VISCDB_001 $ cp -rp /rdsdbdata/config/listener.ora /rdsdbdata/config/listener.ora_orig $ vi /rdsdbdata/config/listener.ora :%s/L_VISCDB_001/VISCDB/g $ lsnrctl start VISCDB $ cd /rdsdbbin/oracle/appsutil $ . ./txkSetCfgCDB.env dboraclehome=/rdsdbbin/oracle.19.custom.r1.EE-CDB.1 Oracle Home being passed: /rdsdbbin/oracle $ echo $ORACLE_HOME /rdsdbbin/oracle.19.custom.r1.EE-CDB.1 $ export ORACLE_SID=VISCDB $ cd $ORACLE_HOME/appsutil/bin $ perl $ORACLE_HOME/appsutil/bin/txkPostPDBCreationTasks.pl -dboraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME/appsutil/log -cdbsid=VISCDB -pdbsid=VIS -appsuser=apps -dbport=1521 -servicetype=onpremise Enter the APPS Password: <apps password> Enter the CDB SYSTEM Password:<password from secrets manager>
注意

如果您的数据库目录已更改,请按照 Oracle Support Note 2525754.1 中的说明进行操作。

DBA
任务描述所需技能

为 Amazon C RDS ustom 和 Oracle 电子商务套件配置TNS条目。

自动配置会在默认位置生成 TNS ifile。对于 Oracle 12.1.0.2(不是-CDB),对于 Oracle19 PDB C,默认位置是。$ORACLE_HOME/network/admin/$<CONTEXT_NAME>CDB适用于 Oracle 19c 的使用默认值$ORACLE_HOME/network/admin/,如$TNS_ADMIN在前面的步骤中运行 Autoconfig 时生成的环境文件中所定义。

对于 Oracle 12.1.0.2 和 19cCDB,您不会使用它们,因为自动配置生成的tnsnames.oralistener.ora文件不RDS符合亚马逊的要求,例如没有空格或注释。相反,您可以使用 Amazon C RDS ustom 数据库提供的通用文件来确保符合系统的期望并减少出错的可能性。 

例如,Amazon RDS Custom 要求使用以下命名格式:

L_<INSTANCE_NAME>_001

对于 Oracle 12.1.0.2,这将是:

L_VIS_001

对于 Oracle 19c,这将是:

L_VISCDB_001

以下是您将要使用的 listener.ora 文件示例。这是您创建 Amazon RDS 自定义数据库时生成的。此时,您尚未对此文件进行任何更改,而是将其保留为默认值。

对于 Oracle 12.1.0.2:

$ cd $ORACLE_HOME/network/admin $ cat listener.ora ADR_BASE_L_VIS_001=/rdsdbdata/log/ SID_LIST_L_VIS_001=(SID_LIST = (SID_DESC = (SID_NAME = VIS)(GLOBAL_DBNAME = VIS) (ORACLE_HOME = /rdsdbbin/oracle))) L_VIS_001=(DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = xx.xx.xx.xx))) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = 127.0.0.1)))) SUBSCRIBE_FOR_NODE_DOWN_EVENT_L_VIS_001=OFF

对于 Oracle 19c:使用侦听器名称 L_<INSTANCE_NAME>_001 恢复原始 listener.ora 文件。

$ cd $ORACLE_HOME/network/admin $ cp -rp /rdsdbdata/config/listener.ora /rdsdbdata/config/listener.ora_autoconfig $ cp -rp /rdsdbdata/config/listener.ora_orig /rdsdbdata/config/listener.ora $ cat listener.ora SUBSCRIBE_FOR_NODE_DOWN_EVENT_L_VISCDB_001=OFF ADR_BASE_L_VISCDB_001=/rdsdbdata/log/ USE_SID_AS_SERVICE_L_VISCDB_001=ON L_VISCDB_001=(DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = xx.xx.xx.xx))) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = 127.0.0.1)))) SID_LIST_L_VISCDB_001=(SID_LIST = (SID_DESC = (SID_NAME = VISCDB)(GLOBAL_DBNAME = VISCDB) (ORACLE_HOME = /rdsdbbin/oracle)))

启动标准亚马逊RDS操作L_<INSTANCE_NAME>_001的监听器:

$ lsnrctl stop $ lsnrctl start L_VISCDB_001

对于 Oracle 12.1.0.2:

编辑 Oracle 电子商务套件环境文件以更改使用亚马逊RDS定制通用 TNS ifile 的$TNS_ADMIN路径。环境文件是在您之前运行 Autoconfig 时创建的。通过删除 <CONTEXT_NAME> 后缀来编辑 TNS_ADMIN 变量。 

注意

您只能在 Oracle 12.1.0.2 中编辑环境文件,因为 19c 的默认主目录是$ORACLE_HOME/network/admin,这与 Amazon Custom 的默认主目录相同。RDS

例如,在 Oracle 12.1.0.2 中,编辑文件:

$ vi $ORACLE_HOME/VIS_oebs-db01log.env

将路径从 更改为: 

TNS_ADMIN=”/rdsdbbin/oracle/network/admin/VIS_oebs-db01log” export TNS_ADMIN

更改为:

TNS_ADMIN=”/rdsdbbin/oracle/network/admin” export TNS_ADMIN
注意

每次运行 Autoconfig 时,都必须重复此步骤以确保使用正确的 TNS ifile。(仅限 12.1.0.2)。

对于 Oracle 19c:

1. 将数据库层上下文变量 s_cdb_tnsadmin 的值更改为 <ORACLE_HOME>/network/admin 而不是 <ORACLE_HOME>/network/admin/<CONTEXT_NAME>

注意

不要更新s_db_tnsadmin上下文变量。使其仍为 <ORACLE_HOME>/network/admin/<CONTEXT_NAME>

$ . $ORACLE_HOME/VIS_oebs-db01log.env $ vi $CONTEXT_FILE

2. 保存您对 s_cdb_tnsadmin 的值所做的更改。

s_db_tnsadmin和的值s_cdb_tnsadmin应类似于以下内容,PDB名称为VIS,数据库节点逻辑名称为oebs-db01log

$ grep -i tns_admin $CONTEXT_FILE <TNS_ADMIN oa_var="s_db_tnsadmin">/rdsdbbin/oracle/network/admin/VIS_oebs-db01log</TNS_ADMIN> <CDB_TNS_ADMIN oa_var="s_cdb_tnsadmin">/rdsdbbin/oracle/network/admin</CDB_TNS_ADMIN>

3. 在数据库层运行 Autoconfig:

$ . $ORACLE_HOME/VISCDB_oebs-db01log.env $ export ORACLE_PDB_SID=VIS $ sqlplus "/ as sysdba" @$ORACLE_HOME/appsutil/admin/adgrants.sql APPS $ sqlplus "/ as sysdba" @$ORACLE_HOME/rdbms/admin/utlrp.sql $ . $ORACLE_HOME/VIS_oebs-db01log.env $ echo $ORACLE_SID VIS $ cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME $ ./adautocfg.sh
DBA

为 rdsdb 用户设置环境。

对于 Oracle 19c,请跳过此步骤。

对于 Oracle 12.1.0.2:

现在,您已经完成了 Autoconfig 和TNS输入内容,您需要通过在rdsdb用户的配置文件中进行设置来加载环境文件。

更新 .bash_profile 以调用 Oracle 电子商务套件数据库 .env 文件。您需要更新配置文件以确保环境已加载。此环境文件是在您之前运行 Autoconfig 时创建的。

以下示例环境文件是在您运行 Autoconfig 时创建的:

. /rdsdbbin/oracle/VIS_oebs-db01log.env

作为 rdsdb 用户:

cd $HOME vi .bash_profile export LD_LIBRARY_PATH=${ORACLE_HOME}/lib:${ORACLE_HOME}/ctx/lib export SHLIB_PATH=${ORACLE_HOME}/lib export PATH=$PATH:${ORACLE_HOME}/bin alias sql=’rlwrap -c sqlplus / as sysdba’ . ${ORACLE_HOME}/VIS_oebs-db01log.env
注意

 对于 Oracle 19c,您不必在其中加载CDB环境。.bash_profile这是因为默认路径 ORACLE_HOME 设置为默认路径 $ORACLE_HOME/network/admin,即 rdsdb(Oracle 主目录)用户的默认主目录。

DBA

为 Amazon C RDS ustom 配置应用程序和数据库。

完成 Oracle 12.1.0.2 和 19c 的前两个步骤。每个版本的后续步骤都不同。

1. 在应用程序层上,编辑数据库的 IP 地址/etc/hosts并将其更改为 Amazon RDS 自定义 IP 地址:

xx.xx.xx.xx OEBS-db01.localdomain OEBS-db01 OEBS-db01log.localdomain OEBS-db01log

由于您使用的是逻辑主机名,因此几乎可以无缝地替换数据库节点。

2. 在 Amazon RDS 自定义数据库实例上,添加或修改分配给源EC2实例的安全组以反映 Amazon RDS 自定义数据库实例,以确保应用程序可以访问该节点。

对于 Oracle 12.1.0.2:

3. 运行 Autoconfig。以应用程序所有者(例如 applmgr)的身份运行:

$ cd $INST_TOP/admin/scripts $ ./adautocfg.sh AutoConfig completed successfully.

4. 验证 fnd_nodes 条目:

SQL> select node_name from apps.fnd_nodes NODE_NAME -------------------------------------------------------------------------------- AUTHENTICATION OEBS-APP01LOG OEBS-DB01LOG

5. 确认您可以登录,然后启动应用程序:

$ ./adstrtal.sh

对于 Oracle 19c:

  1. 检查PDB是否已打开,必要时将其打开:

SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 VIS MOUNTED SQL> alter session set container=vis; SQL> alter database open; SQL> alter database save state;

2. 测试 apps 的连接:

SQL> sqlplus apps/****@vis

3. 在数据库层运行 Autoconfig:

$ . $ORACLE_HOME/VIS_oebs-db01log.env $ echo $ORACLE_SID VIS $ cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME $ ./adautocfg.sh

4. 以应用程序所有者的身份在应用程序层上运行 Autoconfig(例如,applmgr):

$ cd $INST_TOP/admin/scripts $ ./adautocfg.sh AutoConfig completed successfully.

5. 验证 fnd_nodes 条目:

SQL> select node_name from apps.fnd_nodes NODE_NAME -------------------------------------------------------------------------------- AUTHENTICATION OEBS-APP01LOG OEBS-DB01LOG

6. 启动应用程序:

$ ./adstrtal.sh
DBA
任务描述所需技能

恢复自动化以确认其正常工作。

使用以下AWSCLI命令恢复自动化:

aws rds modify-db-instance \ --db-instance-identifier vis \ --automation-mode full \

该数据库现在由 Amazon C RDS ustom 管理。 例如,如果侦听器或数据库出现故障,Amazon C RDS ustom 代理将重新启动它们。请运行以下命令进行测试。

停止侦听器示例:

-bash-4.2$ lsnrctl stop vis

关闭数据库示例:

SQL> shutdown immediate;
DBA

验证架构、连接和维护任务。

要完成迁移,您必须至少执行以下任务。

  • 运行 FS_CLONE 以同步补丁文件系统。

  • 收集架构统计信息。 

  • 确保外部接口和系统可以连接到新的 Amazon C RDS ustom 数据库。

  • 设置备份和维护计划。

  • 通过发出切换来切换文件系统,验证 AD Online Patching (ADOP) 是否按预期运行。

DBA

故障排除

事务解决方案

当你尝试删除日志文件时,你会收到 ORA -01624 错误。

如果您在尝试删除日志文件时收到 ORA -01624 错误,请按照以下步骤操作。

发出以下命令并等到要删除的日志文件的状态变为 INACTIVE。有关 V$log 中状态代码的更多信息,请参阅 Oracle 文档。以下是示例命令及其输出:

SQL> select group#, status from v$log; GROUP# STATUS ---------- ---------------- 1 ACTIVE 2 CURRENT 3 UNUSED 4 UNUSED 5 UNUSED 6 UNUSED 6 rows selected.

在此示例中,日志文件 1 是 ACTIVE,因此您必须强制切换日志文件三次,以确保之前添加的第一个新日志文件的状态为 CURRENT

SQL> alter system switch logfile; System altered. SQL> alter system switch logfile; System altered. SQL> alter system switch logfile; System altered.

等到要删除的所有日志文件均变为 INACTIVE(如以下示例所示),然后运行该 DROP LOGFILE 命令。

SQL> select group#, status from v$log; GROUP# STATUS ---------- ---------------- 1 INACTIVE 2 INACTIVE 3 INACTIVE 4 CURRENT 5 UNUSED 6 UNUSED 6 rows selected.

使用打开数据库时,您会收到 ORA -00392 错误。resetlogs

如果您收到错误 ORA -00392:正在清除线程 1 的日志 xx,不允许操作,请运行以下命令(xx替换为日志文件号),然后重新运行 open 命令:resetlogs

SQL> alter database clear logfile group xx; SQL> alter database open resetlogs;

您在使用 系统管理员 或应用程序用户连接到应用程序时遇到问题。

要确认问题,请运行以下SQL查询:

SQL> select dbms_java.get_jdk_version() from dual; select dbms_java.get_jdk_version() from dual ERROR at line 1: ORA-29548: Java system class reported: release of Java system classes in the database (19.0.0.0.220719 1.8) does not match that of the oracle executable (19.0.0.0.0 1.8)

根本原因:源数据库应用了多个补丁,但是 Amazon C RDS ustom DB_HOME 是新安装的,或者由于您没有使用必要的补丁而未包含所有RSU补丁OJVM,例如在创建补丁时CEV。CEV 要验证这一点,请检查、和中是否列出了源修补程序的详细信息opatch – lsinventory$ORACLE_HOME/sqlpath $ORACLE_HOME/.patch_storage

参考datapatch -verbose 失败并出现错误:“Patch xxxxx:存档的补丁目录为空”(文档 ID 2235541.1)

修复:将缺失的补丁相关文件从源代码 ($ORACLE_HOME/sqlpatch/) 复制到 Amazon C RDS ustom ($ORACLE_HOME/sqlpatch/),然后重新运行。./datapatch -verbose

例如:

-bash-4.2$ cp -rp 18793246 20204035 20887355 22098146 22731026 $ORACLE_HOME/sqlpatch/

或者,您可以通过在CDB和上运行以下命令来使用变通方法PDB:

@?/javavm/install/update_javavm_db.sql

然后在上运行以下命令PDB:

sql> alter session set container=vis; @?/javavm/install/update_javavm_db.sql

现在再次运行测试:

SQL> select dbms_java.get_jdk_version() from dual;

相关资源

其他信息

维护操作

使用新补丁修补 Oracle 电子商务套件数据库主页

由于 bin volume (/rdsdbbin) 是 out-of-place升级版,因此在CEV升级过程中,bin 卷中的内容会被丢弃。因此,在使用进行任何升级之前,必须创建该appsutil目录的副本CEV。

在源 Amazon RDS Custom 实例上CEV,在升级之前,请进行备份$ORACLE_HOME/appsutil

注意

此示例使用音NFS量。但是,您可以改为使用副本 Amazon Simple Storage Service(Amazon S3)。

1. 创建一个目录,将 appsutil 存储在源亚马逊RDS自定义实例上:

$ mkdir /RMAN/appsutil.preupgrade

2. Tar 然后复制到 Amazon EFS 卷中:

$ tar cvf /RMAN/appsutil.preupgrade appsutil

3. 验证 tar 文件是否存在:

$ bash-4.2$ ls -l /RMAN/appsutil.preupgrade -rw-rw-r-- 1 rdsdb rdsdb 622981120 Feb  8 20:16 appsutil.tar

4. 按照 Amazon RDS 文档中升级RDS自定义数据库实例中的说明升级到最新版本CEV(先决条件CEV已创建)。

您也可以使用直接修补OPATCH。请参阅 Amazon RDS 文档的RDS定制 Oracle 升级要求和注意事项部分。

注意

在CEV修补过程中,主机的 IP 地址不会更改。此过程执行 out-of-place升级,并在启动期间将新的 bin 卷附加到同一个实例上。