Goldengate双向复制配置

简介:


一、Goldengate双向复制配置

 

1.1.在进行如下配置之前,先在源数据库source system(原来的目标数据库)端

添加辅助的redolog配置:

SQL>alter database add supplemental log data;

SQL>alter system switch logfile;

SQL>alter database force logging;

 

 

 

1.2.SourceTarget分别用scott用户创建一张emp_ogg

 SQL> create table emp_ogg as select * from emp where 1=0; //source库建立表但不插入数据

 

Table created.

单项复制时Source端是EINI_1进程,Target端是RINI_1进程,双向复制时反之,以便完成两表的初始化同步,配置如下:

Source

GGSCI (gc2) 36> ADD REPLICAT RINI_1, SPECIALRUN

REPLICAT added.

 

GGSCI (gc2) 43> EDIT PARAMS RINI_1

 

-- GoldenGate Initial Load Delivery

--

REPLICAT RINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

ASSUMETARGETDEFS

USERID ogg, PASSWORD ogg

DISCARDFILE ./dirrpt/RINIaa.dsc, PURGE

MAP scott.*, TARGET scott.*;

 

Target

GGSCI (oraclelinux54.cuug.net) 10> ADD EXTRACT EINI_1, SOURCEISTABLE

EXTRACT added.

 

GGSCI (oraclelinux54.cuug.net) 11>  INFO EXTRACT *, TASKS

 

EXTRACT    EINI_1    Initialized   2014-08-12 23:05   Status STOPPED

Checkpoint Lag       Not Available

Log Read Checkpoint  Not Available

                     First Record         Record 0

Task                 SOURCEISTABLE

 

 

GGSCI (oraclelinux54.cuug.net) 12>  EDIT PARAMS EINI_1

 

 

-- GoldenGate Initial Data Capture

-- for EMP_OGG and DEPT_OGG

--

EXTRACT EINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg

RMTHOST gc2, MGRPORT 7809

RMTTASK REPLICAT, GROUP RINI_1

TABLE scott.EMP_OGG;           //这里我们只为初始化scott用户下的emp_ogg

 

GGSCI (oraclelinux54.cuug.net) 19> START EXTRACT EINI_1

 

Sending START request to MANAGER ...

EXTRACT EINI_1 starting

 

GGSCI (oraclelinux54.cuug.net) 20> VIEW REPORT EINI_1

 

……...

 

***********************************************************************

*                   ** Run Time Statistics **                         *

***********************************************************************

 

 

Report at 2014-08-12 23:11:04 (activity since 2014-08-12 23:10:59)

 

Output to RINI_1:

 

From Table SCOTT.EMP_OGG:

       #                  inserts:        14                                  //可以看出两边已经同步成功

       #                   updates:         0

       #                   deletes:         0

       #                  discards:         0

 

1.3.ogg环境下,添加日志跟踪:

GGSCI (oraclelinux54.cuug.net) DBLOGIN USERID ogg, PASSWORD ogg

GGSCI (oraclelinux54.cuug.net) ADD TRANDATA scott.*        //这里为了试验方便,我们设置为scott下全部表均设为可同步状态

2013-08-13 03:21:18  GGS WARNING     109  No unique key is defined for table EMP_OGG. All viable columns will be used to represent the key, but may not guarantee uniqueness.  KEYCOLS may be used to define the key.

2013-08-13 03:21:18  GGS WARNING     301  Failed to add supplemental log group on table SCOTT.EMP_OGG due to ORA-01031: insufficient privileges, SQL ALTER TABLE "SCOTT"."EMP_OGG" ADD SUPPLEMENTAL LOG GROUP "GGS_EMP_OGG_74686" ("EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO") ALWAYS  /* GOLDENGATE_DDL_REPLICATION */.

 

解决办法:

SQL>alter table emp_ogg add constraint emp_ogg_pk primary key(empno);

SQL> grant alter any table to ogg;

Grant succeeded.

 

1.4.配置extract

GGSCI (gc2) 71> EDIT PARAMS EORA_1     //编辑前先停止进程

 

EXTRACT EORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg

EXTTRAIL ./dirdat/aa

TABLE scott.*;

DDL INCLUDE OBJNAME "scott.*"

TRANLOGOPTIONS EXCLUDEUSER ogg           //双向复制关键

GGSCI (oraclelinux54.cuug.net) 74> EDIT PARAMS EORA_1   //编辑前先停止进程

EXTRACT EORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg

TRANLOGOPTIONS EXCLUDEUSER ogg

EXTTRAIL ./dirdat/aa

TABLE scott.*;

DDL INCLUDE OBJNAME "scott.*"

GGSCI (双节点执行)>  ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW

注:

ADD EXTRACT EORA_1:添加EXTRACT进程,这就是一直运行,一段停止redo 里的日志就没人去抓取了

