Oracle GoldenGate 19C双向DML\DDL配置实战

目录
================================
一、环境准备并安装GoldenGate

1. 数据库准备情况
2. 下载OGG软件并解压安装
3. 准备OGG环境变量
4. 配置日志模式
5. 创建GoldenGate用户帐号
6. 安装GoldenGate软件
7. 配置源、目标数据库一致
 
二、 GoldenGate DML同步源端配置

1. 源MGR进程
2. 配置Extract进程组
3. 配置Pump进程组

三、 GoldenGate DML同步目标端配置

1. 目标端MGR进程
2. 添加检查表
3. 配置目标端Peplicat进程组
4. 可以查看checkpoint状态
5. DML配置测试

四、 GoldenGate DDL同步配置

1. 源端支持DDL复制运行脚本
2. 修改源端extract进程的params文件
3. 修改目标端rep1icat进程的params文件
4. 测试


=======================================

GoldenGate几个重要进程介绍:

1、Manager管理进程在两端开启,监控和重启其他进程;分配数据存储和报告错误及事件;
2、Extract进程从日志中抓取并传输到target端事务数据;
3、Server Collector进程在target(接受)端接受数据并写入trail文件;
4、Rep1icat进程读取trail文件,并应用到traget数据库;
5、trail文件是gg自己抓捕信息的文件,是一个OS文件,存放在./dirdat/下,以X00000命名,N顺序1,2,3…此文件用完可配置参数自动删除。

一、环境准备并安装GoldenGate

1. 数据库准备情况

1) 源服务器

IP地址:10.179.251.147

数据库:11.2.0.4 64 bit
SID: ogg1
操作系统版本:Centos 7U2 64 bit
ogg版本:fbo_ggs_Linux_x64_shiphome.zip(19c)

说明:前提条件是数据库已经准备方式安装完毕。

2) 目标服务器

IP地址:10.179.250.199
数据库:11.2.0.4 64 bit
SID: ogg2
操作系统版本:Centos 7U2 64 bit
ogg版本:fbo_ggs_Linux_x64_shiphome.zip(19c)

说明:前提条件是数据库已经准备方式安装完毕。

2. 下载OGG软件并解压安装

1) 源服务器

mkdir -p /home/JVOGGM/db/ogg19.1.4
unzip fbo_ggs_Linux_x64_shiphome.zip
chown -Rorajvogg:dba/home/JVOGGM/db/ogg19.1.4

2) 目标服务器都要配置

mkdir -p /home/JVOGGM/db/ogg19.1.4
unzip fbo_ggs_Linux_x64_shiphome.zip
chown -R orajvogg:dba /home/JVOGGM/db/ogg19.1.4

3. 准备OGG环境变量

#源服务器、与目标服务器都要配置
$ vi /home/oracle/.bash_profile

增加如下一行:
export GGS_HOME=/home/JVOGGM/db/ogg19.1.4

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$GGS_HOME

export PATH=$PATH:$GGS_HOME

生效环境变量
source /home/oracle/.bash_profile

4. 安装OGG软件

$cd /home/JVOGGM/soft/ogg/fbo_ggs_Linux_x64_shiphome/Disk1

执行安装脚本

$./runInstaller

安装完成。

5. 配置日志模式

# 源服务器,目标服务器都需要配置(单项目标端不需要)

1) 查看规档与日志模式
sqlplus / as sysdba
select log_mode,supplemental_log_data_min,force_logging from v$database;


2) 配置为规档模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
alter system set log_archive_dest_1='location=/home/JVOGGM/db/data/archive' scope=both;


3) 配置日志模式(打开强制规档与附加日志模式)
alter database add supplemental log data; 
alter database force logging; 

alter system switch logfile;


4)查看配置结果:
SQL>select log_mode,supplemental_log_data_min,force_logging from v$database;

LOG_MODE     SUPPLEME FOR
------------ -------- ---
ARCHIVELOG   YES      YES

6. 创建GoldenGate用户帐号及测试账号

源服务器

su - oracle
sqlplus /nolog
conn / as sysdba;

