Oracle MV part4_2 競合解消(時間優先)

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 => 'empsecond',
     type => 'TABLE',
     ddl_text => 'ALTER TABLE scott_rep.empsecond ADD (timestamp DATE)');
     END;
     /
    
  4. 影響のあったオブジェクトのレプリケーション・サポートを再作成します。
     BEGIN
     DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
     sname => 'scott_rep',
     oname => 'empsecond',
     type => 'TABLE',
     min_communication => TRUE);
     END;
     /
    
  5. 行が挿入または更新されたときにタイムスタンプを記録するトリガーを作成
     BEGIN
     DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
     gname => 'scottrep_repg',
     type => 'TRIGGER',
     oname => 'insert_time',
     sname => 'scott_rep',
     ddl_text => 'CREATE TRIGGER scott_rep.insert_time
     BEFORE
     INSERT OR UPDATE ON scott_rep.empsecond FOR EACH ROW
     BEGIN
     IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
     :NEW.TIMESTAMP := SYSDATE;
     END IF;
     END;');
     END;
     /
    
  6. ターゲット表の列グループを作成します。
     BEGIN
     DBMS_REPCAT.MAKE_COLUMN_GROUP (
     sname => 'scott_rep',
     oname => 'empsecond',
     column_group => 'empsecond_timestamp_cg',
     list_of_column_names => 'idsecond,namesecond,timestamp');
     END;
     /
    
  7. 指定した表に対して競合解消メソッドを定義します。この例では、以前作成したtimestamp 列を使用して、LATEST TIMESTAMP 競合解消メソッドを指定します。
     BEGIN
     DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
     sname => 'scott_rep',
     oname => 'empsecond',
     column_group => 'empsecond_timestamp_cg',
     sequence_no => 1,
     method => 'LATEST TIMESTAMP',
     parameter_column_name => 'timestamp');
     END;
     /
    
  8. 競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。
     BEGIN
     DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
     sname => 'scott_rep',
     oname => 'empsecond',
     type => 'TABLE',
     min_communication => TRUE);
     END;
     /
    
  9. レプリケーション・アクティビティを再開します。
     BEGIN
     DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
     gname => 'scottrep_repg');
     END;
     /
    

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