Bootstrap

ogg配置3

OGG参考】

OGG手册:https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/toc.htm

OGG相关命令及参数: https://docs.oracle.com/goldengate/1212/gg-winux/GWURF/toc.htm

 

RACOGG 配置(仅传输DML操作)

 

1. 【源端和目标端】创建ACFS文件系统,在共享存储创建ogg软件安装目录,上传文件并解压缩ogg软件

cd /ogg

tar -xvf /soft/fbo...

 

添加oracle环境变量LD_LIBRARY_PATH

vi ~/.bash_profile

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

 

安装:

./ggsci

create subdirs

 

--完成ogg 安装

 

2.【源端】检查是否开启归档

SQL> select name,log_mode,supplemental_log_data_min from v$database;

 

NAME      LOG_MODE     SUPPLEME

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

MMDB      NOARCHIVELOG NO

 

a.开启归档

SHUTDOWN IMMEDIATE                           --关闭数据库:

STARTUP MOUNT                                --启动到Mount状态

ALTER DATABASE ARCHIVE LOG;    --开启归档

ALTER DATABASE OPEN                    --打开数据库

ARCHIVE LOG LIST                     --检查归档状态,确认归档位置是否合适

b.打开最小附加日志

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;        --打开最小附加日志

ALTER SYSTEM SWITCH LOGFILE                                          --切换日志使生效

c.打开OGG特性

SHOW PARAMETER GOLDENGATE

ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

        

3.【源端目标端】确定所有待同步的表必须有主键或唯一索引

COL OWNER FOR A20

COL TABLENAME FOR A30

SELECT OWNER,TABLE_NAME,CONSTRAINT_TYPE,INVALID FROM DBA_CONSTRAINTS WHERE OWNER='SCOTT' AND CONSTRAINT_TYPE IN ('P','U'); --查询用户下哪些表有主键

 

4. OGG用户创建:

_________________________________________________________________

【源端】:

CREATE USER ggadmin IDENTIFIED BY ggadmin123, DEFAULT TABLESPACE USERS ;

GRANT CONNECT TO ggadmin;

GRANT CREATE SESSION TO ggadmin;

GRANT ALTER SESSION TO ggadmin;

GRANT RESOURCE TO ggadmin;

GRANT SELECT ANY DICTIONARY TO ggadmin;

GRANT SELECT ANY TABLE TO ggadmin;

GRANT FLASHBACK ANY TABLE TO ggadmin;

GRANT ALTER ANY TABLE TO ggadmin;

GRANT DBA TO ggadmin;

 

【目标端】:

建立OGG数据库用户

? 通过sql将数据写入数据库

? OGG目标数据库用户权限

CREATE USER ggadmin IDENTIFIED BY ggadmin123, DEFAULT TABLESPACE USERS ;

GRANT ALTER SESSION TO ggadmin;

GRANT CREATE SESSION TO ggadmin;

GRANT CONNECT TO ggadmin;

GRANT RESOURCE TO ggadmin;

GRANT SELECT ANY DICTIONARY TO ggadmin;

GRANT SELECT ANY TABLE TO ggadmin;

GRANT FLASHBACK ANY TABLE TO ggadmin;

GRANT INSERT ANY TABLE TO ggadmin;

GRANT UPDATE ANY TABLE TO ggadmin;

GRANT DELETE ANY TABLE TO ggadmin;

GRANT DBA TO ggadmin;

 

 

5.【源端配置】:

 

5.1 mgr 配置

./ggsci

GGSCI> edit param mgr

PORT 7809                                                                                                                                 //监听端口PORT

DYNAMICPORTLIST 7810-7900                                                                                           //动态监听端口PORT,监听端口失败时使用

--AUTOSTART ER *                                                                                                         //开启管理进程后,自动启动所有的EXTRACTREPLICAT进程

AUTORESTART ER *,RETRIES 5,WAITMINUTES 3,RESETMINUTES 60              //自动重启异常中止的进程,重试5次,每次等2分钟,一小时后重试

STARTUPVALIDATIONDELAY 5                                                                                              //启动时延迟5秒校验

PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS, MINKEEPDAYS 3           //自动清理使用过的trail队列,最少保留3

LAGREPORTHOURS 1                                                                                                             //每一小时检查延迟

LAGINFOMINUTES 30                                                                                                             //延迟30分钟记录信息到error log

LAGCRITICALMINUTES 45                                                                                                    //50分钟记录警告到error log

 

GGSCI> START MGR //打开管理进程

GGSCI> INFO ALL  //验证已打开

 

5.2 添加抽取进程及队列文件

GGSCI> ADD EXTRACT ex_jtwx1, tranlog, begin nowthread 2

GGSCI> ADD EXTTRAIL ./dirdat/la,EXT ex_jtwx1, MEGABYTES 100

GGSCI> ADD EXTRACT dp_jtwx1, EXTTRAILSOURCE ./dirdat/la

GGSCI> ADD RMTTRAIL /ogg/dirdat/ra, EXT dp_jtwx1, MEGABYTES 100

 

5.3 配置抽取进程参数

extract 抽取进程参数配置:

./ggsci

GGSCI> edit param ex_jtwx1

EXTRACT ex_jtwx1

 

--[环境变量,非必须]

--SETENV( ORACLE_SID=xxx )

--SETENV( ORACLE_HOME=xxx )

--SETENV( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )

 

USERID ggadmin, PASSWORD ggadmin123,

TRANLOGOPTIONS DBLOGREADER, DBLOGREADER BUFSIZE 4194304, BUFSIZE 4194304

FETCHOPTIONS FETCHPKUPDATECOLS

NOCOMPRESSDELETES

EXTTRAIL ./dirdat/la

DYNAMICRESOLUTION                                        //动态解析表结构

--TRANLOGOPTIONS CONVERTUCS2CLOBS    //抽取CLOB必须加上

--GETTRUNCATES                                                   //捕获truncate操作,默认不捕获

--[待传输的表]

table myschema.maytable1;

table myschema.maytable2;

table myschema.*;

--TABLE hq.acct, COLS (col1, col3); --只复制1,3

--TABLE hq.acct, where (id=1 and name=2);   --过滤,只复制满足条件记录

--TABLE hq.acct, COLSEXCEPT (col4);      --复制除了第4

 

datapump传输进程参数配置:

GGSCI>edit param dp_jtwx1

extract dp_jtwx1

setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )

passthru                                                                             //passthru表示本进程是一个传输进程data pump,无需跟数据库交互,只需要搬运数据即可

--REPORT AT 01:59                                                          //配置在特定时间报告传输状态

--reportrollover at 02:00                                      //指定每日在特定时间生成一个新的报告

rmthost 10.128.59.52,mgrport 7809, compress    //传输进程需要知道目标端的主机端口信息

rmttrail /ogg/dirdat/ra

Dynamicresolution

numfiles 8000

table myschema.mytable1;

table myschema.mytable2;

TABLE hq.acct;                                                                           //注意此时不用再过滤cols了。

 

5.4 添加表级附加日志

GGSCI> DBLOGIN USERID ggadmin, PASSWORD ggadmin123,

GGSCI> LIST TABLES SCOTT.*

GGSCI> ADD TRANDATA scott.emp

GGSCI> ADD TRANDATA scott.dept

....

SQL>alter table user.table add  supplemental log group ggs_table_1 (PK or UK) always;

SQL>

 

GGSCI> START *       --启动抽取进程和传输进程

GGSCI> INFO ALL --检查是否正常启动

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

【备注1

GGSCI> VIEW REPORT ex_jtwx1    --排错常用方法1

GGSCI> sh tail -10 ggserr.log  --排错常用方法2

 

6.【目标端配置】

6.1 配置GLOBALS参数

GGSCI> EDIT PARAM ./GLOBALS

GGSCHEMA ggadmin

CHECKPOINTTABLE ggadmin.checkpointtable

 

6.2 创建检查点记录表

GGSCI> DBLOGIN USERID ggadmin, PASSWORD ggadmin123,