create tablespace ogg datafile '/home/JVOGGM/db/data/ogg01.dbf' size 1024m autoextend on maxsize10000m;
create user ogg identified by ogg default tablespace ogg temporary tablespace TEMP quota unlimited on ogg;

grant dba to ogg;

创建同步普通账户,此账户也为实际同步业务表

createtablespace ogg_test datafile'/home/JVOGGM/db/data/oggtest01.dbf'size1024m autoextendoff;

create user ogg_test identified by ogg_test default tablespace ogg_testquota unlimited on ogg_test;

grant connect,resource to ogg_test;

#创建所需同步的表

sqlplus ogg_test/ogg_test

create table tb (id int not null, name char(10), primary key(id));

create table tb2 (id int not null, name char(10), primary key(id));

##2) 目标服务器

su - oracle
sqlplus /nolog
conn / as sysdba;

create tablespace ogg datafile '/home/JVOGGS/db/data/ogg01.dbf' size1024m autoextend on maxsize10000m;
create user ogg identified by ogg default tablespace ogg temporary tablespace TEMP quota unlimited on ogg;

grant dba to ogg;

7. 开启源端ogg参数

alter system set enable_goldengate_replication=true scope=both;

二、 GoldenGate DML同步源端配置

  1. 1. 开启表级别日志

追加对象为用户ogg_test下所有表

dblogin userid ogg password ogg;

add schematrandata ogg_test

info schematrandata ogg_test

info trandata ogg_test.*


./ggsci

  1. 2. 配置源端MGR进程

配置全局文件

GGSCI (hmjvapp01) 1> edit params ./GLOBALS

ggschema ogg

全局文件 GLOBALS 要大写,必须放在 Golden Gate 根目彔下,否则其会默认将配置文件创建在 Golden Gate 根目彔下的 dirprm 子目彔中,在全局文件中添加 GGSCHEMA参数,这个 ggschema 就是要抽取的数据库schema

1) 编辑主进程组

edit params mgr

port 7809
dynamicportlist 7800-8000
autorestart extract *,retries 5,waitminutes 2,resetminutes 5

说明:
port 指定mgr进程通信端口
dynamicportlist 表示mgr进程可以为源与目的端动态通信指定端口
autorestart extract 表示自动重启extract进程组,每2分钟尝试重启所有进程,重试5次,每5分钟清零。
配置参数后,重启mgr进程生效

2) 启动主管理进程并测试数据库连接
start mgr

3. 配置Extract进程组

1) 编辑配置文件edit params extot

extract extot 

dynamicresolution

tranlogoptions excludeuser ogg 

setenv (ORACLE_SID="JVOGGM") 

userid ogg,password ogg 

numfiles 1000

exttrail /home/JVOGGM/db/ogg19.1.4/dirdat/ot

table ogg_test.*;

说明:
extract extot定义extract进程名字

tranlogoptions excludeuser ogg 传输队列的内容要排除用户ogg的redo信息”,这是为了防止死循环,防止传过去的记录又自己的反传回来
dynamicresolution 指定当extract从日志抓取变化数据时,根据当前的需要,动态解析表名,从而加快抓取进程的启动速度
setenv设置环境变量
userid 登录数据库
exttrail指定本地trail文件地址

numfiles 1000  ##定义本extract为最大多少张表预留空间,缺省为500,超过500张表需要设定一个比实际表数略大的值。
table 定义同步的表


2) 添加抽取进程

add extract extot, tranlog,begin now

添加一个group为extot的extract进程,并且使用的tranlog捕获模式,开始使用时间是now

3) 添加本地trail文件

add exttrail /home/JVOGGM/db/ogg19.1.4/dirdat/ot,extract extot

说明:
创建本地trail文件,主extract进程负责写这部分文件,pump负责把这部分文件传到目标服务器端。

4) 启动服务

start extract extot

如果启动的时候报错:就是之前参数ENABLE_GOLDENGATE_REP1ICATION未开启

2021-05-12 10:55:05  ERROR   OGG-02091  Oracle GoldenGate Capture for Oracle, ext1.prm:  Operation not supported because enable_goldengate_rep1ication is not set to true.

