Oracle MV part4_1 競合解消(サイト優先)

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

競合解消(サイト優先)

  競合発生時にサイトを基準に更新の衝突を解消する手順を示す。

マスターサイトでの作業

  1. マスターサイトに接続
     connect repadmin/repadmin@rdb01
    
  2. マスターグループを停止
     BEGIN
     DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
     gname => 'scottrep_repg');
     END;
     /
    
  3. サイトの値を格納する表に、サイトの列を追加します。
     BEGIN
     DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
     sname => 'scott_rep',
     oname => 'empfirst',
     type => 'TABLE',
     ddl_text => 'ALTER TABLE scott_rep.empfirst ADD (site VARCHAR2(20))');
     END;
     /
    
  4. 影響のあったオブジェクトのレプリケーション・サポートを再作成します。
     BEGIN
     DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
     sname => 'scott_rep',
     oname => 'empfirst',
     type => 'TABLE',
     min_communication => TRUE);
     END;
     /
    
  5. 行が挿入または更新されたときにサイトのグローバル名を記録するトリガーを作成
     BEGIN
     DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
     gname => 'scottrep_repg',
     type => 'TRIGGER',
     oname => 'insert_site',
     sname => 'scott_rep',
     ddl_text => 'CREATE TRIGGER scott_rep.insert_site
     BEFORE
     INSERT OR UPDATE ON scott_rep.empfirst FOR EACH ROW
     BEGIN
     IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
     SELECT global_name INTO :NEW.SITE FROM GLOBAL_NAME;
     END IF;
     END;');
     END;
     /
    
  6. サイトの優先順位による競合解消メカニズムを使用する列グループに、新しい列が含まれていることを確認する。列グループを作成していない場合は、DBMS_REPCAT.MAKE_COLUMN_GROUPプロシージャを使用して、新しい列グループを作成する。
     BEGIN
     DBMS_REPCAT.MAKE_COLUMN_GROUP (
     sname => 'scott_rep',
     oname => 'empfirst',
     column_group => 'empfirst_sitepriority_cg',
     list_of_column_names => 'empno,ename,hiredate,deptno,site');
     END;
     /
    
  7. サイトの優先順位の値をレプリケート環境のサイトに割り当てる前に、定義した値を保持するサイトの優先グループを作成する。
     BEGIN
     DBMS_REPCAT.DEFINE_SITE_PRIORITY (
     gname => 'scottrep_repg',
     name => 'empfirst_sitepriority_pg');
     END;
     /
    
  8. レプリケーション環境のサイトごとに優先順位の値を定義します。
     BEGIN
     DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
     gname => 'scottrep_repg',
     name => 'empfirst_sitepriority_pg',
     site => 'rdb01',
     priority => 50);
     END;
     /
     BEGIN
     DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
     gname => 'scottrep_repg',
     name => 'empfirst_sitepriority_pg',
     site => 'xdv1',
     priority => 100);
     END;
     /
    
  9. SITE PRIORITY解消メソッドをレプリケートをレプリケート表に追加します。
     BEGIN
     DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
     sname => 'scott_rep',
     oname => 'empfirst',
     column_group => 'empfirst_sitepriority_cg',
     sequence_no => 1,
     method => 'SITE PRIORITY',
     parameter_column_name => 'site',
     priority_group => 'empfirst_sitepriority_pg');
     END;
     /
    
  10. 競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。
     BEGIN
     DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
     sname => 'scott_rep',
     oname => 'empfirst',
     type => 'TABLE',
     min_communication => TRUE);
     END;
     /
    
  11. レプリケーション・アクティビティを再開します。
     BEGIN
     DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
     GNAME => 'scottrep_repg');
     END;
     /
    

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