检查
Goldengate通过抓取源端数据库重做日志进行分析,将获取的数据应用到目标端,实现数据同步。因此,源数据库需要必须处于归档模式,并启用附加日志和强制日志。
1.1 查看源端数据库是否开启归档
$ sqlplus / as sysdba
SQL> archive log list;
如果是非归档模式,需要开启归档模式:
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
alter system archive log start;
1.2 启用库级别补充日志
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER SYSTEM SWITCH LOGFILE;
开启数据库强制日志模式
SQL> alter database force logging;
1.3 检查
SQL> SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
2.安装
2.1 安装ogg文件(在源端、目标端同时操作)
2.1.1 创建ogg安装目录(用root用户)
# mkdir /ogg
# chown oracle:oinstall /ogg -R
2.1.2 将压缩文件复制到ogg安装路径下,并更改属主
# cp /usr/p18683731_1121021_Linux-x86-64.zip /ogg
# chown oracle:oinstall /ogg/p18683731_1121021_Linux-x86-64.zip
2.2 切换路径到ogg安装路径
su - oracle
cd /ogg
unzip p18683731_1121021_Linux-x86-64.zip
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
2.3 设置PATH及LD_LIBRARY_PARH
vi .bash_profile
export PATH=/ogg:$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=/ogg:$ORACLE_HOME/lib
在ogg安装路径执行:
GGSCI (ogg) 1>ggsci
2.4 在GGSCI中,创建ogg工作目录:
GGSCI (ogg) 1> CREATE SUBDIRS
--创建其它的路径
GGSCI (ogg) 1> exit
2.5 安装对sequence的支持FLUSH SEQUENCE:
需要在源端执行以下内容:
支持DDL用户:goldengate
2.5.1 在SQL*Plus中,以SYSDBA连接到源端及目标端.
sqlplus / as sysdba
2.5.2 创建支持DDL的用户
create tablespace ogg_tbs logging datafile '/u01/ogg_tbs.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local;
--首先创建一个数据表空间,独立于其它业务的表空间
CREATE USER goldengate IDENTIFIED BY goldengate default tablespace ogg_tbs; --必须自定义一个表空间
GRANT CONNECT,RESOURCE,DBA TO goldengate;
2.5.3. 在源端的GGSCI中,执行以下命令:
EDIT PARAMS ./GLOBALS
2.5.4. 在GLOBALS文件中,输入以下参数:
GGSCHEMA goldengate
2.5.5. 保存并退出文件
2.5.6. 在SQL*Plus中执行以下命令:
sqlplus / as sysdba
@sequence.sql
输入:goldengate
2.5.7. 执行:
GRANT EXECUTE on goldengate.updateSequence TO goldengate;
2.5.8.执行: 对sys.seq$添加补充日志
alter table sys.seq$ add supplemental log data (primary key) columns;
2.6 安装DDL对象(源端):
2.6.1.赋权
GRANT EXECUTE ON utl_file to goldengate;
为DDL对象指定一个表空间。GGS_DDL_HIST 和 GGS_MARKER
2.6.3.切换到ogg安装路径
cd /ogg
2.6.4.停掉所有的数据库连接,并阻止新的连接
2.6.5.以sysdba身份连接到数据库,用以在sys下创建触发器
2.6.6.运行脚本:
sqlplus /as sysdba
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
2.6.7.授权给ogg抽取用户
GRANT GGS_GGSUSER_ROLE TO goldengate;
---默认role为GGS_GGSUSER_ROLE
2.6.8.启用DDL触发器:
@ddl_enable.sql
2.7 配置extract以获取数据变更:
2.7.1 在ggsci中添加ext抽取进程
add extract extwin, tranlog,begin now
在ggsci中执行:
EDIT PARAMS extwin
2.7.2 在参数文件中输入参数
EXTRACT extwin
setenv ( NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK" )
ddl include mapped
USERID goldengate, PASSWORD goldengate
EXTTRAIL /ogg/dirdat/sw
SEQUENCE test.seq_test;
TABLE test.*;
保存并退出文件
2.7.3.添加trail文件
add exttrail /ogg/dirdat/sw, extract extwin, MEGABYTES 50
2.8 配置extract以传输:
2.8.1 添加传输进程
add extract dpwin exttrailsource /ogg/dirdat/sw
2.8.2 在GGSCI中
EDIT PARAMS dpwin
2.8.3 参数文件中输入参数:
EXTRACT dpwin
passthru
RMTHOST 10.2.0.2(目标端IP地址), MGRPORT 7809
RMTTRAIL d:\ogg\dirdat\tw
SEQUENCE test.seq_test;
TABLE test.*;
2.8.4 保存并退出文件
2.8.5 添加目标端trail文件
add rmttrail d:\ogg\dirdat\tw, extract dpwin, MEGABYTES 50
2.9 为源端配置ogg:
2.9.1.在ogg安装目录:
ggsci
2.9.2.配置参数文件:
EDIT PARAMS mgr
2.9.3 创建manager参数文件(源端):
2.9.4. 在ogg安装路径,执行ggsci
2.9.5.编辑manager参数文件
EDIT PARAMS MGR
mgr中,只需要port参数,但是强烈建议加上DYNAMICPORTLIST参数
AUTOSTART和AUTORESTART
PURGEOLDEXTRACTS
2.9.6.保存并退出文件
示例:
PORT 7809
DYNAMICPORTLIST 7810-7820, 7830
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 4, WAITMINUTES 4
PURGEOLDEXTRACTS /ogg/dirdat/tt*, USECHECKPOINTS, MINKEEPHOURS 2
Microsoft Visual C ++ 2005 SP1 Redistributable Package
下载地址:
https://download.microsoft.com/download/d/4/1/d41aca8a-faa5-49a7-a5f2-ea0aa4587da0/vcredist_x64.exe
2.10 安装ogg文件:
2.10.1 将压缩文件放到安装路径下(路径不要含空格)
创建文件路径 ogg
2.10.2 解压到当前文件夹
2.10.3 运行ggsci
2.10.4 创建工作目录
create subdirs
2.10.5 退出
2.11 定义一个manager名称:
2.11.1 运行ggsci
2.11.2 执行:
edit params ./GLOBALS
2.11.3 定义名称(默认为GGSMGR)
MGRSERVNAME mgr
2.11.4 保存文件,自动保存在ogg安装路径下了。
2.11.5 安装manager作为Windows服务(默认不作为服务安装,用户连接退出后manager也会退出):
作为系统管理员登录
Ctrl+r cmd
2.11.6 在ogg安装路径下执行:
install ADDEVENTS ADDSERVICE
2.11.7 将安装路径下的文件,拷贝到SYSTEM32路径下。
category.dll
ggsmsg.dll
2.12 为目标端配置ogg:
2.12.1 在ogg安装目录:
GGSCI
配置参数文件:
EDIT PARAMS mgr
创建manager参数文件:
1. 在ogg安装路径,执行GGSCI
2. 编辑manager参数文件
EDIT PARAMS MGR
在mgr中,只需要port参数,但是强烈建议加上DYNAMICPORTLIST参数
AUTOSTART和AUTORESTART
PURGEOLDEXTRACTS
示例:
PORT 7809
DYNAMICPORTLIST 7810-7820, 7830
--AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 4, WAITMINUTES 4
PURGEOLDEXTRACTS d:\ogg\dirdat\tw*, USECHECKPOINTS, MINKEEPHOURS 2
2.13 配置replicat:
select * from V$dbfile;
2.13.1 创建ogg用户
create tablespace ogg_tbs datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\DATAFILE\ogg_tbs.DBF' size 100m autoextend off;
create user goldengate identified by goldengate default tablespace ogg_tbs;
grant dba to goldengate;
在SQL*Plus中执行以下命令(目标端):
sqlplus / as sysdba
@sequence.sql
GRANT EXECUTE on goldengate.replicateSequence TO goldengate;
2.13.2 创建checkpoint table
在GGSCI中执行:
dblogin userid goldengate password goldengate
ADD CHECKPOINTTABLE goldengate.ckptwin
2.13.3 在ogg配置中指定checkpoint table
EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE goldengate.ckptwin
2.13.4 添加应用进程
add replicat repwin, exttrail d:\ogg\dirdat\tw, CHECKPOINTTABLE goldengate.ckptwin
2.13.5 编辑rep参数文件
EDIT PARAMS repwin
2.13.6 输入参数
REPLICAT repwin
setenv ( NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK" )
ddl include mapped
USERID goldengate, PASSWORD goldengate
DBOPTIONS SUPPRESSTRIGGERS,DEFERREFCONST
ASSUMETARGETDEFS
DISCARDFILE d:\ogg\dirdat\repwin.dsc
MAP test.*, TARGET test.*;
-----基础数据
0.启动mgr及抓取传输进程
1.从源端取一次scn号
select current_scn from v$database; -- 1035022
2.按照上面查询出的scn导出数据
create directory exp as '/home/oracle/';
expdp sys/****** directory=exp dumpfile=test%U.dmp logfile=test0405.log schemas=test parallel=1 flashback_scn= 1035022
3.将dmp文件传输到目标端:
目标端:
1.导入数据
create directory exp as 'd:\db';
impdp sys/****** directory=exp dumpfile=test01.dmp exclude=statistics
2.收集统计信息
exec dbms_stats.gather_table_stats(OWNNAME => 'TEST', TABNAME => 'TEST', CASCADE => TRUE);
3.启用enable_goldengate_replication
SQL> alter system set enable_goldengate_replication=true;
System altered
4.启动应用进程
Start mgr
start repwin, aftercsn 1035022 ---源端取到的scn