检查
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;
开启数据库强制日志模式
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
2.4 在ogg安装路径执行:
GGSCI (ogg) 1> ggsci
2.5 在GGSCI中,创建ogg工作目录:
GGSCI (ogg) 1> CREATE SUBDIRS
--创建其它的路径
GGSCI (ogg) 1> exit
2.6 安装对sequence的支持FLUSH SEQUENCE:
需要在源端及目标端执行以下内容:
支持DDL用户:goldengate
2.6.1 在SQL*Plus中,以SYSDBA连接到源端及目标端.
sqlplus / as sysdba
2.6.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.6.3. 在源端及目标端的GGSCI中,执行以下命令:
EDIT PARAMS ./GLOBALS
2.6.4. 在GLOBALS文件中,输入以下参数:
GGSCHEMA goldengate
2.6.5. 保存并退出文件
2.6.6. 在SQL*Plus中执行以下命令(源端和目标端):
sqlplus / as sysdba
@sequence.sql
输入:goldengate
2.6.7. 源端执行:
GRANT EXECUTE on goldengate.updateSequence TO goldengate;
2.6.8. 目标端执行:
GRANT EXECUTE on goldengate.replicateSequence TO goldengate;
2.6.9.源端执行: 对sys.seq$添加补充日志
alter table sys.seq$ add supplemental log data (primary key) columns;
2.7 安装DDL对象(源端):
2.7.1.赋权
GRANT EXECUTE ON utl_file to goldengate;
为DDL对象指定一个表空间。GGS_DDL_HIST 和 GGS_MARKER
2.7.3.切换到ogg安装路径
cd /ogg
2.7.4.停掉所有的数据库连接,并阻止新的连接
2.7.5.以sysdba身份连接到数据库,用以在sys下创建触发器
2.7.6.运行脚本:
sqlplus /as sysdba
@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
2.7.7.授权给ogg抽取用户
GRANT GGS_GGSUSER_ROLE TO goldengate;
---默认role为GGS_GGSUSER_ROLE
2.7.8.启用DDL触发器:
@ddl_enable.sql
2.8 为源端和目标端配置ogg:(源端、目标端)
2.8.1.在ogg安装目录:
ggsci
2.8.2.配置参数文件:
EDIT PARAMS mgr
2.8.3 创建manager参数文件(源端、目标端):
2.8.4. 在ogg安装路径,执行ggsci
2.8.5.编辑manager参数文件
EDIT PARAMS MGR
mgr中,只需要port参数,但是强烈建议加上DYNAMICPORTLIST参数
AUTOSTART和AUTORESTART
PURGEOLDEXTRACTS
保存并退出文件
示例:
PORT 7809
DYNAMICPORTLIST 7810-7820, 7830
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 4, WAITMINUTES 4
PURGEOLDEXTRACTS /ogg/dirdat/tt*, USECHECKPOINTS, MINKEEPHOURS 2
2.10 配置extract以获取数据变更(源端):
2.10.1.在ggsci中添加ext抽取进程
add extract extfull, tranlog,begin now
2.10.2.在ggsci中执行:
EDIT PARAMS extfull
2.10.3.在参数文件中输入参数
EXTRACT extfull
setenv ( NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK" )
ddl include mapped
USERID goldengate, PASSWORD goldengate
EXTTRAIL /ogg/dirdat/sr
SEQUENCE test.seq_test;
TABLE test.*;
2.10.4.保存并退出文件
2.10.5.添加trail文件
add exttrail /ogg/dirdat/sr, extract extfull, MEGABYTES 50
2.11 配置extract以传输:(源端)
2.11.1.添加传输进程
add extract dpfull exttrailsource /ogg/dirdat/sr
2.11.2.在GGSCI中执行:
EDIT PARAMS dpfull
2.11.3.参数文件中输入参数:
EXTRACT dpfull
passthru
RMTHOST 127.0. 0.2(目标端IP地址), MGRPORT 7809
RMTTRAIL /ogg/dirdat/tg
SEQUENCE test.seq_test;
TABLE test.*;
2.11.4.保存并退出文件 :wq
2.11.5.添加目标端的trail文件
add rmttrail /ogg/dirdat/tg, extract dpfull, MEGABYTES 50
2.12 配置replicat:(目标端)
2.12.1.创建checkpoint table
在GGSCI中执行:
dblogin userid goldengate password goldengate
ADD CHECKPOINTTABLE goldengate.ckpt
2.12.2.在ogg配置中指定checkpoint table
EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE goldengate.ckpt
2.12.3.添加应用进程
add replicat repfull, exttrail /ogg/dirdat/tg, CHECKPOINTTABLE goldengate.ckpt
2.12.4.编辑rep参数文件
EDIT PARAMS repfull
2.12.5.输入参数
REPLICAT repfull
setenv ( NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK" )
ddl include mapped
USERID goldengate, PASSWORD goldengate
-- SUPPRESSTRIGGERS is for Oracle 10.2.0.5 & later patches, and for Oracle 11.2.0.2 and later 11gR2 versions
DBOPTIONS SUPPRESSTRIGGERS,DEFERREFCONST
ASSUMETARGETDEFS
DISCARDFILE /ogg/dirrpt/repfull.dsc
MAP test.*, TARGET test.*;
2.12.6.保存退出文件
2.13 schema级别补充日志:(源端)
运行 ggsci 在ggsci中执行如下
DBLOGIN USERID goldengate
ADD SCHEMATRANDATA user_name
如果提示以下,请按照如下操作(源端、目标端)
GGSCI (ogga) 2> ADD SCHEMATRANDATA TEST
ERROR: Operation not supported because enable_goldengate_replication is not set to true.
SQL> alter system set enable_goldengate_replication=true;
------------------------------------
表级别补充日志:(源端)
DBLOGIN USERID PASSWORD
ADD TRANDATA schema.table_name
-----基础数据
源端
启动mgr及抓取传输进程
ggsci
start mgr
sqlplus / as sysdba
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1068641
SQL> create directory exp as '/home/oracle/';
Directory created.
$ expdp sys/****** directory=exp dumpfile=test%U.dmp logfile=test0318.log schemas=test parallel=1 flashback_scn= 1068641
3.将dmp文件传输到目标端:
scp /home/oracle/test01.dmp [email protected]:/home/oracle
目标端:
SQL> create directory exp as '/home/oracle/';
Directory created.
1.导入数据
impdp sys/****** directory=exp dumpfile=test01.dmp exclude=statistics
2.收集统计信息
exec dbms_stats.gather_table_stats(OWNNAME => 'TEST', TABNAME => 'TEST', CASCADE => TRUE);
3.启动应用进程
start mgr
start repfull, aftercsn 1061894 ---源端取到的scn
目标端
执行 ggsci
edit param mgr
注释 --AUTOSTART EXTRACT *