GoldenGate安装配置

GOLDENGATE安装

1. 下载与数据库对应版本的goldengate安装介质。

2. 创建goldengate系统用户,设置用户环境变量,如果是oracle,建议直接使用oracle作为用户安装。

3. 创建goldengate数据库用户,并授予足够权限,该用户至少应该有connect、resource、select any dictionary、select any table的权限。当然授予dba权限的话,那么就涵盖了所需的所有权限。

在此处使用的oracle数据库用户为 ggs 密码也是ggs。 提醒一天,ggs尽量使用自己的表空间。这样可以有效的进行维护。

建议脚本

SQL> grant connect, resource,unlimited tablespace,select any dictionary, select any table,insert any table,update any table,delete any table,alter any table,flashback any table

to ggs;

SQL>grant execute on dbms_flashback to ggs;

SQL>grant execute on utl_file to ggs;

4. 将源端数据库设置为归档模式。

SQL>alter database archivelog;

SQL>archive log list;

注意 归档是需要重启的。所以请妥善管理好时间。

5. 将源端数据库的附加日志打开

SQL>select supplemental_log_data_min from v$database;

如果没有打开,则使用以下sql命令打开附加日志

SQL>alter database add supplemental log data;

6. 打开force logging

SQL>alter database force logging;

7. 将goldengate安装介质上传到服务器,解压缩包。

8. 在解压缩包后的根目录,也就是goldengate工作目录,运行 ./ggsci命令进入ggsci命令提示符界面,运行create subdirs:等待命令结束,goldengate安装完成。

可能遭遇的错误以及该如何处理的过程:

scp ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip oracle@172.25.0.10:/oracle/

mkdir -p /oracle/insogg/

unzip /oracle/ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip -d /oracle/insogg/

mkdir -p /oracle/ogg/

tar -xvf /oracle/insogg/fbo_ggs_Linux_x64_ora11g_64bit.tar -C /oracle/ogg

修环境变量

vi .bash_profile

export PATH=$PATH:$ORACLE_HOME/bin:/home/oracle/ggs

export LD_LIBRARY_PATH=/home/oracle/ggs:$ORACLE_HOME/lib

9. 打开DDL支持(可选)

SQL>@marker_setup.sql

SQL>@ddl_setup.sql

SQL>@role_setup.sql

SQL>@Grant the role to all GoldenGate Extract users

SQL>@ddl_enable.sql

SQL>@marker_setup.sql

SQL>@ddl_setup.sql

SQL>@role_setup.sql

SQL> Grant the role to all GoldenGate Extract users

SQL>@ddl_enable.sql

10. 在目标库上面完成7-9步骤

GOLDENGATE配置

1、首先需要在源端和目标端都配置一个管理进程,也就是goldengate实例。

运行ggsci,然后输入 edit params mgr

此时会弹出一个编辑器,在新创建的文件中工加入端口定义,比如port 7809。

保存退出后,运行start mgr则能启动管理进程。

GGSCI>dblogin userid <username>,password <password>

增加需要同步表列表

GGSCI>add trandata <schema_name>.<table_name>

参考实例

./ggsci

GGSCI (install0.example.com) 1> create subdirs

GGSCI (install0.example.com) 1> dblogin userid ggs,password ggs

GGSCI (install0.example.com) 1> edit params mgr

port 7809

dynamicportlist 7800-8000

checkminutes 10

purgeoldextracts /oracle/ggtrail/lt*,usecheckpoints,minkeepdays 3,maxkeepdays 10

PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 7, FrequencyMinutes 120

PurgeMarkerHistory MinKeepDays 3, MaxKeepDays 7, FrequencyMinutes 120

autostart ER *

autorestart ER *,waitminutes 2,resetminutes 5

laginfominutes 0

lagreportminutes 10

在源添加checkpoint表:

GGSCI (oracle0.example.com) 1>

CHECKPOINT TABLE ggate.checkpoint

--------------------------------

