设为首页 收藏本站
查看: 1142|回复: 0

[经验分享] OGG实现两台Oracle数据库的同步

  [复制链接]

尚未签到

发表于 2017-12-11 08:57:58 | 显示全部楼层 |阅读模式
  今天通过最简单的一个例子,给大家讲解下 goldengate 实现两台Oracle数据库的同步。
  内容如下:
  1.配置数据库信息。
  2.安装golden gate.
  3.配置golden gate.
  4.测试同步情况
  首先我们看看实验环境
  环境
  源端是一个单实例
  Oracle Enterprise 5 + ORACLE 10.2.0.4
  IP :10.4.128.100
  目标端是一个单实例
  Oracle Enterprise 5 + ORACLE 10.2.0.4
  IP :10.4.128.101
  两台主机均已创建数据库,sid分别为devdb 和 emrep
  配置devdb 到 emrep的数据同步
  goldengate版本11.2.1.0
  1.配置数据库信息
  在源端数据库中打开归档模式
  SQL> archive log list
  Database log mode              Archive Mode
  Automatic archival             Enabled
  Archive destination            /u01/archive1
  Oldest online log sequence     180
  Next log sequence to archive   181
  Current log sequence           181
  若处于非归档模式,则改为归档模式:
  SQL> shutdown immediate
  Database closed.
  Database dismounted.
  ORACLE instance shut down.
  SQL> startup mount;
  ORACLE instance started.
  SQL> alter database archivelog;

  Database>  SQL> alter database open;

  Database>  在源端数据库中打开force logging
  SQL> select force_logging from v$database;
  FOR
  ---
  NO
  SQL> alter database force logging;

  Database>  SQL> select force_logging from v$database;
  FOR
  ---
  YES
  在源端数据库中打开supplemental log
  SQL> select supplemental_log_data_min from v$database;
  SUPPLEME
  --------
  NO
  SQL> alter database add supplemental log data;

  Database>  切换日志,使更改生效
  SQL> alter system switch logfile;

  System>  SQL> select supplemental_log_data_min from v$database;
  SUPPLEME
  --------
  YES
  在源端数据库中关闭回收站
  官方的说明是,由于一个已知的问题,回收站会对DDL触发器产生影响,因此需要关闭。由此可见,我们只需要在源库中关闭回收站即可。
  SQL> show parameter recyclebin
  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  recyclebin string on
  SQL> alter system set recyclebin=off;

  System>  SQL> show parameter recyclebin
  NAME TYPE                                VALUE
  ------------------------------------ -------------------------------
  recyclebin string                          OFF
  创建goldengate数据库用户(源和目标)
  注意:源和目标端都需要
[oracle@rac1 ~]$ sqlplus / as sysdba


  SQL*Plus:>  Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
  Connected to:

  Oracle Database 10g Enterprise Edition>  With the Partitioning, OLAP, Data Mining and Real Application Testing options
  SQL> create tablespace goldengate;
  Tablespace created.

  SQL> create user goldengate>  User created.
  SQL> grant connect,resource to goldengate;
  Grant succeeded.
  SQL> grant execute on utl_file to goldengate;
  Grant succeeded.
  SQL>
  抽取进程使用的数据库用户需要额外的权限,我们将这些权限也授予数据库用户goldengate(在源端数据库中执行)
  SQL> exec dbms_streams_auth.grant_admin_privilege('GOLDENGATE');
  PL/SQL procedure successfully completed.
  SQL> grant insert on system.logmnr_restart_ckpt$ to goldengate;
  Grant succeeded.
  SQL> grant update on sys.streams$_capture_process to goldengate;
  Grant succeeded.
  SQL> grant become user to goldengate;
  Grant succeeded.
  SQL>
  为了确保GoldenGate正常运行,特别是在目标端,赋予goldengate用户DBA权限:
  SQL> grant dba to goldengate;
  2.GoldenGate安装环境
  解压goldengate安装文件到安装目录
  安装GoldenGate软件很简单,解压即可
  以goldengate用户登录
[goldengate@rac1 goldengateMedia]$ mkdir /opt/gg/goldengate、

[goldengate@rac1 goldengateMedia]$ cp ggs_Linux_ora10g_.tar /opt/gg/goldengate

[goldengate@rac1 goldengateMedia]$ cd /opt/gg/goldengate

