ITPub博客

首页 > 数据库 > Oracle > Oracle GoldenGate10g→11g单向DDL部署

Oracle GoldenGate10g→11g单向DDL部署

原创 Oracle 作者:Alex_1573 时间:2013-12-05 19:44:37 0 删除 编辑
GoldenGate几个重要进程介绍:
Manager:是GoldenGate的控制进程,运行在源端和目标端上。它主要作用有以下几个方面:启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等。在目标端和源端有且只有一个manager进程;
 
Extract:运行在数据库源端,负责从源端数据表或者日志中捕获数据。
初始时间装载阶段:在初始数据装载阶段,Extract进程直接从源端的数据表中抽取数据
同步变化捕获阶段:初始数据同步完成以后,Extract进程负责捕获源端数据的变化(DML和DDL);
 
Pump(可选):运行在数据库源端,其作用是将源端产生的本地trail文件,把trail以数据块的形式通过TCP/IP 协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trail文件,那么extract进程在抽取完数据以后,直接投递到目标端,生成远程trail文件。如果要使用pump,必须配置本地trail,否则不用;
 
Collector:与 Pump进程对应 的叫Server Collector进程,这个进程不需要引起我的关注,因为在实际操作过程中,无需我们对其进行任何配置,所以对我们来说它是透明的。它运行在目标端,其任务就是把Extract/Pump投递过来的数据重新组装成远程trail文件;
 
Replicat:通常我们也把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中;


Trail:该文件是gg自己抓捕信息的文件,是一个OS文件,存放在./dirdat/下,以X00000命名,N顺序1,2,3…此文件用完可配置参数自动删除;


注:安装GoldenGate源端和目标端版本必须一致。


1、环境准备并安装GoldenGate
1.1 数据库准备情况
1) 源服务器
IP地址:192.168.1.181
数据库:10.2.0.5 64 bit
SID: orcl 
操作系统版本:Redhat 5.6 64 bit
ogg版本:fbo_ggs_Linux_x64_ora10g_64bit.tar
说明:前提条件是数据库已经准备方式安装完毕。
2) 目标服务器(11gRAC 只挂载主节点)(多节点部署由于在目前还没尝试)
IP地址:192.168.1.41
数据库:11.2.0.3.0 64 bit
SID: rac1
操作系统版本:Redhat 5.8 64 bit
ogg版本:fbo_ggs_Linux_x64_ora11g_64bit.tar
说明:前提条件是数据库已经准备方式安装完毕。
1.2. 下载OGG软件并解压安装
1) 配置源服务器
root用户下:
mkdir -p /u01/app/oracle/ogg
chown -R oracle:oinstall /u01/app/oracle/ogg
chmod -R 755 /u01/app/oracle/ogg
oracle用户下执行:
unzip ogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip 
tar -xvf fbo_ggs_Linux_x64_ora10g_64bit.tar


2) 配置目标服务器
root用户下:
mkdir -p /u02/app/oracle/ogg
chown -R oracle:oinstall /u02/app/oracle/ogg
chmod -R 755 /u02/app/oracle/ogg
oracle用户下执行:
unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar
 
1.3. 准备OGG环境变量
#配置源服务器与目标服务器的环境变量:
vi /home/oracle/.bash_profile
增加如下一行:
export GGATE=$ORACLE_BASE/ogg
export PATH=$ORACLE_BASE/ogg/10.0:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/ogg/10.0:$LD_LIBRARY_PATH
生效环境变量
source /home/oracle/.bash_profile


1.4. 配置日志模式
# 配置源服务器日志模式,目标服务器不用配置(非双向)
1) 查看规档与日志模式
sqlplus / as sysdba
select log_mode,supplemental_log_data_min,force_logging from v$database;


2) 配置为规档模式
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
alter system set log_archive_dest_1='location=/u01/archive' scope=both;


3) 配置日志模式(打开强制规档与补充日志模式)
alter database add supplemental log data;  
alter database force logging; 


4)查看配置结果:
SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE     SUPPLEME FOR
------------ -------- ---
ARCHIVELOG   YES      YES
1.5. 创建GoldenGate用户帐号
1) 源服务器配置
su - oracle
sqlplus /nolog
conn / as sysdba;
create tablespace tbs_ogg datafile '/u01/app/oracle/oradata/orcl/tbs_ogg.dbf' size 10m autoextend on next 10m;
create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace TEMP quota unlimited on tbs_ogg;
grant connect,resource to ogg;
grant create session,alter session to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on dbms_flashback to ogg;


