注意:

使用 Oracle Database 在 Oracle Cloud Infrastructure 中跨区域部署 Oracle GoldenGate 微服务

简介

Oracle GoldenGate 微服务架构 (microservices architecture,MA) 是一种复制工具,可用于管理和配置跨多个数据库环境的数据复制。它使用 RESTful 服务和基于微服务的架构来简化云部署的管理、配置和监视。

图像

Oracle GoldenGate 23ai:

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 部署连接源数据库和目标数据库。

图像

注:这是简化的图表。实际网络名称可能有所不同。

环境:

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 平台。

目标

先决条件

任务 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 控制台并选择相应的区域和区间。

  1. 单击 Oracle Database ,然后选择 GoldenGate

  2. 选择 deployment(部署)并单击 Create deployment(创建部署)

  3. 输入部署的名称,创建 Oracle GoldenGate 部署必须位于其中的区间,选择部署或测试,输入 OCPU 计数。到目前为止,我们一直禁用自动缩放,以后可以启用该功能。选择子网许可证类型,然后单击下一步

    图像

  4. 选择 deployment type(部署类型)、Oracle GoldenGate 的 Version(版本)GoldenGate instance name(实例名称),将 Administrator username(管理员用户名)输入为 oggadmin,并提供在“先决条件”部分中创建密钥的区间名称,从下拉菜单中选择密码密钥,然后单击创建

    图像

    创建 Oracle GoldenGate 部署需要几分钟时间。Oracle GoldenGate 部署将在区间 (root)/Database/NonProd 下创建。

任务 2:登录到 Oracle GoldenGate 控制台

  1. Oracle GoldenGate 部署完成后,打开部署并单击启动控制台

    图像

  2. 使用创建部署期间使用的 Oracle GoldenGate 部署用户名密码登录。(Ex.oggadmin/密码)

    图像

任务 3。准备源和目标数据库