[goldengate@rac1 goldengate]$ tar -xvf ggs_Linux_ora10g.tar

  配置环境变量
  源端和目标端:
  修改goldengate用户的环境变量配置文件(ORACLE_SID按实际情况修改)
  cat>>/home/goldengate/.bashrc<<EOF
  ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1
  export ORACLE_HOME
  ORACLE_SID=devdb
  export ORACLE_SID
  GG_HOME=/opt/gg/goldengate
  export GG_HOME
  PATH=\$ORACLE_HOME/bin:$GG_HOME:\$PATH
  export PATH
  LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\$GG_HOME:\$LD_LIBRARY_PATH
  export LD_LIBRARY_PATH
  EOF
  应用刚刚修改的环境变量,然后进入GoldenGate安装目录,执行ldd ggsci,确定需要的库文件都能够找到。如果出现共享库文件无法找到,例如libnnz10.so => not found,检查LD_LIBRARY_PATH环境变量的设置
[goldengate@ggdb goldengate]$ source ~/.bashrc

[goldengate@ggdb goldengate]$ cd $GG_HOME

[goldengate@ggdb goldengate]$ ldd ggsci

  我们可以认为ogg的安装其实就是一个解压。非常简单。
3.配置goldengate
  创建goldengate工作目录
  源端和目标端:
[goldengate@rac1 goldengate]$ cd $GG_HOME

[goldengate@rac1 goldengate]$ ./ggsci

  GGSCI (rac1) 1> create subdirs
  Creating subdirectories under current directory /opt/gg/goldengate
  Parameter files /opt/gg/goldengate/dirprm: created
  Report files /opt/gg/goldengate/dirrpt: created
  Checkpoint files /opt/gg/goldengate/dirchk: created
  ……
  GGSCI (gg1) 2> exit
创建trail文件存放目录
  源和目标端:
[goldengate@rac1 ~]$ mkdir /opt/gg/trails

[goldengate@rac1 ~]$ ls -l /opt/gg | grep trails

配置MANAGER
  源端和目标端:
  DYNAMICPORTLIST中配置了GoldenGate(extract和replicat)进程使用的端口范围
  PORT参数指定MANAGER使用的端口
  AUTORESTART参数使抽取/复制进程失败后自动重启
  配置MANAGER的参数,PURGEOLDEXTRACTS参数指定:当根据checkpoint发现已经完成抽取和复制的trail文件将被自动删除,但保留最近10个。
  PURGEDDLHISTORY和PURGEMARKERHISTORY分别删除DDL历史表和marker表中的过期数据,以控制它们不会变得过于庞大。
  GGSCI (gg1) 1> edit params mgr
  PORT 5898
  PURGEOLDEXTRACTS /opt/gg/trails/w1*, USECHECKPOINTS, MINKEEPFILES 10
  AUTORESTART ER *, RETRIES 3, WAITMINUTES 5
  PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
  PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30
全局参数设置
  源端:
  GGSCI (rac1) 2> edit params ./globals
  GGSCHEMA goldengate
  目标端:
  创建一个checkpoint表
  replicat通过这个表来维护trail文件中的read position。这不是个必须的操作,如果没有这个表,则通过一个磁盘文件来维护
  GGSCI (ggdb) 2> dblogin userid goldengate,password goldengate
  Successfully logged into database.
  GGSCI (ggdb) 3> add checkpointtable goldengate.chkpoint
  Successfully created checkpoint table GOLDENGATE.CHKPOINT.
  GGSCI (ggdb) 4> edit params ./globals
  GGSCHEMA goldengate
  CHECKPOINTTABLE goldengate.chkpoint
  使用OGG,两个Oracle库之间单向同步数据  http://www.iyunv.com/Linux/2014-07/104465.htm
  GoldenGate单向表DML同步 http://www.iyunv.com/Linux/2013-04/82942.htm
  Oracle GoldenGate 系列:Extract 进程的恢复原理 http://www.iyunv.com/Linux/2013-04/82563.htm
  Oracle GoldenGate安装配置 http://www.iyunv.com/Linux/2013-02/79455.htm
  Oracle goldengate的OGG-01004 OGG-1296错误 http://www.iyunv.com/Linux/2011-08/40951.htm
  Oracle GoldenGate快速入门教程:基本概念和配置 http://www.iyunv.com/Linux/2014-09/106677.htm
  搭建一个Oracle到Oracle的GoldenGate双向复制环境 http://www.iyunv.com/Linux/2014-11/109101.htm

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-422877-1-1.html 上篇帖子: Linux 查询oracle错误日志&警告日志 下篇帖子: abcedon't dream it , be it
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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