0
点赞
收藏
分享

微信扫一扫

第七章:datapump模式的搭建

青鸾惊鸿 2023-02-24 阅读 76





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的。



第七章:datapump模式的搭建_SQL



第七章:datapump模式的搭建_3d_02



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日志。



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 条评论