• OGG配置参数样例


    #命名规范:
        local==> l
        remote==> r
        extract==> x
        data pump==> p
        source Trail==>st
        Remote Trail==>rt
    --------------------------
    
    #《《源数据库orcl》》
    
    
    Extract:将重做日志信息抽取存放到本地exttrail文件中
    
        0.开启附加日志功能,开启强制日志模式;强烈建议源端每个涉及复制的表上建立主键或者唯一键
            
            SQL> alter database force logging;
            SQL> alter database add supplemental log data; #数据库最小级别开启
            SQL> create tablespace ggs datafile size 200M autoextend on; 
            SQL> create user ggs identified by ggs;
            SQL> grant dba to ggs;
    
            GGSCI> add trandata schema.<tablename>   #表别级别开启,给需要复制的表添加
            GGSCI> info trandata schema.<tablename>  #查看附加信息
            相关附加日志参数:
            注意: 每小时日志量评估
            select trunc(completion_time),count(*)*100 size_in_MB from
            v$archived_log group by trunc(Completion_time);
    
        1.安装OGG
              mkdir /goldengate
              tar xf ogg.tar -C /goldengate  #ogg.tar为软件名
              chown -R oracle:oinstall /goldengate
    
              cat>>/home/oracle/.bash_profile<<'EOF'
                  export GG_HOME=/goldengate
                  export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
                  alias ggsci='ggsci $GG_HOME/ggsci'
              EOF
    
        2.创建子目录,编辑MGR
            GGSCI>create subdirs
            GGSCI>edit param mgr  添加下面端口
                 port 7809
                 AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60
                 PURGEOLDEXTRACTS /goldengate/dirdat/*,USECHECKPOINTS,MINKEEPHOURS 24   #/goldengate/dirdat/*为抽取日志存放位置
    
        3.定义本地抽取参数文件
            GGSCI(Hostname) 1>edit param lxjack 
                extract lxjack
                ------------------------------------------------
                -- local extract for schema
                -- Author: vmsysjack
                -- Created Date: 2020-02-10
                ------------------------------------------------
                SETENV       (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) #和源系统一致select * from v$nls_parameters where parameters like '%NLS_CHARACTERSET%';
                USERID    ggs@orcl,password ggs  #定义连接抽取源的用户名和密码以及tns,orcl为源库的TNS名
                ExtTrail  dirdat/st              #定义抽取重做日志信息存储地点;将会在$GG_HOME/dirdat/下生成st开头文件
                Table     schema.tablename;      #定义需要抽取的“模式.表名”
    
            注意:当密码使用加密方式的时候,需要使用使用encryptkey default
                例如:    1. 生成密文
                          encrypt password ggs encryptkey default
    
                        2.将第一步生成的密文应用
                            userid ggs,password AAAAAAAAAAAAAAAAACCCCCSGSADGSDGWOXCJKLSJL,encryptkey default
    
        4. 创建extract进程
                    GGSCI(HOSTname) 1> add extract lxjack,threads 2,tranlog,begin now       #RAC源需要配置 ,threads 2表示有2个节点,单节点不用加threads 2 
                    GGSCI(Hostname) 2> add exttrail dirdat/st,extract lxjack,megabytes 100  #添加抽取源文件位置和大小
    
                    注意:当在操作系统删除了exttrail文件后,启动会报 PROCESS ABENDING,使用下面方法解决
                    (1). GGSCI>delete exttrail dirdat/st*  #我这里是测试环境,只有一个文件
                    (2). GGSCI>add exttrail dirdat/st,extract lxjack
    
        5. 启动extract进程,验证extract进程
                    GGSCI(Hostname) 3> start extract lxjack
                    GGSCI(Hostname) 4> info extract lxjack   # l=>local; x=>extract;
                    GGSCI(Hostname) 5> info extract lxjack,showch
                    GGSCI(Hostname) 5> info extract lxjack,detail
    
        6. 验证抽取数据
                GGSCI(Hostname) 5> stats extract lxjack  #再重新开启一个终端,执行DML语句,使用stats extract lxjack查看
    
                注意: 级联更新带来的问题
                    级联更新的触发器等对象存在,对于目标数据库系统上应该关闭或者禁用掉目标
                    数据库上的触发器和级别约束;使用如下语句:
                        SQL> alter table ... disable contraint ...
                        SQL> alter trigger ... disable ...
                        或者使用下面语句:需要数据库版本是10.2.0.5或11.2.0.2之后版本
                        DBOPTIONS suppresstriggers
                
    配置DataPump: 
               本质上是一个Extract Group,需要参数文件,参数文件名字和这个extract group的组名一样。
               参数中需要配置SourceTrail文件在哪里,以及发送的目标系统在哪里
     
        1.定义参数文件          
                   GGSCI(Hostname) 1>edit param lpjack   # l=>local;  p=>pump
                   extract lpjack
                   -------------------------------------------
                   -- Data Pump extract for schema.tablename
                   -- Author: vmsysjack
                   -- Created Date: 2020-02-10
                   --------------------------------------------
                   Uerid ggs@orcl,password ggs
                   PassThru  #透传模式,源表和目标数据库表完全一样,源表与目标表不一致的时候需要用NoPassThru
                   RmtHost   目标主机ip地址,Mgrtort 目标主机mgr进程端口  #定义连接远端主机和端口
                   RmtTrail  dirdat/rt     #定义Remote Trail文件的文件名前缀,r=>remote;表示传递到远端的位置
                   Table     schema.tablename; #传递的表名
    
        2. 创建Data Pump进程
                    GGSCI(Host) 1> add extract lpjack,exttrailsource dirdat/st #定义DataPump进程名,以及需要抽取的源trail文件位置dirdat/st
                    GGSCI(Host) 2> add rmttrail dirdat/rt,extract lpjack,megabytes 100 #定义增加远程trail文件位置和远程trail文件大小
    
        3. 启动Data Pump进程,验证Data Pump进程,统计抽取进程数据
            GGSCI(Host) 3> start extract lpjack
            GGSCI(Host) 4> info extract lpjack
            GGSCI(Host) 5> stats extract lpjack
    
    ##《《目标数据库vmsys》》
    
        0.创建目标数据库需要的表空间和用户
            SQL> create tablespace ggt datafile size 200M autoextend on;
            SQL> create user ggt identified  by ggt;
            SQL> grant dba to ggt;
    
        1.创建全局参数文件,登录目标数据库,创建检查点表
            注意:检查点表作为事务处理的一部分,可以有更好的恢复能力,有共用和专用两种做法
                共用: 所有的replicate共用一个
                专用: 每个replicate独立创建一个
                
                GGSCI(Hostname) 1> edit param ./GLOBALS  #需要执行GGSCI,在GG_HOME目录下
                    GGschema  ggt                     #指定存储架构,此行也可以不写
                    checkpointtable ggt.chkpt            #存储在ggt用户模式下
    
                GGSCI(Hostname) 2> dblogin userid ggt@vmsys,password ggt  #vmsys为目标数据库网络服务名
         
         2. 从数据库层面检查检查点文件
                SQL> show user; --当前还未增加检查点文件
                USER is "ggt"
    
                SQL> select table_name from user_tables;  --ggt模式下没有表
                no rows selected
    
                GGSCI(Hostname) 3> add checkpointtable  --增加检查点表文件
                GGSCI(Hostname) 4> info checkpointtable
    
                SQL> conn ggt/ggt  #ggt为目标数据库创建的用户,即目标数据库登录GGSCI使用的用户
                SQL> desc chkpt
                SQL> desc chkpt_lox
    
                SQL> show user;
                USER is "ggt"
    
                SQL> select table_name from user_tables;
    
                TABLE_NAME
                ------------------------------
                CHKPT_LOX
                CHKPT
    
                SQL> desc chkpt_lox;
                 Name                                      Null?    Type
                 ----------------------------------------- -------- ----------------------------
                 GROUP_NAME                                NOT NULL VARCHAR2(8)
                 GROUP_KEY                                 NOT NULL NUMBER(19)
                 LOG_CMPLT_CSN                             NOT NULL VARCHAR2(129)
                 LOG_CMPLT_XIDS_SEQ                        NOT NULL NUMBER(5)
                 LOG_CMPLT_XIDS                            NOT NULL VARCHAR2(2000)
    
                SQL> desc chkpt;
                 Name                                      Null?    Type
                 ----------------------------------------- -------- ----------------------------
                 GROUP_NAME                                NOT NULL VARCHAR2(8)
                 GROUP_KEY                                 NOT NULL NUMBER(19)
                 SEQNO                                              NUMBER(10)
                 RBA                                       NOT NULL NUMBER(19)
                 AUDIT_TS                                           VARCHAR2(29)
                 CREATE_TS                                 NOT NULL DATE
                 LAST_UPDATE_TS                            NOT NULL DATE
                 CURRENT_DIR                               NOT NULL VARCHAR2(255)
                 LOG_CSN                                            VARCHAR2(129)
                 LOG_XID                                            VARCHAR2(129)
                 LOG_CMPLT_CSN                                      VARCHAR2(129)
                 LOG_CMPLT_XIDS                                     VARCHAR2(2000)
                 VERSION                                            NUMBER(3)
    
                SQL> 
    
    注意: replicate级别增加checkpointTable方式:
            GGSCI> add replicat rejack,exttrail /goldengate/dirdat/vmsys/rt,checkpointTable ggt,rejackcht  
    
            --专有级别创建检查点文件,每个replicat都需要创建一个,各个replicate各自使用; 通过发现这种方式不会自动生成检查表,还是需要手工建立
            create table rejack as select * chkpt where 0=1;
            create table rejack_lox as select * chkpt where 0=1;
    
    开始数据加载.....
    .....
    ..... 当源表之前有数据的时候,需要通过exp,imp(impdump,expdump)存放到目标中
    .....
    
    配置Replicat进程
        
        1. 定义replicat参数文件
                GGSCI(Hostname) 1> edit param rejack  #e=>replicat
                    replicat  rejack
                    --------------------------------------------
                    -- replicat for jack.a
                    -- author: vmsysjack
                    -- Created Date: 2020-02-10
                    --------------------------------------------
                    SETENV  (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
                    USERID  ggt@vmsys,password ggt  #vmsys为目标表的TNS
                    HandleCollisions  #处理冲突的数据,只能在数据初始化期间使用,后续不能使用这个处理冲突
                    AssumeTargetDefs  #源数据表与目标数据库同步的表定义相同时候用此参数,不可以与sourcedefs参数文件同用
                    Map jack.*,Target jack.*;
    
        2. 创建replicat进程
                GGSCI(Hostname) 1> add replicat rejack,exttrail dirdat/rt
    
        3. 启动replicat进程
                GGSCI(Hostname) 2> start replicat rejack
    
        4. 查看并验证replicat
                GGSCI(Hostname) 3> info replicat rejack
                GGSCI(Hostname) 4> stats replicat rejack
    
                
    
    ===================================================================
    一. 表过滤
        1. extract端:
            Table  schema.tablename
        2. replicat端:
            Map srcSchema.tablename,Target dstSchema.tablename
    
    二. 列过滤: 只用抓取或者只复制指定的列,不是所有的列
        1. extract端:
            Table schema.tablename COLS(cola,colb.....);
         注意: 列过滤不可以使用passthru
    
        2. 使用colsExcept 抓取除了列出来的列之外的所有列
            Table schema.tablename colsExcept(colx);      
    
    三. 行过滤: 只复制满足条件的行,分为两种类型(Complex和Non-Complex)
        1. Non-Complex类型:非复杂类型;只能根据行过滤,支持@present,@absent,@null
            1). extract端
                    Table schema.tablename,where (id<100);
            2). replicat端
                    Map schema.tablename,Target schema.tablename,where (id<100);
    
        2. Complex类型:复杂类型,支持各种GG函数,还可以安装操作类型过滤(filter实现)
          for example:
            2.1) 发生在id<100记录上的delete操作语句
                 Map schema.tablename,Target schema.tablename,filter (on delete,id<100);
    
            2.2) 只捕获id<100的记录
                 Map schema.tablename,Target schema.tablename,filter (id<100);
    
            2.3) 只捕获更新,删除操作,以及id<100的记录
                 Table schema.tablename,filter (on delete,on update,id>100);
    
            2.4)列Name中有zhang字样的
                 Table schema.tablename,Filter (@StrFind(name,'zhang')>0)
    
            2.5)函数计算的结果大于120000
                Table schema.tablename,Filter (@compute((salary-tax)*12)>120000)
    
    四. 数据映射,既可以在源端进行,也可以在目标端进行
    
    
    #extract端配置样例1:
        extract   lxjack
        SETENV      (ORACLE_SID=orcl)
        USERID    ggs,PASSWORD ggs
        ExtTrail  ./dirdat/sx
        TranLogOptions  ExcludeUser(username)
        Table   sometable;
    
    #extract端配置样例2:
        extract   lxjack
        SETENV      (ORACLE_SID=orcl)
        USERID    ggs,PASSWORD ggs
        ExtTrail  ./dirdat/sx
        TranLogOptions  ExcludeUser(username)
        Table src.serviceChange,Target tgt.serviceChareg_DIM, #源表与目标表做映射
        colMap(UseDefaults,ID=ServiceChareg_id,modified_at=Timeap); #usedefaults没有明确指出的列在两边都是相同的;需要映射的列需要在usedefaults后面表示出来。
    
    
    #replicat端配置样例3:
        replicat              lrlog5
        SETENV                (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
        SETENV                  (ORACLE_SID=vmsys)
        UserId                ggt,password ggt
        HandleCollisions      
        SourceDefs            dirdef/smsg_logs.defs  #此文件需要定义文件
        Map                   jack.smsg_logs,Target jack.smsg_logs,
        ColMap(UseDefaults,owner="zhangsan")  #在列映射中给这个列加上一个初始值;每当源表中插入新记录,这个新记录复制到目标数据表后,owner字段会被自动赋值为zhangsan
    
    
    #replicat端映射配置样例:
        1). 当源表与目标表结构一致,在replicat参数文件中使用AssumeTargetDefs参数,代表两端结构一致。
    
        2). 当源表与目标表结构不一致,需要映射,映射语句:
            Map schema.tablename,Target schema.tablename,Colmap (UseDefaults,cola=cola);
    
    
    --------------------------------------------------------------------------------------------------
    
    需要哪一个数据库的数据定义文件,取决于映射操作是在哪里进行的,如果在目标端(replicat)完成映射,需要在源数据库定义文件,然后将生成的文件复制到目标数据库上,最后在replicat参数文件中引用它;
    如果在源端(extract)完成映射,就反过来。
    
    1.创建数据定义文件:
        GGSCI(Hostname) 1> edit params defgen
        DefsFile   ./dirdef/rejackt2.defs #用未来要引用这个定义文件的replicat组名字来命名
        UserId  ggs,Password ggs
        Table   schema.tablename;
    
    2.将定义文件使用工具生成定义文件:
        ./defgen  paramfile dirtrm/defgen.prm 
    
    3.将第二步生成的defgen.prm复制到另外一台机器的$GG_HOME/dirdef文件夹中
    
    4.修改参数
        4.1)注释文本-->>AssumeTargetDefs
             增加文本-->>SourceDefs dirdef/rejackt2.defs
    -----------------------------
    colmap(Usedefaults,owner="liulingfeng",ab=)  目标表有一列为空应该将这列写最后
    colmap(Usedefaults,ab=,owner="liulingfeng")  目标表一列为空这种写法是错误的
    AssumeTargetDefs 当能够通过colmap实现和源结构一致的情况下可以使用此参数,前提要表的结构一致
    定义文件用于当源表和目标表不一致的情况下.可以使用.
    
    --------------------------------------------------------------------------
    1. 设置Trail文件的删除策略:
        将下面的参数写入到Manager进程的参数文件中
        PurgeOldExtracts  /ggs/dirdat/sa*,
        UseCheckpoints,       --使用检查点
        MinKeepHours 1;       --即使检查点确认了删除后,还保留一个小时
        FrequencyMinutes 30;  --清理动作的频率为30分钟一次
    
    2. 数据压缩
        GG提供了数据压缩功能,对于低带宽的网络是有意义的,当设置了压缩,目标端Collector进程会自动的进行解压缩操作,然后写入Remote Trail文件中;数据的最大压缩比例可以达到5:1,默认数据不压缩。
        例如:
        Extract lpjack
        PassThru
        RmtHost   dstIP,Mgrtort 7809,Compress,CompressThreshold 2048
        #compressThreshold 2048 为压缩的最小数据块单位大小
        RmtTrail  dirdat/rs
        Table     schema.tablename;
    
    --------------------------------------------------------------------------
    1. 执行存储过程
        Map source_table,Target target_table,
        SQLEXEC (SPNAME spanme,PARAME (in_paraml=cola)), 
                #SPNAME指定存储过程名字,PARAMS参数定义的是IN参数和列的映射关系
        COLMAP (Usedefaults,coln=@GETVAL(spname,out_paramn));
    
    select name,value from v$diag_info; #获取跟踪诊断的相关信息
    
    select * from v$pwfile_users; #获取授予sysdba权限的用户
  • 相关阅读:
    新收入准则下的通用收入处理场景
    如果不先提出最佳问题,你怎么去找最佳答案呢?
    复星集团
    CFO的三重境界:阿里CFO蔡崇信教给我的那些事儿
    《让财务助推业务—业财融合》
    一、原材料、半成品、成品的采用标准成本法管理 [转发]
    顶级投行?IT->Data Analysis->Forecast->Future.
    SAP 合资公司解决方案
    SAP-关于分类账(Ledgers)的总结
    百度网盘目录树在线V2.0版功能介绍~
  • 原文地址:https://www.cnblogs.com/vmsysjack/p/12426867.html
Copyright © 2020-2023  润新知