环境:
操作系统RHEL6.5x64
Oracle版本: 11.2.0.4
OGG版本:11.2.0.1 for linux-x64
ogg1(源端):
数据库实例已经安装完成。
oracle_sid:zytk35
ogg2(目标端):
只安装了数据库软件
oracle_sid:zytk35
环境变量:添加红色部分
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
export ORACLE_SID=zytk
export LANG=en_US
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=/u01/app/ogg:$OR:$ORACLE_HOME/lib:/lib:/usr/lib
export EDITOR=/usr/bin/vim
export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
下载ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip软件,并传送到服务器上
unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/app/ogg
创建OGG的管理目录
GGSCI (ogg1.localdomain) 1> create subdirs
dirprm 存放OGG参数各的配置信息
dirrpt 存放进程报告文件
dirchk 存放检查点文件
dirpcs 存放进程状态文件
dirsql 存放SQL脚本文件
dirdef 存放DEFGEN工具生成的数据定义文件
[oracle@ogg1 ogg]$ sqlplus / as sysdba
SQL> create tablespace tbsgg datafile '/OracleData/zytk/tbsgg01.dbf' size 10M autoextend on next 10M;
SQL> create user ogg identified by ogg default tablespace tbsgg;
SQL> grant dba to ogg;
[oracle@ogg1 ogg]$ sqlplus / as sysdba
SQL> alter database force logging;
SQL> alter database add supplemental log data;
SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEMENTAL_LOG FORCE_
------------------------ ---------------- ------
ARCHIVELOG YES YES
SQL> alter system set enable_goldengate_replication=true scope=both; --(源端即可)
SQL> alter system switch logfile;
[oracle@ogg1 ~]$ cd /u01/app/ogg
[oracle@ogg1 ogg]$ sqlplus / as sysdba
SQL> alter system set recyclebin=off deferred scope=both; ----10G DDL支持需要关闭,11.2版本貌似可以不关闭
SQL> @sequence.sql ----根据提示输入ogg用户
SQL> @marker_setup.sql prompt: ogg
SQL> @ddl_setup.sql prompt: ogg
SQL> GRANT GGS_GGSUSER_ROLE TO ogg;
-----实验中碰到ORA-04098: trigger 'SYS.GGS_DDL_TRIGGER_BEFORE' is invalid and failed错误,把该触发器删除,赋予创建表和序列权限,重新执行上面几步解决。
SQL> @ddl_enable.sql
SQL> @?/rdbms/admin/dbmspool.sql
SQL> @ddl_pin ogg;
2.4.1全局
GGSCI (ogg1.localdomain) 3> edit params ./GLOBALS
ggschema ogg
2.4.2 配置MGR进程
GGSCI (ogg1.localdomain) 4> edit param mgr
PORT 7809
DYNAMICPORTLIST 7840-7914
AUTOSTART ER *
AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60
USERID ogg, PASSWORD ogg
PURGEOLDEXTRACTS /u01/app/ogg/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
LAGREPORTHOURS 1
LAGINFOMINUTES 3
LAGCRITICALMINUTES 5
MANAGER进程参数配置说明:
PORT:指定服务监听端口;这里以7809为例,默认端口为7809
DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口;
COMMENT:注释行,也可以用--来代替;
AUTOSTART:指定在管理进程启动时自动启动哪些进程;
AUTORESTART:自动重启参数设置:本处设置表示每3分钟尝试重新启动所有EXTRACT进程,共尝试5次;
PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除。
LAGREPORT、LAGINFO、LAGCRITICAL:
定义数据延迟的预警机制:本处设置表示MGR进程每隔1小时检查EXTRACT的延迟情况,如果超过了30分钟就把延迟作为信息记录到错误日志中,如果延迟超过了45分钟,则把它作为警告写到错误日志中。
2.4.3配置抽取进程
GGSCI (ogg1.localdomain) 8> edit params ext1
EXTRACT ext1
dynamicresolution
--SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
--SETENV (ORACLE_HOME = '/u01/app/oracle/product/11.2.0.4/dbhome_1')
--SETENV (ORACLE_SID = 'zytk')
USERID ogg, PASSWORD ogg
DDL INCLUDE ALL --捕获DDL
EXTTRAIL ./dirdat/lt
TABLE scott.*;
GGSCI (ogg1.localdomain) 1> add extract ext1,tranlog,begin now
GGSCI (ogg1.localdomain) 1>add exttrail ./dirdat/lt,extract ext1
EXTRACT的模板可以是:
EXTRACT extmb
setenv (NLS_LANG = "AMERICAN_AMERICA.UTF8")
SETENV (ORACLE_HOME = "/u01/oracle/product/11.2.0/db_1")
SETENV (ORACLE_SID = "orcl")
USERID ggs, PASSWORD ggs
--GETTRUNCATES
REPORTCOUNT EVERY 1 MINUTES, RATE
DISCARDFILE ./dirrpt/extmb.dsc,APPEND,MEGABYTES 1024
--THREADOPTIONS MAXCOMMITPROPAGATIONDELAY 60000 IOLATENS 60000
DBOPTIONS ALLOWUNUSEDCOLUMN
WARNLONGTRANS 2h,CHECKINTERVAL 3m
EXTTRAIL ./dirdat/mb
--TRANLOGOPTIONS EXCLUDEUSER USERNAME
FETCHOPTIONS NOUSESNAPSHOT
TRANLOGOPTIONS CONVERTUCS2CLOBS
TABLE hr.emp;
SETENV:配置系统环境变量
USERID/ PASSWORD: 指定OGG连接数据库的用户名和密码,这里使用3.4部分中创建的数据库用户OGG;
COMMENT:注释行,也可以用--来代替;
TABLE:定义需复制的表,后面需以;结尾
TABLEEXCLUDE:定义需要排除的表,如果在TABLE参数中使用了通配符,可以使用该参数指定排除掉得表。
GETUPDATEAFTERS|IGNOREUPDATEAFTERS:是否在队列中写入后影像,缺省复制
GETUPDATEBEFORES| IGNOREUPDATEBEFORES:是否在队列中写入前影像,缺省不复制
GETUPDATES|IGNOREUPDATES:是否复制UPDATE操作,缺省复制
GETDELETES|IGNOREDELETES:是否复制DELETE操作,缺省复制
GETINSERTS|IGNOREINSERTS:是否复制INSERT操作,缺省复制
GETTRUNCATES|IGNORETRUNDATES:是否复制TRUNCATE操作,缺省不复制;
2.4.4 配置投递进程
GGSCI (ogg1.localdomain) 3> edit params extdp1
EXTRACT extdp1
passthru
dynamicresolution
userid ggs,password ggs
rmthost 192.168.10.101,mgrport 7809
rmttrail /u01/app/ogg/dirdat/xs
table scott.*;
GGSCI (ogg1.localdomain) 4> add extract extdp1,exttrailsource /u01/app/ogg/dirdat/lt
GGSCI (ogg1.localdomain) 5> add rmttrail /u01/app/ogg/dirdat/rt,extract extdp1
datapump的模板:
EXTRACT pushmb
SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
USERID ggs, PASSWORD ggs
PASSTHRU
RMTHOST 192.168.0.165, MGRPORT 7809, compress
RMTTRAIL /u01/ogg/11.2/dirdat/xs
TABLE hr.ah4;
RMTHOST:指定目标系统及其Goldengate Manager进程的端口号,还用于定义是否使用压缩进行传输,本例中的compress为压缩传输;
RMTTRAIL:指定写入到目标断的哪个队列;
EXTTRAIL:指定写入到本地的哪个队列;
SQLEXEC:在extract进程运行时首先运行一个SQL语句;
PASSTHRU:禁止extract进程与数据库交互,适用于Data Pump传输进程;
REPORT:定义自动定时报告;
STATOPTIONS:定义每次使用stat时统计数字是否需要重置;
REPORTCOUNT:报告已经处理的记录条数统计数字;
TLTRACE:打开对于数据库日志的跟踪日志;
DISCARDFILE:定义discardfile文件位置,如果处理中油记录出错会写入到此文件中;
DBOPTIONS:指定对于某种特定数据库所需要的特殊参数;
TRANLOGOPTIONS:指定在解析数据库日志时所需要的特殊参数,例如:对于裸设备,可能需要加入以下参数 rawdeviceoggset 0
WARNLONGTRANS:指定对于超过一定时间的长交易可以在gsserr.log里面写入警告信息,本处配置为每隔3分钟检查一次场交易,对于超过2小时的进行警告;
2.4.5 配置define(此实验不需要)
异构环境,需要配置define,已确定不同数据库中间的映射关系
define生成的文件需要拷贝到目标端相应位置。
2.4.6 启动mgr进程
GGSCI (ogg1.localdomain) 5> start mgr
mgr启动后,按照配置的参数会把ext1、extdp1也启动
GGSCI (ogg1.localdomain) 6> info all ----查看进程状态
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:00:00
EXTRACT ABENDED EXTDP1 00:00:00 00:26:31
extdp1一开始会启动,但由于目标端未配置,启动后会ABENDED
GGSCI (ogg1.localdomain) 7> view report extdp1 ----查看日志可以看到
2015-11-22 21:35:39 ERROR OGG-01224 TCP/IP error 111 (Connection refused); retries exceeded. 这个错误。。。
GGSCI (ogg1.localdomain) 1> view report ext1 ---查看ext1进程,可以看到从该scn开始捕获日志
2015-11-22 21:28:34 INFO OGG-01517 Position of first record processed Sequence 18, RBA 36033040, SCN 0.1153121, Nov 22, 2015 9:02:22 PM.
----个人猜测1153121此为scn号,目标库在rman还原时还原到该点。
本次实验使用的rman备份还原的方式来实现
先根据rman备份还原到1153121节点
RMAN> recover database until scn 1153121;
RMAN> alter database open resetlogs;
由于是rman还原,ogg用户、附加日志等主库已经配置好,此不需要从新配置
GGSCI (ogg2.localdomain) 6> edit params ./GLOBALS
CHECKPOINTTABLE ogg.checkpoint
然后退出ggsci,从新进入
GGSCI (ogg2.localdomain) 1> dblogin userid ogg, password ogg
GGSCI (ogg2.localdomain) 2> add checkpointtable
GGSCI (ogg2.localdomain) 3> edit params rep1
REPLICAT rep1
USERID ogg, PASSWORD ogg
dynamicresolution
HANDLECOLLISIONS
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/RORATT.DSC, PURGE
MAP scott.*, TARGET scott.*;
add replicat rep1 integrated exttrail ./dirdat/rt , checkpointtable ogg.checkpoint