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

[经验分享] oracle ogg搭建

[复制链接]

尚未签到

发表于 2018-9-6 08:50:52 | 显示全部楼层 |阅读模式
1.环境介绍
  项目
  源端
  目标端
  ip
  192.168.12.23
  192.168.22.24
  oracle sid
  orcl
  orcl
  goldengate用户
  oracle
  oracle
  ogg版本
  11.2.1.0.1
  11.2.1.0.1
  操作系统版本
  linux
  linux

  2. ogg基础环境配置
2.1创建ogg操作系统用户
  两台服务器都需要创建ogg操作系统用户(此步骤非必须)。
  useradd -u 1003 -g oinstall -G dba ogg1 passwd ogg
2.2修改OGG操作系统用户环境变量
  PATH=$PATH:$HOME/bin
  export PATH
  umask 022
  export ORACLE_HOSTNAME=segment2
  export ORACLE_BASE=/u01/app/oracle
  export ORACLE_SID=orcl
  export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
  export TNS_ADMIN=$ORACLE_HOME/network/admin
  exportPATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORACLE_BASE/ogg
  exportPATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
  exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
  exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
  exportLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
  exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE
  exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/JRE/lib

  export>  exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
  exportCLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
  exportLIBPATH=${CLASSPATH}:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
  export ORACLE_OWNER=oracle
  export SPFILE_PATH=$ORACLE_HOME/dbs
  export ORA_NLS10=$ORACLE_HOME/nls/data
  exportOGG_HOME=$ORACLE_BASE/ogg
2.3创建OGG安装目录
  mkdir /ogg chown -Rogg:oinstall /ogg
2.4上传OGG安装介质
  将OGG安装文件上传到两台服务器的OGG操作系统用户的家目录(默认为/home/ogg)。
  fbo_ggs_Linux_x64_ora11g_64bit.tar
  fbo_ggs_Linux_x64_ora11g_64bit.tar解包到/ogg目录(源和目标端都需要操作)
  tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /ogg
2.5登录OGG测试
  $./ggsci
  解压安装后目录
  [oracle@sourceogg]$ ls -l |grep ^d
  drwxr-x---2 oracle oinstall     4096 Apr 23  2012 cfg
  drwxr-x---2 oracle oinstall     4096 Apr 23  2012 dirjar
  drwxr-x---2 oracle oinstall     4096 Apr 23  2012 dirprm
  drwxr-x---7 oracle oinstall     4096 Apr 23  2012 UserExitExamples
  GGSCI(source) 1> create subdirs
  Creatingsubdirectories under current directory /u01/app/oracle/ogg
  Parameterfiles               /u01/app/oracle/ogg/dirprm: already exists
  Reportfiles                  /u01/app/oracle/ogg/dirrpt: created
  Checkpointfiles              /u01/app/oracle/ogg/dirchk: created
  Processstatus files          /u01/app/oracle/ogg/dirpcs: created
  SQLscript files              /u01/app/oracle/ogg/dirsql: created
  Databasedefinitions files    /u01/app/oracle/ogg/dirdef: created
  Extractdata files            /u01/app/oracle/ogg/dirdat: created
  Temporaryfiles               /u01/app/oracle/ogg/dirtmp: created
  Stdoutfiles                  /u01/app/oracle/ogg/dirout: created
  文件路径
  说明
  /u01/app/oracle/ogg/dirprm
  存放OGG参数各的配置信息
  /u01/app/oracle/ogg/dirrpt
  存放进程报告文件
  /u01/app/oracle/ogg/dirchk
  存放检查点文件
  /u01/app/oracle/ogg/dirpcs
  存放进程状态文件
  /u01/app/oracle/ogg/dirsql
  存放SQL脚本文件
  /u01/app/oracle/ogg/dirdef
  存放DEFGEN工具生成的数据定义

  2.6建立OGG表空间
  ORACLE建议使用单独的表空间存放OGG数据,表空间大小50M就可以,但是最好设置数据文件的自动扩展。
  SQL>create  tablespace  ogg  datafile'/u01/app/oracle/oradata/orcl/ogg01.dbf'size 50M autoextend on