为了更好的监视你使用OGG,所以把gg绑定到DB中,只有设置了改参数为true,才能使用OGG的一些功能。

SQL> ALTER SYSTEM SET ENABLE_GOLDENGATE_REP1ICATION = TRUE SCOPE=BOTH;

4. 配置Pump进程组
  1. 1) 编辑配置文件 editparams pumpot

extract pumpot

tranlogoptions excludeuser ogg
dynamicresolution
passthru
rmthost 10.179.250.199,mgrport 7809,compress
rmttrail /home/JVOGGS/db/ogg19.1.4/dirdat/pt
table ogg_test.*;

passthru:绕过数据定义检测

2) 添加pump进程

add extract pumpot,exttrailsource /home/JVOGGM/db/ogg19.1.4/dirdat/ot

EXTRACT added. exttrailsource:表示这是个data pump extract与本地trail作连接

3) 添加远程trail文件

add rmttrail /home/JVOGGS/db/ogg19.1.4/dirdat/pt,extract pumpot

说明: 指定远程trail文件,将pump与remotetrail做链接

4) 启动pump进程(目标端未配置mgr,状态是阻塞的),请在目标端开启mgr

start extract pumpot

三、数据初始化

配置源与目标数据初始化可以采用很多方法,

可以采用oracle的方式:包括imp/impdb/rman/dblink方式来实现初始数据表一致

可以通过goldengate初始化数据加载的方式

本方案采用rman全库恢复的方式

注意:

查看数据库中所有事务的开始时间,直到其大于抽取进程的启动时间再开始备份数

据库,因为GoldenGate 的只获取在Extract 启动以后的交易变化,在Extract 启动之

前开始而在Extract 启动以后才完成的交易GoldenGate 将会忽略这些交易,这些被忽

略的交易数据就会丢失。所以需要等数据库中所以的交易都在Extract 启动之后开始

的才能开始备份数据库。通过v$transaction 视图来查看数据库中的交易:

等在extract开启前的事务结束后,开启rman备份

select b.sid,b.serial#,b.username,b.process,b.MODULE,b.status,b.SQL_ID,c.SQL_TEXT,a.START_TIME,a.start_scnb

from v$transaction a, v$session b, v$sql c 

where  a.ADDR = b.TADDR 

and b.SQL_ADDRESS = c.ADDRESS 

and b.SQL_HASH_VALUE = c.HASH_VALUE

and a.start_time < '2021-05-13 14:00:00'

当所有在Extract 启动之前的开始的交易都完成后,我们就可以使用RMAN 备份生产
端的数据库了。备份数据库的过程中一定要密切监控Extract 进程的状态,保证其一
直正常运行:

  1. 1. 源端使用rman备份全库

备份脚本rman_bk.sh

#!/bin/bash

set -e

. /home/JVOGGM/db/11.2.0/JVOGGM_hmjvapp01.env

mkdir -p /home/JVOGGM/db/rman_backup/`date +%Y%m%d`

DATESTAMP=`date +%Y%m%d`

rman target /  log=/home/backup/dbBackup/rmanBackup/PROD/logs/full_`date +%Y%m%d_%H%M`.log <<EOF

set encryption on identified by ' u7[poijufguio98765789o' only;

run{

allocate channel d1 device type disk;

allocate channel d2 device type disk;

allocate channel d3 device type disk;

allocate channel d4 device type disk;

allocate channel d5 device type disk;

allocate channel d6 device type disk;

allocate channel d7 device type disk;

allocate channel d8 device type disk;

allocate channel d9 device type disk;

allocate channel d10 device type disk;

sql 'alter system switch logfile';

sql 'alter system switch logfile';

sql 'alter system archive log current';

backup as compressed backupset format '/home/JVOGGM/db/rman_backup/${DATESTAMP}/dbfull_%d_%Y%M%D_%U' database

plus archivelog format '/home/JVOGGM/db/rman_backup/${DATESTAMP}/arch_%d_%Y%M%D_%U';

backup current controlfile format '/home/JVOGGM/db/rman_backup/${DATESTAMP}/cntrf_%d_%Y%M%D_%U';

crosscheck backup;

delete noprompt obsolete;

delete noprompt expired backup;

release channel d1;

release channel d2;

release channel d3;

release channel d4;

release channel d5;

release channel d6;

release channel d7;

release channel d8;

release channel d9;

release channel d10;

}

