重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4489|回复: 6
打印 上一主题 下一主题

[工具] 关于OGG 双机到单机的单向复制

[复制链接]
跳转到指定楼层
楼主
发表于 2015-12-9 16:52:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
源端:RAC双节点rac1,rac2。ASM裸设备
          DB:ORCL     
         SID:ORCL1
                  ORCL2
          ip:192.168.171.16   rac1
                192.168.171.17   rac2
  
目标端:静默安装的oracle单实例,非ASM,没有安装样本表
             ip   192. 168.171.77  rac3   (新增节点后删除节点。再静默安装的数据库)
            DB: WSDB
            SID:  WSDB





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
 楼主| 发表于 2015-12-9 16:54:43 | 只看该作者
准备工作:

oracle用户下安装ogg  都添加环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib


只在rac1 ,rac3 下安装ogg
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2015-12-9 16:56:06 | 只看该作者
第一部分:
1.在源端创建专用的表空间、schema、并授权。
create tablespace goldengate datafile '+DATA/goldengate01.dbf' size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
grant connect to goldengate;
grant alter any table to goldengate;
grant alter session to goldengate;
grant create session to goldengate;
grant flashback any table to goldengate;
grant select any dictionary to goldengate;
grant select any table to goldengate;
grant resource to goldengate;
grant select any transaction to goldengate;
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2015-12-9 16:59:05 | 只看该作者
2.关闭RAC库(两个节点),开启归档
检查源端数据库是否在归档模式,强烈建议在归档模式。
SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /arch
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2015-12-9 17:10:08 | 只看该作者
3、
源端:
添加附加日志来唯一标识一行记录,要在数据库级别打开最小开关。为了减少整个数据库添加附加日志,以及减少归档量,
goldengate建议复制哪些对象,就添加哪些表的附加日志(我们到时候是拿hr用户下的表来实验)。
检查:
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
NO
打开:
SQL> alter database add supplemental log data;
Database altered.
再次查看:
SQL> select supplemental_log_data_min from v$database;
SUPPLEME
--------
YES
切换日志组,使附加日志开关生效。
SQL> alter system switch logfile;
System altered.
解释:
在正常情况下,oracle是用rowid来唯一标示一行记录的,但goldengate这里不够,需要打开附加日志。





在rac1,  创建表hr.test  ,rac3 创建用户hr,创建表test。
两个表添加唯一键约束
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2015-12-9 17:38:50 | 只看该作者
本帖最后由 王硕 于 2015-12-9 17:55 编辑

4、
测试安装成功,只需进入命令行,就表明安装是成功的。
[oracle@rac1 ogg]$ ./ggsci


Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02


Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.


GGSCI (rac1) 1>




GGSCI (rac1) 1> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     STOPPED


注意:
表示安装成功。


5、
在目标端也安装成功。
[root@rac2 ogg]# unzip ogg112101_fbo_ggs_Linux_x86_ora10g_32bit.zip
[root@rac2 ogg]# tar -xvf fbo_ggs_Linux_x86_ora10g_32bit.tar
[root@rac2 ogg]# chown -R oracle:oinstall /ogg/


[oracle@rac2 ogg]$ ./ggsci


Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x86, 32bit (optimized), Oracle 10g on Apr 23 2012 07:06:02


Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.




GGSCI (rac2) 1> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     STOPPED   


6、
配置源端和目标端的管理进程。
源端:
GGSCI (rac1) 2> create subdirs
GGSCI (rac1) 3> edit params mgr
port 7839
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45


GGSCI (rac1) 6> start mgr
Manager started.


GGSCI (rac1) 7> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          


GGSCI (rac1) 8> info mgr
Manager is running (IP port rac1.7839).




目标端:
GGSCI (rac2) 2> create subdirs
GGSCI (rac2) 3> edit params mgr
port 7839
DYNAMICPORTLIST 7840-7850
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45


启动配置的管理进程
GGSCI (rac2) 4> start mgr
Manager started.


查看是否正在运行的管理进程,如果不是running请查看自己的原因。
GGSCI (rac2) 5> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          


查看刚刚设置的端口号有没有问题
GGSCI (rac2) 6> info mgr
Manager is running (IP port rac2.7839).


参数分析:
第一行表示管理进程的端口号。
第二行是接收进程使用的是动态接口列表的端口。
其他参数请大家自己有兴趣分析。


