阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle GoldenGate 12.2-异构环境的单项复制(支持DDL复制)

390次阅读
没有评论

共计 8473 个字符,预计需要花费 22 分钟才能阅读完成。

Oracle Golden gate 12 版本已经很长世间了,对比前几个版本变化很大。在安装过程已经摈弃了原有命令行形式,采用了与 Oracle DB 以及 weblogic 一样的图形解决,在界面上可以选择对应数据库版本的 ogg。

下面就为大家介绍一下新版的 ogg 的安装实施过程。我们采用 linux+oracle11g 和 solairs+12c 的异构环境搭建,先完成单向复制再扩展为支持 DDL 操作。

1、项目背景

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

2、源 装 o gg

2.1   编辑 oracle 用户的.profile 增加环境变量

  1. export PATH=$ORACLE_HOME/bin:/oracle/ogg:$PATH
  2. #set OGG LD_LIBRARY_PATH
  3. export LD_LIBRARY_PATH=/oracle/ogg:$ORACLE_HOME/lib:$LD_LIBRARY_PATH

安装的过程就比较简单,类似我们安装数据库,运行 runInstaller 命令调用 OUI 界面。

  1. [oracle@node01 Disk1]$ ls
  2. install response runInstaller stage
  3. [oracle@node01 Disk1]$ ./runInstaller

3、目标端安装 ogg

编辑 oracle 用户的 .profile 增加环境变量

  1. PATH=$PATH:/usr/local/bin:/usr/ccs/bin:$ORACLE_HOME/bin:/oracle/ogg
  2. #set ogg
  3. LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32

安装过程,如同源端

  1. $ ls
  2. install response runInstaller stage
  3. $ ls -l
  4. total 8
  5. drwxr-xr-x 4 oracle oinstall 512 Dec 16 2015 install
  6. drwxrwxrwx 2 oracle oinstall 512 Dec 16 2015 response
  7. -rwxr-xr-x 1 oracle oinstall 918 Dec 16 2015 runInstaller
  8. drwxr-xr-x 11 oracle oinstall 512 Dec 16 2015 stage
  9. $ ./runInstaller

4、测试 ogg

· 源端 ogg

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

 

· 目标端 ogg

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

 

5、创建 ogg 用户

5.1、源端数据库

点击 ( 此处 ) 折叠或打开

  1. SQL> create tablespace ogg datafile ‘/oracle/database/oradata/inds/ogg.dbf’ size 200m;
  2. Tablespace created.
  3. SQL> create user ogg identified by ogg default tablespace ogg;
  4. User created.
  5. SQL> grant connect ,resource,unlimited tablespace to ogg;
  6. Grant succeeded.
  7. SQL> grant execute on utl_file to ogg;
  8. Grant succeeded.
  9. SQL> grant select any dictionary,select any table to ogg;
  10. Grant succeeded.
  11. SQL> grant alter any table to ogg;
  12. Grant succeeded.
  13. SQL> grant flashback any table to ogg;
  14. Grant succeeded.
  15. SQL> grant execute on DBMS_FLASHBACK to ogg;
  16. Grant succeeded.
  17. SQL> show parameter enable_goldengate
  18. NAME TYPE VALUE
  19. ———————————— ———————- ——————————
  20. enable_goldengate_replication boolean FALSE
  21. SQL>grant dba to ogg;
  22. Grant succeeded.

登陆源端 Oracle GoldenGate,测试并确认可以访问数据库

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

5.2、目标端数据库

点击 ( 此处 ) 折叠或打开

  1. SQL> create tablespace ogg datafile ‘/oracle/appnewdb/oradata/mynewdb/ogg.dbf’ size 200m;
  2. Tablespace created.
  3. SQL> create user ogg identified by ogg default tablespace ogg;
  4. User created.
  5. SQL> grant connect ,resource,unlimited tablespace to ogg;
  6. Grant succeeded.
  7. SQL> grant execute on utl_file to ogg;
  8. Grant succeeded.
  9. SQL> grant select any dictionary,select any table to ogg;
  10. Grant succeeded.
  11. SQL> grant alter any table to ogg;
  12. Grant succeeded.
  13. SQL> grant flashback any table to ogg;
  14. Grant succeeded.
  15. SQL> grant execute on DBMS_FLASHBACK to ogg;
  16. Grant succeeded.
  17. SQL> show parameter enable_goldengate
  18. NAME TYPE VALUE
  19. ———————————— ———– ——————————
  20. enable_goldengate_replication boolean FALSE