EOF

  1. 2. 获取源端非活动日志组的SCN

有多组的时候我们取最大的FIRST_CHANGE#,这里为5965245009268

  1. 3. 目标端恢复

恢复脚本db_recover.sh

#!/bin/bash

. /home/JVOGGS/db/11.2.0/JVOGGS_hmjvapp02.env

rman auxiliary / log=/tmp/rman_restore.log <<EOF

set decryption identifiedby'u7[poijufguio98765789o';

run{

allocate auxiliary channel d1 device typedisk;

allocate auxiliary channel d2 device typedisk;

allocate auxiliary channel d3 device typedisk;

allocate auxiliary channel d4 device typedisk;

allocate auxiliary channel d5 device typedisk;

allocate auxiliary channel d6 device typedisk;

allocate auxiliary channel d7 device typedisk;

allocate auxiliary channel d8 device typedisk;

allocate auxiliary channel d9 device typedisk;

allocate auxiliary channel d10 device typedisk;

allocate auxiliary channel d11 device typedisk;

allocate auxiliary channel d12 device typedisk;

duplicate databaseto JVOGGS backuplocation'/home/JVOGGS/db/rman_backup/20210512';

release  channel d1;

release  channel d2;

release  channel d3;

release  channel d4;

release  channel d5;

release  channel d6;

release  channel d7;

release  channel d8;

release  channel d9;

release  channel d10;

release  channel d11;

release  channel d12;

}

EOF

1)Profile 添加

db_file_name_convert=('/home/JVOGGM/db/data','/home/JVOGGS/db/data')

log_file_name_convert=('/home/JVOGGM/db/data','/home/JVOGGS/db/data')

2)启动数据库到nomount

SQL> conn /as sysdba

Connected to an idle instance.

SQL> startup nomount

ORACLE instance started.

Total System Global Area 4275781632 bytes

Fixed Size                  2260088 bytes

Variable Size             939525000 bytes

Database Buffers         3321888768 bytes

Redo Buffers               12107776 bytes

SQL>

3)执行恢复脚本(使用duplicate恢复目标库)

nohup./db_recover.sh &

  1. 4. 获取目标端打开此时的SCN

SELECT CHECKPOINT_CHANGE#,CHECKPOINT_TIME FROM V$DATAFILE_HEADER;

这里为5965245009236

  1. 5. 开启目标端ogg参数

或者事先存放到profile文件中

alter system set enable_goldengate_replication=true scope=both;

四、 GoldenGate DML同步目标端配置
./ggsci

1. 目标端MGR进程

1) 编辑配置文件

edit params mgr

port 7809
dynamicportlist 7800-8000

autostart er *
autorestart extract *, waitminutes 2, resetminutes 5
lagreporthours 1
laginfominutes 30
lagcriticalminutes 45
purgeoldextracts /home/JVOGGS/db/ogg19.1.4/dirdat/pt*, usecheckpoints, minkeepdays 3

MANAGER进程参数配置说明:

PORT:指定服务监听端口;这里以7839为例,默认端口为7809

DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Rep1icat、GGSCI进程通信也会使用这些端口;

AUTOSTART:指定在管理进程启动时自动启动哪些进程;

AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;

PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除。

LAGREPORT、LAGINFO、LAGCRITICAL:

定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中

Discardfile:定义discard文件位置,如果处理中有纪录出错会写入到此文件中,追加形式,单位M

Tableexclude: 排查不需要的表

2. 添加检查表

说明: 当我们在GLOBALS 文件里指定了默认的checkpoint 之后,新的Replicat groups 在创建时会自动使用这个参数,不需要其他指令

1) 编辑全局配置文件

Edit params ./GLOBALS
CHECKPOINTTABLE ogg.checkpoint

2) 添加checkpoint表

./ggsci  