7、
源端:
查看要复制的表的日志信息是完整的,确保是logging。把nologing变成logging。
select owner||'.'||table_name table_name,logging               
from dba_tables
where owner='HR';



SQL> alter table HR.TESTlogging;
Table altered.



Table altered.




8、
源端:
配置hr下面表的表级附加日志。配置登陆用户。并检查日志是否添加成功。
以goldengate这个schema登陆数据库。
GGSCI (rac1) 10> dblogin userid goldengate, password goldengate
Successfully logged into database.


查看:
GGSCI (rac1) 11> info trandata hr.test


Logging of supplemental redo log data is disabled for table HR.TEST


注意:
发现是disable,还没有添加成功,继续下一步。


添加:
GGSCI (rac1) 12> add trandata hr.test



Logging of supplemental redo data enabled for table HR.TEST.
注意:
现在成功了,是enable的。


9、
配置源端的抓取进程。
GGSCI (rac1) 13> add extract ext_demo, tranlog, begin now, threads 1
EXTRACT added.


GGSCI (rac1) 14> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          
EXTRACT     STOPPED     EXT_DEMO    00:00:00      00:00:09


参数分析:
tranlog:表示数据抓取的来源是数据库的redo数据。
begin now:表示我们在启动这个抓取进程的就去抓取数据。
threads 1:表示我们数据库有多少个redo threads,单实例基本上是1或者不设,rac就自己设置了,
配置过RAC的基本都了解。


10、
添加源端的队列文件。
GGSCI (rac1) 15> add EXTTRAIL ./dirdat/r1, extract ext_demo,megabytes 100
EXTTRAIL added.


分析:
./dirdat:表示trail文件的目录
r1:trail文件的前缀
extract ext_demo:值指定给那个进程用的(ext_demo)。
megabytes 100:文件大小是100m


11、
编辑我们刚刚在源端配置的抓取进程的参数:
GGSCI (rac1) 16> edit param ext_demo
EXTRACT ext_dem
setenv (ORACLE_SID=ORCL1)
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid goldengate,password goldengate
REPORTCOUNT EVERY 1 MINUTES, RATE
numfiles 5000
DISCARDFILE ./dirrpt/ext_demo.dsc,APPEND,MEGABYTES 1000
DISCARDROLLOVER AT 3:00
exttrail ./dirdat/r1,megabytes 100
dynamicresolution
TRANLOGOPTIONS EXCLUDEUSER goldengate
TRANLOGOPTIONS DBLOGREADER
TABLE HR.TEST;




分析:
setenv (ORACLE_SID=ogg):指定oracle的sid,单机环境下可以不设或者bashprofile文件中设置了默认的
也可以不设,但是集群环境就要指定了,这里我们强烈建议指定。
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK):源端数据库的字符集,一定要跟数据库中匹配。
userid goldengate,password goldengate:告诉抓取进程是通过这个用户登陆数据库的。
exttrail ./dirdat/r1,megabytes 100:与我们上面配置抓取进程的设置要一致,路径和大小嘛。
TABLE HR.*:最重要的,告诉抓取进程抓取的是哪些用户哪些表的数据。


12、
启动抓取进程:(确认自己的配置没有问题,否则进程可能不是running)
GGSCI (rac1) 26> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          
EXTRACT     STOPPED     EXT_DEMO    00:00:00      00:37:12   




GGSCI (rac1) 27> start ext_demo


Sending START request to MANAGER ...
EXTRACT EXT_DEMO starting




GGSCI (rac1) 28> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          
EXTRACT     RUNNING     EXT_DEMO    00:00:00      00:00:10  


13、
配置datapump进程,将抓取数据传到目标主机。负责TCPIP通讯。
GGSCI (rac1) 31> add extract dpe_demo, exttrailsource ./dirdat/r1
EXTRACT added.


输出:目标主机怎么写,也是定义datapumo进程的输出。
GGSCI (rac1) 33> add rmttrail ./dirdat/t1,EXTRACT dpe_demo,MEGABYTES 100
RMTTRAIL added.


分析:
exttrailsource:抓取进程的来源,因为这个进程不否则到数据库中取抓取,所以抓取的来源
是通过抓取进程已经生成好的trail文件中的内容。