登陆Oracle GoldenGate,确认可以访问数据库

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

 

6、开启归档和附加日志

1)检查源端数据库是否为归档模式,若为非归档模式,将其改为归档模式
SQL> archive log list;

2)检查 端和目标端 数据库 附加补充日志是否打开

SQL>select supplemental_log_data_min from v$database;

    1. 将数据库附加日志打开

    SQL>alter database add supplemental log data;

    2. 切换日志以使附加日志生效

    SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;

数据库的附加日志分为 3 个级别:

    · 数据库级别的附加日志

    SQL>alter database add supplemental log data;

    ·用户级别附加日志(使用 DDL 抽取功能时要启用该级别)

    GGSCI (node01 as ogg@inds) 20>add schematrandata scott

    ·表级别的附加日志

    GGSCI (node01 as ogg@inds) 8>add trandata hr.employees

7、配置源端 OGG

OGG 配置分为源端和目标端配置,在源端配置 mgr 进程、extract 进程、pump 进程;在目标端配置 mgr 进程、replicat 进程
对于各个进程的作用,大家都耳熟能详了,在这里就不一一阐述了。
在以往的版本中需要创建 subdirs,但在最新的版本中一下在安装 ogg 过程中已经创建好了。

如果再执行 create 命令会提示“已经存在“。这是 ogg 的目录结构,用于保持运行过程中生成的文件

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

 

7.1、配置 mgr

点击 ( 此处 ) 折叠或打开

  1. GGSCI (node01 as ogg@inds) 22>info mgr
  2. Manager is running (IP port node01.7809, Process ID 3387).
  3. GGSCI (node01 as ogg@inds) 25>view params mgr
  4. PORT 7809                                 #默认 MGR 服务端口 7809
  5. DYNAMICPORTLIST 78107820                 #其它进程如 Extract 进程、Replicat 进程分配的端口
  6. AUTOSTART ER E*                            #以下表示 MGR 进程启动后失败时自动启动或重启
  7. AUTORESTART ER P*,RETRIES 4, WAITMINUTES 4
  8. STARTUPVALIDATIONDELAY 5

# 添加表级 trandata

trandata hr.employees,仅当该表具有主键或是唯一约束时才可以表级别附加日志; 如果表中没有主键或唯一索引时则必须指定一个或多个或全部列做主键,目的是避免重复数据

· 具有主键或唯一约束的表

点击 ( 此处 ) 折叠或打开

  1. GGSCI (node01 as ogg@inds) 8>add trandata hr.employees
  2. Logging of supplemental redo data enabled for table HR.EMPLOYEES.
  3. TRANDATA for scheduling columns has been added on table ‘HR.EMPLOYEES’.
  4. TRANDATA for instantiation CSN has been added on table ‘HR.EMPLOYEES’.

·不具有主键和唯一约束的表

点击 ( 此处 ) 折叠或打开

  1. GGSCI (node01 as ogg@inds) 13>add trandata scott.t
  2. 2017-01-12 10:35:04 WARNING OGG-06439 No unique key is defined for table T. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key.
  3. Logging of supplemental redo log data is already enabled for table SCOTT.T.
  4. TRANDATA for instantiation CSN has been added on table ‘SCOTT.T’.

# 添加 schema 级别的 trandata

添加 schema 级别的 trandata,命令与添加表级别的相同 add schematrandata  SCHEMA

另外还需要设置参数 enable_goldengate_replication 为 true

点击 ( 此处 ) 折叠或打开

  1. SQL> show parameter enable_goldengate_replication
  2. NAME                                               TYPE                    VALUE
  3. ———————————— ———————- ——————————
  4. enable_goldengate_replication        boolean                 TRUE