GGSCI (hmjvapp02) 1> dblogin userid ogg,password ogg
Successfully logged into database.

GGSCI (hmjvapp02) 2> add checkpointtable ogg.checkpoint
Successfully created checkpoint table OGG.CHECKPOINT.

3. 配置目标端replicat进程组
  1. 1) 编辑配置文件

edit params repot

replicat repot
userid ogg,password ogg
assumetargetdefs
reperror default,discard
discardfile /home/JVOGGS/db/ogg19.1.4/dirrpt/repot.dsc,append,megabytes 50
dynamicresolution
map ogg_test.*, target ogg_test.*;

  1. 2) 添加复制进程
    add replicat repot,exttrail /home/JVOGGS/db/ogg19.1.4/dirdat/pt, CHECKPOINTTABLE ogg.checkpoint

  1. 3) 启动恢复进程(SCN 号为目标端打开的checkpointscn)
    start replicat repot,aftercsn5965245009236

如果有错误,请查看ggserr.log日志排查后,在启动恢复进程

4. 可以查看checkpoint状态

sqlplus ogg/ogg

SQL> select tname from tab; 
TNAME 
------------------------------------- 
CHECKPOINT                     TABLE
CHECKPOINT_LOX                 TABLE

select * from checkpoint;

注1:ogg_11.1.1.1.2只有CHECKPOINT一张表。
注2:ogg_11.2.x.x.1有CHECKPOINT,CHECKPOINT_LOX两张表。

5. DML配置测试

在源端插入数据,然后提交,在目的端查询是否有数据生成。

说明:

到此goldengate DML单向配置已经配置完毕,通过简单的测试示例来进行。

源端插入新列,目标端查询新列同步

五、 GoldenGate DDL同步配置

1. 支持DDL复制运行脚本

# 服务器源端配置

1) 指定数据库模式

$ ./ggsci 
GGSCI (hmjvapp01) 8> edit param ./GLOBALS
GGSCI (hmjvapp01) 9> view params ./GLOBALS

ggschema ogg

GGSCI (hmjvapp01) 10> stop mgr 

2) oralce 11gR2数据库需要关闭回收站。
su - orajvogg
sqlplus / as sysdba;
alter system set recyclebin=off scope=spfile;

shutdown immediate


3) 安装DDL对象

cd  $GGS_HOME

SQL> grant dba to ogg;

SQL> grant execute on utl_file to ogg;
SQL> @marker_setup.sql     说明: 一定要在$OGG_HOME目录下执行否则会卡主。执行脚本时要输入ogg管理用户,实例是ogg均指定用户ogg
SQL> @ddl_setup.sql        说明: 11.1.1.2需要手动输入 ogg,INITIALSETUP,yes

注1:INITIALSETUP在数据库中创建捕获DDL语句的trigger
SQL> @role_setup.sql

注2:role_setup 创建GGS_GGSUSER_ROLE 角色
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL> @ddl_enable.sql

注3:开启DDL 捕获触发器
SQL> @marker_status.sql

注4: 执行dbmspool包将在数据库中创建DBMS_SHARED_POOL包,之后ddl_pin包需要用到

SQL> @?/rdbms/admin/dbmspool.sql

Package created.
Grant succeeded.

注5: 执行ddl_pin.sql通过dbms_shared_pool.keep存储过程将DDLRep1ication相关对象keep在共享池中,以保证这些对象不要RELOAD,提升性能。

SQL> @ddl_pin.sql ogg

PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.

2. 修改extract进程的params文件

# 服务器源端配置
# source端修改extract进程的params文件,添加"ddl include all"参数,重启extract进程

1) 停止ext1_t1进程

GGSCI (ogg1) 2> stop extract ext1

2) 编辑配置文件

GGSCI (ogg1) 3> edit params ext1

extract extot

dynamicresolution

tranlogoptions excludeuser ogg

setenv (ORACLE_SID="JVOGGM")

userid ogg,password ogg

exttrail /home/JVOGGM/db/ogg19.1.4/dirdat/ot

ddl include all
ddloptions addtrandata, report

table ogg_test.*;


# 说明:加了两行tranlogoption 与 ddl


