第七章:datapump模式的搭建


1.安装环境说明

os: redhat linux 5.5 64bit
db:Oracle 11.2.0.3 64bit

模式:采用goldengate   datapump 模式的搭建

2.配置ORACLE_HOME 和 ORACLE_SID

如果系统上只有一个单实例,那么可以在操作系统级别设置ORACLE_HOME和ORACLE_SID变量。
如果有多个instance,那么可以再Extrace和Replicat group 中设置setenv变量,这种session级别的设置会覆盖操作系统的设置。
如果有多个实例,那么可以分别配置同步的Extrace groups,那么参数文件可以按照如下进行配置:

group 1:
extract ora9a
setenv (ORACLE_HOME="/u01/app/product")
setenv("ORACLE_SID="oraa")
useridalias tiger1
rmhost sysb
rmttrail /u01/ggs/dirdat/rt
table hr.emp;
table hr.salary;

group 2:
extract orab
setenv (ORACLE_HOME="/u01/app/product")
setenv("ORACLE_SID="orab") 
useridalias tiger1
rmhost sysb
rmttrail /u01/ggs/dirdat/st
table fin.sales;
table fin.cust;

3.设置library路径

ogg使用共享的library.所以在linux上运行ogg之前,必须先配置好library路径。
假设ogg的安装目录是/u01/ggs,那么在/home/oracle/.bash_profile文件里添加如下内容:

export PATH=/u01/ggs:$PATH
export LD_LIBRARY_PATH=/u01/ggs:$LD_LIBRARY_PATH

4.安装ogg

 在ogg11中,直接解压缩安装文件就行了,到了ogg12c的版本,ogg使用oui来进行安装。

[oracle@ogg2 Disk1]$ pwd
/u01/software/fbo_ggs_Linux_x64_shiphome/Disk1
[oracle@ogg2 Disk1]$ ls
install  response  runInstaller  stage
[oracle@ogg2 Disk1]$


运行RunInstaller:
如果数据库版本是12c,就选择12c;如果数据库是11g,就选择11g的。
software location 选择ogg的解压安装目录

进入ogg安装目录,运行如下命令:

[oracle@ogg1 ggs]$ ldd --version
[oracle@ogg1 ggs]$ldd ggsci     --查看需要的安装包

librt.so.1 => /lib64/librt.so.1 (0x0000003dafe00000)
libdl.so.2 => /lib64/libdl.so.2 (0x0000003daf200000)
libgglog.so => /u01/zw/libgglog.so (0x00002b9d080f3000)
libggrepo.so => /u01/zw/libggrepo.so (0x00002b9d0849c000)
libdb-5.2.so => /u01/zw/libdb-5.2.so (0x00002b9d08707000)
libggperf.so => /u01/zw/libggperf.so (0x00002b9d089a2000)
libicui18n.so.48 => /u01/zw/libicui18n.so.48 (0x00002b9d08bd1000)
libicuuc.so.48 => /u01/zw/libicuuc.so.48 (0x00002b9d08edf000)
libicudata.so.48 => /u01/zw/libicudata.so.48 (0x00002b9d0915d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003daf600000)
libxerces-c.so.28 => /u01/zw/libxerces-c.so.28 (0x00002b9d0a823000)
libantlr3c.so => /u01/zw/libantlr3c.so (0x00002b9d0ad3a000)
libnnz11.so =>       not   found
libclntsh.so.11.1 =>not   found 
libggnnzitp.so =>    not   found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003dc1000000)
libm.so.6 => /lib64/libm.so.6 (0x0000003daee00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003dbd400000)
libc.so.6 => /lib64/libc.so.6 (0x0000003daea00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003dae600000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003db2e00000)
libaio.so.1 => /usr/lib64/libaio.so.1 (0x00002b9d0e305000)

少包了,解决办法。

[oracle@ogg02 ggs]$ find /u01 -name libons.so   或 find / -name libons.so
[oracle@ogg02 ggs]$ ln -s /u01/app/oracle/product/11.2.0.3/db_1/lib/libons.so

假设OGG的安装目录是/u01/ggs,那么在/home/oracle/.bash_profile文件里添加如下内容:

export PATH=/u01/ggs:$PATH
export LD_LIBRARY_PATH=/u01/ggs:$LD_LIBRARY_PATH

--source 使修改生效:

[oracle@ogg1 u01]$ source ~/.bash_profile
cd /u01/ggs
ggsci
info manager

在 Oracle 11g中,安装完后,需要ggsci执行create subdirs创建ogg的目录,到了12c,就不用创建了。

5.开启归档模式、强制日志、附加日志

5.1 开规档

 SQL> alter system set log_archive_dest_1='location=/oradata/arch' scope=both;
 SQL> alter database archivelog;
 SQL> archive log list;
 
5.2 添加附加日志
   SQL> alter database  add supplemental log data;

5.3 强制日志
  SQL> alter database force logging;
 
  --确认修改:
SQL> select LOG_MODE, SUPPLEMENTAL_LOG_DATA_MIN,FORCE_LOGGING from v$database;

6.启用DDL支持

  ogg可以配置支持ddl的同步,对ddl的支持是通过创建一些table来保存这些ddl的信息,并且有一些限制。

 6.1.禁用recycel  bin

   SQL> alter system set recyclebin=off scope=spfile; 

 6.2. 创建存放DDL 信息的user并赋权    

  创建GG的表空间:(source和target端都要创建)
  SQL> create tablespace ggs datafile '/oradata/ggs01.dbf' size 200m autoextend off;
 这里的表空间不能自动扩展。ogg11g可以使用默认的user表空间,12c需要独立的表空间,否则报错。
 SQL> create user ggs identified by ggs default tablespace ggs temporary tablespace temp;
 SQL> grant connect,resource to ggs;
 SQL> grant execute on utl_file to ggs;

退出oracle的所有session,然后用sysdba权限执行以下脚本
注意:要先进入/u01/ggs,再执行脚本

pwd
/u01/ggs
sqlplus / as sysdba

6.3执行脚本

 <1>创建DDL标记表

            SQL> @/u01/pjj/marker_setup.sql;    (这里会提示要输入ggs用户)   
                                                                             
 <2>将在数据库中创建捕获DDL语句的Trigger等必要组件 (这里会提示要输入ggs用户)
            SQL> @/u01/pjj/ddl_setup.sql;
        注意:(1)执行时必须断开GGSCI连接,否则报错
                  (2)执行的时候不用选择操作类型了。在11g中需要选择initialsetup选项。
 <3>创建GGS_GGSUSER_ROLE角色         这里会提示要输入ggs用户)
            SQL> @/u01/pjj/role_setup.sql;
 <4> 授予给extract group参数中定义的userid用户
           SQL> grant GGS_GGSUSER_ROLE to ggs;
 <5> 启用ddl捕获触发器:
            SQL> @/u01/pjj/ddl_enable.sql;

