Oracle GoldenGate 单向复制配置

GoldenGate 配置数据 DML 同步需要的进程

源数据库

  1. Manager 进程:GoldenGate 的控制进程,负责启动,监控和管理其他进程
  2. Extract 进程:抽取进程,负责从源数据库中捕获修改的数据,然后保存为本地的 trail 文件
  3. Pump 进程:传输进程,负责从本地 trail 文件中传输到目标数据库上

目标数据库

  1. Manager 进程:同样需要配置一个 Manager 进程
  2. Replicat 进程:应用进程,负责把解析传输过来的 trail 文件,把修改应用到本地数据库里面

配置流程,在源数据库上执行以下步骤

调整归档模式,如果数据库运行在非归档模式下,首先要修改成归档模式,用sqlplus执行

1
2
3
4
SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>alter database open;

打开数据库级别的补充日志(supplemental log)

1
SQL>alter database add supplemental;

创建 GoldenGate 用户,为了简化流程,这里直接给 ggs 赋予了 dba 权限

1
2
SQL>create user ggs identified by ggs;
SQL>grant dba to ggs;

添加表级别的补充日志,用 GGSCI 执行,GGSCI 在 GoldenGate 目录下面

1
GGSCI> dblogin userid ggs,password ggs;

添加要同步表的补充日志,可以用通配符来用户所有的表

1
GGSCI>add trandata scott.*

配置源数据库的 Manager 进程

创建名字为 mgr 的 Manager 进程的参数文件

1
GGSCI> edit params mgr

在打开的文件里添加以下内容

1
2
3
4

PORT 7809
DYNAMICPORTLIST 7810-7820
AUTORESTART ER t*, RETRIES 4, WAITMINUTES 4

保存文件,参数说明

1
2
3
PORT:Manager进程通信端口G
DYNAMICPORTLIST:表示Manager进程可以为通信分配的动态端口列表
AUTORESTART:自动重启Extract进程,重启次数为4次,每次间隔4s,如果不成功就放弃

启动 Manager 进程

1
GGSCI> start mgr

配置源数据库的 Extract 进程

创建名字为 extest 的抽取进程的参数文件

1
GGSCI> edit params extest

在打开的文件里添加以下内容

1
2
3
4
5
extract extest
userid ggs,password ggs
exttrail E:\OGG\product\12.1.2\oggcore_1\dirdat\et
dynamicresolution
table scott.* ;

保存文件,参数说明

1
2
exttrail:本地tail文件的保存目录
dynamicresolution:动态解析原端的表名

在 GGSCI 中添加 extest 进程

1
GGSCI>add extract  extest,tranlog,begin now

添加本地 trail 文件

1
GGSCI>add exttrail E:\OGG\product\12.1.2\oggcore_1 \dirdat\et, extract  extest

启动 Extract 进程

1
GGSCI>start extest

配置源数据库的 PUMP 进程

创建名字为 dpump 的 pump 进程的参数文件

1
GGSCI> edit params dpump

在打开的文件里添加以下内容

1
2
3
4
5
6
extract dpump
passthru
userid ggs,password ggs
rmthost 192.168.7.234,mgrport 7809,compress
rmttrail C:\app\oracle\product\12.1.2\oggcore_1\dirdat\pt
table scott.* ;

保存文件,参数说明

1
2
rmthost:目标数据库的 IP 和端口,端口为目标数据库 Manager 进程中配置的端口号。
rmttrail:目标数据库 trail 文件的保存路径

在 GGSCI 中添加 PUMP 进程

1
GGSCI>add extract dpump, exttrailsource E:\OGG\product\12.1.2\oggcore_1 \dirdat\et

注意:该地址应与 extract 进程中配置的 trail 文件地址一样

添加远程 trail 的保存路径

1
GGSCI>add rmttrail  C:\app\oracle\product\12.1.2\oggcore_1\dirdat\pt ,extract dpump

注意:该地址应与目标数据库中 trail 文件的地址一样

启动 PUMP 进程

1
GGSCI>start dpump

在目标数据库上执行以下步骤

创建 GoldenGate 用户,为了简化流程,这里直接给 ggs 赋予了 dba 权限

1
2
SQL>create user ggs identified by ggs;
SQL>grant dba to ggs;

添加 checkpoint 表, checkpoint 表的作用是为了从异常失败场景中恢复数据

在 GLOBALS 中添加 checkpoint

1
GGSCI>edit params ./GLOBALS

在打开的文件中添加

1
checkpointtable ggs.checkpoint

保存文件,在目标数据库中添加 checkpoint 表

1
2
GGSCI>dblogin userid ggs,password ggs
GGSCI>add checkpointtable ggs.checkpoint

配置目标数据库的 Manager 进程

创建名字为 mgr 的 Manager 进程的参数文件

1
GGSCI> edit params mgr

在打开的文件里添加以下内容

1
2
3
4
5
6
7
8
PORT 7809
DYNAMICPORTLIST 7810-7820
AUTOSTART ER *
AUTORESTART EXTRACT *,WAITMINUTES 2,RETRIES 5
LAGREPORTHOURS 1
LAGINFOMINUTES 10
LAGCRITICALMINUTES 30
PURGEOLDEXTRACTS D:\Oracle_GoldenGate\dirdat\rt*, USECHECKPOINTS, MINKEEPDAYS 5

保存文件,启动 Manager 进程

1
GGSCI>start mgr

配置目标数据库的 replicat 进程

创建 Replicat 进程

1
GGSCI> add replicat repl,exttrail C:\app\oracle\product\12.1.2\oggcore_1\dirdat\pt ,checkpointtable ggs.checkpoint

注意:该地址应为 trail 文件的地址

创建名字为 repl 的 Replicat 进程的参数文件

1
GGSCI> edit params  repl

在打开的文件里添加以下内容

1
2
3
4
5
6
7
replicat repl
userid ggs,password ggs
assumetargetdefs
reperror default,discard
discardfile C:\app\oracle\product\12.1.2\oggcore_1\dirrpt\repl.dsc,append,megabytes 50
dynamicresolution
MAP scott.*,TARGET scott.* ;

保存文件,参数说明

1
2
3
assumetargetdefs:说明源数据库和目标数据库有相同的表定义
reperror:遇到复制错误默认行为记录错误并继续处理
dynamicresolution:动态解析对象名称,加快解析效率

启动 replicat 进程

1
GGSCI>start repl

同步完成

查看评论