TRANLOG, BEGIN NOW:现在开始同步日志,也可以用异步,那就要另外配置

EXTRACT added.

GGSCI (双节点执行)>  ADD EXTTRAIL ./dirdat/aa, EXTRACT EORA_1, MEGABYTES 5             //添加跟踪文件给EORA_1用,大小为5M

EXTTRAIL added.

GGSCI (双节点执行)> START EXTRACT EORA_1

 

1.5.配置pump进程

GGSCI (gc2) 72> EDIT PARAMS PORA_1   //编辑前先停止进程

EXTRACT PORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

PASSTHRU

RMTHOST oraclelinux54.cuug.net, MGRPORT 7809

RMTTRAIL /u01/app/ogg/dirdat/pa

TABLE scott.*;

 

GGSCI (oraclelinux54.cuug.net) 75> EDIT PARAMS PORA_1 //编辑前先停止进程

EXTRACT PORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

PASSTHRU

RMTHOST gc2, MGRPORT 7809

RMTTRAIL ./dirdat/pa

TABLE scott.*;

 

GGSCI (双节点执行)>  ADD EXTRACT PORA_1, EXTTRAILSOURCE ./dirdat/aa           //  告诉PORA_1要传送哪个路径下的跟踪信息

EXTRACT added.

GGSCI (双节点执行)>  ADD RMTTRAIL ./dirdat/pa, EXTRACT PORA_1, MEGABYTES 5       // 表示把捕获到的信息传送到远程的哪个目录的文件中

RMTTRAIL added.

GGSCI (双节点执行)>  START EXTRACT PORA_1

 

配置replicate

GGSCI (gc2) 74> EDIT PARAM RORA_1

REPLICAT RORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/RORA_aa.DSC, PURGE

DDL INCLUDE ALL

DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5

DDLERROR DEFAULT DISCARD

DDLERROR DEFAULT IGNORE RETRYOP

MAP scott.*, TARGET scott.*;

 

GGSCI (oraclelinux54.cuug.net) 87> EDIT PARAM RORA_1

REPLICAT RORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE ./dirrpt/RORA_aa.DSC, PURGE

DDL INCLUDE ALL

DDLERROR DEFAULT IGNORE RETRYOP MAXRETRIES 3 RETRYDELAY 5

DDLERROR DEFAULT DISCARD

DDLERROR DEFAULT IGNORE RETRYOP

MAP scott.*, TARGET scott.*;

 

 

GGSCI (双节点执行) 87> ADD REPLICAT RORA_1, EXTTRAIL ./dirdat/pa       //表示从哪里提取传送过来的信息

GGSCI (双节点执行) 87> START REPLICAT RORA_1

 

SQL> conn / as sysdba

Connected.

SQL> grant insert on scott.emp_ogg to ogg;

 

Grant succeeded.

 

SQL> conn / as sysdba

Connected.

SQL> grant delete on scott.emp_ogg to ogg;

 

Grant succeeded.

 

SQL> grant update on scott.emp_ogg to ogg;

 

Grant succeeded.

 

 

 

 

二、配置checkpoint

GGSCI (oraclelinux54.cuug.net)  EDIT PARAMS ./GLOBALS

CHECKPOINTTABLE ogg.ggschkpt

GGSCI (oraclelinux54.cuug.net)  exit

GGSCI (oraclelinux54.cuug.net)  DBLOGIN USERID ogg, PASSWORD ogg

Successfully logged into database.

GGSCI (oraclelinux54.cuug.net)  ADD CHECKPOINTTABLE    //如果单项复制已经做了,这里不用再添加

 

 

应该看到,两节点的进程都为Running状态

GGSCI (gc2) 73> info all

 

Program     Status      Group       Lag           Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING     EORA_1      00:00:00      00:00:02   

EXTRACT     RUNNING     PORA_1      00:00:00      00:00:04   

REPLICAT    RUNNING     RORA_1      00:00:00      00:00:01 

GGSCI (oraclelinux54.cuug.net) 88> info all

 

Program     Status      Group       Lag           Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING     EORA_1      00:00:00      00:00:09   

EXTRACT     RUNNING     PORA_1      00:00:00      00:00:02   

REPLICAT    RUNNING     RORA_1      00:00:00      00:00:05 

 

三、测试双向传送结果

3.1.source target

Source system

SQL> INSERT INTO emp_ogg VALUES(8000,'HL','CLERK',7902,'12-DEC-80',800,100,20);

 

1 row created.

 

SQL> commit;

 

Commit complete.

 

SQL> select * from emp_ogg;

 

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO

---------- ---------- --------- ---------- --------- ---------- ---------- ----------

         8000 HL         CLERK           7902 12-DEC-80        800        100         20 

Target  system

SQL> select * from emp_ogg;

    EMPNO ENAME      JOB               MGR HIREDATE                     SAL       COMM     DEPTNO

