2.5 建立 GoldenGate 表空间
两台服务器都需要操作: 建议使用单独的表空间存放 GoldenGate 数据
create tablespace tsp_ogg datafile '/data/oracle/data/ogg01.dbf' size 100M autoextend on;
2.6 创建 GoldenGate 用户并赋权
两台服务器都需要操作
- create user ogg identified by ogg default tablespace tsp_ogg;
- grant dba to ogg;
- GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;
2.7 配置数据库
由于 GoldenGate 的原理是根据 Oracle 的日志进行抽取复制. 为了保证日志的完整性; 需要打开 Oracle 数据库归档;
- alter system set log_archive_dest_1 = 'LOCATION=/data/arch' scope = spfile;
- shutdown immediate;
- startup mount
- alter database archivelog;
- alter database open;
还需要开启 force log 和 supplemental log
- alter database force logging;
- alter database add SUPPLEMENTAL log data;
最后查询结果如下:
- SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
- NAME OPEN_MODE FOR SUPPLEME
- --------- -------------------- --- --------
- ORA235 READ WRITE YES YES
2.8 运行 GoldenGate 支持 DDL 脚本
如果要让 GoldenGate 支持 DDL 操作, 还需要额外运行几个脚本, 这些脚本是 OGG 带的而不是 Oracle 带的, 在 GoldenGate 的安装目录都可以找到, 源端与目标端都需要运行, 如下:
- @marker_setup.sql
- @ddl_setup.sql
- @role_setup.sql
- @ddl_enable.sql
在 11.2.0.4.0 版本; 需要设置
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
三. GoldenGate 单向复制流程配置
现在就可以正式配置 OGG 了, 在配置 OGG 之前, 先看下 OGG 的复制流程, OGG 和其他传统复制软件一样, 也是通过源端捕获 / 挖掘 ORACLE 的日志信息, 目标端根据源端传送过来的日志信息进行重塑, 实现源端 - 目标端数据同步, 可以参考下图.
只有 commit 之后的日志信息才会被 Capture 进程捕获, 未提交的事务 OGG 不会捕获.
3.1 创建 GoldenGate 的工作目录
源端和目标端都需要创建, 登录 GoldenGate, 只需要执行 create subdirs 命令就可以了.
- [ogg@oracle235 ogg]$ ggsci
- Oracle GoldenGate Command Interpreter for Oracle
- Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
- Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
- Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
- GGSCI (oracle235) 1> create subdirs
- Creating subdirectories under current directory /data/ogg
- Parameter files /data/ogg/dirprm: already exists
- Report files /data/ogg/dirrpt: created
- Checkpoint files /data/ogg/dirchk: created
- Process status files /data/ogg/dirpcs: created
- SQL script files /data/ogg/dirsql: created
- Database definitions files /data/ogg/dirdef: created
- Extract data files /data/ogg/dirdat: created
- Temporary files /data/ogg/dirtmp: created
- Stdout files /data/ogg/dirout: created
3.2 添加 CheckPoint 表
为了保证源和目标端在传数据的时候不会重复或者少传, 在目标端添加 checkpoin 表.
操作如下:
- GGSCI (oracle235) 2> EDIT PARAMS ./GLOBALS
- CHECKPOINTTABLE ogg.ggschkpt
- GGSCI (oracle235) 3> exit
- [ogg@oracle235 ogg]$ ggsci
- Oracle GoldenGate Command Interpreter for Oracle
- Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
- Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
- Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
- GGSCI (oracle235) 1> DBLOGIN USERID ogg, PASSWORD ogg
- Successfully logged into database.
- GGSCI (oracle235) 2> ADD CHECKPOINTTABLE
- No checkpoint table specified, using GLOBALS specification (ogg.ggschkpt)...
- Successfully created checkpoint table ogg.ggschkpt.
3.3 配置 MGR 进程组
在源端和目标端都必须运行一个 MGR 进程组; 负责启动 GoldenGate 进程, 以及启动动态进程, 管理 trail 文件, 错误信息.
运行 ggsci 程序; 输入 "EDIT PARAMS MGR" 编辑参数文件:
- [ogg@oracle235 ogg]$ ggsci
- Oracle GoldenGate Command Interpreter for Oracle
- Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
- Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
- Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
- GGSCI (oracle235) 1> EDIT PARAMS MGR
输入内容如下:
- PORT 7809
- DYNAMICPORTLIST 7800-8000
- AUTORESTART EXTRACT *, WAITMINUTES 2, RESETMINUTES 5
- PURGEOLDEXTRACTS /data/ogg/dirdat, USECHECKPOINTS, MINKEEPDAYS 3
PORT: 指定服务监听端口; 默认端口为 7809
DYNAMICPORTLIST: 动态端口: 可以制定最大 256 个可用端口的动态列表, 当指定的端口不可用时, 管理进程将会从列表中选择一个可用的端口, 源端和目标段的 Collector,Replicat,GGSCI 进程通信也会使用这些端口
AUTORESTART: 自动重启参数设置: 本处设置表示每 2 分钟尝试重新启动所有 EXTRACT 进程; 以后 5 分钟清零.
PURGEOLDEXTRACTS: 定期清理 trail 文件设置: 本处设置表示对于超过 3 天的 trail 文件进行删除
启动 MGR 进程
- GGSCI (oracle235) 2> start mgr
- Manager started.
- GGSCI (oracle235) 3> info mgr
- Manager is running (IP port oracle235.7809).
3.4 源端配置 Extract 进程
负责抓取需要传输数据; 下面在源端配置抽取进程.
- GGSCI (oracle235) 1> EDIT PARAMS EORA_1
- EXTRACT EORA_1
- SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
- USERID ogg, PASSWORD ogg
- EXTTRAIL /data/ogg/dirdat/aa
- TABLE lottu.*;
在源端用 add extract 命令创建 extract 组; 用 add exttrail 命令创建本地 trail 文件
- GGSCI (oracle235) 2> ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW
- EXTRACT added.
- GGSCI (oracle235) 3> ADD EXTTRAIL /data/ogg/dirdat/aa, EXTRACT EORA_1, MEGABYTES 5
- EXTTRAIL added.
启动 extract 进程; 在 ggsci 中: 可以使用 add, alter, cleanup, delete, info, kill 命令管理 extract 进程
- GGSCI (oracle235) 4> start extract eora_1
- Sending START request to MANAGER ...
- EXTRACT EORA_1 starting
- GGSCI (oracle235) 5> info eora_1
- EXTRACT EORA_1 Last Started 2018-08-23 00:52 Status RUNNING
- Checkpoint Lag 00:06:20 (updated 00:00:04 ago)
- Log Read Checkpoint Oracle Redo Logs
- 2018-08-23 00:46:36 Seqno 12, RBA 34652672
- SCN 0.0 (0)
3.5 配置 Pump 进程
extract 进程负责将抓取的数据写入本地 trail 文件; 而需要 Pump 进程把 trail 文件传输到目标端. 使用 EDIT PARAMS PORA_1 添加配置文件
- GGSCI (oracle235) 6> EDIT PARAMS PORA_1
- EXTRACT PORA_1
- SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
- PASSTHRU
- RMTHOST 192.168.1.221, MGRPORT 7809
- RMTTRAIL /data/ogg/dirdat/pa
- TABLE lottu.*;
用 add extract 指定本地 trail 文件
- GGSCI (oracle235) 7> ADD EXTRACT PORA_1, EXTTRAILSOURCE /data/ogg/dirdat/aa
- EXTRACT added.
用 add rmttrail 指定远程 trail 文件
- GGSCI (oracle235) 8> ADD RMTTRAIL /data/ogg/dirdat/pa, EXTRACT PORA_1, MEGABYTES 5
- RMTTRAIL added.
启动 pump 进程
- GGSCI (oracle235) 9> START EXTRACT PORA_1
- Sending START request to MANAGER ...
- EXTRACT PORA_1 starting
- GGSCI (oracle235) 11> info all
- Program Status Group Lag at Chkpt Time Since Chkpt
- MANAGER RUNNING
- EXTRACT RUNNING EORA_1 00:00:00 00:00:07
- EXTRACT RUNNING PORA_1 00:00:00 00:00:02
3.6 配置目标端的 Replicat 进程
Replicat 进程运行于目标端; 负责将源端传过来的 trail 文件; 在目标端数据库应用. 实现源端和目标端数据同步.
- GGSCI (oracle221) 2> EDIT PARAMS RORA_1
- REPLICAT RORA_1
- SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
- USERID ogg, PASSWORD ogg
- HANDLECOLLISIONS
- ASSUMETARGETDEFS
- DISCARDFILE /data/ogg/dirrpt/RORA_aa.rpt, append
- MAP lottu.*, TARGET lottu.*;
在目标端使用 add replicat 添加 Replicat 进程
- GGSCI (oracle221) 8> add replicat RORA_1, exttrail /data/ogg/dirdat/pa
- REPLICAT added.
使用 start replicat 启动 Replicat 进程
- GGSCI (oracle221) 11> start REPLICAT RORA_1
- Sending START request to MANAGER ...
- REPLICAT RORA_1 starting
- GGSCI (oracle221) 12> info all
- Program Status Group Lag at Chkpt Time Since Chkpt
- MANAGER RUNNING
- REPLICAT RUNNING RORA_1 00:00:00 00:00:00
四. 配置 DDL 同步
在前面我们已经配置 GoldenGate 支持 DDL 脚本; 其中有创建 Trigger;DDL 跟 DML 复制机制不同; DML 复制是基于 redo log. 其 DDL 复制原理是基于 Trigger; 它扑捉 DDL 操作记录在中间表; Extract 读取中间表 DDL 操作; Pump 投递到目标端; 目标端在应用 DDL 语句.
4.1 运行 GoldenGate 支持 DDL 脚本
前面已级操作 ; 略.
4.2 关闭 Oracle 的 recyclebin
在执行上一步操作有一个温馨提示:'NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.' GoldenGate10G DDL 不支持 Oracle 回收站功能; 本文提供的 GoldenGate 版本是 11G; 该操作也略;
关闭 Oracle 回收站功能
alter system set recyclebin=off scope=both;
4.3 源端配置
指定 DDL 复制的用户
- GGSCI (oracle235) 19> view params ./GLOBALS
- GGSCHEMA OGG
停 MGR,Extract 进程; 配置 Extract 配置文件; 在配置文件添加一下内容:
- DDL INCLUDE ALL
- DDLOPTIONS ADDTRANDATA,REPORT
4.4 目标端配置
停 MGR,Replicat 进程; 配置 Replicat 配置文件; 在配置文件添加一下内容:
- DDL INCLUDE MAPPED
- DDLOPTIONS REPORT
配置完成; 在重启各进程进行验证.
五. 总结
本文只涉及到 GoldenGate 的单向复制的配置和安装; 其实 GoldenGate 还有很多架构: 例如 1 对多同步, 级联同步; 双向同步等等. 根据场景不同应用不同架构; 还有 GoldenGate 日常维护, 错误分析, 监控, 以及性能优化调整. 大家可以阅读企业级 IT 运维宝典之 GoldenGate 实战或者查看官方文档
来源: https://www.cnblogs.com/lottu/p/9542681.html