14、
配置datapump进程参数:
GGSCI (rac1) 34> edit param dpe_demo
extract dep_dem
dynamicresolution
passthru
rmthost 192.168.171.77, mgrport 7839, compress
rmttrail ./dirdat/t1
numfiles 5000
TABLE HR.TEST;


启动,如果有问题,状态不能为running,可以查看相应的日志在自己安装的ogghome目录下。
GGSCI (rac1) 37> start dpe_demo


Sending START request to MANAGER ...
EXTRACT DPE_DEMO starting




GGSCI (rac1) 38> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          
EXTRACT     RUNNING     DPE_DEMO    00:00:00      00:12:10   
EXTRACT     RUNNING     EXT_DEMO    00:00:00      00:00:07   


分析:
passthru:上面已经说过不需要连接数据库,所以用这个指令。
rmthost:目标主机的IP地址,就是说我们的rmttrail进程发送到的主机。
mgrport:目标主机管理进程的端口号,我们上面已经配置了。
compress:在传输的过程中启用压缩。
rmttrail:路径和文件与上面配置的一致。
TABLE HR.*:上面说过,哪些表的redo信息传输。


日志所在地:
[oracle@rac1 ogg]$ vi ggserr.log


15、
测试goldengate能否抓取数据:
SQL> update employees set salary=salary+1000;
107 rows updated.


SQL> commit;
Commit complete.


查看是否生成文件:
[oracle@rac1 ogg]$ ll dirdat
total 16
-rw-rw-rw- 1 oracle oinstall 13721 Dec 12 03:47 r1000000


查看目标端是否也生成:
[oracle@rac2 ogg]$ ls -l dirdat
total 16
-rw-rw-rw- 1 oracle oinstall 13743 Dec 12 03:47 t1000000


注意:
是可以的,大小是非0。


16、
目标端:
创建golengate软件使用的schema,并授权一些必要的特殊权限,注意与源端有所区别,保证我们能DML。
create tablespace goldengate datafile '/u01/app/oracle/oradata/ogg/goldengate01.dbf' size 100m autoextend on;
create user goldengate identified by goldengate default tablespace goldengate temporary tablespace temp;
grant connect to goldengate;
grant alter any table to goldengate;
grant alter session to goldengate;
grant create session to goldengate;
grant flashback any table to goldengate;
grant select any dictionary to goldengate;
grant select any table to goldengate;
grant resource to goldengate;
grant insert any table to goldengate;
grant update any table to goldengate;
grant delete any table to goldengate;
grant create any index to goldengate;
grant select any transaction to goldengate;


17、
目标端:
为replicat进程创建checkpoint表:
GGSCI (rac2) 1> dblogin userid goldengate,password goldengate
Successfully logged into database.


GGSCI (rac2) 2> add checkpointtable goldengate.rep_demo_ckpt
Successfully created checkpoint table goldengate.rep_demo_ckpt.


18、
配置目标端replicate进程:
GGSCI (rac2) 3> add replicat rep_demo,exttrail ./dirdat/t1,checkpointtable goldengate.rep_demo_ckpt
REPLICAT added.


分析:
exttrail:表示这个进程获取数据的来源是什么地方,是我们源端rmttrail所设置过的。


19、
配置目标端replicate参数:
GGSCI (rac2) 5> edit param rep_demo
REPLICAT rep_demo
SETENV (REPLICAT rep_dem
SETENV (ORACLE_SID=WSDB)
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
USERID goldengate,PASSWORD goldengate
REPORTCOUNT EVERY 30 MINUTES,RATE
REPERROR DEFAULT, ABEND
REPERROR (1,IGNORE)
numfiles 5000
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE ./dirrpt/rep.dsc,APPEND,
ALLOWNOOPUPDATES
MAP HR.TEST, TARGET HR.TEST;



分析:
重要的地方与上面基本一致,有兴趣可以查查其他参数的信息。
MAP:源端和目标端的对应。


20、
目标端:
启动并查看replicate进程是否运行:
GGSCI (rac2) 6> start rep_demo


GGSCI (rac2) 2> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     RUNNING                                          
REPLICAT    RUNNING     REP_DEMO    00:00:00      01:22:45  


21、
测试数据,在源端复制到目标端。
源端:
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2015-12-9 17:56:52 | 只看该作者
结尾:
在rac2 做测试也能传输ogg数据

报警日志在/ogg/ggserr.log
注意参数的设置,灵活更改
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-13 23:58 , Processed in 0.098145 second(s), 22 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表