ITPub博客

首页 > 数据库 > Oracle > 手把手教你安装和配置OGG,并实现单向DML复制技术

手把手教你安装和配置OGG,并实现单向DML复制技术

Oracle 作者:kunlunzhiying 时间:2016-03-07 01:07:19 0 删除 编辑
说明:
   源端:
     操作系统:oracle_linux_5.6_32
     数据库:oracle_10.2.0.1_32
     goldengate:for_10g_x86
   目标端:
     操作系统:oracle_linux_5.6_32
     数据库:oracle_10.2.0.1_32
     goldengate:for_10g_x86


注意:
   本实验是模拟在同平台同版本上面安装和配置OGG,并实现简单的DML复制,至于复杂的其他方面
   希望大家能自己多多实验。


作者:
   姓名:oracle_zsx。
   QQ:1468815296。


配置步骤:
1、
检查源端和目标端正确的IP解析:
源端:
[root@gg1 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.1.71    gg1


目标端:
[root@gg2 ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.1.72    gg2


2、
设置LD_LIBRARY_PATH,为了安装OGG所用的动态链接库。如果没有配置这个路径的话,在安装OGG的过程
中会报找不到动态链接库的错误,用户可以自己尝试一下。
源端:
[root@gg1 ~]# su - oracle
[oracle@gg1 ~]$ vi .bash_profile 
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export SQLPATH=/home/oracle/labs
export PATH=$ORACLE_HOME/bin:$PATH
export nls_lang=american_america.zhs16gbk
export ORACLE_SID=ogg
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
[oracle@gg1 ~]$ source .bash_profile 


目标端:
[root@gg2 ~]# su - oracle
[oracle@gg2 ~]$ vi .bash_profile 
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export SQLPATH=/home/oracle/labs
export PATH=$ORACLE_HOME/bin:$PATH
export nls_lang=american_america.zhs16gbk
export ORACLE_SID=ogg
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
[oracle@gg2 ~]$ source .bash_profile 


3、
在源端创建专用的表空间、schema、并授权。
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 select any transaction to goldengate;


4、
检查源端数据库是否在归档模式,强烈建议在归档模式。
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、
源端:
添加附加日志来唯一标识一行记录,要在数据库级别打开最小开关。为了减少整个数据库添加附加日志,以及减少归档量,
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这里不够,需要打开附加日志。


6、
我们先安装和配置goldengate,安装比较简单,解压之后下一步测试。
[root@gg1 ogg]# unzip ogg112101_fbo_ggs_Linux_x86_ora10g_32bit.zip
[root@gg1 ogg]# tar -xvf fbo_ggs_Linux_x86_ora10g_32bit.tar 
[root@gg1 ogg]# chown -R oracle:oinstall /ogg/
注意:
自己要下载正确的软件。


7、
测试安装成功,只需进入命令行,就表明安装是成功的。
[oracle@gg1 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 (gg1) 1> 




GGSCI (gg1) 1> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     STOPPED


注意:
表示安装成功。


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


[oracle@gg2 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 (gg2) 1> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


MANAGER     STOPPED   


9、
配置源端和目标端的管理进程。
源端:
GGSCI (gg1) 2> create subdirs
GGSCI (gg1) 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 (gg1) 6> start mgr
Manager started.


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


MANAGER     RUNNING                                           


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




目标端:
GGSCI (gg2) 2> create subdirs
GGSCI (gg2) 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 (gg2) 4> start mgr
Manager started.


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


MANAGER     RUNNING                                           


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


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


10、
源端:
查看要复制的表的日志信息是完整的,确保是logging。把nologing变成logging。
select owner||'.'||table_name table_name,logging                
from dba_tables
where owner='HR';
TABLE_NAME                                                    LOG
------------------------------------------------------------- ---
HR.REGIONS                                                    NO
HR.LOCATIONS                                                  NO
HR.DEPARTMENTS                                                NO
HR.JOBS                                                       NO
HR.EMPLOYEES                                                  NO
HR.JOB_HISTORY                                                NO
HR.COUNTRIES


SQL> alter table HR.REGIONS logging;
Table altered.


SQL> alter table HR.LOCATIONS logging;
Table altered.


SQL> alter table HR.DEPARTMENTS logging;
Table altered.


SQL> alter table HR.JOBS logging;
Table altered.


SQL> alter table HR.EMPLOYEES logging;
Table altered.


SQL> alter table HR.JOB_HISTORY logging;
Table altered.


SQL> alter table HR.COUNTRIES logging;
Table altered.


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


查看:
GGSCI (gg1) 11> info trandata hr.*


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


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


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


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


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


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


Logging of supplemental redo log data is disabled for table HR.REGIONS.
注意:
发现是disable,还没有添加成功,继续下一步。


添加:
GGSCI (gg1) 12> add trandata hr.*


Logging of supplemental redo data enabled for table HR.COUNTRIES.


Logging of supplemental redo data enabled for table HR.DEPARTMENTS.


Logging of supplemental redo data enabled for table HR.EMPLOYEES.


Logging of supplemental redo data enabled for table HR.JOBS.


Logging of supplemental redo data enabled for table HR.JOB_HISTORY.


Logging of supplemental redo data enabled for table HR.LOCATIONS.


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


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


GGSCI (gg1) 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的基本都了解。


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


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


14、
编辑我们刚刚在源端配置的抓取进程的参数:
GGSCI (gg1) 16> edit param ext_demo
EXTRACT ext_demo
setenv (ORACLE_SID=ogg)
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 convertucs2clobs
TABLE HR.*;


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


15、
启动抓取进程:(确认自己的配置没有问题,否则进程可能不是running)
GGSCI (gg1) 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 (gg1) 27> start ext_demo


Sending START request to MANAGER ...
EXTRACT EXT_DEMO starting




GGSCI (gg1) 28> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


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


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


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


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


17、
配置datapump进程参数:
GGSCI (gg1) 34> edit param dpe_demo
extract dpe_demo
dynamicresolution
passthru
rmthost 192.168.1.72, mgrport 7839, compress
rmttrail ./dirdat/t1
numfiles 5000
TABLE HR.*;


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


Sending START request to MANAGER ...
EXTRACT DPE_DEMO starting




GGSCI (gg1) 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@gg1 ogg]$ vi ggserr.log


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


SQL> commit;
Commit complete.


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


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


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


19、
目标端:
创建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;


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


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


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


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


22、
配置目标端replicate参数:
GGSCI (gg2) 5> edit param rep_demo
REPLICAT rep_demo
SETENV (ORACLE_SID=ogg)
SETENV (NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
USERID goldengate,PASSWORD goldengate
REPORTCOUNT EVERY 30 MINUTES, RATE
REPERROR DEFAULT, ABEND
numfiles 5000
--HANDLECOLLISIONS
assumetargetdefs
DISCARDFILE ./dirrpt/rep_demo.dsc, APPEND, MEGABYTES 1000
ALLOWNOOPUPDATES
MAP HR.*, TARGET HR.*;


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


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


GGSCI (gg2) 2> info all


Program     Status      Group       Lag at Chkpt  Time Since Chkpt


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


24、
测试数据,在源端复制到目标端。
源端:
SQL> conn hr/hr 
Connected.


SQL> update employees set salary=5000;
107 rows updated.


SQL> commit;
Commit complete.


SQL> select salary from employees;
    SALARY
----------
      5000
      5000
      5000
      5000
      5000
      5000
      5000
      5000
      5000
      5000
      5000
......
107 行


目标端:
SQL> select salary from employees;
    SALARY
----------
      5000
      5000
      5000
      5000
      5000
      5000
      5000
      5000
      5000
      5000
      5000
....
107行。


25、
测试数据同步,表明已经配置完成goldengate,并实现了单向DML复制。

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

请登录后发表评论 登录
全部评论
IT搬砖

注册时间:2014-07-28

  • 博文量
    665
  • 访问量
    322507