2.7创建OGG用户

  SQL>create user ogg>2.8为OGG用户授权
  OGG用户需要以下权限,也有人为了省事,直接给OGG用户DBA权限。
  SQL> grant CONNECT, RESOURCE to ogg;
  SQL> grant SELECT ANY DICTIONARY, SELECT ANY TABLEto ogg;

  SQL> grant>  SQL> grant FLASHBACK ANY TABLE to ogg;
  SQL> grant EXECUTE on DBMS_FLASHBACK to ogg;
  SQL> grant insert any table to ogg;
  SQL> grant update any table to ogg;
  SQL>grant delete any table to ogg;
2.9打开源数据库的附加日志和force log
  SQL> selectNAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

  SQL>>
  SQL>>  SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MINfrom v$database;
2.10运行OGG支持DDL脚本
  如果要让OGG支持DDL操作,还需要额外运行几个脚本,这些脚本是OGG带的而不是ORACLE带的,在OGG的安装目录都可以找到,如果在OGG的安装目录登录数据库,可以直接@加脚本的名字,源端与目标端都需要运行
  如下:
  sqlplus / as sysdba
  GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;
  权限配置以后.要重新执行
  SQL>@ddl_setup
  SQL>@role_setup
  SQL> grantGGS_GGSUSER_ROLE to ogg;
  SQL>@ddl_enable
3.OGG配置
3.1OGG原理及数据制造
  创建测试数据
  源数据库
  @demo_ora_create.sql
  @demo_ora_insert.sql
  目标数据
  @demo_ora_create.sql
3.2源端添加表级TRANDATA
  添加表级的trandata可以理解为需要将哪些用户的哪些表和目标库同步,其实也是添加表级的
  supplemental log,但是只有上文打开的minimal supplemental log后,这个才生效。
  GGSCI (oggsource) 2>  dbloginuserid  ogg,password ogg
  GGSCI (dbdream) 3> add  trandata   hr.tcustmer;
  GGSCI (dbdream) 4> add  trandata   scott.dept_ogg
  成功添加表级TRANDATA后,可以通过INFO命令查看哪些表被添加了TRANDATA.
  INFO TRANDATA scott.*
3.4目标和源端配置MGR管理进程
  GGSCI (stream) 2> EDITPARAMS MGR 加入以下两行内容
  PORT 7809
  PURGEOLDEXTRACTS /ogg/dirdat,USECHECKPOINTS
  参数说明:
  PORT 7809:OGG管理进程监控端口。
  PURGEOLDEXTRACTS:清除不需要的trail文件。
  /ogg/dirdat:trail文件存放位置。
  USECHECKPOINTS:使用检查点队列。
  start mgr
  GGSCI (oggtarget) 4> info  mgr
  文件存放路径$OGG_HOME/dirprm
