使用dbms_rectifier_diff來比較兩個表格資料

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:252

分甘同味,独食难肥:

<< 轉文自 http://springcs.pixnet.net/blog/post/21568213 >>

在Oracle replication應用中,介紹一個dbms_rectifier_diff package,
他可以拿來分析比較兩個表格 的內容差異,如果你有這樣的應用需求,直接使用這個套件可以省去自己寫code的時間。

SQL> select * from j1;

LBO QDATE SEQNUM NAME
------------ -------------- ---------- --------------------
1 12-10月-05 99999 Jack
1 12-10月-05 99998 Jack
1 14-10月-05 99997 Jack
2 14-10月-05 99999 Tom
2 14-10月-05 99998 Tom
2 14-10月-05 99997 Tom
3 14-10月-05 99999 Joy
3 14-10月-05 99998 Joy
3 14-10月-05 99997 Joy
10 12-1月 -06 99999 god
1 11-10月-05 99996 Jack

已選取 11 個資料列.

SQL> select * from j2;

LBO QDATE SEQNUM NAME
------------ -------------- ---------- --------------------
2 14-10月-05 99999 Tom
2 14-10月-05 99998 Tom
2 14-10月-05 99997 Tom
3 14-10月-05 99999 Joy
3 14-10月-05 99998 Joy
3 14-10月-05 99997 Joy
10 12-1月 -06 99999 god
1 13-11月-05 99999 Jack

已選取 8 個資料列.

建立一個架構完全相同的表格missrow,等會將用來儲存比較表格後發生差異的資料列

SQL> create table missrow as select * from j1 where 1 = 2;

已建立表格.

建立儲存差異資料rowid data的表格
SQL> create table missdata (r_id rowid,present varchar2(100),absent varchar2(100));

已建立表格.

開始進行比較程序
exec dbms_rectifier_diff.differences(sname1 => 'SYS',oname1 => 'J1',sname2 => 'SYS',oname2 => 'J2', where_clause => NULL,column_list => NULL,missing_rows_sname => 'SYS',missing_rows_oname1 => 'missrow',missing_rows_oname2 => 'missdata',missing_rows_site => '',max_missing => 500,commit_rows => 100);

已順利完成 PL/SQL 程序.

檢查比較後差異的資料
SQL> select * from missrow;

LABORACCOUNT PDATE SEQ1 NAME
------------ -------------- ---------- --------------------
1 11-10月-05 99996 Jack
1 12-10月-05 99998 Jack
1 12-10月-05 99999 Jack
1 14-10月-05 99997 Jack
1 13-11月-05 99999 Jack

SQL> select * from missdata;

R_ID PRESENT ABSENT
------------------ ---------------------------------------- ------------------------------------
AAAM2BAABAAAO2aAAA TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
AAAM2BAABAAAO2aAAB TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
AAAM2BAABAAAO2aAAC TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
AAAM2BAABAAAO2aAAD TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM
AAAM2BAABAAAO2aAAE TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM TEST.REGRESS.RDBMS.DEV.US.ORACLE.COM

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】