注:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于云环境的那些值。
使用具有不同目标的 Oracle GoldenGate 和 Oracle GoldenGate for Big Data 来流数据
简介
Oracle GoldenGate 是一项完全托管的服务,可帮助数据工程师实时、大规模地将数据从一个或多个数据管理系统迁移到 Oracle Cloud 数据库。在单个界面中设计、运行、编排和监视数据复制任务,而无需分配或管理任何计算环境。
Oracle GoldenGate for Big Data 实时将事务数据流式传输到大数据和云系统,而不会影响源系统的性能。它简化了将实时数据交付到主流的大数据解决方案中的过程,包括 Apache Hadoop、Apache HBase、Apache Hive、Confluent Kafka、NoSQL 数据库、Elasticsearch、JDBC、Oracle Cloud、Amazon Web Services、Microsoft Azure Cloud、Google Cloud Platform 和 Data Wareharehouse,以便于提高洞察力和及时采取措施。
Oracle Cloud Infrastructure (OCI) 流处理服务提供了一个完全托管、可扩展且持久的解决方案,用于实时摄取和使用高容量数据流。对于发布 - 订阅消息传递模式中连续生成和处理数据的任何用例,请使用 OCI 流处理。
在本教程中,您将学习如何将数据从 Oracle Autonomous Database 流入两个不同的目标,即 Oracle Autonomous Database 和 Oracle Streams 主题。
目标
-
设置两个 Oracle 自治数据库
-
在此示例方案中,sourceDB 有两个表 Banks 和 Operacoes ,需要将数据复制到两个不同的目标
-
表 Banks 将复制到名为 targetDB 的目标 Oracle Autonomous Database
-
表 Operacoes 将复制到具有近乎实时流的 OCI 流 (kafka) 主题
-
-
设置 Oracle GoldenGate 以将数据从源复制到目标数据库
-
将表 DML 从源数据库发布到 Oracle Cloud Infrastructure (OCI) 流处理(Kafka 兼容)目标主题
体系结构
重要提示:此示例体系结构仅用于学习目的,为了保持简单,我们使用的是 PUBLIC 子网,这意味着此不应用于生产环境或实际数据处理。
对于生产环境,您必须使用 PRIVATE 子网并应用此处所述的所有安全最佳实践:Oracle 安全最佳实践 )
先决条件
- Oracle Cloud 账户 - 开始使用 Oracle Cloud Infrastructure 免费层
- 具有两个子网(公共和专用)的基本 VCN(虚拟云网络)
您可以按照本教程创建全新的 VCN QuickStart 网络 - Oracle Database 的基本概念
- Kafka 流处理的基本概念
任务 1:创建新区间
-
登录到 Oracle Cloud 账户,单击左上角的导航菜单,选择身份和安全,然后单击区间。
任务 2:创建名为 sourceDB 的新 Oracle Autonomous Database
-
单击左上角的导航菜单,选择 Oracle Database ,然后单击 Autonomous Database 。
-
选择在前面的步骤中创建的区间流处理,然后单击创建 Autonomous Database 。
-
按以下图像所示填充信息。
注:记下您创建的 ADMIN 密码。
任务 3:创建名为 targetDB 的新 Oracle Autonomous Database
-
单击左上角的导航菜单,选择 Oracle Database ,然后单击 Autonomous Database 。
-
选择在前面的步骤流处理中创建的区间,然后单击创建 Autonomous Database 。
-
按以下图像所示填充信息。
注:记下您创建的 ADMIN 密码。
任务 4:为 sourceDB 创建新方案和设置
-
转到 sourceDB 主页,然后单击数据库操作以对数据库运行 SQL 命令并加载数据。
-
下载 findata_schema.sql 文件并将内容复制到 SQL 执行窗口中并将其作为 SCRIPT 运行。
注:确保为 FINDATA 用户设置密码,并记下本教程中后续步骤。
-
下载 enable_gg.sql 文件并将内容复制到 SQL 执行窗口中并将其作为 SCRIPT 运行。
注:确保为 GGADMIN 用户设置密码,并记下本教程中后续步骤。
任务 5:将数据从 banks_export.sql
文件加载到 sourceDB 中
-
转到 sourceDB 主页,然后单击数据库操作以对数据库运行 SQL 命令并加载数据。
-
下载 banks_export.sql 文件并将内容复制到 SQL 执行窗口中并将其作为 SCRIPT 运行。
-
对表运行简单的 COUNT 函数并检查插入的行数。
任务 6:为 targetDB 创建新方案并加载数据
-
为 "targetDB" 重复任务 4 和任务 5。
-
创建 FINDATA 表,启用 GG 并将数据从表 BANKS 加载到目标数据库中,就像您在 sourceDB 上所做的那样,但现在已连接到 targetDB 。
任务 7:在 sourceDB 上创建名为 OPERACOES 的事务处理表
-
仅在 sourceDB 中创建一个名为
FINDATA.OPERACOES
的新表。此表是 Oracle GoldenGate for Big Data 将捕获并发布在 OCI 流处理主题上的源数据。 -
转到 sourceDB 主页,然后单击数据库操作以对数据库运行 SQL 命令并加载数据。
-
下载 operacoes_table.sql 文件并将内容复制到 SQL 执行窗口中并将其作为 SCRIPT 运行。
这是一个空表,它将接收随机数据以在 Oracle GoldenGate 上启动事件。
任务 8:创建 OCI 流处理池
-
单击左上角的导航菜单,选择分析和 AI ,单击流处理,然后选择流处理池。
-
单击创建流池并填写以下信息。
-
单击创建。
-
单击 Kafka 连接设置并记下有关连接字符串的信息。
任务 9:生成 AUTH TOKEN 以访问 OCI 流处理池
您可以使用与 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 上的用户关联的验证令牌来访问 Oracle Cloud 中的 OCI 流处理 (Kafka API) 和其他资源。在 Kafka 连接设置中,SASL 连接字符串有一个名为 password 的参数和一个 AUTH_TOKEN 值,如上一个任务中所述。要启用对 OCI 流处理的访问,请转到 OCI 控制台并创建 AUTH TOKEN。
-
单击左上角的导航菜单,选择身份和安全,选择身份,域,默认域,用户。
-
选择用于创建早期资源(例如 Oracle Autonomous Database 和 OCI 流池)的同一用户。
注:记下 AUTH TOKEN,下一步需要它。
任务 10:创建 Oracle GoldenGate 连接
为了连接到源数据库和目标数据库,Oracle GoldenGate 需要正确的连接设置。
-
单击左上角的导航菜单,选择 Oracle Database ,然后单击 GoldenGate 。
-
从左侧菜单中选择连接选项,然后单击创建连接。
-
为 sourceDB 创建连接。
-
重复该过程并为 targetDB 创建连接。
-
为 OCI 流处理池 DefaultPool 创建连接。
此时,您应该具有以下连接:
任务 11:创建 Oracle GoldenGate 部署 - 类型:ORACLE
-
单击左上角的导航菜单,选择 Oracle Database ,然后单击 GoldenGate 。
-
从左侧菜单中选择部署选项,然后单击创建部署。
注:确保保存 oggadmin 密码。
任务 12:创建 Oracle GoldenGate 部署 - 类型:BIGDATA
-
单击左上角的导航菜单,选择 Oracle Database ,然后单击 GoldenGate 。
-
从左侧菜单中选择部署选项,然后单击创建部署。
-
创建部署并激活后,继续执行下一步。
任务 13:创建 Oracle GoldenGate 部署之间的连接
为了使 Oracle GoldenGate 与 Oracle GoldenGate for Big Data 通信,我们需要创建连接。
-
单击左上角的导航菜单,选择 Oracle Database ,然后单击 GoldenGate 。
-
从左侧菜单中选择连接选项,然后单击创建连接。
您的连接应如下所示:
任务 14:向 Oracle GoldenGate 部署添加连接 - GGForOracle
-
选择 GGForOracle 部署,在左侧菜单上单击分配的连接,然后单击分配连接。
-
为 sourceDB 添加连接。
-
为 targetDB 添加连接。
-
添加 GGOracletoGGBigData 的连接。
应在 GGForOracle 部署上建立以下连接:
任务 15:将连接添加到 Oracle GoldenGate 部署 - GGforBigData
-
选择 GGforBigData 部署,在左侧菜单上单击分配的连接,然后单击分配连接。
应在 GGforBigData 部署上建立以下连接:
任务 16:为 GGforOracle 设置 Oracle GoldenGate
-
选择 GGForOracle 部署,然后单击启动控制台。
-
输入身份证明 oggadmin/yourpassword (在创建部署期间创建的密码)。
-
单击导航菜单,然后选择配置,然后单击 + 以添加新身份证明。
-
添加 GGforBigData 部署的凭证。
注:使用您在创建部署期间设置的 oggadmin 。
-
单击以连接到 sourceDB ,然后单击 TRANDATA 上的 + 以添加复制所需的表。
-
为
FINDATA.BANKS
表添加新记录,然后单击提交。 -
为
FINDATA.OPERACOES
表添加新记录,然后单击提交。 -
要检查是否添加了表,请单击 FINDATA.* 的筛选器。
-
单击以连接到 targetDB ,然后单击 CHECKPOINT 上的 + 。
-
输入 FINDATA.CHECKTABLE 并单击提交。
-
现在单击左侧菜单的概览选项以包括新提取。
-
包括以下参数:
EXTRACT EXT USERIDALIAS sourceDB DOMAIN OracleGoldenGate EXTTRAIL E1 table FINDATA.operacoes; table FINDATA.banks;
-
-
单击操作,启动以启动提取。
-
现在,创建一个新副本以将复制应用于 targetDB 。
-
包括以下参数:
REPLICAT REP USERIDALIAS targetDB DOMAIN OracleGoldenGate MAP FINDATA.BANKS, TARGET FINDATA.BANKS;
注:此处仅复制
FINDATA.BANKS
表。这是因为我们正在将其复制到 targetDB 。另一个表FINDATA.OPERACOES
将复制到本教程稍后面的 OCI 流处理主题中。 -
-
单击操作,启动以启动副本。
-
检查复制是否适用于
FINDATA.BANKS
表:转至 sourceDB 的数据库操作页并插入新记录。INSERT INTO FINDATA.BANKS VALUES (999, 999, 'XXXXXX','TEST GOLDENGATE','TESTGG'); COMMIT;
-
打开 targetDB 的数据库操作页,并运行下面的查询来检查是否创建了记录。
select * from FINDATA.BANKS WHERE ID_SEQ = 999;
-
单击分发服务选项卡,然后添加新路径以将数据发送到 GGforBigData 。
-
单击操作,启动以启动服务分发。
任务 17:设置 Oracle GoldenGate for Big Data - GGforBigData
-
选择 GGforBigData 部署,然后单击启动控制台。
-
输入身份证明 oggadmin/yourpassword (在创建部署期间创建的密码)。
-
单击接收器服务选项卡并检查它是否已在运行。它应如下所示,因为我们已做了两个 Oracle GoldenGate 部署之间连接所需的所有设置。
-
现在,我们需要设置 REPLICAT 以便在 OCI 流处理主题上发布数据。
-
单击管理服务选项卡。
-
包括以下参数:
REPLICAT STRM TARGETDB LIBFILE libggjava.so SET property=/u02/Deployment/etc/conf/ogg/STRM.properties MAP FINDATA.operacoes, TARGET FINDATA.operacoes , THREADRANGE(1-5);
-
只需在此行上添加 ${tableName} 并使用提供的所有默认值。
-
-
单击操作,启动以启动副本。
-
检查状态是否为绿色:
-
任务 18:验证到 OCI 流处理主题的复制
-
转到 sourceDB 的数据库操作页,然后在
FINDATA.OPERACOES
表中插入一些行。-
可以使用 load_random_data.sql 脚本将随机数据插入到
FINDATA.OPERACOES
表中。 -
此脚本将在
FINDATA.OPERACOES
上添加 1.000 行,并且足以检查复制是否按预期工作。
-
-
通过运行以下 SQL 命令检查
FINDATA.OPERACOES
中是否有任何记录。SELECT COUNT(*) FROM FINDATA.OPERACOES;
-
单击左上角的导航菜单,选择分析和 AI ,单击流处理,然后从左侧菜单中选择流。
-
检查 Oracle GoldenGate for Big Data 是否自动创建新的 TOPIC。
-
单击加载消息,尝试使用一些消息并检查它们在主题中是否可用。
重要说明:加载消息仅适用于在上一个 MINUTE 中使用的消息,这意味着如果运行 LOAD_RANDOM_DATA.SQL 脚本后花费的时间比该时间长,则不会看到任何结果。
要查看结果,请转到数据库并再次运行 LOAD_RANDOM_DATA.SQL 脚本,然后返回到加载消息,您将看到您的消息。
确认
- 作者 - Joao Tarla(Oracle LAD A-Team 解决方案工程师)
更多学习资源
探索 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 频道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Stream data using Oracle GoldenGate and Oracle GoldenGate for Big Data with different targets
F80321-01
April 2023
Copyright © 2023, Oracle and/or its affiliates.