注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用 Oracle Database 在 Oracle Cloud Infrastructure 中跨区域部署 Oracle GoldenGate 微服务
简介
Oracle GoldenGate 微服务架构 (microservices architecture,MA) 是一种复制工具,可用于管理和配置跨多个数据库环境的数据复制。它使用 RESTful
服务和基于微服务的架构来简化云部署的管理、配置和监视。
Oracle GoldenGate 23ai:
- Oracle Cloud Infrastructure (OCI) 作为完全托管的云服务提供。
- 包括微服务的高可用性、改进的观测以及对 Oracle Database 23ai 的支持等功能。
- 可用于各种用例,包括跨区域和跨云高可用性、数据迁移以及针对 Oracle、MySQL、MS SQL、PostgreSQL 和 Microsoft Azure、Amazon Relational Database Service (RDS) 等各种数据库的数据分析。
Oracle GoldenGate 23ai 评估历史记录
Oracle GoldenGate 23ai 功能
Oracle GoldenGate 实施
在本教程中,我们将使用源数据库和目标数据库作为 OCI 中的 Oracle Database 23ai 和 Oracle GoldenGate 23ai 微服务,将数据从源数据库 (DB) Ashburn 区域复制到目标数据库 San Jose 区域。Oracle GoldenGate 可部署在任一区域中。我们将在圣何塞区域部署 Oracle GoldenGate,并使用相同的 Oracle GoldenGate 部署连接源数据库和目标数据库。
注:这是简化的图表。实际网络名称可能有所不同。
环境:
- 源数据库:
Oracle 23ai DBCS
- 目标数据库:
Oracle 23ai DBCS
OCI 区域 | 区间 | VCN | 子网 | CDB | PDB | Vault | 键 | 密钥 | Golden Gate |
---|---|---|---|---|---|---|---|---|---|
阿什本 | 数据库/NonProd | VCN_ASH | 发布/Pri_VCN_ASH | VMDB1 | VMDB1_PDB1 | Vault_ASH | NA | NA | NA |
圣何塞市 | 数据库/NonProd | VCN_SJ | 发布/Pri_VCN_SJ | VMDB2 | VMDB2_GG | Vault_SJ | GGKey | oggadmin | OGG_Dep_23ai |
目标读者
本教程的目标读者是系统管理员和数据库用户,以了解 Oracle GoldenGate 微服务。本文档假定读者熟悉 Oracle GoldenGate 技术、Web 技术和 OCI,并大致了解 UNIX 平台。
目标
- 使用 Oracle Database 23ai 在 OCI 中的不同区域部署和配置 Oracle GoldenGate 23ai 微服务。
先决条件
-
订阅 OCI 租户:
- 登录 OCI 控制台。
- 单击我的公司和 OCI 租户。
- 单击添加 OCI 租户。
- 输入所需信息。
- 单击保存。
-
订阅 OCI 区域: OCI 区域是包含一个或多个数据中心(称为可用性域)的本地化地理区域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。
- 登录到 OCI 控制台,然后单击监管和管理。
- 选择区域管理。
- 订阅所选区域。
注:在本教程中,我们将在 Ashburn 和 San Jose 之间使用跨区域数据复制。
-
在租户中预配区间: OCI 中的区间是一个逻辑容器,用于组织和控制对云资源的访问。区间是 OCI 的一个基本组件,用于隔离资源、度量使用情况和计费、控制访问和组织资源。
- 转到 OCI 控制台并选择相应的区域。
- 单击身份和安全。
- 在身份下,选择区间并创建区间。
注:在本教程中,我们在阿什本和圣何塞区域的根/数据库区间下创建了一个 NonProd 区间。
-
创建 VCN 和子网:VCN 是您在 OCI 区域中设置的可定制软件定义网络。与传统的数据中心网络一样,虚拟云网络 (Virtual Cloud Network,VCN) 允许您控制网络环境。VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 划分为子网,子网可以限定为区域或可用性域。每个子网都包含一系列不与 VCN 中的其他子网重叠的连续地址。可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。
要创建 VCN,请转到 OCI 控制台并选择相应的区域。
- 单击网络和虚拟云网络。
- 选择要创建 VCN 的区间。
- 单击 创建 VCN 。
注:在本教程中,我们在阿什本和圣何塞区域创建了 VCN
VCN_ASH
和VCN_SJ
。尽管我们可以在不同的区间中创建 VCN,但我们已将同一区间 (Database/NonProd) 用于网络和数据库。为了避免网络重叠,我们跨区域使用了不同的 CIDR 块。
IPv4 CIDR 块:
VCN_SJ: 192.168.0.0/16
VCN_ASH: 10.0.0.0/16
要创建 VCN 子网,请转到 OCI 控制台并选择相应的区域。
- 单击网络和虚拟云网络。
- 选择创建了 VCN 的区间。
- 选择 VCN。
- 单击创建子网。
我们在两个区域的同一区间下创建了一个公共子网和专用子网。
-
public subnet(公共子网):
VCN_SJ: 192.168.0.0/24
-
专用子网:
VCN_SJ: 192.168.0/24
和
-
public subnet-VCN_ash:
10.0.0.0/24
-
专用子网 -VCN_ash:
10.0.0/24
-
预配源和目标数据库:
注:在本教程中,我们已在
VMDB1_ash
和VMDB2_sj
等不同区域中创建了 Oracle 基本数据库系统 (DBCS - 23ai)。要预配数据库,请转到 OCI 控制台并选择相应的区域。
- 单击 Oracle Database 和 Oracle Base Database Services 。
- 选择创建数据库系统。
- 输入区间、名称、配置、大小、VCN 、子网、DB_NAME 、 PDB 等。
- 创建 DB System 。
有关详细信息,请参阅预配基本数据库。
-
创建用于存储密钥的 Vault: OCI GoldenGate 在使用主加密密钥加密的 Vault 中以密钥形式保存密码。Vault、主加密密钥和密钥在安全区间中创建。
注:在本教程中,我们在相应区域中使用了
Vault_SJ
和Vault_ASH
。要在 Vault 中创建密钥,请转到 OCI 控制台并选择相应区域。
- 单击 Identity & Security(身份和安全)和 Vault( Vault) 。
- 选择要创建 Vault 的区间。
- 输入 Vault 名称并创建 Vault。
-
创建主加密密钥: OCI 中的主加密密钥 (MEK) 是对系统中的其他密钥进行加密的密钥。您可以在 OCI 中将 MEK 用于各种用途,包括保护 Oracle Autonomous Database 中的数据、加密 Oracle GoldenGate 中的线索文件以及在 Oracle Cloud Infrastructure Vault 中存储密钥。
注:在本教程中,我们在 San Jose 区域中使用 (GGKey) 来存储 ggadmin 凭据。
要创建加密密钥,请转到 OCI 控制台并选择相应的区域。
- 单击 Identity & Security(身份和安全)和 Vault( Vault) 。
- 选择创建 Vault 的区间。
- 选择要创建密钥的 Vault。
- 在资源下,单击主加密密钥和创建密钥。
-
创建密钥:密钥是用于连接到 OCI 服务和系统的密码、证书、SSH 密钥和验证令牌等身份证明。密钥最好存储在 OCI Vault 中,它是 OCI 密钥管理的子组件。将密钥存储在 Vault 中比将密钥存储在代码或配置文件中更安全。
要在 Vault 中创建密钥,请转到 OCI 控制台并选择相应区域。
- 单击 Identity & Security(身份和安全)和 Vault( Vault) 。
- 选择创建了区间 Vault。
- 选择要创建密钥的 Vault。
- 在资源下,单击密钥和创建密钥。
-
远程 VCN 对等连接: OCI 中的 VCN 对等连接是连接多个虚拟云网络 (VCN) 的过程,以便资源可以使用专用 IP 地址相互通信。这允许资源像在同一网络中一样进行通信。远程 VCN 对等连接可连接不同区域中的两个 VCN。
对于远程对等连接,请执行以下步骤:
-
在这两个区域中创建动态路由网关 (Dynamic Routing Gateway,DRG)。转到网络、动态路由网关,并将 DRG 创建为
DRG_SJ
和DRG_ASH
。 -
在这两个区域中附加带 VCN 的 DRG。选择 VCN 、DRG 附加并创建 DRG 附加。
-
在两个区域中创建远程对等连接 (Remote Peering Connection,RPC)。选择 DRG,在资源下,单击远程对等连接,并以
RPC_ASH
和RPC_SJ
身份创建远程对等连接。 -
在 VCN 之间建立连接。选择
DRG_SJ
、远程对等连接附加,单击远程对等连接 (RPC_SJ) 和建立连接,选择区域并复制其他 VCN 的 OCID 并建立连接。现在,您可以将远程对等连接状态显示为对等连接。 -
为
VCN_SJ
和VCN_ASH
添加入站规则。选择 VCN 、 Security List(安全列表)和默认安全列表,然后单击 Add Ingress Rule(添加入站规则)。- 来源
CIDR=0.0.0.0/0
。 - IP 协议:
All Protocol
。
- 来源
验证 VCN 远程对等连接:
Telnet the Private IP address of DB hosts in the Ashburn and San Jose region. [oracle@ashvmdb1 ~]$ curl -sv telnet://192.168.0.202:1521 * Rebuilt URL to: telnet://192.168.0.202:1521/ * Trying 192.168.0.20.. * TCP_NODELAY set * Connected to 192.168.0.202 (192.168.0.202) port 1521 (#0) [oracle@sjvmdb2 ~]$ curl -sv telnet://10.0.0.192:1521 * Rebuilt URL to: telnet://10.0.0.192:1521/ * Trying 10.0.0.19.. * TCP_NODELAY set * Connected to 10.0.0.192 (10.0.0.192) port 1521 (#0)
有关详细信息,请参阅通过升级的 DRG 进行远程 VCN 对等连接。
-
任务 1:预配 Oracle GoldenGate 部署
要在 OCI 中将 Oracle GoldenGate 部署预配为服务,需要为要创建部署和连接的用户提供最低策略。维护期间的其他任务是停止并启动部署。
需要以下策略:
allow group <identity-domain>/<group-name> to manage goldengate-family in compartment <compartment-name>
allow group <identity-domain>/<group-name> to manage virtual-network-family in compartment <compartment-name>
allow service goldengate to {idcs_user_viewer, domain_resources_viewer} in tenancy
allow group <identity-domain>/<group-name> to manage secret-family in <location>
allow group <identity-domain>/<group-name> to use keys in <location>
allow group <identity-domain>/<group-name> to use vaults in <location>
allow service goldengate to use keys in <location>
allow service goldengate to use vaults in <location>
要预配 Oracle GoldenGate 部署,请转到 OCI 控制台并选择相应的区域和区间。
-
单击 Oracle Database ,然后选择 GoldenGate 。
-
选择 deployment(部署)并单击 Create deployment(创建部署)。
-
输入部署的名称,创建 Oracle GoldenGate 部署必须位于其中的区间,选择部署或测试,输入 OCPU 计数。到目前为止,我们一直禁用自动缩放,以后可以启用该功能。选择子网、许可证类型,然后单击下一步。
-
选择 deployment type(部署类型)、Oracle GoldenGate 的 Version(版本)和 GoldenGate instance name(实例名称),将 Administrator username(管理员用户名)输入为
oggadmin
,并提供在“先决条件”部分中创建密钥的区间名称,从下拉菜单中选择密码密钥,然后单击创建。创建 Oracle GoldenGate 部署需要几分钟时间。Oracle GoldenGate 部署将在区间
(root)/Database/NonProd
下创建。
任务 2:登录到 Oracle GoldenGate 控制台
-
Oracle GoldenGate 部署完成后,打开部署并单击启动控制台。
-
使用创建部署期间使用的 Oracle GoldenGate 部署用户名和密码登录。(Ex.oggadmin/密码)
-
Goldengate 控制台如下所示。
任务 3。准备源和目标数据库
注:从 Oracle GoldenGate 23ai 开始,不支持根级提取。这意味着仅在 PDB 级别分配用户权限,并且 c##ggadmin 用户不与 Oracle GoldenGate 23ai 一起使用。使用 Oracle GoldenGate 23ai 和 Oracle Database,可以为源和目标实施可插入数据库 (Pluggable Database,PDB)。提取是为特定 PDB 注册的,该 PDB 称为按 PDB 提取。
-
确保在源数据库上启用了强制日志记录。
select name, force_logging from v$database; ALTER DATABASE FORCE LOGGING; select name, force_logging from v$database;
-
启用最少补充日志记录。
SELECT supplemental_log_data_min "Minimum", supplemental_log_data_pk "Primary key", supplemental_log_data_ui "Unique Key", supplemental_log_data_fk "Foreign Key",supplemental_log_data_all "All" FROM v$database; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; SELECT supplemental_log_data_min "Minimum", supplemental_log_data_pk "Primary key", supplemental_log_data_ui "Unique Key", supplemental_log_data_fk "Foreign Key",supplemental_log_data_all "All" FROM v$database;
-
更改 Oracle GoldenGate 提取的参数。
Show parameter enable_goldengate_replication show parameter streams_pool_size ALTER SYSTEM SET enable_goldengate_replication=TRUE SCOPE=BOTH; alter system set streams_pool_size=2G scope=both sid='*'; Show parameter enable_goldengate_replication show parameter streams_pool_size
-
在源数据库 (PDB) 中运行以下查询。
alter session set container=VMDB1_PDB1; create tablespace ggs_tbs; create tablespace gguser_tbs; create user GGADMIN identified by PPassword_123 default tablespace ggs_tbs quota unlimited on ggs_tbs profile C##GGADMINPROFILE; GRANT CONNECT, RESOURCE TO GGADMIN; GRANT CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE, SELECT ANY TO GGADMIN; GRANT OGG_CAPTURE TO GGADMIN; grant select any dictionary to GGUSER; grant select any transaction to GGUSER;
-
在目标数据库 (PDB) 中运行以下查询。
alter session set container=VMDB1_GG; create tablespace ggs_tbs; create tablespace gguser_tbs; create user GGADMIN identified by PPassword_123 default tablespace ggs_tbs quota unlimited on ggs_tbs profile C##GGADMINPROFILE; GRANT CONNECT, RESOURCE TO GGADMIN; GRANT CREATE ANY TABLE, ALTER ANY TABLE, DROP ANY TABLE, SELECT ANY TO GGADMIN; GRANT OGG_APPLY, OGG_APPLY_PROCREP TO GGADMIN; grant select any dictionary to GGUSER; grant select any transaction to GGUSER;
任务 4。创建与源和目标数据库的连接
Oracle GoldenGate 部署和数据库准备就绪后,我们需要在 Oracle GoldenGate 服务和数据库之间建立连接。
-
登录到 OCI 控制台,选择区域和区间。
-
单击 Oracle Database ,然后选择 GoldenGate 。
-
选择连接并单击创建连接。
-
输入连接的名称、要在其中创建连接的区间、数据库的类型并单击下一步。
-
要创建与源数据库的连接,请输入以下信息,然后单击创建。
- 选择输入数据库信息,因为数据库位于另一个区域中。
- 数据库连接字符串:输入 IP 作为主机名,因为主机名需要 DNS 来解析它。
- 数据库用户名:输入在任务 3 中创建的
GGADMIN
。 - 数据库用户密码:输入数据库用户密码。
- 流量路由方法:选择专用端点。
- 会话模式:选择直接。
- 子网公共:输入
Subnet-VCN_SJ
。
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.192)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = vmdb1_pdbsub02090909270.vcnash.oraclevcn.com)))
创建连接后,在 GoldenGate 下打开连接详细信息,单击分配的部署和分配部署。
-
与源类似,创建与目标数据库的连接
OGG_VMDB2_SJ
并分配部署。只有区别,因为 Oracle GoldenGate 和 Oracle Database 位于同一区域和 VCN 中,我们可以直接选择数据库,如下面的屏幕截图中所示。由于数据库位于同一区域,因此我们可以直接选择数据库,并为在任务 3 中创建的 GGADMIN 输入数据库用户名和密码。
-
验证 Oracle GoldenGate 中的源和目标连接。创建连接后,登录到 Oracle GoldenGate 控制台。单击数据库连接,将显示所有连接。单击源和目标连接并确保这两个连接都得到解析。
任务 5:提取配置
-
添加事务处理数据。
注:通过添加
TRANDATA
,确保启用表级补充。如果已启用方案级补充日志记录,则可以跳过这些步骤。-
要添加 trandata,首先需要从 Oracle GoldenGate 控制台连接到源数据库。单击源数据库连接。
-
单击 + ,选择表或方案,然后输入表名或方案名。
如果是表级复制,请选择表,然后以
<Schema_Name.Table_Name>
格式输入表名。 -
如果表没有任何键,请选择 All Columns ,然后选择 Prepare CSN Mode 作为 nowait 。
-
添加 trandata 后,可以通过在搜索栏中提供表或方案名称来搜索它,如下图中所示。
-
-
创建集成的提取。
-
连接到 Oracle GoldenGate 控制台中的源数据库 (PDB)
OGG_VMDB1_PDB1_ASH
连接并创建 CheckPoint 表。 -
连接到 Oracle GoldenGate 控制台中的源数据库 (PDB)
OGG_VMDB1_PDB1_ASH
连接,并仅为目标数据库创建心跳表。
-
-
添加集成的提取。
-
成功添加 trandata 后,为提及的表或方案添加集成提取。从 Oracle GoldenGate 导航菜单中选择提取。单击提取部分中的 + 。
-
选择集成提取,输入进程名称(最多 8 个字符)和说明。
-
从下拉菜单中选择 OracleGoldenGate 作为源凭证域,从凭证别名、线索、加密配置文件等中选择。
-
在 Managed Option(托管选项)部分中,选择 Profile Name(配置文件名)、 Auto Restart(自动重新启动)、 Max Retries(最大重试次数)、 Retry Delay Minutes(重试延迟分钟数)和 Retries Window(重试窗口),然后单击 Next(下一步)。
-
创建默认参数文件后,在参数文件中添加其他必需参数(如果需要),然后单击创建。
用于 DEV 提取的参数。
EXTRACT EX_VMDB1 USERIDALIAS OGG_VMDB1_PDB1_ASH DOMAIN OracleGoldenGate EXTTRAIL et TABLE GG_ASH.*;
-
-
启动集成的提取。
-
创建提取后,单击开始。
提取成功运行后,将显示为正在运行状态。
-
展开提取流程,它将显示许多部分,如检查点、统计信息和报表。目前,您可以查看报告。单击右侧的刷新可刷新报表或统计信息。
-
任务 6:初始数据加载
-
从源 PDB 对提及的方案执行基于 SCN 的导出转储。
$mkdir -p /u01/app/oracle/dump SQL> alter session set container=VMDB1_PDB1; set lines 300 pages 100 col DIRECTORY_NAME for a30 col DIRECTORY_PATH for a100 select DIRECTORY_NAME,DIRECTORY_PATH from dba_directories where DIRECTORY_NAME='DUMP' ; create directory dump as '/u01/app/oracle/dump'; grant read,write on directory DUMP to GG_ASH; SQL> select current_scn from v$database; CURRENT_SCN ----------- 20049713 expdp GG_ASH/PPassword_123@VMDB1_PDB1_ASH directory=dump dumpfile=GG_ASH.dmp logfile=GG_ASH.log schemas=GG_ASH FLASHBACK_SCN=20049713
-
导入目标 PDB 中的数据。
注:在本教程中,我们向 DBA 授予了对
GG_ash
的访问权限,但您可以根据需要授予访问权限。$mkdir -p /u01/app/oracle/dump/ SQL> alter session set container=VMDB2_GG1; SQL> create user GG_ash identified by PPassword_123 default tablespace ggs_tbs quota unlimited on ggs_tbs ; SQL> grant DBA to GG_ash; SQL> create directory dump as '/u01/app/oracle/dump'; SQL> grant read,write on directory DUMP to GG_ASH; [oracle@sjvmdb2 admin]$ cp /tmp/GG_ASH.dmp /u01/app/oracle/dump/GG_ASH.dmp [oracle@sjvmdb2 admin]$ impdp GG_ASH/PPassword_123@VMDB2_GG1 directory=dump dumpfile=GG_ASH.dmp logfile=imp_GG_SJ.log
任务 7:复制配置
-
创建集成的复制。
-
要添加 trandata,首先我们需要从 Oracle Goldengate Console 连接到源数据库。从左窗格中选择 Replicate ,然后在 Replicats 中单击 + 。
-
选择 Integrated Replicat(集成副本),输入 Replicat Name(副本名称)、 Description(说明),然后单击 Next(下一步)。
-
Enter Replicat Trail (same as given in Extract Process - Task 5), Encryption Profile, Domain, Alias, CheckPoint Table (created during Extract - Task 5) and Log location.
-
在托管选项部分中,选择概要文件名、自动重新启动、最大重试次数、重试延迟和重试窗口,然后单击下一步。
-
创建默认参数文件后。如果需要,请在参数文件中添加其他必需参数,然后单击创建。
-
-
从 flashback_SCN 启动复制。
-
创建复制过程后,单击三个点并从选项开始。
-
选择起始点作为在 CSN 之后和 CSN 编号,这是我们在执行导出时用作闪回 SCN 的 SCN 编号。启用筛选重复项并单击开始。
-
单击 Replicat(复制),将显示许多部分,例如检查点、统计信息和报告。单击右侧的 Report(报表)和 Refresh(刷新)以刷新报表或统计信息。
-
任务 8:验证数据复制
-
配置提取和复制后,登录到 Oracle GoldenGate 控制台并单击主页。您可以看到提取和复制都在运行。
-
在源数据库 (PDB) 中插入一些数据,同样的数据应反映在目标数据库 (PDB) 中。
-
连接到源数据库。
-
连接目标数据库。
相关链接
确认
- 作者 — Dharmesh Patel(Oracle 北美云服务首席云架构师— NACIE)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Deploy Oracle GoldenGate Microservices Across Regions in Oracle Cloud Infrastructure using Oracle Database
G17465-01
October 2024