3)启动mgr,ext1进程
GGSCI (hmjvapp01) 22> start mgr
GGSCI (hmjvapp01) 24> start extot

GGSCI (hmjvapp01) 26> start pumpot


4) 查看ext1_t1进程启动情况

GGSCI (hmjvapp01) 27> info all

3. 修改目标端replicat进程的params文件

# 目标服务器配置

# target端修改replicat进程的params文件,
添加"ddlerror default ignore retryop maxretries 3 retrydelay 5" 等参数,重启rep1icat进程

  1. 1) 停止mgr进程

GGSCI (hmjvapp02) 15> stop mg

2) 停止rep1进程

GGSCI (hmjvapp02) 18> stop repot
Sending STOP request to REPLICAT REPOT ... ...  Request processed.


3) 编辑rep1配置文件

GGSCI (hmjvapp02) 24> edit params repot
GGSCI (hmjvapp02) 25> view params repot

replicat rep1
userid ogg, password ogg
assumetargetdefs
reperror default, discard
discardfile /u01/app/ogg/dirrpt/rep1.dsc, append, megabytes 50
dynamicresolution
ddloptions report
ddlerror default ignore retryop maxretries 3 retrydelay 5
ddlerror default discard
ddlerror default ignore retryop
map gl, target gl;

注: 说明目标端不需要配置DDL include all语句,不然的话,反而会出错。

##Error text [Error code [1031], ORA-01031: insufficient privileges
4) 启动repot进程
GGSCI (hmjvapp02) 27> start mgr   # 会自动启动rep1进程
GGSCI (ogg2) 5> info replicat repot

4. 测试

在源端gl创建一个表,查看目标端是否成功创建。
create table abc ( id integer , name char(10));
insert into abc values ( 1 , 'abc' );

目的端查看是否成功创建。

反向配置DML,DDL 

六、反向 GoldenGate DDL同步配置

1. 支持DDL复制运行脚本

# 服务器目标端配置

  1. 1) oralce 11gR2数据库需要关闭回收站。
    su - orajvogg
    sqlplus / as sysdba;
    alter system set recyclebin=off scope=spfile;

shutdown immediate


3) 安装DDL对象

cd  $GGS_HOME

SQL> grant dba to ogg;
SQL> @marker_setup.sql     说明: 均指定用户ogg
SQL> @ddl_setup.sql        说明: 11.1.1.2需要手动输入 ogg,INITIALSETUP,yes

注1:INITIALSETUP在数据库中创建捕获DDL语句的trigger
SQL> @role_setup.sql

注2:role_setup 创建GGS_GGSUSER_ROLE 角色
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL> @ddl_enable.sql

注3:开启DDL 捕获触发器
SQL> @marker_status.sql

注4: 执行dbmspool包将在数据库中创建DBMS_SHARED_POOL包,之后ddl_pin包需要用到

SQL> @?/rdbms/admin/dbmspool.sql

Package created.
Grant succeeded.

注5: 执行ddl_pin.sql通过dbms_shared_pool.keep存储过程将DDLRep1ication相关对象keep在共享池中,以保证这些对象不要RELOAD,提升性能。

SQL> @ddl_pin.sql ogg

PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.

2. 增加extract进程组

# 服务器目标端配置
# target端增加extract进程

1) 编辑配置文件

GGSCI (ogg2) 3> edit params ext2

extract ext2

dynamicresolution

tranlogoptions excludeuser ogg 

setenv (ORACLE_SID="JVOGGS") 

userid ogg,password ogg 

exttrail /home/JVOGGS/db/ogg19.1.4/dirdat/do

ddl include all

ddloptions addtrandata,report

table ogg_test.*;

 2) 添加抽取进程

add extract ext2, tranlog,begin now

3) 添加本地trail文件

add exttrail /home/JVOGGS/db/ogg19.1.4/dirdat/do,extract ext2

说明:
创建本地trail文件,主extract进程负责写这部分文件,pump负责把这部分文件传到目标服务器端。

4) 启动服务

start extract ext2

3. 增加pump进程组

# 服务器目标端配置