注:从 Oracle GoldenGate 23ai 开始,不支持根级提取。这意味着仅在 PDB 级别分配用户权限,并且 c##ggadmin 用户不与 Oracle GoldenGate 23ai 一起使用。使用 Oracle GoldenGate 23ai 和 Oracle Database,可以为源和目标实施可插入数据库 (Pluggable Database,PDB)。提取是为特定 PDB 注册的,该 PDB 称为按 PDB 提取。

  1. 确保在源数据库上启用了强制日志记录。

    select name, force_logging from v$database;
    ALTER DATABASE FORCE LOGGING;
    select name, force_logging from v$database;
    
  2. 启用最少补充日志记录。

    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;
    
  3. 更改 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
    
  4. 在源数据库 (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;
    
  5. 在目标数据库 (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 服务和数据库之间建立连接。

  1. 登录到 OCI 控制台,选择区域和区间。

  2. 单击 Oracle Database ,然后选择 GoldenGate

  3. 选择连接并单击创建连接

  4. 输入连接的名称、要在其中创建连接的区间、数据库的类型并单击下一步

    图像

  5. 要创建与源数据库的连接,请输入以下信息,然后单击创建

    • 选择输入数据库信息,因为数据库位于另一个区域中。
    • 数据库连接字符串:输入 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 下打开连接详细信息,单击分配的部署分配部署

    图像

  6. 与源类似,创建与目标数据库的连接 OGG_VMDB2_SJ 并分配部署。只有区别,因为 Oracle GoldenGate 和 Oracle Database 位于同一区域和 VCN 中,我们可以直接选择数据库,如下面的屏幕截图中所示。

    图像

    由于数据库位于同一区域,因此我们可以直接选择数据库,并为在任务 3 中创建的 GGADMIN 输入数据库用户名和密码。

    图像

  7. 验证 Oracle GoldenGate 中的源和目标连接。创建连接后,登录到 Oracle GoldenGate 控制台。单击数据库连接,将显示所有连接。单击源和目标连接并确保这两个连接都得到解析。

    图像

任务 5:提取配置

  1. 添加事务处理数据。

    注:通过添加 TRANDATA,确保启用表级补充。如果已启用方案级补充日志记录,则可以跳过这些步骤。

    1. 要添加 trandata,首先需要从 Oracle GoldenGate 控制台连接到源数据库。单击源数据库连接。

    2. 单击 + ,选择方案,然后输入表名方案名

      如果是表级复制,请选择,然后以 <Schema_Name.Table_Name> 格式输入表名。

    3. 如果表没有任何键,请选择 All Columns ,然后选择 Prepare CSN Mode 作为 nowait

      图像

    4. 添加 trandata 后,可以通过在搜索栏中提供表或方案名称来搜索它,如下图中所示。

      图像

  2. 创建集成的提取。

    1. 连接到 Oracle GoldenGate 控制台中的源数据库 (PDB) OGG_VMDB1_PDB1_ASH 连接并创建 CheckPoint 表

      图像

    2. 连接到 Oracle GoldenGate 控制台中的源数据库 (PDB) OGG_VMDB1_PDB1_ASH 连接,并仅为目标数据库创建心跳表

      图像

  3. 添加集成的提取。

    1. 成功添加 trandata 后,为提及的表或方案添加集成提取。从 Oracle GoldenGate 导航菜单中选择提取。单击提取部分中的 +

    2. 选择集成提取,输入进程名称(最多 8 个字符)和说明

      图像

    3. 从下拉菜单中选择 OracleGoldenGate 作为源凭证,从凭证别名线索加密配置文件等中选择。

      图像

    4. Managed Option(托管选项)部分中,选择 Profile Name(配置文件名)Auto Restart(自动重新启动)Max Retries(最大重试次数)Retry Delay Minutes(重试延迟分钟数)Retries Window(重试窗口),然后单击 Next(下一步)

      图像

    5. 创建默认参数文件后,在参数文件中添加其他必需参数(如果需要),然后单击创建

      图像

      用于 DEV 提取的参数。

      EXTRACT EX_VMDB1
      USERIDALIAS OGG_VMDB1_PDB1_ASH DOMAIN OracleGoldenGate
      EXTTRAIL et
      TABLE GG_ASH.*;
      
  4. 启动集成的提取。

    1. 创建提取后,单击开始

      图像

      提取成功运行后,将显示为正在运行状态。

      图像

    2. 展开提取流程,它将显示许多部分,如检查点、统计信息和报表。目前,您可以查看报告。单击右侧的刷新可刷新报表或统计信息。

      图像

任务 6:初始数据加载

  1. 从源 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
    
  2. 导入目标 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:复制配置

  1. 创建集成的复制。

    1. 要添加 trandata,首先我们需要从 Oracle Goldengate Console 连接到源数据库。从左窗格中选择 Replicate ,然后在 Replicats 中单击 +

    2. 选择 Integrated Replicat(集成副本),输入 Replicat Name(副本名称)Description(说明),然后单击 Next(下一步)

      图像

    3. 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.

      图像

    4. 托管选项部分中,选择概要文件名自动重新启动最大重试次数重试延迟重试窗口,然后单击下一步

      图像

    5. 创建默认参数文件后。如果需要,请在参数文件中添加其他必需参数,然后单击创建

      图像

  2. 从 flashback_SCN 启动复制。

    1. 创建复制过程后,单击三个点并从选项开始

      图像

    2. 选择起始点作为在 CSN 之后CSN 编号,这是我们在执行导出时用作闪回 SCN 的 SCN 编号。启用筛选重复项并单击开始

      图像

    3. 单击 Replicat(复制),将显示许多部分,例如检查点、统计信息和报告。单击右侧的 Report(报表)Refresh(刷新)以刷新报表或统计信息。

      图像

任务 8:验证数据复制

  1. 配置提取和复制后,登录到 Oracle GoldenGate 控制台并单击主页。您可以看到提取和复制都在运行。

  2. 在源数据库 (PDB) 中插入一些数据,同样的数据应反映在目标数据库 (PDB) 中。

    图像

  3. 连接到源数据库。

    图像

  4. 连接目标数据库。

    图像

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心