2) 目标服务器配置
su - oracle
sqlplus /nolog
conn / as sysdba;
create tablespace tbs_ogg datafile '/u02/app/oracle/oradata/rac1/tbs_ogg.dbf' size 10m autoextend on next 10m;
create user ogg identified by ogg default tablespace tbs_ogg temporary tablespace TEMP quota unlimited on tbs_ogg;
grant connect,resource to ogg;
grant create session,alter session to ogg;
grant select any dictionary,select any table to ogg;
grant alter any table to ogg;
grant flashback any table to ogg;
grant execute on dbms_flashback to ogg;
grant insert any table to ogg;
grant delete any table to ogg;
grant update any table to ogg;


或者直接
grant connect,resource to ogg;
grant dba to ogg;
1.6. 安装GoldenGate软件
(1) 配置源服务器
su - oracle
cd /u01/app/oracle/ogg
./ggsci  
GGSCI (test) 1> create subdirs


Creating subdirectories under current directory /u01/app/oracle/ogg
Parameter files                /u01/app/oracle/ogg/dirprm: already exists
Report files                   /u01/app/oracle/ogg/dirrpt: created
Checkpoint files               /u01/app/oracle/ogg/dirchk: created
Process status files           /u01/app/oracle/ogg/dirpcs: created
SQL script files               /u01/app/oracle/ogg/dirsql: created
Database definitions files     /u01/app/oracle/ogg/dirdef: created
Extract data files             /u01/app/oracle/ogg/dirdat: created
Temporary files                /u01/app/oracle/ogg/dirtmp: created
Stdout files                   /u01/app/oracle/ogg/dirout: created


(2) 配置目标服务器
su - oracle
cd /u02/app/oracle/ogg
./ggsci
GGSCI (rac1) 1> create subdirs


Creating subdirectories under current directory /u02/app/oracle/ogg
Parameter files                /u02/app/oracle/ogg/dirprm: already exists
Report files                   /u02/app/oracle/ogg/dirrpt: created
Checkpoint files               /u02/app/oracle/ogg/dirchk: created
Process status files           /u02/app/oracle/ogg/dirpcs: created
SQL script files               /u02/app/oracle/ogg/dirsql: created
Database definitions files     /u02/app/oracle/ogg/dirdef: created
Extract data files             /u02/app/oracle/ogg/dirdat: created
Temporary files                /u02/app/oracle/ogg/dirtmp: created
Stdout files                   /u02/app/oracle/ogg/dirout: created


注1:ogg_11.1.1.1.2,ogg_11.2.x.x.1显示创建的文件目录列表结构不一样。
上为ogg11.2版本的创建的内容。
1.7. 配置源、目标数据库一致
配置源与目标数据一致性可以采用很多方法,可以采用oracle的方式来完成。
本方式采用imp方式来实现初始数据表一致。


这里我创建了一个测试用户(创建用户过程略)
conn oggtest/oggtest


create table dept as select * from scott.dept;(源端和目标端)
2、GoldenGate DML同步源端配置
配置思路:
1) 先配置DML同步
2) 再配置DDL同步
cd /u01/app/oracle/ogg
./ggsci
2.1. 源MGR进程
1) 编辑主进程组
edit params mgr


port 7809
dynamicportlist 7800-8000
autorestart extract *,retries 5,waitminutes 2,resetminutes 5
说明:
port 指定mgr进程通信端口
dynamicportlist 表示mgr进程可以为源与目的端动态通信指定端口
autorestart extract 表示自动重启extract进程组,每2分钟尝试重启所有进程,重试5次,每5分钟清零。
配置参数后,重启mgr进程生效
2) 启动主管理进程
start mgr
2.2. 配置Extract进程组 (源端)
1) 编辑配置文件
edit params SEXTR01


extract SEXTR01
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) 
userid ogg,password ogg  
exttrail /u01/app/oracle/ogg/dirdat/et  
table oggtest.*; 
说明:
extract SEXTR01定义extract进程名字
dynamicresolution 
setenv设置环境变量
userid 登录数据库
exttrail指定本地trail文件地址
table 定义同步的表


2) 添加抽取进程
add extract SEXTR01, tranlog,begin now


3) 添加本地trail文件
add exttrail /u01/app/oracle/ogg/dirdat/et,extract SEXTR01
说明:
创建本地trail文件,主extract进程负责写这部分文件,pump负责把这部分文件传到目标服务器端。
4) 启动服务
start extract SEXTR01


2.3. 配置Pump进程组
1) 编辑配置文件
edit params SPUMP01


extract SPUMP01
dynamicresolution
passthru
rmthost 192.168.1.41,mgrport 7809,compress
rmttrail /u02/app/oracle/ogg/dirdat/pt (目标端地址)
table oggtest.*;