1) 编辑配置文件

extract pump1

tranlogoptions excludeuser ogg

dynamicresolution

passthru

rmthost 10.179.251.147,mgrport 7809,compress

rmttrail /home/JVOGGM/db/ogg19.1.4/dirdat/p2

table ogg_test.*;

2) 添加pump进程

add extract pump1,exttrailsource /home/JVOGGS/db/ogg19.1.4/dirdat/do

3) 添加远程trail文件

add rmttrail /home/JVOGGM/db/ogg19.1.4/dirdat/p2,extract pump1

说明: 指定远程trail文件

4) 启动pump进程

start extract pump1

4. 添加检查表、增加replicat进程

#源端服务器上配置

说明: 当我们在GLOBALS 文件里指定了默认的checkpoint 之后,新的Replicat groups 在创建时会自动使用这个参数,不需要其他指令

1) 编辑全局配置文件

edit params ./GLOBALS
CHECKPOINTTABLE ogg.checkpoint

注:增加检测点

2)修改mgr配置

edit param mgr 

lagreporthours 1
laginfominutes 30
lagcriticalminutes 45
purgeoldextracts /home/JVOGGM/db/ogg19.1.4/dirdat/p*, usecheckpoints, minkeepdays 3

GGSCI (hmjvapp01) 75>start mgr  

增加上面参数

3) 添加checkpoint表

./ggsci  

GGSCI (hmjvapp01) 76> dblogin userid ogg,password ogg
Successfully logged into database.

GGSCI (hmjvapp01 as ogg@JVOGGM) 77> add checkpointtable ogg.checkpoint
Successfully created checkpoint table OGG.CHECKPOINT.


4) 编辑rep2配置文件

GGSCI (hmjvapp01) 76> edit params rep2
GGSCI (hmjvapp01) 77> view params rep2

replicat rep2

setenv (ORACLE_SID="JVOGGM")

userid ogg, password ogg

assumetargetdefs

reperror default, discard

discardfile /home/JVOGGM/db/ogg19.1.4/dirrpt/rep2.dsc, append, megabytes 50

dynamicresolution

ddloptions report

ddlerror default ignore retryop maxretries 3 retrydelay 5

ddlerror default discard

ddlerror default ignore retryop

map ogg_test.*, target ogg_test.*;

5) 添加复制进程
add replicat rep2,exttrail /home/JVOGGM/db/ogg19.1.4/dirdat/p2, CHECKPOINTTABLE ogg.checkpoint

6) 启动进程
start replicat rep2

7)可以查看checkpoint状态

su - orajvogg
sqlplus ogg/ogg

SQL> select tname from tab; 
TNAME 
------------------------------------- 
CHECKPOINT                     TABLE
CHECKPOINT_LOX                 TABLE

select * from checkpoint;

注1:ogg_11.1.1.1.2只有CHECKPOINT一张表。
注2:ogg_11.2.x.x.1有CHECKPOINT,CHECKPOINT_LOX两张表。

5. 测试

在目标端ogg_test创建一个表,查看目标端是否成功创建。
create table bb ( id integer , name char(10));
insert into bb values ( 1 , 'abc' );

目的端查看是否成功创建。

OGG 出现进程hang住的情况:基本上都是两边数据不同步的情况。

可以停在进程,同步数据后,在启用。或者跳过出错的事物。

跳过具体的rba

alter rep1, extseqno 2114, extrba 4663281
start rep1

跳过事物

start replicat repsb skiptransaction

七、其他场景配置

1、排除其他表的操作

删除复制表的步骤

停止Extract/Data Pump/Replicat进程
注意停止Extract时检查长交易和归档日志
修改Extract/Data Pump/Replicat参数中复制范围排除该表

如使用通配符时,Extract/Data Pump可通过tableexclude排除表

tableexclude ctais2.KJ_*;
tableexclude ctais2.DJ_YZCWSBQC;
table ctais2.*;
如使用通配符时,Replicat可通过mapexclude排除表
MAPEXCLUDE fin.TEST
MAP fin.*, TARGET fin.*;
重启Extract/Data Pump/Replicat进程
说明:在一个复制链路的任何一个环节去掉该表即可排除该表复制,但建议
在主Extract进行排除,可以避免各进程做不必要的工作;同时,在各个进程
参数均明确去掉该表可以保持前后的逻辑统一性和易读性

