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

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

173次阅读
没有评论

共计 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、短信等云产品特惠热卖中