如果enable_goldengate_replication 为 false 会提示以下错误

点击 ( 此处 ) 折叠或打开

  1. GGSCI (node01 as ogg@inds) 20>add schematrandata scott
  2. ERROR: Operation not supported becauseenable_goldengate_replicationis not set to true.
  3. # 在这里我们需要设置参数 enable_goldengate_replication 为 true#
  4. GGSCI (node01 as ogg@inds) 21>add schematrandata scott
  5. 2017-01-12 10:59:07 INFO OGG-01788 SCHEMATRANDATA has been added on schema scott.
  6. 2017-01-12 10:59:07 INFO OGG-01976 SCHEMATRANDATA for scheduling columns has been added on schema scott.

当然也可以通过 delete schematrandata SCHEMA 取消。

7.2、添加 checkpoint 表

目标端配置复制进程 replicat 之前,需要在目标数据库中创建一个 checkpoint 表。这个 checkpoint 表是基于 GoldenGate checkpoint 文件的,它记录了所有 GoldenGate 可以恢复的 checkpoint 以及 sequence。

尽管这个操作不是必须的,但是 Oracle 强烈建议使用它,因为它可以使得 checkpoint 包含在 Replicat 的事物中,保证了可以从各类失败场景中恢复。

添加的步骤为在目标机器上编辑 GLOBALS 文件,添加

checkpointtable ogg.checkpoint

然后在 ggsci 中登陆 ogg,使用 add checkpoint 添加

点击 ( 此处 ) 折叠或打开

  1. GGSCI (node01 as ogg@inds) 9>edit params ./GLOBALS
  2. GGSCI (node01 as ogg@inds) 10>view params ./GLOBALS
  3. checkpointtable ogg.checkpoint
  4. GGSCI (node01 as ogg@inds) 12>add checkpointtable ogg.checkpoint
  5. Successfully created checkpoint table ogg.checkpoint.
  6. GGSCI (node01 as ogg@inds) 13>info checkpointtable ogg.checkpoint
  7. Checkpoint table ogg.checkpoint created 2017-01-12 10:34:26.

阐述一下 GLOBALS 文件,它是一个全局文件,文件中的参数对全局起作用,其中的参数有 mgrservname、checkpointtable、ggschema、ddltable、markertable、outputfiletable。文件名称必须大写。

7.3、配置抽取 extract 进程

抽取进程在源端运行,负责抓取需要传输的数据。

GGSCI (node01 as ogg@inds) 14>edit params extnd

GGSCI (node01 as ogg@inds) 15>view params extnd

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

SETENV 用于设置操作系统环境变量

GGSCI (node01 as ogg@inds) 16> add extract extnd,tranlog,begin now

EXTRACT added.

表示创建一个 extract 进程,名称为 extnd。注意:这个名称要与 edit params extnd 里面的名称一致。

#add extract extnd,tranlog,begin now,threads 2#

GGSCI (node01 as ogg@inds) 17>add exttrail ./dirdat/et,extract extnd

EXTTRAIL added.

命令 add exttrail 创建本地文件./dirdat/et,进程 extract 进程抽取的源数据转换为数据写入该文件中,进程 pump 负责读取该文件。

7.4、数据传输 pump 进程

Pump 进程又称为 secondly extract 进程。如果没有 pump 进程,则 extract 进程负责将把抽取来的数据库传递给目标端,配置 pump 进程还有个好处就是当网络故障时,可以把数据无差错的传递给目标端。

创建 parameter pump_sos 文件

 GGSCI (node01 as ogg@inds) 12> edit params pump_sos

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

添加 params pump_sos 进程到 ggsci 队列

点击 ( 此处 ) 折叠或打开

  1. GGSCI (node01 as ogg@inds) 31> add extract pump_sos,exttrailsource ./dirdat/et
  2. EXTRACT added.
  3. GGSCI (node01 as ogg@inds) 32> add rmttrail ./dirdat/pt,extract pump_sos
  4. RMTTRAIL added.
  5. GGSCI (node01 as ogg@inds) 33> start pump_sos
  6. Sending START request to MANAGER …
  7. EXTRACT PUMP_SOS starting
  8. GGSCI (node01 as ogg@inds) 34> info all
  9. Program Status Group Lag at Chkpt Time Since Chkpt
  10. MANAGER RUNNING
  11. EXTRACT RUNNING EXTND 00:00:00 00:00:05
  12. EXTRACT RUNNING PUMP_SOS 00:00:00 00:00:07