还有两个可选的脚本,用来提高ddl复制性能:

@?/rdbms/admin/dbmspool     ---创建DBMS_SHARED_POOL包
@/u01/ggs/ddl_pin.sql

--通过DBMS_SHARED_POOL.keep存储过程将DDLReplication相关对象keep在共享池中,保证这些对象不要reload,提升性能。

注意,在oracle 11.2.0.4 中需要配置;

SQL> alter system set enable_goldengate_replication=true;
System altered.

7.检查点表配置

goldengate 的检查点表示 目标端 的一个可选的配置,默认情况下,goldengate不会设置检查点表机制,而依耐于文件系统的保证,相对于后者,检查点表机制更可靠,且便于日常维护。
建议在首次配置目标库的时候,在全局变量中设置检查点表,并创建,这样做的话,以后所有的replicat进程默认情况下均会使用这个检查点表。
配置检查点表后,goldengate日常维护的操作区别在于,所有replicate进程的添加删除前均需要从ggsci中登录数据。


配置步骤如下:
1. 登录ggsci界面,在./GLOBALS文件里添加checkpoint表名
  checkpointtable owner.table   --指定的检查点记录表
2.连上db,创建checkpoint表
 dblogin  sourcedb dbname,userid db_user,password pw
add checkpointtable ggs.checkpoint   --生成一个检查点记录表

这里不做配置,直接在后面测试中配置。

8.OGG单向复制测试

  注意三点: (1)目标库的用户名和对象名称可以和源端不同,关键在于配置文件中能够正确匹配。
                     (2)配置源端和目标端tnsnames,保持互联互通。
                     (3)对于采用oralce asm的实例,还需要配置监听,使得goldengate能够连接到对应的asm实例上,访问redo日志。
   可以通过lsnrctl status 命令查看监听器状态,看看能否找到asm实例的信息,默认情况下asm实例已经注册,信息类似  service "+ASM" has 1 instance(s)


8.1在source和target database 上创建测试用户

--source database
SQL> create user sender identified by oracle default tablespace users temporary tablespace temp;  --创建用户
User created.
SQL> grant connect,resource,dba to sender;
Grant succeeded.

2. --target database
SQL> create user receiver identified by oracle default tablespace users temporary tablespace temp; --创建用户
User created.
SQL> grant connect,resource,dba to receiver;
Grant succeeded.

 8.2 配置SourceDB 的复制队列