八、经典抓取模式与集成模式互相转换

1、设置STREAMS_POOL_SIZE 参数值

STREAMS_POOL_SIZE ,参数大小= 抽取进程的数量*1G +抽取进程数量*1G*0.25

Alter system set streams_pool_size=1250M scope=both;

2、对用户授权

Sql>exec dbms_goldengate_auth.grant_admin_privilege('OGG');

3、注册到数据库

dblogin userid ogg,password ogg;

   register extract extot database

GGSCI (hmjvapp01 as ogg@JVOGGM) 10> register extract extot database

2021-05-25 14:44:49  WARNING OGG-02064  Oracle compatibility version 11.2.0 has limited datatype support for integrated capture. Version 11.2.0.3 required for full support.

2021-05-25 14:45:13  INFO    OGG-02003  Extract EXTOT successfully registered with database at SCN 5965245601721.

4、改造extract

   Editextractextot,增加

TRANLOGOPTIONS INTEGRATEDPARAMS(MAX_SGA_SIZE 200PARALLELISM 6)

LOGALLSUPCOLS

UPDATERECORDFORMAT COMPACT

集成捕获模式:TRANLOGOPTIONS INTEGRATEDPARAMS +参数 ####必须是12.2版本,如果不是请打上17030189:LOGMINER GG DICTIONARY SUPPORT:MISSING ATTRIBUTES补丁 ###

参数:

MAX_SGA_SIZE: 控制日志挖掘服务器使用的共享内存数量。

共享内存是从SGA的streams池中获得的. The default is 1 GB.

PARALLELISM: 控制日志挖掘服务器使用的进程数量。默认值是2。

对于Oracle Standard Edition,必须将其设置为1.

5、升级为集成模式

Stopextot

alter extract extot, upgrade integrated tranlog, begin now

升级成集成模式出错,抽取进程未走到5965245601721处

GGSCI (hmjvapp01 as ogg@JVOGGM) 12> alter extract extot, upgrade integrated tranlog, begin now

ERROR: Extract EXTOT is not ready to be upgraded because recovery SCN 5965245601652 has not reached SCN 5965245601721.

开启extot,让继续提取,观察infoextot

停止extot

GGSCI (hmjvapp01 as ogg@JVOGGM) 36> alter extract extot, upgrade integrated tranlog, begin now

Extract EXTOT successfully upgraded to integrated capture.

6、降级为经典模式

Stopextot

alter extract extot, downgrade integrated tranlog

unregister extract extot database

Startextot

九、集成复制模式

1、复制类型

集成复制配置(oracle建议采用集成抓取+集成复制结构)

复制类型有:

并行复制、非集成复制、集成复制

Oracle Database 12.2.0.1及更高版本支持集成并行复制

2、改造 repot,非集成到集成模式

Editextractrepot,增加

DBOPTIONS INTEGRATEDPARAMS(parallelism 2)

3、删除并重新添加到集成模式

Dblogin userid ogg password ogg

Delete repot

add replicat repot,integrated ,exttrail /home/JVOGGS/db/ogg19.1.4/dirdat/pt, CHECKPOINTTABLE ogg.checkpoint

start replicat repot,aftercsn 5965245943888

十、集成与非集成的主要区别

集成抓取模式与经典抓取模式的配置区别:

修改streams_pool_size

用户授权

注册抓取到数据库

改造extract,主要是添加LOGALLSUPCOLS \UPDATERECORDFORMAT COMPACT

启动extact为集成模式add extract extot, integrated tranlog,begin now

集成恢复与非集成恢复的区别

改造rep,添加集成参数例如:DBOPTIONS INTEGRATEDPARAMS(parallelism 2)

启动rep为集成模式:add replicat rep2,integrated exttrail /home/JVOGGM/db/ogg19.1.4/dirdat/p1, CHECKPOINTTABLE ogg.checkpoint

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值