Oracle MV テスト サイト優先 競合発生なし

Oracle において MV マテリアライズド・ビュー とは以下を示します。

マテリアライズド・ビュー サイトの優先順位

  1. 優先順位競合解消メソッドを定義したオブジェクト
     scott_rep.empfirst
    
  2. オブジェクトのレコードの確認
     conn scott_rep/tiger
     select * from empfirst;
    

マテリアライズド・ビュー テスト手順

  1. 下記テスト内容をそれぞれ実施
    1. マスターサイト 挿入→結果:○
    2. レプリケーションサイト 挿入→結果:○
    3. レプリケーションサイト 行削除→結果:○
    4. マスターサイト 行削除→結果:○
    5. (競合なし) マスターサイト 更新→結果:○
    6. (競合なし) レプリケーションサイト 更新→結果:○
    7. (競合有り) マスターサイトを更新して、レプリケーションサイトを更新。レプリケーションサイトが優先されるか→結果:○
    8. (競合有り) レプリケーションサイト表を更新して、マスターサイト表を行削除→結果:競合発生
    9. (競合有り) レプリケーションサイト表を行削除、マスターサイト表を更新→結果:行削除○
  2. 高速リフレッシュの実行(レプリケーションサイトで実行)
     conn mviewadmin/mviewadmin
     execute dbms_refresh.refresh('mviewadmin.scottrep_refg');
    
  3. 競合の確認(マスターサイトで実行)
     conn repadmin/repadmin
    
     select deferred_tran_id,origin_tran_db,
       start_time,error_msg,destination
       from deferror;
    
  4. 競合の確認(レプリケーションサイトで実行)
     conn mviewadmin/mviewadmin
    
     select deferred_tran_id,origin_tran_db,
       start_time,error_msg,destination
       from deferror;
    

※下記テスト内容詳細

  1. マスターサイト 挿入→結果:○
     insert into empfirst (empno,ename,hiredate,deptno)
     values (5555,'ABC',sysdate,55);
     commit;
    
  2. レプリケーションサイト 挿入→結果:○
     insert into empfirst (empno,ename,hiredate,deptno)
     values (7777,'JEF',sysdate,77);
     commit;
    
  3. レプリケーションサイト 行削除→結果:○
     delete from empfirst
     where empno=1112;
     commit;
    
  4. マスターサイト 行削除→結果:○
     delete from empfirst
     where empno=7654;
     commit;
    
  5. (競合なし) マスターサイト 更新→結果:○
     update empfirst set ename='JEF_UPDATE'
     where empno = 7777;
     commit;
    
  6. (競合なし) レプリケーションサイト 更新→結果:○
     update empfirst set ename='JEF_UP_R'
     where empno = 7777;
     commit;
    
  7. (競合有り) マスターサイトを更新して、レプリケーションサイトを更新。レプリケーションサイトが優先されるか→結果:○
     □■master update
     update empfirst set ename='JEF_MASTER'
     where empno = 7777;
     commit;
    
     ■■replication update
     update empfirst set ename='JEF_REPLI'
     where empno = 7777;
     commit;
    
  8. (競合有り) レプリケーションサイト表を更新して、マスターサイト表を行削除→結果:競合発生
     ■■replication update
     update empfirst set ename='JEF_DELETE'
     where empno = 7777;
     commit;
     □■master delete
     delete from empfirst
     where empno=7777;
     commit;
    
    1. 競合解消手順
       ■■replication stop
       conn mviewadmin/mviewadmin
       exec dbms_reputil.replication_off;
      
       ■■replication delete
       conn scott_rep/tiger
       delete from empfirst
       where empno=7777;
       commit;
      
       ■■replication start
       conn mviewadmin/mviewadmin
       exec dbms_reputil.replication_on;
      
       ■■replication deferror
       conn mviewadmin/mviewadmin
       exec dbms_defer_sys.delete_error(null,null)
      
       □■master deferror
       conn repadmin/repadmin
       exec dbms_defer_sys.delete_error(null,null)
      
       □■master select
       conn repadmin/repadmin
       select deferred_tran_id,origin_tran_db,
         start_time,error_msg,destination
         from deferror;
      
  9. (競合有り) レプリケーションサイト表を行削除、マスターサイト表を更新→結果:行削除○
     ■■replication deferror
     delete from empfirst
     where empno=5555;
     commit;
     □■master update
     update empfirst set ename='ABC_MAS'
     where empno = 5555;
     commit;
    

ご訪問頂き有難う御座います。 当サイトを効率良く使うためにまずは FrontPage を見て下さい。 検索方法、一覧表示などの各情報を纏めています。
当サイトの説明 → Frontpage