ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 物化视图归档结合goldengate增量抽取测试用例

物化视图归档结合goldengate增量抽取测试用例

原创 Linux操作系统 作者:piliskys 时间:2011-03-10 14:55:44 0 删除 编辑

物化视图归档结合goldengate增量抽取测试用例
测试表:DJ_YZCWSBQC简称表 td
环境介绍 :分为三个库
   A 生产环境,字符集,西文
    B 物化视图区(归档) 字符集,西文
   C 抽取准备区
目标:   在c库中实现实现td表的增量dml记录,保留最新td表记录,保留td变缓慢变化记录过程。

环境准备:
1,在B库中建立与A生产环境相同名的物化视图,建立对应主键,(在此以rowid快速刷新为例,
  角本 create materialized view DJ_YZCWSBQC
    refresh fast on demand
    with rowid
    as
    select *
    from sjsck.dj_yzcwsbqc@bi3_197
2,在C库中建一记录dml的日志表,除主键字段外,增加操作时间、操作类型、操作进程号
角本 create table LOG_DJ_YZCWSBQC
   (
  NSRDZDAH NUMBER(20) not null,
  ZSXM_DM  CHAR(4) not null,
  NSQX_DM  CHAR(4) not null,
  ND       NUMBER(4) not null,
  YF       NUMBER(2) not null,
  SSSQ_Q   DATE not null,
  SSSQ_Z   DATE not null,
  OPT_DATE DATE,
  OPT_TYPE VARCHAR2(20),
  LOG_SCN  NUMBER
  )
3,在C库中建立一全量表DJ_YZCWSBQC,与物化视图区DJ_YZCWSBQC表相同,在此表基础上增加一操作时间字段,
4,在C库中建立一缓慢变化表TAG_DJ_YZCWSBQC,与物化视图区DJ_YZCWSBQC表相同,在此表基础上增加一操作时间 ,有效期起、有效期止、有效标志字段,
同步3、4步表记录,与物化视图记录相同,初始化,操作时间可默认一统一时间如当前时间, 有效期起、止可设立为19000101、29000101,都为有效'Y'。

实现过程:
   1,物化视图刷新实现物化视图与生产环境同步。
在物化视图区(B库),执行execute dbms_mview.refresh('DJ_YZCWSBQC');   刷新物化视图。  
   2,goldengate同步,实现C库中2,3步数据。
  goldengate分三个进程,
     落地文件
EXTRACT exxgm1
--EOFDELAY 200
setenv ( NLS_LANG = AMERICAN_AMERICA.US7ASCII )
USERID SJZCQ@zjdb, PASSWORD oracle
DBOPTIONS ALLOWUNUSEDCOLUMN
EXTTRAIL ./dirdat/ex
TABLE  SJZCQ.DJ_YZCWSBQC;
  传送文件
EXTRACT csora01
PASSTHRU
RMTHOST 10.1.147.183, MGRPORT 9840,COMPRESS
RMTTRAIL ./dirdat/bj/rx
TABLE  sjzcq.dj_yzcwsbqc;
  同步数据
同步数据与前两个进程一般不在同一个goldengate服务下,为远程目标的一goldengate,主要实现快照表与日志表的数据填充。
REPLICAT csror01
setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
USERID system@adp, PASSWORD oracle
SOURCEDEFS ./dirdef/MYDEFS.DEF
DISCARDFILE ./dirrpt/rxgmbj.dsc, PURGE
MAP SJZCQ.dj_yzcwsbqc, TARGET ZJZCQ.dj_yzcwsbqc,
COLMAP (USEDEFAULTS,
 OPT_DATE=@getenv("GGHEADER", "COMMITTIMESTAMP"));
MAP SJZCQ.dj_yzcwsbqc, TARGET ZJZCQ.LOG_dj_yzcwsbqc,INSERTALLRECORDS,
COLMAP (USEDEFAULTS,
 OPT_DATE=@getenv("GGHEADER", "COMMITTIMESTAMP"),
 OPT_TYPE=@getenv("GGHEADER", "OPTYPE"),
LOG_SCN=@GETENV("TRANSACTION", "CSN"))); 
   3,存储过程编写,根据2,3步中表记录实现第4步表数据。
  存储过程编写要求,
     要求此存储过程放在与日志表,快照表相同的用户下,可得到源表主键的一个表,如快照表。
     过程可实现如以上步骤都完成,可基于一配制表,增加表名,实现缓慢变化表的自动填充。
  具体存储过程可参看 ZJZCQ用户下etl_tab_pck包  

心得:
1,物化视图刷新时,对一条记录多次操作,只会刷新最后一次操作。
2,物化视图如基于rowid建,则goldengate ext落地文件时必须加参数 DBOPTIONS ALLOWUNUSEDCOLUMN,否则报以下错【
ERROR   OGG-00751  Failed to validate table SJZCQ.DJ_YZCWSBQC. Likely due to existence of unused columns. It will cause data integrity issue if you are not using sourcedefs in downstream Replicat or the target table doesn't have the same unused columns due to ASSUMETARGETDEFS or DDL replication. Please use 'DBOPTIONS ALLOWUNUSEDCOLUMN' parameter to override this.】
3,同步初期尽量源与目标表结构相同,可利用角本或其它程序,实现【自动生成】抽取准备区表结构(C库)、goldengate三程序角本。
4,存储过程需考虑增量抽取时间范围的可取性,保证增量抽取的灵活化。

 

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

请登录后发表评论 登录
全部评论

注册时间:2008-01-14

  • 博文量
    68
  • 访问量
    165472