GGSCI (ogg02) 10> dblogin userid ggs, password ggs
Successfully logged into database.

GGSCI (ogg02) 11> add extract ext1,tranlog, begin now
EXTRACT added.

GGSCI (ogg02) 12> add exttrail /u01/pjj/dirdat/lt, extract ext1
EXTTRAIL added.

修改抽取进程ext1参数:

GGSCI (ogg1) 13> edit params ext1
extract ext1
userid ggs, password ggs
exttrail /u01/pjj/dirdat/lt
ddl include mapped objname sender.*;
table sender.*;

 8.2.1 增加Pump 进程

GGSCI (ogg1) 8> add extract dpump,exttrailsource /u01/pjj/dirdat/lt
EXTRACT added. 

--这里指定我们localtrail 的位置。
 
GGSCI (ogg02) 18> add rmttrail /u01/pjj/dirdat/rt, extract dpump,megabytes 10 --trail文件的大小
RMTTRAIL added.
 
配置Data Pump 参数:

GGSCI (gg1) 56> view params dpump
extract dpump
userid ggs@ogg1, password ggs
dynamicresolution
passthru
rmthost 192.168.1.62, mgrport 7809
rmttrail /u01/ggs/dirdat/rt
table sender.*;

配置Data Pump 参数: 
-----------------------------------------以这个为准
GGSCI (ogg02) 27> edit  params dpump
extract dpump
userid ggs, password ggs
dynamicresolution
passthru
rmthost 192.168.1.62, mgrport 7809       --target
rmttrail /u01/zt/dirdat/rt               --target
table sender.*;

GGSCI (ogg02) 27> edit params dpump   --查看一下
extract dpump
userid ggs, password ggs
dynamicresolution
passthru
rmthost 192.168.56.23, mgrport 7809
rmttrail /u01/pjj/dirdat/rt             
table sender.*;

9. target 端 
  
9.1 添加checkpointtable
GGSCI (ogg2) 1> dblogin userid ggs,password ggs
Successfully logged into database. 

GGSCI (ogg2) 2> add checkpointtable ggs.checkpoint
Successfully created checkpoint table ggs.checkpoint.


 9.2添加target replicat进程

 GGSCI (ogg04) 1>  add replicat rep1,exttrail /u01/pjj/dirdat/rt, checkpointtable ggs.checkpoint
 REPLICAT added.

 GGSCI (ogg04) 2> edit params rep1
 replicat rep1
 ASSUMETARGETDEFS
 userid ggs,password ggs
 discardfile /u01/pjj/dirdat/rep1_discard.txt,append, megabytes 10
 DDL
 map sender.*, target receiver.*;

10.启动source端
 
GGSCI (ogg02) 30> info all   --查看一下
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                          
EXTRACT     STOPPED     DPUMP       00:00:00      00:20:49   
EXTRACT     STOPPED     EXT1        00:00:00      00:26:57   
EXTRACT     STOPPED     EXT2        00:00:00      00:25:27 
 
 1.启动extract进程
GGSCI (ogg02) 31> start ext2
Sending START request to MANAGER ...
EXTRACT EXT2 starting

GGSCI (ogg02) 32> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                          
EXTRACT     STOPPED     DPUMP       00:00:00      00:20:58   
EXTRACT     STOPPED     EXT1        00:00:00      00:27:06   
EXTRACT     RUNNING     EXT2        00:25:35      00:00:00   running说明启动了


2.启动datapump进程
GGSCI (ogg02) 33> start extract dpump

Sending START request to MANAGER ...
EXTRACT DPUMP starting

GGSCI (ogg02) 34> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                          
EXTRACT     RUNNING     DPUMP       00:00:00      00:24:11   
EXTRACT     STOPPED     EXT1        00:00:00      00:30:19   
EXTRACT     RUNNING     EXT2        00:00:00      00:00:01  

Target DB

GGSCI (ogg2) 20> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                           
REPLICAT    STOPPED     REP1        00:00:00      00:11:40    

GGSCI (ogg2) 21> start rep1
Sending START request to MANAGER ...
REPLICAT REP1 starting

GGSCI (ogg2) 29> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                           
REPLICAT    RUNNING     REP1        00:00:00      00:00:01    

测试Data 复制

--Source DB:
SQL> conn sender/oracle;
Connected.

SQL> create table p1 as select * from sys.dba_users;
Table created.

SQL> select count(1) from p1;
  COUNT(1)
----------
        32

--Target DB:
SQL> conn receiver/oracle;
Connected.

SQL> select count(1) from p1;

  COUNT(1)
----------
        32

SQL> select count(1) from p1;

  COUNT(1)
----------
        32


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值