2) 添加pump进程
add extract SPUMP01,exttrailsource /u01/app/oracle/ogg/dirdat/et


3) 添加远程trail文件
add rmttrail /u02/app/oracle/ogg/dirdat/pt,extract SPUMP01
说明: 指定远程trail文件(这里容易犯错笔者在第一次安装这里写成本地地址,进程一直起不来,所有这里应该是目标端地址)


4) 启动pump进程
start extract SPUMP01
3、GoldenGate DML同步目标端配置
cd /u02/app/oracle/ogg
./ggsci
3.1. 目标端MGR进程
1) 编辑配置文件
edit params mgr


port 7809
dynamicportlist 7800-8000
autostart er *
autorestart extract *, waitminutes 2, resetminutes 5
lagreporthours 1
laginfominutes 3
lagcriticalminutes 5
purgeoldextracts /u02/app/oracle/ogg/dirdat/rt*, usecheckpoints, minkeepdays 3


2) 启动
start mgr
3.2. 添加检查表
说明: 当我们在GLOBALS 文件里指定了默认的checkpoint 之后,新的Replicat groups 在创建时会自动使用这个参数,不需要其他指令
1) 编辑全局配置文件
edit params ./GLOBALS 


CHECKPOINTTABLE ogg.checkpoint
2)exit # 这里需要退出ggsci终端 


3) 添加checkpoint表
./ggsci  
GGSCI (rac1) 1> dblogin userid ogg,password ogg
Successfully logged into database.


GGSCI (rac1) 2> add checkpointtable ogg.checkpoint
Successfully created checkpoint table ogg.checkpoint.


3.3. 配置目标端Peplicat进程组
1) 编辑配置文件
edit params repl


replicat repl
userid ogg,password ogg
assumetargetdefs
reperror default,discard
discardfile /u02/app/oracle/ogg/dirrpt/repl.dsc,append,megabytes 50
dynamicresolution
map oggtest.*, target oggtest.*;


2) 添加复制进程
add replicat repl,exttrail /u02/app/oracle/ogg/dirdat/pt, CHECKPOINTTABLE ogg.checkpoint


3) 启动进程
start repl


3.4. 可以查看checkpoint状态
su - oracle
sqlplus ogg/ogg
SQL> select tname from tab;  
TNAME  
-------------------------------------  
CHECKPOINT                     TABLE
CHECKPOINT_LOX                 TABLE
select * from checkpoint;
注1:ogg_11.1.1.1.2只有CHECKPOINT一张表。
注2:ogg_11.2.x.x.1有CHECKPOINT,CHECKPOINT_LOX两张表。
3.5. DML配置测试
进入源端
conn oggtest/oggtest
select * from dept;
insert into dept values (50,'alex','wuhan');
commit;


进入目标端
conn oggtest/oggtest
select * from dept;
SQL> select * from dept;


    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON
        50 alex           wuhan    (复制成功)
看到这里就成功了
4、 GoldenGate DDL同步配置
4.1. 支持DDL复制运行脚本
# 服务器源端配置
1) 指定数据库模式
./ggsci  
GGSCI (test) 1> edit param ./GLOBALS 
GGSCI (test) 2> view param ./GLOBALS  
ggschema ogg
GGSCI (test) 3> stop mgr 
2) oralce 10gR2数据库需要关闭回收站。
su - oracle
cd /u01/app/oracle/ogg
sqlplus / as sysdba;
alter system set recyclebin=off scope=both;


注:
禁用recycle bin
对于11g: 需要重启才能生效
ALTER SYSTEM SET recyclebin = OFF scope=spfile;
对于10g:
Alter system set recyclebin=off scope=both;


