OGG安装部署步骤
检查
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 iclude 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
- 从源端取一次scn号
sqlplus / as sysdba
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1068641
- 按照上面查询出的scn导出数据
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 oracle@186.168.100.222:/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 *