GGSCI (oracle0.example.com) 1> dblogin userid ggs, password ggs

GGSCI (oracle0.example.com) 2> add checkpointtable ggs.checkpoint

#################################################################

在源端增加同步的表

GGSCI (install0.example.com) 1> add trandata vip_system.CIM_MAPEXCHANGECODE

add trandata vip_system.CIM_PERSONMAIN

add trandata vip_system.CIM_SUBSCRIBE

2、在源端配置数据捕获进程和数据传输进程。

数据捕获进程负责将数据从数据库日志抓取出来,存放到一个队列文件中,数据传输进程负责将队列文件按照指定的业务逻辑传输到目标数据库。

添加extract进程命令: add extract <extract_name>,tranlog,<开始时间或者SCN或者RBA>

修改配置参数: edit params <extract_name>

GGSCI>delete extract demo

Deleted EXTRACT DEMO.

配置抽取进程

GGSCI> add extract demo,tranlog,begin now

EXTRACT added.

GGSCI>add extract demo,tranlog,EXTSEQNO 849039

GGSCI>edit params demo

extract demo

setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

setenv (ORACLE_SID="orcl") userid ggs,password oracle

REPORT AT 01:59

reportrollover at 02:00

GETTRUNCATES

WARNLONGTRANS 2h,CHECKINTERVAL 3m

TRANLOGOPTIONS convertucs2clobs

FETCHOPTIONS NOUSESNAPSHOT

exttrail /home/oracle/ggs/dirdat/mm

discardfile /home/oracle/ggs/dirrpt/mm, append , megabytes 100

dynamicresolution

table sh.one;

指定从某一时刻开始

GGSCI>add extract demo,tranlog,begin 2012-1-2 11:23:10

配置参数说明

Extract <extract_name>:指定刚才加入的extract的名字

SETENV():指定该extract启动时oracle相关的环境变量.

Userid <oracle_user>, password <oracle_password>:连接到源数据库的用户,既我们在第一步建立的源端数据库用户。

Report:指定每天在日志中产生报告的时间

Reportrollover:指定每天汇报队列文件切换报告的时间

Gettruncates:告诉extract对truncate操作也要捕获

Warnlongtrans:超过<n>个小时的交易为长交易,要在goldengate日志中进行记录,检查时间为指定的checkinterval。

Tranlogoptions:针对源数据库的一些配置选项,如数据库归档的位置等等,本例子中的值是指当源和目标数据库字符集不一致,而且传输包含clob字段时,需要对clob中的字符集进行转换。

Fetchoptions:指定当从源数据库抓取数据时的一些选项,本例指不从undo tablespace取数据,而是从表里直接抽取。

Exttrail:本地队列文件,extract将数据从数据库日志抓取后存放在该队列文件。

Discardfile:指定丢弃数据的存放位置。

Dynamicresolution:指定当extract从日志抓取变化数据时,根据当前的需要,动态解析表名,从而加快抓取进程的启动速度。

Table <schema>.<table_name>:指定要从源系统抓取那些表的数据,这里schema不能用通配符,table_name可以用通配符。

配置传输进程

GGSCI>add extract pump1,exttrailsource ./dirdat/lt

EXTRACT added

GGSCI>add rmttrail ./dirdat/lt,extract pump1

指定传输起始点

GGSCI> alter extract pump1 extseqno <seq>, extrba <ba>

GGSCI>alter extract pump1 begin 2012-1-2 11:23:10

参考样例

抽取配置

GGSCI (centerdb-prod) 2> edit params ext1

extract ext1

setenv (NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK)

setenv (ORACLE_SID="orcl")

userid ggs,password ggs

REPORT AT 01:59

reportrollover at 02:00

WARNLONGTRANS 2h,CHECKINTERVAL 3m

TRANLOGOPTIONS convertucs2clobs

FETCHOPTIONS NOUSESNAPSHOT

DBOPTIONS ALLOWNOLOGGING

ignorereplicates