3) 安装DDL对象
进入到ogg目录登陆到sqlplus:
SQL> grant dba to ogg;
SQL> @marker_setup     说明: 均指定用户ogg
SQL> @ddl_setup        说明: 11.1.1.2需要手动输入 ogg,INITIALSETUP,yes
SQL> @role_setup  
SQL> grant GGS_GGSUSER_ROLE to ogg;
SQL> @ddl_enable
SQL> @marker_status.sql
注1: 执行dbmspool包将在数据库中创建DBMS_SHARED_POOL包,之后ddl_pin包需要用到
SQL> @?/rdbms/admin/dbmspool.sql
Package created.
Grant succeeded.
View created.
Package body created.
注2: 执行ddl_pin.sql通过dbms_shared_pool.keep存储过程将DDLReplication相关对象keep在共享池中,以保证这些对象不要RELOAD,提升性能。
SQL> @ddl_pin.sql ogg
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
脚本说明:
marker_setup  --该脚本安装marker系统,这部分为启用DLL支持所必备,执行该脚本时会提示输入GoldenGate管理帐户schema名.
ddl_setup  --执行该脚本要确认关闭掉所有ORACLE会话,未被关闭的会话会以列表形式显示,执行过程中会要求希望对象属主,并选择安装模式。如果是初次安装就选择“INITIALSETUP”,该模式假设当前没有任何GoldenGate DDL对象存在,如果存在则会删除并重建。如果是重新安装,则应该选择“NORMAL”.
role_setup --该操作会重建DDL同步所需的权限,授予GoldenGate中的DDL对象以DML权限.
ddl_enable  --启用DDL触发器,以捕获DDL操作.
要提高DDL触发器的性能,可以通过ddl_pin脚本,该脚本会将触发器使用的包加载到内存,以此提高效率。该脚本执行时需要引用dbms_shared_pool系统包,因此在使用ddl_pin脚本前需要确保dbms_shared_pool可用。
@?/rdbms/admin/dbmspool.sql


ddl_pin --执行ddl_pin脚本需要指定GoldenGate管理员schema名称.
然后,用于同步DDL操作的对象就创建完成了。


4.2. 修改extract进程的params文件
# 服务器源端配置
# source端修改extract进程的params文件,添加"ddl include all"参数,重启extract进程
1) 停止SEXTR01进程
GGSCI (test) 2> stop extract SEXTR01
2) 编辑配置文件
GGSCI (test) 3> edit params SEXTR01
extract SEXTR01
dynamicresolution
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid ogg,password ogg 
exttrail /u01/app/oracle/ogg/dirdat/et  
ddl include all   (新增)
ddloptions addtrandata, report (新增)
table oggtest.*; 
 
3)启动mgr, SEXTR01进程
GGSCI (test) 4> start mgr 
GGSCI (test) 5> start extract SEXTR01


4) 查看SEXTR01进程启动情况
GGSCI (test) 6> info extract SEXTR01


4.3. 修改目标端replicat进程的params文件
# 目标服务器配置
# target端修改replicat进程的params文件,
添加"ddlerror default ignore retryop maxretries 3 retrydelay 5" 等参数,重启replicat进程
1) 停止mgr进程
GGSCI (rac1) 1> stop mgr
2) 停止repl进程
GGSCI (rac1) 1> stop replicat repl 
Sending STOP request to REPLICAT RORA_T1 ...  Request processed.


3) 编辑repl配置文件
GGSCI (rac1) 1> edit params repl 
GGSCI (rac1) 2> view params repl
replicat repl
userid ogg,password ogg
assumetargetdefs
reperror default,discard
discardfile /u02/app/oracle/ogg/dirrpt/repl.dsc,append,megabytes 50
dynamicresolution
ddloptions report (新增)
ddlerror default ignore retryop maxretries 3 retrydelay 5 (新增)
ddlerror default discard (新增)
ddlerror default ignore retryop (新增)
map oggtest.*, target oggtest.*;


注: 说明目标端不需要配置DDL include all语句,不然的话,反而会出错。
可以通过以下语句去掉不需要同步的表:
mapexclude oggtest.table1  -- 去掉的复制表


4) 启动repl进程 
GGSCI (rac1) 4> start mgr   # 会自动启动repl进程
GGSCI (rac2) 5> info replicat repl


4.4 测试
在源端oggtest用户创建一个表,查看目标端是否成功创建。
conn oggtest/oggtest
create table abc ( id integer , name char(10));
insert into abc values ( 1 , 'abc' );


登陆到目标端:
conn oggtest/oggtest


SQL> select * from tab;


TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
ABC                            TABLE
DEPT                           TABLE


SQL> select * from abc;


        ID NAME
---------- ----------
         1 abc




附: 卸载GG
Uninstalling Oracle GoldenGate from Linux or UNIX
1. Run the command shell.
2. (Suggested) Log on as the systemadministrator, or as a user with permission to issue Oracle GoldenGatecommands, and to delete files and directories from the operating system.
3. Change directories to the OracleGoldenGate installation directory.
4. Run GGSCI.
5. Stop all Oracle GoldenGate processes.
6. Stop the Manager process.
7. Exit GGSCI.
8. Remove the Oracle GoldenGate files byremoving the installation directory.
9. Drop any Oracle GoldenGate-relatedobjects from the database as needed.
                                                
                                                         ALEX
                                                    2013/12/01

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

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-11-05

  • 博文量
    3
  • 访问量
    25975