8、配置目标端

8.1、配置 mgr

依照配置源端的 mgr 参数,配置目标端的 mgr,步骤如下

GGSCI (Idota as ogg@mynewdb) 3> edit params mgr

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

配置完成后,重启 mgr 进程

8.2、添加 replicat 复制进程

Replicat 进程运行在目标端,负责读取源端抽取进程抽取的文件,然后把文件中的变化数据应用目标端,形成数据同步

创建 replicat 复制进程

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

在 GGSCI 中添加 replicat 进程管理

点击 ( 此处 ) 折叠或打开

  1. GGSCI (Idota as ogg@mynewdb) 12> add replicat repl,exttrail ./dirdat/pt
  2. REPLICAT added.
  3. GGSCI (Idota as ogg@mynewdb) 22> start repl
  4. Sending START request to MANAGER …
  5. REPLICAT REPL starting
  6. GGSCI (Idota as ogg@mynewdb) 23> info all
  7. Program Status Group Lag at Chkpt Time Since Chkpt
  8. MANAGER RUNNING
  9. REPLICAT RUNNING REPL 00:00:00 00:00:06

9、DML 测试验证同步

检查源端和目标端的 scott.dept 数据

·源端

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

·目标端

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

·源端做 DML 操作

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

·目标端数据检查是否同步

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

OGG 很完美的完成基于 DML 操作的数据同步,但是无法完成基于 DDL 的操作。如何完成 DDL 操作同步呢,在 ogg 12 版本中还需要我们执行几个脚本:

marker_setup.sql、ddl_setup.sql、role_setup.sql、ddl_enable.sql、以及性能优化工具

@?/rdbms/admin/dbmspool.sql

ddl_pin.sql  ogg

10、配置 DDL 复制

 我们需要再源端执行 ogg 提供的支持 DDL 操作的脚本,就是上面提到的 6 个 sql,分别执行。大家对于执行 SQL 都是信手拈来,下面只简单的说明下主要事项。

·marker_setup.sql 输入 ogg 的 schema:ogg
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

·ddl_setup.sql  检查是否具有 default tablespace 以及 autoextend on。同时对 oracle 10g 对回收站有要求,必须关闭。在 oracle 11g 和 12c 可以开启。
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

·role_setup.sql  该脚本生成 GGS_GGSUSER_ROLE 角色,授予给 ogg
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

·ddl_enable.sql 启用 DDL 复制,实质是个触发器。用以想 MARKER 和 HISTORY 表插入 DDL 信息
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

·@?/rdbms/admin/dbmspool.sql(可选项)把执行过程中使用的 package 加载到内存中以提高 DDL 触发器和性能效率。它引用了 dbms_shared_pool 系统包。
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

· ddl_pin.sql(可选项)它与 dbmspool.sql 共同使用,指定 schema ogg。
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

至此,执行 DDL 复制的脚本执行完成,接下来需要分别修改源端和目标端的参数文件,是对应的进程执行 DDL 复制。

在 extract 进程和 pump 进程中分别添加“DDL INCLUDE ALL“
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

在目标端的 replicat 进程中,添加“DDL INCLUDE ALL”和“DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5”
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

修改完成后重启进程生效。

11、DDL 测试验证同步

·源端数据库

Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

·目标端数据库
Oracle GoldenGate 12.2- 异构环境的单项复制(支持 DDL 复制)

通过测试不能发现在目标端数据库也生成了表 T2,实现了 DDL 操作。仔细观察,发现源端数据库和目标端数据库的 T2 的数据量不一致呢,不禁联想到 ogg 复制是通过解析和应用 SQL 语句实现数据同步的。

更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140646.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计8473字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7996951
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...