tranlogoptions excludeuser ggate

exttrail /oracle/ogg/dirdat/ea

discardfile /oracle/ogg/dirrpt/dt,append,megabytes 100

dynamicresolution

TABLE vip_system.CIM_MAPEXCHANGECODE;

TABLE vip_system.CIM_PERSONMAIN;

TABLE vip_system.CIM_SUBSCRIBE;

TABLE vip_system.CUSTOMER_BASICINFO;

TABLE vip_system.CUSTOMER_SERVICE;

TABLE vip_system.CUS_GROUP;

GGSCI (oracle0.example.com) 2> add extract ext1, tranlog, begin now

添加抽取进程的生成文件

GGSCI (oracle0.example.com) 3> add exttrail /oracle/ogg/dirdat/ea,extract ext1

增加投递功能

GGSCI (centerdb-prod) 2>edit params pump1

extract pump1

userid ggs,password ggs

rmthost 172.19.16.45,mgrport 7809

rmttrail /home/oracle/ogg/dirdat/lt

passthru

table vip_system.*;

table gbox.*;

table weixin.*;

table tzzh.*;

----------------------------------------------

在源端增加投递进程

GGSCI (oracle0.example.com) 4> add extract pump1,exttrailsource /oracle/ogg/dirdat/ea , begin now

增加投递到远程的文件

GGSCI (oracle0.example.com) 5> add rmttrail /home/oracle/ogg/dirdat/lt ,extract pump1

3、配置目标端的应用进程

设置检查点

GGSCI>edit params GLOBAL

CHECKPOINT TABLE ggate.checkpoint

GGSCI>dblogin userid <userid>,password <password>

GGSCI>add checkpointtable

增加复制进程组

GGSCI>add replicat rep1,exttral ./dirdat/lt

GGSCI>edit param rep1

replicat rep1

userid ggate, password ggate50

assumetargetdefs

reperror default, discard

dynamicresolution

discardfile /oracle/goldengate/dirdat/rep1_discard.txt, append, megabytes 10

DDL

map center_admin.*, target center_admin.*;

指定应用进程起始点

GGSCI> alter extract rep1 extseqno <seq>, extrba <ba>

GGSCI>alter extract rep1 begin 2012-1-2 11:23:10

参考样例

GGSCI (localhost.localdomain) 58> edit params mgr

port 7809

dynamicportlist 7800-8000

autorestart er *

autorestart extract *,waitminutes 2,retries 5

purgeoldextracts /home/oracle/ogg/dirdat/lt*,usecheckpoints,minkeepdays 1,maxkeepdays 2

在源和目标都要端添加checkpoint表:

配置全局参数文件

vi /home/oracle/ogg/GLOBALS

--------------------------------

checkpointtable ggs.checkpoint

--------------------------------

GGSCI (oracle0.example.com) 1> dblogin userid ggs, password ggs

GGSCI (oracle0.example.com) 2> add checkpointtable ggs.checkpoint

#################################################################

GGSCI (localhost.localdomain) 59> edit params rep1

replicat rep1

SETENV(NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK")

userid ggs, password ggs

assumetargetdefs

reperror default, discard

discardfile /home/oracle/ogg/dirdat/rep1_discard.txt, purge, megabytes 1000

dynamicresolution

DDL INCLUDE MAPPED &

EXCLUDE MAPPED OBJTYPE 'TRIGGER' &

EXCLUDE MAPPED OBJTYPE 'JOB' &

EXCLUDE MAPPED OPTYPE TRUNCATE

DDLERROR DEFAULT IGNORE RETRYOP

map vip_system.*, target vip_system.*;

map gbox.*, target gbox.*;

map weixin.*, target weixin.*;

map tzzh.*, target tzzh.*;

增加复制进程

GGSCI (install0.example.com) 2> add replicat rep1,exttrail /home/oracle/ogg/dirdat/lt , nodbcheckpoint

上一篇:Sunglasses


下一篇:Java笔试面试题整理第四波