1、环境
| 项目 | 源环境 | 目标环境 |
| 操作系统 | deepin server enterprise amd64 15.2 | deepin server enterprise amd64 16 |
| 数据库及版本 | ORACLE 11.2.0.4.0 | ORACLE 11.2.0.4.0 |
| 数据库字符集 | AMERICAN_AMERICA.AL32UTF8 | AMERICAN_AMERICA.ZHS16GBK |
| Goldengate用户 | ogg | ogg |
| Goldengate 版本 | 11.2.1.0.3 | 11.2.1.0.3 |
2.搭建步骤:
a、创建OGG安装目录
两台服务器都需要做同样的操作。
mkdir /saic/ogg chown -R ogg:oinstall /saic/ogg
b、 上传OGG安装介质 将OGG安装文件上传到两台服务器,并解压。
unzip ogg112103_fbo_ggs_Linux_x64_ora11g_64bit.zip tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /saic/ogg
c、建立OGG表空间,创建OGG用户并授权。
SQL> create tablespace ogg datafile '/ora_data/ora_data_file/transit/ogg01.dbf' size 10G autoextend on; SQL> create user ogg identified by ogg default tablespace ogg; SQL> grant dba to ogg ;
d、 源端数据库及系统配置
检查源端数据库是否为归档模式,若为非归档模式,将其改为归档模式 SQL>archive log list; 检查源端数据库附加日志是否打开 SQL>select supplemental_log_data_min,force_logging from v$database; 将数据库附加日志打开 SQL>alter database add supplemental log data; 切换日志以使附加日志生效: SQL>alter system archive log current; 开启force logging模式 SQL>alter database force logging;
e、创建OGG的管理目录在正式配置OGG之前,首先需要创建OGG的管理目录,源端和目标端都需要创建
$./ggsci GGSCI (localhost) 1> create subdirs
f、 OGG进程配置
配置源端: MGR进程 GGSCI (localhost) 1>edit param mgr PORT 7812 DYNAMICPORTLIST 7840-7860 USERID ogg, PASSWORD ogg PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS,minkeepdays 5 AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 7 创建GLOBALS参数文件并添加CHECKPOINTTABLE,进入GGSCI命令行,执行 添加CHECKPOINTTABLE(该步骤主要是为了双库同步所需,如果是单向同步的可以考虑不在源端增加检查点表,单向同步不执行) GGSCI (localhost) 2> dblogin userid OGG, password ogg GGSCI (localhost) 3> add checkpointtable ogg.GGSCHKPT 添加抽取进程 GGSCI (localhost) 1> dblogin userid ogg, password ogg GGSCI (localhost) 2> add extract EXT_32 , tranlog , begin now GGSCI (localhost) 3> add exttrail ./dirdat/EA,extract EXT_32 ,megabytes 1024 编辑抽取进程参数文件 GGSCI (localhost) 4> edit params EXT_32 EXTRACT ext32 SETENV(NLS_LANG="AMERICAN_AMERICA.AL32UTF8") SETENV(ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1") SETENV(ORACLE_SID = "transit") USERID ogg, PASSWORD ogg_0403 REPORTCOUNT EVERY 30 MINUTES, RATE DISCARDFILE ./dirrpt/ext32.dsc,APPEND, MEGABYTES 1024 DISCARDROLLOVER AT 3:00 WARNLONGTRANS 2h, CHECKINTERVAL 10m EXTTRAIL ./dirdat/EA DYNAMICRESOLUTION DBOPTIONS ALLOWUNUSEDCOLUMN FETCHOPTIONS NOUSESNAPSHOT TRANLOGOPTIONS CONVERTUCS2CLOBS NOCOMPRESSDELETES cachemgr cachesize 800MB Table ogg.test ; 添加表的附加日志 GGSCI (localhost) 5> add trandata ogg.test 添加投递进程 GGSCI (localhost) 10> add extract pum_32,exttrailsource ./dirdat/EA --要指定本地从哪里抽取数据 GGSCI (localhost) 11> add rmttrail ./dirdat/PA,extract pum_32,megabytes 1024 --还要指定你这个抽取的队列放到目标端那个位置,传输的队列以PK 开头, GGSCI (localhost) 12> alter pum_32,begin now 编辑投递进程的参数文件 GGSCI (localhost) 12> edit param pum_32 extract pum_32 passthru rmthost 13.1.6.32, mgrport 7812, COMPRESS rmttrail ./dirdat/PA DYNAMICRESOLUTION TABLE ogg.test;
配置目标端:
添加mgr进程
进入GGSCI命令行执行
GGSCI (localhost) 1> edit param mgr
PORT 7812
DYNAMICPORTLIST 7840-7860
USERID ogg, PASSWORD ogg
PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS,minkeepdays 5
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 7
GGSCI (localhost) 2> start mgr
创建GLOBALS参数文件并添加CHECKPOINTTABLE
GGSCI (localhost) 3> dblogin USERID ogg,password ogg
GGSCI (localhost) 4> add checkpointtable ogg.GGSCHKPT
添加入库进程,应用目标端放队列的文件
GGSCI (localhost) 5> add replicat rep_1,exttrail ./dirdat/PA, checkpointtable ogg.GGSCHKPT
新增加的复制进程必须要修改具体的时间点启动,如当前时间点或者指定的时间点队列
GGSCI (localhost) 6> alter rep_1,begin now
编辑入库进程参数文件
GGSCI (localhost) 7> edit param rep_1
Replicat rep_1
SETENV(NLS_LANG="AMERICAN_AMERICA.AL32UTF8")
USERID ogg, PASSWORD ogg
assumetargetdefs
discardfile ./dirrpt/rep_1.dsc,PURGE,MEGABYTES 1024
DISCARDROLLOVER AT 02:30
ALLOWNOOPUPDATES
HANDLECOLLISIONS
DBOPTIONS LOBWRITESIZE 1048576
map ogg.test , target ogg.test;
目标端建表并且初始化数据.
CREATE TABLE test(
id varchar2(10),
name varchar2(100),
constraint pk_id primary key(id)
);
insert into test values ('1','aaa');
commit;
