手机版
你好,游客 登录 注册
背景:
阅读新闻

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

[日期:2017-02-15] 来源:Linux社区  作者:呱呱牛 [字体: ]

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

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

1、项目背景


2、源装ogg

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




 

· 目标端ogg



 

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,测试并确认可以访问数据库



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,确认可以访问数据库


 

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的目录结构,用于保持运行过程中生成的文件

 

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 7810-7820                 #其它进程如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

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

添加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

配置完成后,重启mgr进程

8.2、添加replicat复制进程

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

创建replicat复制进程

在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数据

·源端

·目标端

·源端做DML操作

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

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

·ddl_setup.sql  检查是否具有default tablespace以及autoextend on。同时对oracle 10g对回收站有要求,必须关闭。在oracle 11g和12c可以开启。

·role_setup.sql  该脚本生成GGS_GGSUSER_ROLE角色,授予给ogg

·ddl_enable.sql启用DDL复制,实质是个触发器。用以想MARKER和HISTORY表插入DDL信息

·@?/rdbms/admin/dbmspool.sql (可选项)把执行过程中使用的package加载到内存中以提高DDL触发器和性能效率。它引用了dbms_shared_pool系统包。

· ddl_pin.sql (可选项)它与dbmspool.sql共同使用,指定schema ogg。

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

在extract进程和pump进程中分别添加  “DDL INCLUDE ALL“

在目标端的replicat进程中,添加“DDL INCLUDE ALL”和“DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5”

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

11、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

linux
相关资讯       Oracle GoldenGate  Oracle DDL复制 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款