3.5配置初始化数据进程(此步骤非必须,可以由其他方式完成)
  由于在创建测试表的时候,源端的测试表有数据,而目标端的测试表只有结构,没有数据,所以需要初始化目标端的数据,所谓初始化,就是让目标端的数据和源端的数据在这个时间点是一模一样的,所以初始化工作并不需要一定使用OGG,也可以使用EXP、EXPDP、SQLLOAD等其他工具,
  本文主要介绍如何使用OGG进行数据初始化,
  下面在源端配置捕获进程EINI_1。
  GGSCI (dbdream) 11> ADD EXTRACT EINI_1, SOURCEISTABLE--------------源端加同步进程
  GGSCI (dbdream) 12> INFO EXTRACT *, TASKS EXTRACT
  GGSCI (dbdream) 13> EDIT PARAMS EINI_1
  EXTRACT EINI_1
  SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
  setenv (ORACLE_SID=dbdream)
  userid  ogg, passwordogg
  RMTHOST 192.168.12.203, MGRPORT 7839
  RMTTASK REPLICAT, GROUP RINI_1-----目标端名字一定要对应
  TABLE SCOTT.EMP_OGG;
  TABLE SCOTT.DEPT_OGG;
  EXTRACT EINI_1:说明这是EXTRACT进程,名字是EINI_1 SETENV:
  环境变量,一定要设置和数据库字符集一样,否则可能会乱码
  USERID:数据库OGG用户 PASSWORD:数据库用户OGG的密码
  RMTHOST:目标端地址,如果在/etc/hosts文件里已经设置解析,可以写主机名 MGRPORT:
  目标端MGR管理进程监听的端口RMTTASK REPLICAT:
  目标端REPLICAT应用进程的组和名字
  TABLE:源端要初始化数据的表的名字
  B、配置目标端REPLICAT进程
  ---------------------特别留意名字为源端配置的名
  add replicatRINI_1,specialrun------目标端添加同步进程
  EDIT PARAMS RINI_1
  --加入以下内容
  REPLICAT RINI_1
  SETENV(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
  ASSUMETARGETDEFS
  USERID ogg, PASSWORD ogg
  DISCARDFILE  /u01/app/oracle/ogg/dirrpt/RINIaa.dsc, PURGE
  MAP scott.*, TARGET scott.*;
  REPLICAT RINI_1:说明这是REPLICAT应用进程,名字叫RINI_1
  SETENV:语言变量,同捕获进程EINI_1
  ASSUMETARGETDEFS:告诉OGG目标端和源端需要同步的表的结构完全一致,不需要OGG去检查表的结构,包括表名、字段名、字段类型、字段长度等,如果目标端和源端同步的表的结构不一样,需要使用SOURCEDEFS参数,
  USERID、PASSWORD:同捕获进程EINI_1参数介绍
  DISCARDFILE:错误信息存放位置及命名规则
  MAP:源端捕获的表的名字
  TARGET:目标端同步的表的名字,可以不在同一SCHEMA
  C、初始化数据-----源端
  配置好目标端的应用进程RINI_1后,就可以启动源端的捕获进程进行捕获数据了,而目标端的应用进程RINI_1不需要手动去启动,也就是说目标端RINI_1进程不需要管。
  ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;
  GGSCI (oggsource asogg@dbdream) 17> START EXTRACT   EINI_1
  GGSCI (oggsource as ogg@dbdream) 17>VIEW  REPORT  EINI_1
  可以看到初始化是正确的。初始化之后,上文提到的初始化进程(EINI_1、RINI_1)自动停止,因为通常情况下初始化数据工作只会做一次。可以通过INFO命令查看进程的状态。
  INFO EXTRACT EINI_1-------------源端
  INFO REPLICAT RINI_1-------目标端
3.6源端和目标端配置OGG的检查点
  此步骤不是必须的,但是为了让OGG网络中断、服务器宕机、掉电等在突发情况也能正确断点续传,ORACLE建议配置OGG的检查点队列。
  GGSCI (stream) 2> EDIT PARAMS ./GLOBALS
  CHECKPOINTTABLE ogg.ggschkpt
  这就告诉OGG检查点存放到OGG用户下的GGSCHKPT表中,但是还需要使用OGG用户登录数据库,创建检查点表,此时需要退出OGG,重新登录,否则可能会遇到下面的错误。
  [ogg@oggsource ogg]$ ./ggsci
  GGSCI (oggsource) 1> dblogin userid ogg,password ogg
  GGSCI (oggsource as ogg@dbdream) 2> ADD CHECKPOINTTABLE
  [ogg@dbdream ogg]$ sqlplus ogg/ogg
  No checkpoint table specified. Using GLOBALS specification(ogg.ggschkpt)...
  Successfully created checkpoint table ogg.ggschkpt.
  此时用OGG登录数据库,就可以看到OGG创建的检查点表。
  SQL> select * from tab;
3.7源端配置捕获进程
  $ edit   param  ext1
  EXTRACT ext1
  SETENV(ORACLE_HOME="/oracle/app/product/11.2/db")
  SETENV (ORACLE_SID="orcl")
  SETENV(NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
  USERID ogg password ogg
  EXTTRAIL ./dirdat/ext1/sd
  gettruncates
  DDL INCLUDE MAPPED , OBJTYPE 'TABLE' &
  INCLUDE MAPPED OBJTYPE 'INDEX'
  table scott.*;
  add extract ext1 tranlog, begin now
  ADD EXTTRAIL  ./dirdat/ext1/sd  EXTRACT ext1, MEGABYTES 100-----注意是相对路径
  start ext1
  ADD EXTRACT EORA_2, TRANLOG, BEGIN NOW
  ADD EXTTRAIL /u01/app/oracle/ogg/dirdat/zz,EXTRACT EORA_2, MEGABYTES  5
3.7配置源端的PUMP进程
  添加PUMP进程PORA_1到OGG,并指定本地的TRAIL文件。
  edit pram  dp1
  EXTRACT dp1
  PASSTHRU
  DYNAMICRESOLUTION
  RMTHOST 192.168.12.24 ,MGRPORT 7809
  RMTTRAIL ./dirdat/ext2/sd
  DISCARDFILE./dirrpt/dp2.dsc,APPEND,MEGABYTES 100
  DISCARDROLLOVER AT 6:00
  REPORTROLLOVER AT 6:00
  REPORTCOUNT EVERY 1 HOURS,RATE
  TABLE scott.*;
  ADD EXTRACT dp1, EXTTRAILSOURCE./dirdat/ext1/sd
  INFO EXTRACT dp2
  ADD RMTTRAIL  ./dirdat/ext1/sd, EXTRACT dp1, MEGABYTES100-----注意相对路径
  ADD EXTRACT PORA_1, EXTTRAILSOURCE  /u01/app/oracle/ogg/dirdat/pa
  为PUMP进程PORA_1指定将本地TRAIL文件传输到目标端后保存成目标端TRAIL文件的名字。
  ADD RMTTRAIL  /u01/app/oracle/ogg/dirdat/pa, EXTRACTPORA_1, MEGABYTES 5
  START EXTRACT dp1
  GGSCI (oggsource as ogg@dbdream) 36>INFO EXTRACT dp1
  注意路径存在和环境变量相关内容
3.8目标端配置同步进程RORA_1
  edit param rep1
  REPLICAT rep1
  SETENV (ORACLE_HOME ="/u01/app/oracle/product/11.2.0/db_1" )
  SETENV (ORACLE_SID = "orcl")
  SETENV (NLS_LANG ="AMERICAN_AMERICA.ZHS16GBK")
  USERID ogg,  PASSWORD ogg
  --HANDLECOLLISIONS
  ASSUMETARGETDEFS
  DISCARDFILE ./dirrpt/rep2.dsc ,append,megabytes 10
  ---SOURCEDEFS./dirdef/def.def
  DDL INCLUDE MAPPED , OBJTYPE 'TABLE' &
  INCLUDE MAPPED OBJTYPE 'INDEX'
  MAP SCOTT.EMP_OGG     ,TARGET  SCOTT.EMP_OGG    ;
  MAP SCOTT.DEPT_OGG    ,TARGET  SCOTT.DEPT_OGG    ;
  ADD REPLICAT rep1, EXTTRAIL   ./dirdat/ext1/sd
  START REPLICAT  rep1
  注意参数
  ERROR OGG-00423 Could not find definitionfor source.person
  In the Replicat param Please tryASSUMETARGETDEFS , if source and target have same table structure..
  if both the structures are different ,generate the source definition and use SOURCEDEFS in Replicate Param.
  handcollisions被注释了,也就是说当target端缺失delete 、update数据时,target端无法自动处理。
验证数据


运维网声明 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-563822-1-1.html 上篇帖子: Oracle 12C RAC集群搭建 下篇帖子: oracle相关概念
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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