---------- ---------- ---------- ---------- --------------------- ---------- ---------- ----------

     8000 HL         CLERK            7902 1980-12-12 : 00:00:00        800        100         20 

3.2target 到 source

Target system

SQL> select * from tcustmer;

 

CUST NAME                           CITY                 ST

---- ------------------------------ -------------------- --

WILL BG SOFTWARE CO.                SEATTLE              WA

JANE ROCKY FLYER INC.               DENVER               CO

 

SQL> insert into tcustmer values ('HL','zai','cuug','en');

1 row created.

SQL> commit;

Commit complete.

Source  system

SQL> select * from tcustmer;

 

CUST NAME                           CITY                 ST

---- ------------------------------ -------------------- --

WILL BG SOFTWARE CO.                SEATTLE              WA

JANE ROCKY FLYER INC.               DENVER               CO

helei  zai                            cuug                 en

 

四、支持DDL复制配置

 

4.1在两个节点执行执行DDL同步脚本命令:

 

先进入goldengate软件安装目录,以SYSDBA身份登录oracle执行以下脚本,执行脚本过程中,需要输入的用户全部是ogg,安装模式为INITIALSETUP,如果数据字典或者某些内部的包有错误,则需要运行catalog.sqlcatproc.sql脚本。

SQL>show parameter recyclebin;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

recyclebin                           string      off                                                                 必须是off

 

 这里执行第二个脚本@ddl_setup时会报一个recyclebin的错误,而且只能在Pfile中修改recyclebin=off后用pfile起库,执行两个清除脚本,再重新运行一下脚本

SQL>@marker_setup

SQL>@ddl_setup

SQL>@role_setup

SQL>grant GGS_GGSUSER_ROLE to ogg;

SQL>@ddl_enable

 

如果某项脚本执行错误,需要重新执行时,先要执行清除的脚本:ddl_remove.sqlmarker_remove.sql





 本文转自 dbapower 51CTO博客,原文链接: http://blog.51cto.com/suifu/1539823 ,如需转载请自行联系原作者

相关文章
|
12月前
|
JavaScript 容器
鸿蒙应用开发从入门到入行 - 篇6:数据监听器、滚动、侧滑功能
在本篇文章里,您将掌握监听器、滚动、侧滑等相关内容,助力你开发出更具交互的案例。
226 9
鸿蒙应用开发从入门到入行 - 篇6:数据监听器、滚动、侧滑功能
|
9月前
|
算法 Linux 调度
理解CPU负载与使用率
**CPU使用率与负载简介** - **CPU使用率**:指CPU被占用的时间占总时间的比例,单核为直接比例,多核为各核心平均值。高使用率(如80%-90%)表示CPU繁忙,可能导致系统变慢;低使用率(如10%-20%)则表示系统运行流畅。 - **CPU负载**:指等待CPU处理的任务数量,通常显示1分钟、5分钟和15分钟的平均值。高负载意味着任务排队多,可能造成系统卡顿;正常负载下系统运行顺畅。负载反映任务量,使用率反映实际占用时间,两者可不同步。
1449 5
|
运维 监控 安全
连锁药店网络优化策略:一站式融合方案提升竞争力
在数字化浪潮下,线上药店通过技术创新和线上线下融合,正重塑购药体验,提供24小时服务和医保结算便利。面对激烈竞争,连锁药店和中小药店纷纷通过优化网络架构、提升服务质量和加强合规管理来增强竞争力,实现高效、安全的数字化转型。
|
11月前
|
缓存 算法 物联网
【论文专辑】2024年大模型推理优化论文精选第六期
本文整理了 OSDI 2024 和 SOSP 2024 中与大语言模型(LLM)推理优化相关的10篇论文,涵盖 Parrot、ServerlessLLM、dLoRA 等系统,提出的技术如 Chunked Prefill、Prefix-Caching、P/D分离等已被 vLLM 和 TensorRT-LLM 等主流推理引擎采用。这些研究解决了 LLM 推理中的冷启动延迟、资源分配、KV 缓存管理等问题,提升了推理性能和资源利用率。CodeFuse推理优化项目地址https://github.com/codefuse-ai/EasyDeploy
1291 2
|
安全 Java 数据安全/隐私保护
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
提升 Java 编程安全性 - 代码加密混淆工具的重要性和应用
|
数据采集 Web App开发 数据安全/隐私保护
Python爬虫-使用代理伪装IP
介绍代理,设置代理,使用代理伪装IP案例
790 0
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
弹性计算 Linux 数据安全/隐私保护
云服务器 ECS产品使用问题之linux如何设置服务器密码
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
搜索推荐 算法
|
网络协议 Unix Linux
在Unix/Linux shell中,与网络相关的命令
在Unix/Linux shell中,与网络相关的命令
146 2

热门文章

最新文章