GGSCI> ADD CHECKPOINTTABLE ggadmin.checkpointtable

 

6.3 配置投递进程

GGSCI> ADD REP rp_jtwx1, EXTTRAIL ./dirdat/ra, CHECKPOINTTABLE ggadmin.checkpointtable

GGSCI> EDIT PARAM rp_jtwx1

REPLICAT rp_jtwx1

 

--环境变量,非必须

--SETENV( ORACLE_SID=ogg2 )

--SETENV( ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 )

--SETENV( NLS_LANG = AMERICAN_AMERICA.AL32UTF8 )

 

USERID ggadmin, PASSWORD ggadmin

--REPORT AT 01:59                                                                   //配置在特定时间报告复制状态

--REPORTROLLOVER AT 02:00                                                        //指定每日在特定时间生成一个新的报告

REPERROR default,discard                                                  //配置如果出现错误后的处理模式,这里abend表示出现错误即进程终止,等待客户修正后恢复;也可以设置为discard,此时会将错误数据写到下面参数定义的文件中,但是继续处理,进程不退出

INSERTALLRECORDS

DISCARDFILE ./dirrpt/rp_jtwx1.dsc,append, megabytes 200                  //定义出错后写错误信息的目标文件,为查错提供帮助。 Append表示在尾部添加, purge表示每次生成一个新的disard文件; megabyte表示最大允许大小,如果超过了此大小则进程也会终止。

ASSUMETARGETDEFS                                                                        //表示源和目标表的结构相同,即相同数据库类型、表的字段定义相同

DYNAMICRESOLUTION                                                                    //动态解析表的结构,加快启动速度

--HANDLECOLLISIONS                                                                       //冲突数据处理,主要在初始化时候用到

--GETTRUNCATES                                                                               //同步truncate 操作

MAP scott.emp, TARGET scott.emp;

MAP scott.dept, TARGET scott.dept1 , COLMAP (usedefaults , committime = @GETENV ("GGHEADER", "COMMITTIMESTAMP"));

--//定义源表和目标表的映射, colmap里面定义列映射,如果是两端表的列全部相同则不用colmap

--userdefaults表示,没有列在后面的列全部按照缺省规则(列名相同的对应)进行映射,而列在后面的如committime则赋给GoldenGate的一个自有变量,这里是指提交时间。

 

GGSCI> START REP rp_jtwx1 //启动投递进程

GGSCI> INFO ALL                      //检查状态

 

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

【备注2

GGSCI> help                                          --查看可用命令

GGSCI> help add exttrail --查看添加队列文件命令使用方法

GGSCI> send rp_jtwx1,status --查看数据同步进度

GGSCI> stats rp_jtwx1             --查看投递进程处理数据量统计

 

 

【场景一】主键不一致

目标端:         MAP src.s_tab, TARGET tar.t_tab, KEYCOLS ( s_tab_pk_col );

或源端:         Add trandata src.s_tab, cols ( t_tab_pk_col),nokey

【场景二】数据过滤

源端:              TABLE demo_src.people, FILTER (age > 50);

                            age需为主键才能过滤,或者Add trandata demo_src.people, cols (age)强制为该列加入附加日志

【场景三】数据初始化

通过导入加载初始数据后

源端:              ALTER ex_jtwx1,begin 2010-03-21 08:00:00  (保证归档存在)

或目标端:     ALTER REPLICAT rp_jtwx1, EXTSEQNO 53 EXTRBA 0

【场景四】数据冲突处理

replicat使用handlecollisions(必须有主键或者唯一索引)

http://docs.oracle.com/goldengate/1212/gg-winux/GWURF/gg_parameters081.htm#GWURF520

示例:

HANDLECOLLISIONS

MAP hr.emp, TARGET hr.emp;

MAP hr.job_hist, TARGET hr.job_hist;

NOHANDLECOLLISIONS(默认参数)

MAP hr.dep, TARGET hr.dep;

MAP hr.country, TARGET hr.country;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30592920/viewspace-2143905/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30592920/viewspace-2143905/

;