ogg的安装配置 配置双向同步(含DDL)
第一部分 先配置单向同步(含DDL)
一 源端安装GoldenGate
创建用户
创建目录
mkdir -p /opt/ogg
chmod -R 777 /opt/ogg
chown -R oracle:oinstall /opt/ogg
ogg用户
useradd -g oinstall -G dba ggate
解压软件
设置环境变量
配置goldengate用户变量
su – ggate
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=prm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/oracle/ggate
export GGATE=/opt/ogg
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$PATH:$ORACLE_HOME/bin:$GGATE
安装GoldenGate
图形化安装方法中,在software location部分选择环境变量中GGATE的值,不过要注意给GGATE目录适当的权限;
Database Location部分就是ORACLE_HOME的值。
二 目标端安装GoldenGate
创建用户
创建目录
mkdir -p /opt/ogg
chmod -R 755 /opt/ogg
chown -R oracle:oinstall /opt/ogg
ogg用户
useradd -g oinstall -G dba ggate
解压软件
设置环境变量
配置goldengate用户变量
su – ggate
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=prm
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/oracle/ggate
export GGATE=/opt/ogg
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=$PATH:$ORACLE_HOME/bin:$GGATE
安装GoldenGate
图形化安装方法中,在software location部分选择环境变量中GGATE的值,不过要注意给GGATE目录适当的权限;
Database Location部分就是ORACLE_HOME的值。
三 配置源端数据库
开启归档
开启归档
修改之前 创建参数文件做备份
create pfile='/home/oracle/initdemo.ora' from spfile;
alter system set log_archive_dest='/arch/prm' scope=spfile; --修改归档的路径
---alter system set db_recovery_file_dest='' scope=spfile; --关闭闪回
shutdown immediate;
startup mount;
alter database archivelog;
archive log list;
alter database open;
设置数据库force logging
实际生产应用中,最好同时打开ORACLE的强制日志模式,以防止源数据库因直接路径加载忽略redo生成而导致这部分数据无法同步:
SQL> select force_logging from v$database;
SQL> Alter database force logging;
开启最小附加日志(DDL的话好开启数据库级别)
Oracle数据库需要开启归档日志,并开启最小附加日志模式。
SQL> select supplemental_log_data_min from v$database; --查看是否开启了最小附加日志模式
SQL> alter database add supplemental log data;
--开启最小附加日志模式
千万不要小看这步日志设置,其实在GoldenGate的配置中,这步是最容易出错的环节。如果开启DDL复制做冗灾备份,最好直接在数据库级别打开补全日志:
SQL> alter database add supplemental log data (primary key,unique,foreign key) columns;
检查一下,全是YES就OK了(整个数据库级别补全)
SQL> select supplemental_log_data_min,
supplemental_log_data_pk,supplemental_log_data_ui from v$database;
源库关闭回收站
SQL> show parameter recyclebin
SQL> alter system set recyclebin=off scope=spfile;
SQL>shutdown immediate;
SQL>startup;
SQL> show parameter recyclebin
UNDO设置
alter system set undo_retention=86400;
创建goldengate用户并且授权
创建表空间、用户、赋予dba权限
create tablespace ogg datafile '/u01/app/oracle/oradata/prm/ogg01.dbf' size 1024M;
create user ggate identified by ggate default tablespace ogg temporary tablespace temp;
grant connect,resource,unlimited tablespace to ggate;
grant connect,resource,dba to ggate;
grant execute on utl_file to ggate;
grant select any dictionary,select any table to ggate;
grant alter any table to ggate;
grant flashback any table to ggate;
grant execute on DBMS_FLASHBACK to ggate;
grant insert any table to ggate;
grant delete any table to ggate;
grant update any table to ggate;
运行DDL同步需要的脚本
cd $GGATE
@marker_setup.sql;
@ddl_setup.sql;
@role_setup.sql;
grant GGS_GGSUSER_ROLE to ggate;
@ddl_enable.sql;
安装性能优化包。
SQL> @?/rdbms/admin/dbmspool
ddl_pin将触发器用到的plsql包放进内存中
cd $GGATE
SQL> @ddl_pin ggate
添加传输表【transdata】
光开启最小附加日志模式还不够,还需要打开表级的补全日志,可以在GoldenGate中使用add trandata命令强制重做日志记录主键值,以保证在目标端能成功复制:
GGSCI> dblogin userid ggate,password ggate --GoldenGate中登录OARCLE数据库
GGSCI>add trandata sender.* --表名可以使用通配符
GGSCI> add trandata coss3.per_test,nokey,cols(sampletime, objectid)
--无主键指定字段补全的示例
也可以在数据库中打开:
SQL> alter table <tablename> add supplemental log data (primary key) columns;
示例:
GGSCI(node1) 1> dblogin userid ogg,password oracle
GGSCI(node1) 2> add trandata SCOTT.DEPT
四 配置源端进程组
配置管理进程【1】mgr
GGSCI(node1) 1> edit param mgr
(粘贴下面这段配置)
PORT 8839
--DYNAMICPORTLIST 8000-9000
--AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
--PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
配置源端./GLOBALS
GGSCI (node1) > edit params ./GLOBALS
GGSCHEMA ggate
启动管理进程
GGSCI(node1) 2> start mgr
Managerstarted.
GGSCI(node1) 3> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
配置抽取进程【2】extnd
增加EXTRAIL
GGSCI(node1)> add extract extnd, tranlog, begin now
EXTRACT added.
修改EXTRAIL参数
GGSCI (GOLDENGATE1) 4> edit params extnd
EXTRACT extnd
SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")
SETENV (ORACLE_SID = "prm")
USERID ggate, PASSWORD ggate
EXTTRAIL ./dirdat/nd
DISCARDFILE ./dirdat/extnd.dsc,APPEND,MEGABYTES 5
TRANLOGOPTIONS ALTARCHIVELOGDEST /arch/prm
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf
DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA
FETCHOPTIONS, USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H, CHECKINTERVAL 5M
TABLE sender.*;
添加该extract对应的trail文件,用来存储抽取的数据。单个文件大小设置为100MB
GGSCI(node1)> add exttrail ./dirdat/nd, extract extnd, megabytes 100
EXTTRAIL added.
添加传输进程【3】dpend,配置参数
增加PUMP
GGSCI(node1)>add extract dpend, exttrailsource ./dirdat/nd, begin now
EXTRACT added.
修改PUMP参数
GGSCI(node1)> edit params dpend
EXTRACT dpend
SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
USERID ggate, PASSWORD ggate
RMTHOST 192.168.80.166, MGRPORT 8809
RMTTRAIL ./dirdat/nd
DISCARDFILE ./dirdat/dpend.dsc,APPEND,MEGABYTES 5
TABLE sender.*;
添加RMTRAILS
GGSCI(node1)> add rmttrail ./dirdat/nd, extract dpend, megabytes 100
RMTTRAIL added.
五 配置目标数据库【含源端业务新增数据模拟】
数据库初始化【1】
- 数据库先在目标端进行初始化(使用rman备份恢复的方式)
- 源数据库端进行一些数据的更新,并且刷新几个日志
创建GoldenGate数据库用户并授权【2】
创建表空间、用户、赋予dba权限
create tablespace ogg datafile '/u01/app/oracle/oradata/prm/ogg01.dbf' size 1024M;
create user ggate identified by ggate default tablespace ogg temporary tablespace temp;
grant connect,resource,unlimited tablespace to ggate;
grant connect,resource,dba to ggate;
grant execute on utl_file to ggate;
grant select any dictionary,select any table to ggate;
grant alter any table to ggate;
grant flashback any table to ggate;
grant execute on DBMS_FLASHBACK to ggate;
grant insert any table to ggate;
grant delete any table to ggate;
grant update any table to ggate;
运行DDL同步需要的脚本
@$GGATE/marker_setup.sql;
@$GGATE/ddl_setup.sql;
@$GGATE/role_setup.sql;
grant GGS_GGSUSER_ROLE to ggate;
@$GGATE/ddl_enable.sql;
安装性能优化包。
SQL> @?/rdbms/admin/dbmspool
ddl_pin将触发器用到的plsql包放进内存中
SQL> @ddl_pin ggate
六 配置目标端进程组
配置MGR参数mgr
GGSCI(node2) 1> edit param mgr
(粘贴下面这段配置)
PORT 8839
--DYNAMICPORTLIST 8000-9000
--AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
--PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
配置目标端./GLOBALS
GGSCI (node2)> edit params ./GLOBALS
GGSCHEMA ggate
CHECKPOINTTABLE ggate.chkpoint
添加checkpoint表
需要先退出ggsci
GGSCI (node2)> dblogin userid ggate, password ggate
Successfully logged into database.
GGSCI (node2)> add checkpointtable ggate.chkpoint
Successfully created checkpoint table goldengate.chkpoint.
配置复制队列【4】repnd
增加目标端REP
GGSCI (node2)> add replicat repnd, exttrail ./dirdat/nd, checkpointtable ggate.chkpoint
REPLICAT added.
修改REP参数
GGSCI (node2)> edit params repnd
REPLICAT repnd
ASSUMETARGETDEFS
USERID ggate, PASSWORD ggate
DISCARDFILE ./dirrpt/repnd.dsc,APPEND,MEGABYTES 5
DDL INCLUDE ALL
DDLOPTIONS REPORT
BATCHSQL
DBOPTIONS DEFERREFCONST
DBOPTIONS LOBWRITESIZE 102400
DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20
MAP sender.* , TARGET sender.* ;
七 启动进程进行数据库同步
启动源端进程组
start mgr
启动抽取进程和传输进程
start extnd
start dpend
启动目标端进程
start mgr
start repnd
八 数据同步测试
数据同步测试
源数据库上创建数据
conn sender/oracle
create table t1 (id number CONSTRAINT id_nn NOT NULL,
name VARCHAR2(40),
PRIMARY KEY (id)
);
insert into t1 values (1,'aaa');
insert into t1 values (2,'bbb');
insert into t1 values (3,'ccc');
insert into t1 values (4,'ddd');
create table t2 (id number CONSTRAINT id_nm NOT NULL,
addr VARCHAR2(40),
PRIMARY KEY (id)
);
insert into t2 values (1,'word');
insert into t2 values (2,'now');
insert into t2 values (3,'values');
insert into t2 values (4,'beijing');
测试时使用语句
insert into t1 values (5,'eee')
insert into t1 values (6,'fff')
insert into t1 values (7,'ggg')
create table t3 as select * from t1 where 1=0;
create table t4 as select * from t1;
alter table t2 rename to t4;
九 环境说明
环境介绍
十 各程序组配置名称及参数【成功后记录】
源端进程组
管理进程:mgr
参数:
GGSCI(node1) 1> edit param mgr
(粘贴下面这段配置)
PORT 8839
--DYNAMICPORTLIST 8000-9000
--AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
--PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
GLOBALS:
GGSCI (node1) > edit params ./GLOBALS
GGSCHEMA ggate
抽取进程:extnd
参数:
增加EXTRAIL
GGSCI(node1)> add extract extnd, tranlog, begin now
EXTRACT added.
修改EXTRAIL参数
GGSCI (GOLDENGATE1) 4> edit params extnd
EXTRACT extnd
SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")
SETENV (ORACLE_SID = "prm")
USERID ggate, PASSWORD ggate
EXTTRAIL ./dirdat/nd
DISCARDFILE ./dirdat/extnd.dsc,APPEND,MEGABYTES 5
TRANLOGOPTIONS ALTARCHIVELOGDEST /arch/prm
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf
DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA
FETCHOPTIONS, USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H, CHECKINTERVAL 5M
TABLE sender.*;
添加该extract对应的trail文件,用来存储抽取的数据。单个文件大小设置为100MB
GGSCI(node1)> add exttrail ./dirdat/nd, extract extnd, megabytes 100
EXTTRAIL added.
传输进程:dpend
参数:
增加PUMP
GGSCI(node1)>add extract dpend, exttrailsource ./dirdat/nd, begin now
EXTRACT added.
修改PUMP参数
GGSCI(node1)> edit params dpend
EXTRACT dpend
SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
USERID ggate, PASSWORD ggate
RMTHOST 192.168.80.166, MGRPORT 8809
RMTTRAIL ./dirdat/nd
DISCARDFILE ./dirdat/dpend.dsc,APPEND,MEGABYTES 5
TABLE sender.*;
添加RMTRAILS
GGSCI(node1)> add rmttrail ./dirdat/nd, extract dpend, megabytes 100
RMTTRAIL added.
目标端进程组
管理进程:mgr
参数:
GGSCI(node2) 1> edit param mgr
(粘贴下面这段配置)
PORT 8839
--DYNAMICPORTLIST 8000-9000
--AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3
--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
--PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
GLOBALS:
GGSCI (node2)> edit params ./GLOBALS
GGSCHEMA ggate
CHECKPOINTTABLE ggate.chkpoint
复制进程:repnd
参数:
增加目标端REP
GGSCI (node2)> add replicat repnd, exttrail ./dirdat/nd, checkpointtable ggate.chkpoint
REPLICAT added.
修改REP参数
GGSCI (node2)> edit params repnd
REPLICAT repnd
ASSUMETARGETDEFS
USERID ggate, PASSWORD ggate
DISCARDFILE ./dirrpt/repnd.dsc,APPEND,MEGABYTES 5
DDL INCLUDE ALL
DDLOPTIONS REPORT
BATCHSQL
DBOPTIONS DEFERREFCONST
DBOPTIONS LOBWRITESIZE 102400
DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20
MAP sender.* , TARGET sender.* ;
第二部分配置双向同步(含DDL)
现目标端数据库配置【这次目标端和源端和第一部分的正好互换】
确认源库处于归档模式
因为现源端数据库是之前目标端数据库rman初始化过来的,所以这部分忽略
确认源库为FORCE_LOGGIN
因为现源端数据库是之前目标端数据库rman初始化过来的,所以这部分忽略
确认源库打开辅助日志
因为现源端数据库是之前目标端数据库rman初始化过来的,所以这部分忽略
源库关闭回收站
因为现源端数据库是之前目标端数据库rman初始化过来的,所以这部分忽略
保证字符集一致
因为现源端数据库是之前目标端数据库rman初始化过来的,所以这部分忽略
UNDO设置
因为现源端数据库是之前目标端数据库rman初始化过来的,所以这部分忽略
安装DDL_OBJETS
因为现源端数据库是之前目标端数据库rman初始化过来的,所以这部分忽略
现源端MGR配置
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPFILES 10
----这个之前配置过 忽略
现目标端MGR配置
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPFILES 10
----这个之前配置过 忽略
./GLOBALS配置(现目标端)
GGSCI (node1)> edit params ./GLOBALS
GGSCHEMA ggate
CHECKPOINTTABLE ggate.chkpoint
GGSCI (node1)>exit
GGSCI (node1)> dblogin userid ggate, password ggate
GGSCI (node1)> add checkpointtable ggate.chkpoint
GGSCI (node1)>exit
增加EXTRACT(现源端)extd2
增加EXTRACT
add extract extd2, tranlog, begin now
修改配置:
GGSCI (node1)> edit params extd2
EXTRACT extd2
SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")
SETENV (ORACLE_SID = "prm")
USERID ggate, PASSWORD ggate
TRANLOGOPTIONS EXCLUDEUSER ggate
IGNOREREPLICATES
EXTTRAIL ./dirdat/et
DISCARDFILE ./dirdat/extd2.dsc,APPEND,MEGABYTES 5
TRANLOGOPTIONS ALTARCHIVELOGDEST /arch/prm
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf
DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA
FETCHOPTIONS, USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT
STATOPTIONS REPORTFETCH
WARNLONGTRANS 1H, CHECKINTERVAL 5M
TABLE sender.*;
添加该extract对应的trail文件,用来存储抽取的数据。单个文件大小设置为100MB
GGSCI (node2)> add exttrail ./dirdat/et,extract extd2,megabytes 100
修改原源库【现目标端】EXTRAIL参数
GGSCI (node1)>edit param EXTND
TRANLOGOPTIONS EXCLUDEUSER ggate
IGNOREREPLICATES
去掉以下两行 不然启动不起来
TRANLOGOPTIONS ALTARCHIVELOGDEST /arch/prm
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf
增加PUMP(现源端)dpnd2
增加PUMP
GGSCI (node2)>add extract dpnd2, exttrailsource ./dirdat/et, begin now
修改配置:
GGSCI (node2)> edit params dpnd2
EXTRACT dpnd2
SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
USERID ggate, PASSWORD ggate
RMTHOST 192.168.80.160, MGRPORT 8809
RMTTRAIL ./dirdat/et
DISCARDFILE ./dirdat/dpnd2.dsc,APPEND,MEGABYTES 5
TABLE sender.*;
添加远程TRAIL文件:
GGSCI (node2)> add rmttrail ./dirdat/et, extract dpnd2, megabytes 100
增加现目标端REP进程repnd2
增加目标端REP进程
GGSCI (node1)> add replicat repnd2, exttrail ./dirdat/et, checkpointtable ggate.chkpoint
修改配置参数:
GGSCI (node1)> edit params repnd2
REPLICAT repnd2
ASSUMETARGETDEFS
USERID ggate, PASSWORD ggate
DISCARDFILE ./dirrpt/repnd2.dsc,APPEND,MEGABYTES 5
DDL INCLUDE ALL
DDLOPTIONS REPORT
BATCHSQL
DBOPTIONS DEFERREFCONST
DBOPTIONS LOBWRITESIZE 102400
DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20
MAP sender.* , TARGET sender.* ;
在现源端增加传输表
GGSCI (node2)>exit
GGSCI (node2)> dblogin userid ggate, password ggate
GGSCI (node2)> add trandata sender.*
GGSCI (node2)>exit
查现现源库SCN
SQL> select current_scn from v$database;
1297690
启动GG各进程【注意启动现目标端repnd2进程】
停止两端所有近程
GGSCI (node1)> stop EXTND
GGSCI (node1)> stop DPEND
GGSCI (node1)> stop mgr
GGSCI (node2)> stop repnd
GGSCI (node2)> stop mgr
重启两端所有进程
node1:
start mgr
start EXTND
start DPEND
start repnd2, aftercsn 1297690
node2:
start mgr
start repnd
strat extd2
start dpnd2
数据测试
测试时使用语句
insert into t1 values (6,'fff');
insert into t1 values (7,'ggg');
insert into t1 values (7,'hhh');
insert into t1 values (8,'eee');
insert into t1 values (9,'fff');
insert into t1 values (10,'ggg');
create table t5 as select * from t1 where 1=0;
create table t4 as select * from t1;
conn / as sysdba
alter system switch logfile;
create tablespace test01 datafile '/u01/app/oracle/oradata/prm/test01.dbf' size 5m;
create table t6 as select * from t1;
alter table t6 rename to t7;
conn / as sysdba
alter system switch logfile;
drop tablespace test01 including contents and datafiles;
alter table t7 rename to t6;
十一 附件
DDL同步
GoldenGate的DDL同步只支持两边一致的数据库,限制条件较多(如不能进行字段映射、转换等),具体可以参考官方文档。DDL的抓取不是通过日志抓取来捕获的,而是通过触发器来实现,所以对源数据库的性能影响要比单纯的数据抓取要大很多,可谓屏弃了GoldenGate的优势。尽量不要使用GoldenGate的DDL复制功能,在大多数业务系统中,实际上不会有频繁的数据库结构变动,完全可以通过手工的方式进行维护。确实有大量DDL操作的环境,如果可以,还是推荐物理DG之类的替换方案;确实要使用GoldenGate的DDL复制,那么请详细参考官方文档的限制和说明。
--以上主要为个人意见,有不同看法的请无视
开启DDL复制的基本配置步骤为:
(1)关闭ORACLE的回收站功能。
(2)选择一个数据库schema存放支持DDL的GoldenGate对象,运行相应创建脚本。
(3)编辑globals参数文件。
(4)修改extl和repl的配置文件
具体操作步骤:
(1)关闭数据库回收站:
SQL>alter system set recyclebin=off scope=both;
(2)编辑globals参数文件:
GGSCI>edit param ./globals
添加以下内容后保存:
GGSCHEMA ddw --标明支持DDL的GG对象存放在哪个schema下
(3)执行创建脚本:
首先需要命令行进入GG安装目录下,然后再运行sqlplus执行脚本,如果不进入目录下脚本执行会报错(应该是由于GG脚本中子脚本嵌套使用相对路径的问题所造成)。
SQL>@marker_setup.sql --提示输入目标schema
SQL>@ddl_setup.sql --提示输入目标schema,输入initialsetup最后输入yes
SQL>@role_setup.sql
SQL>grant GGS_GGSUSER_ROLE to ddw; --不进行该步赋权后面起进程会报错
SQL>@ddl_enable.sql --使触发器生效
(4)修改提取进程和复制进程的配置文件,分别加入ddl include all属性。
此时repl必须指定assumetargetdefs属性,这表明只有两边数据库结构一致的情况下才可以启用DDL复制。另外,开启DDL同步不能再只映射单表了,对整个模式下的对象都有效。
加入DDL复制之后,数据复制的lag明显增加了。
清除数据库中DDL复制的设置
在实际测试中,由于我在同一个数据库中进行映射,映射表结构不一致,导致进程报了一系列的错误。这个时候需要把通过脚本创建的GG对象中的数据清空,安装目录下只提供了清除对象的脚本,可以如下操作:
首先要求把所有的GG进程停掉,包括mgr进程
SQL>@ddl_disable.sql --首先使DDL触发器失效
SQL>@ddl_remove.sql
SQL>@marker_remove.sql
role_setup.sql没有对应的清除脚本,但是这块不影响配置信息的清除
然后重新再创建脚本。
ogg的安装配置 配置双向同步(含DDL)的更多相关文章
- lsyncd+rsync配置图片资源双向同步
需求:为保证国内外图片加载速度,国内请求上传图片资源地址阿里云oss,国外请求上传图片资源地址aws s3,为保证图片资源的一致性,需定时进行oss和s3图片双向同步 调研方案:由于之前配置过inot ...
- Oracle主从同步、双向同步的配置
(本教程展示了Windows环境的oracle数据库主从同步,Linux环境一样也可以) (把主数据库obpm 和从数据库orcl 用实际的数据库名给替换掉) (配置主从同步后,再配置双向同步,可能会 ...
- 配置ogg目录索引-oracle与mysql的双向同步步骤
以下几篇文章描述了利用ogg对oracle与mysql进行双向同步的配置过程以及注意事项,欢迎参考. 配置ogg异构oracle-mysql(1)基础环境配置 http://www.cnblogs.c ...
- 配置ogg异构oracle-mysql 双向同步注意事项
双向同步需要考虑的是怎么解决循环复制,以及同时更新一张表以谁为基准. 配置过程就不写了,大致和oracle到mysql的单向+mysql到oracle的单向差不多. 需要注意的有如下几点: 1.ora ...
- OGG同构(ORACLE-ORACLE)、异构(ORACLE-MYSQL)同步配置及错误解析
环境:11.2.0.3(已安装数据库实例)+OEL5.7 192.168.1.55 zlm sid:zlm11g 192.168.1.60 zlm2 sid:zlm11g 一.安装软件,配置环境,创建 ...
- 配置ogg从Oracle到PostgreSQL的同步复制json数据
标签:goldengate postgresql oracle json 测试环境说明 Oracle:Windows 8.1 + Oracle 12.2.0.1.0 + GoldenGate 12.3 ...
- windows下 MySQL数据库双向同步 配置步骤
最近在项目中遇到了要实现服务器上MySql数据双向同步,在网上找了很多资料,但是大部分都是在liux系统下配置的, 而且都是互相转载,没有一个详细的步骤,于是决定写一个windows系统下 ...
- MySQL-5.7.10主主同步的安装和配置
目录 目录 1 1. 安装 1 2. 修改MySQL的root密码 4 3. mysqld_safe和mysql.server 4 4. 主主同步配置 4 4.1. 创建同步用户 4 4.2. my. ...
- Centos 配置 Mysql 主从双向同步
配置之前,请先阅读mysql主从复制: Mysql-主从复制 原: 主从环境: 主服务器:192.168.153.130 从服务器:192.168.153.131 1.从数据库创建同步用户,将主数据 ...
随机推荐
- UVa 1220 - Party at Hali-Bula(树形DP)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- [转]MFC子线程更改图像数据后更新主窗口图像显示方法
程序思路是由外部的输入输出控制卡发出采集图像信号,之后相机采集图像得到图像数据指针,接收图像数据指针创建成图像最后显示到MFC对话框应用程序的Picture Control控件上,同时,为了标定相机位 ...
- Learning by doing——获黄色领骑衫之感
获奖感言 能拿到这件黄色的领骑衫,心里真的非常高兴.仔细看了一下,扣子.领子.各种图案各种细节十分精致.可以说这件领骑衫既有纪念意义,又有实用意义,真的很棒. 背后的故事 其实开始接触博客的时候,我是 ...
- ios Block详细用法
ios Block详细用法 ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的 ...
- UE4 Navmesh 室内导航设置
我用的UE版本是4.14.1 系统:win10 64 前不久给样板房里面做了一个扫地机器人,导航设置让我头大了很久,度娘也没有用,最后在谷哥上有所感悟,现在给出本人的设置过程和解决方案. 一开始拖 ...
- Spark Streaming编程示例
近期也有开始研究使用spark streaming来实现流式处理.本文以流式计算word count为例,简单描述如何进行spark streaming编程. 1. 依赖的jar包 参考<分别用 ...
- 四、MapReduce 基础
是一个并行计算框架(计算的数据源比较广泛-HDFS.RDBMS.NoSQL),Hadoop的 MR模块充分利用了HDFS中所有数据节点(datanode)所在机器的内存.CUP以及少量磁盘完成对大数据 ...
- Qt5应用程序封包
系统环境:windows10+vs2017+qt5.12 目的:生成.exe可执行文件. 步骤: 1.选择release模式,生成解决方案. 2.打开命令行,cd到生成的可执行文件.exe目录下 3. ...
- 如何优雅的使用C语言绘制一只小猪佩奇
今天我们来用C语言画一只小猪佩奇---社会.社会....在画小猪佩奇之前,我们先使用带符号的距离长 (signed distance field,SDF) 来画一个圆形. 使用这个方法表示形状,但是这 ...
- 异常笔记:运行hdfs copyFromLocal 上传文件报错
把本地文件系统,复制到dfs文件系统时报错的错 [hadoop@localhost ~]$ hdfs dfs -copyFromLocal /home/hadoop/mk.txt /xg_test/ ...