Oracle® Database

アドバンスト・レプリケーション・マネージメントAPIリファレンス

11gリリース2 (11.2)

B72090-02(原本部品番号:E10707-05)

2013年6月

Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス, 11gリリース2 (11.2)

B72090-02

Copyright © 1996, 2013, Oracle and/or its affiliates. All rights reserved.

原本著者:  Randy Urbano

原本協力者:  N.Arora, S.Balaraman、Y.Chan、A.Downing、C.Elsbernd、Y.Feng、J.Galagali、D.Goddard、L.Kaplan、V.Krishnamurthy、A.Lakshminath、P.Lane、J.Liu、E.Lu、P.McElroy、V.Moore、M.Pratt、A.Rajaram、N.Shodhan、W.Smith、J.Stamos、J.Stern、M.Subramaniam、L.Wong、D.Zhang

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

第I部 レプリケーション環境の構成

1 アドバンスト・レプリケーションの概要

- レプリケーション環境構築の概要

- 作業を開始する前に

2 レプリケーション・サイトの構成

- レプリケーション・サイト設定の概要

- マスター・サイトの設定

- orc1.example.comの設定

- orc2.example.comの設定

- orc3.example.comの設定

- マスター・サイト間のスケジュール・リンクの作成

- マテリアライズド・ビュー・サイトの設定

- mv1.example.comの設定

- mv2.example.comの設定

3 マスター・グループの作成

- マスター・グループ作成の概要

- 作業を開始する前に

- マスター・グループの作成

4 デプロイメント・テンプレートの作成

- Oracleデプロイメント・テンプレートの概念

- デプロイメント・テンプレートを作成する前に

- デプロイメント・テンプレートの作成

- デプロイメント・テンプレートをパッケージ化してインスタンス化

- デプロイメント・テンプレートのパッケージ化

- デプロイメント・テンプレートをパッケージ化してオフライン・インスタンシエーション

- デプロイメント・テンプレートをパッケージ化してオンライン・インスタンシエーション

- インスタンス化スクリプトのファイルへの保存

- インスタンス化ファイルの配布

- デプロイメント・テンプレートのインスタンス化

- インスタンス化後のリフレッシュ・グループのリフレッシュ

5 マテリアライズド・ビュー・グループの作成

- マテリアライズド・ビュー・グループ作成の概要

- マテリアライズド・ビュー・グループの作成

- mv1.example.comにマテリアライズド・ビュー・グループを作成

- mv2.example.comにマテリアライズド・ビュー・グループを作成

6 競合解消の構成

- 競合解消の準備

- 更新の競合の競合解消メソッドの作成

- 上書きおよび廃棄による競合解消メソッド

- 最小および最大の競合解消メソッド

- タイムスタンプによる競合解消メソッド

- 加算による競合解消メソッドと平均による競合解消メソッド

- 優先グループによる競合解消メソッド

- サイトの優先順位による競合解消メソッド

- 一意性競合の競合解消メソッドの作成

- 削除の競合防止メソッドの作成

- 動的所有権の競合防止メソッド

- ワークフロー

- トークン渡し

- 行の所有者の検索

- 所有権の取得

- 変更の適用

- 競合解消の監査

- 競合解消統計の収集

- 競合解消統計の表示

- 競合解消統計の取消し

- 統計情報の消去

第II部 レプリケーション環境の管理と監視

7 マスター・レプリケーション環境の管理

- マスター定義サイトの変更

- オプション1: すべてのマスター・サイトが利用可能

- オプション2: 旧マスター定義サイトが利用不可

- 新しいマスター・サイトの追加

- マスター・グループを静止することなく、新しいマスター・サイトを追加

- 全データベースのエクスポートまたはインポートの使用、あるいは変更ベースのリカバリの使用

- オブジェクトレベルのエクスポート/インポートの使用

- 静止中のマスター・グループに新しいマスター・サイトを追加

- ADD_MASTER_DATABASEプロシージャを使用して新しいマスター・サイトを追加

- エクスポート/インポートを使用するオフライン・インスタンシエーションで新しいマスター・サイトを追加

- マスター・グループからマスター・サイトの削除

- 使用不可能なマスター・サイトの削除

- データ・ディクショナリ・ビュー内のコメント・フィールドの更新

- プロシージャ・レプリケーションの使用

- プロシージャ・レプリケーションの制限事項

- ユーザー定義型とプロシージャ・レプリケーション

- トランザクションのシリアル化

- レプリケート・プロシージャのサポートの生成

8 マテリアライズド・ビュー・レプリケーション環境の管理

- マテリアライズド・ビューのリフレッシュ

- マテリアライズド・ビュー・グループのマスター・サイトの変更

- マテリアライズド・ビュー・グループおよびオブジェクトの削除

- デプロイメント・テンプレートで作成されたマテリアライズド・ビュー・グループの削除

- パブリックのDROP_SITE_INSTANTIATIONの使用

- プライベートのDROP_SITE_INSTANTIATIONの使用

- 手動で作成されたマテリアライズド・ビュー・グループまたはオブジェクトの削除

- 手動で作成されたマテリアライズド・ビュー・グループの削除

- マテリアライズド・ビュー・サイトのオブジェクトの削除

- マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのクリーンアップ

- マテリアライズド・ビュー・グループの削除後のクリーンアップ

- 個別のマテリアライズド・ビュー・サポートのクリーンアップ

- マテリアライズド・ビュー・ログの管理

- マテリアライズド・ビュー・ログの変更

- マテリアライズド・ビュー・ログ記憶域パラメータの変更

- 列の追加のためのマテリアライズド・ビュー・ログの変更

- マテリアライズド・ビュー・ログ領域の管理

- マテリアライズド・ビュー・ログからの行のパージ

- マテリアライズド・ビュー・ログの切捨て

- マテリアライズド・ビュー・ログが含まれるマスター表の再編成

- 再編成通知

- マスターの切捨て

- データベース表の再編成方法

- マテリアライズド・ビュー・ログの削除

- エクスポート/インポートによるマテリアライズド・ビュー・サイトのオフライン・インスタンシエーション

- マテリアライズド・ビュー・グループに対するグループ所有者の使用

9 レプリケーション・オブジェクトおよびキューの管理

- 静止中のマスター・グループにあるレプリケート・オブジェクトの変更

- 変更をレプリケートしない表の変更

- レプリケーションの使用禁止

- レプリケーションの再有効化

- レプリケート・トリガーの起動を1回のみにする

- レプリケート表でのLONG列のLOB列への変換

- レプリケート表間の違いの判別

- DIFFERENCESプロシージャの使用

- RECTIFYプロシージャの使用

- 遅延トランザクション・キューの管理

- 遅延トランザクション・キューのプッシュ

- 遅延トランザクション・キューのパージ

- ANYDATA型を使用した遅延コールの引数の値の判定

- エラー・キューの管理

- 受信者としてのエラー・トランザクションの再実行

- 代替ユーザーとしてのエラー・トランザクションの再実行

10 レプリケーション環境の監視

- マスター・レプリケーション環境の監視

- マスター・サイトの監視

- マスター・サイトの一般情報のリスト表示

- マスター・グループの監視

- マスター・グループに関係するマスター・サイトのリスト表示

- マスター・グループの一般情報のリスト表示

- マスターの監視

- マスターでのマテリアライズド・ビューの情報のリスト表示

- マスターにあるマテリアライズド・ビュー・ログの情報のリスト表示

- マテリアライズド・ビュー・ログを使用するマテリアライズド・ビューのリスト表示

- マスターにあるデプロイメント・テンプレートの情報のリスト表示

- マテリアライズド・ビュー・サイトの監視

- マテリアライズド・ビュー・サイトの一般情報のリスト表示

- マテリアライズド・ビュー・グループの一般情報のリスト表示

- マテリアライズド・ビューの情報のリスト表示

- マテリアライズド・ビューのマスター情報のリスト表示

- マテリアライズド・ビューのプロパティのリスト表示

- マテリアライズド・ビュー・サイトにあるリフレッシュ・グループの情報のリスト表示

- マテリアライズド・ビュー・サイトにある各リフレッシュ・ジョブのジョブIDの判定

- 現在リフレッシュしているマテリアライズド・ビューの判定

- 管理要求の監視

- 管理要求の一般情報のリスト表示

- 管理要求エラーの原因の判定

- 管理要求を実行するジョブの一般情報のリスト表示

- 各do_deferred_repcat_adminジョブの定義のチェック

- 遅延トランザクション・キューの監視

- トランザクション伝播の監視

- 各接続先マスター・サイトの遅延トランザクションの数のリスト表示

- レプリケーション・サイトにあるプッシュ・ジョブの一般情報のリスト表示

- プッシュ・ジョブの次回開始時刻および間隔の判定

- 伝播のためにキューに入れられているトランザクションの合計数の判定

- 正常に伝播されたトランザクションのパージの監視

- パージ・ジョブの一般情報のリスト表示

- パージ・ジョブの定義のチェック

- 最後の削除以降の時間の長さの判定

- パージされたトランザクションの合計数の判定

- エラー・キューの監視

- レプリケーション・サイトにあるエラー・トランザクションの一般情報のリスト表示

- エラー・トランザクションの割合の判定

- 各起点マスター・サイトからのエラー・トランザクションの数のリスト表示

- レプリケーション・サイトのエラー・トランザクションに関するエラー・メッセージのリスト表示

- レプリケーション・サイトのエラー操作の判定

- レプリケーション環境のパフォーマンスの監視

- レプリケーション・トランザクションの行変更の平均数の追跡

- 遅延トランザクション・キューに入るトランザクションの率の追跡

- トランザクションの伝播のために作成されるネットワークの平均通信量の判定

- リモート・サイトでトランザクションを適用するための平均時間の判定

- パラレル伝播ジョブがスリープに費やす時間の割合の判定

- DEFSCHEDULEビューのリモート・マスター・サイトに関する統計の消去

- V$REPLPROPを使用した遅延トランザクションのパラレル伝播の監視

- 遅延トランザクションを伝播するデータベースの判定

- 現在リモート・マスターに伝播されているトランザクションの判定

第III部 レプリケーション・マネージメントAPIパッケージ・リファレンス

11 レプリケーション・マネージメントAPIリファレンスの概要

- Oracleレプリケーション・マネージメントAPIの使用例

- レプリケーション・マネージメントAPIを使用する際の考慮事項

- Advanced Replicationインタフェースとレプリケーション・マネージメントAPI

- 日時データ型および期間データ型の略称

12 DBMS_DEFER

- DBMS_DEFERサブプログラムの概要

- CALLプロシージャ

- COMMIT_WORKプロシージャ

- datatype_ARGプロシージャ

- TRANSACTIONプロシージャ

13 DBMS_DEFER_QUERY

- DBMS_DEFER_QUERYサブプログラムの概要

- GET_ARG_FORMファンクション

- GET_ARG_TYPEファンクション

- GET_CALL_ARGSプロシージャ

- GET_datatype_ARGファンクション

- GET_OBJECT_NULL_VECTOR_ARGファンクション

14 DBMS_DEFER_SYS

- DBMS_DEFER_SYSサブプログラムの概要

- ADD_DEFAULT_DESTプロシージャ

- CLEAR_PROP_STATISTICSプロシージャ

- DELETE_DEFAULT_DESTプロシージャ

- DELETE_DEF_DESTINATIONプロシージャ

- DELETE_ERRORプロシージャ

- DELETE_TRANプロシージャ

- DISABLEDファンクション

- EXCLUDE_PUSHファンクション

- EXECUTE_ERRORプロシージャ

- EXECUTE_ERROR_AS_USERプロシージャ

- PURGEファンクション

- PUSHファンクション

- REGISTER_PROPAGATORプロシージャ

- SCHEDULE_PURGEプロシージャ

- SCHEDULE_PUSHプロシージャ

- SET_DISABLEDプロシージャ

- UNREGISTER_PROPAGATORプロシージャ

- UNSCHEDULE_PURGEプロシージャ

- UNSCHEDULE_PUSHプロシージャ

15 DBMS_OFFLINE_OG

- DBMS_OFFLINE_OGサブプログラムの概要

- BEGIN_INSTANTIATIONプロシージャ

- BEGIN_LOADプロシージャ

- END_INSTANTIATIONプロシージャ

- END_LOADプロシージャ

- RESUME_SUBSET_OF_MASTERSプロシージャ

16 DBMS_RECTIFIER_DIFF

- DBMS_RECTIFIER_DIFFサブプログラムの概要

- DIFFERENCESプロシージャ

- RECTIFYプロシージャ

17 DBMS_REFRESH

- DBMS_REFRESHサブプログラムの概要

- ADDプロシージャ

- CHANGEプロシージャ

- DESTROYプロシージャ

- MAKEプロシージャ

- REFRESHプロシージャ

- SUBTRACTプロシージャ

18 DBMS_REPCAT

- DBMS_REPCATサブプログラムの概要

- ADD_GROUPED_COLUMNプロシージャ

- ADD_MASTER_DATABASEプロシージャ

- ADD_NEW_MASTERSプロシージャ

- ADD_PRIORITY_datatypeプロシージャ

- ADD_SITE_PRIORITY_SITEプロシージャ

- ADD_conflicttype_RESOLUTIONプロシージャ

- ALTER_CATCHUP_PARAMETERSプロシージャ

- ALTER_MASTER_PROPAGATIONプロシージャ

- ALTER_MASTER_REPOBJECTプロシージャ

- ALTER_MVIEW_PROPAGATIONプロシージャ

- ALTER_PRIORITYプロシージャ

- ALTER_PRIORITY_datatypeプロシージャ

- ALTER_SITE_PRIORITYプロシージャ

- ALTER_SITE_PRIORITY_SITEプロシージャ

- CANCEL_STATISTICSプロシージャ

- COMMENT_ON_COLUMN_GROUPプロシージャ

- COMMENT_ON_MVIEW_REPSITESプロシージャ

- COMMENT_ON_PRIORITY_GROUPプロシージャ

- COMMENT_ON_REPGROUPプロシージャ

- COMMENT_ON_REPOBJECTプロシージャ

- COMMENT_ON_REPSITESプロシージャ

- COMMENT_ON_SITE_PRIORITYプロシージャ

- COMMENT_ON_conflicttype_RESOLUTIONプロシージャ

- COMPARE_OLD_VALUESプロシージャ

- CREATE_MASTER_REPGROUPプロシージャ

- CREATE_MASTER_REPOBJECTプロシージャ

- CREATE_MVIEW_REPGROUPプロシージャ

- CREATE_MVIEW_REPOBJECTプロシージャ

- DEFINE_COLUMN_GROUPプロシージャ

- DEFINE_PRIORITY_GROUPプロシージャ

- DEFINE_SITE_PRIORITYプロシージャ

- DO_DEFERRED_REPCAT_ADMINプロシージャ

- DROP_COLUMN_GROUPプロシージャ

- DROP_GROUPED_COLUMNプロシージャ

- DROP_MASTER_REPGROUPプロシージャ

- DROP_MASTER_REPOBJECTプロシージャ

- DROP_MVIEW_REPGROUPプロシージャ

- DROP_MVIEW_REPOBJECTプロシージャ

- DROP_PRIORITYプロシージャ

- DROP_PRIORITY_GROUPプロシージャ

- DROP_PRIORITY_datatypeプロシージャ

- DROP_SITE_PRIORITYプロシージャ

- DROP_SITE_PRIORITY_SITEプロシージャ

- DROP_conflicttype_RESOLUTIONプロシージャ

- EXECUTE_DDLプロシージャ

- GENERATE_MVIEW_SUPPORTプロシージャ

- GENERATE_REPLICATION_SUPPORTプロシージャ

- MAKE_COLUMN_GROUPプロシージャ

- PREPARE_INSTANTIATED_MASTERプロシージャ

- PURGE_MASTER_LOGプロシージャ

- PURGE_STATISTICSプロシージャ

- REFRESH_MVIEW_REPGROUPプロシージャ

- REGISTER_MVIEW_REPGROUPプロシージャ

- REGISTER_STATISTICSプロシージャ

- RELOCATE_MASTERDEFプロシージャ

- REMOVE_MASTER_DATABASESプロシージャ

- RENAME_SHADOW_COLUMN_GROUPプロシージャ

- REPCAT_IMPORT_CHECKプロシージャ

- RESUME_MASTER_ACTIVITYプロシージャ

- RESUME_PROPAGATION_TO_MDEFプロシージャ

- SEND_OLD_VALUESプロシージャ

- SET_COLUMNSプロシージャ

- SPECIFY_NEW_MASTERSプロシージャ

- STREAMS_MIGRATIONプロシージャ

- SUSPEND_MASTER_ACTIVITYプロシージャ

- SWITCH_MVIEW_MASTERプロシージャ

- UNDO_ADD_NEW_MASTERS_REQUESTプロシージャ

- UNREGISTER_MVIEW_REPGROUPプロシージャ

- VALIDATEファンクション

- WAIT_MASTER_LOGプロシージャ

19 DBMS_REPCAT_INSTANTIATE

- DBMS_REPCAT_INSTANTIATEサブプログラムの概要

- DROP_SITE_INSTANTIATIONプロシージャ

- INSTANTIATE_OFFLINEファンクション

- INSTANTIATE_ONLINEファンクション

20 DBMS_REPCAT_ADMIN

- DBMS_REPCAT_ADMINサブプログラムの概要

- GRANT_ADMIN_ANY_SCHEMAプロシージャ

- GRANT_ADMIN_SCHEMAプロシージャ

- REGISTER_USER_REPGROUPプロシージャ

- REVOKE_ADMIN_ANY_SCHEMAプロシージャ

- REVOKE_ADMIN_SCHEMAプロシージャ

- UNREGISTER_USER_REPGROUPプロシージャ

21 DBMS_REPCAT_RGT

- DBMS_REPCAT_RGTサブプログラムの概要

- ALTER_REFRESH_TEMPLATEプロシージャ

- ALTER_TEMPLATE_OBJECTプロシージャ

- ALTER_TEMPLATE_PARMプロシージャ

- ALTER_USER_AUTHORIZATIONプロシージャ

- ALTER_USER_PARM_VALUEプロシージャ

- COMPARE_TEMPLATESファンクション

- COPY_TEMPLATEファンクション

- CREATE_OBJECT_FROM_EXISTINGファンクション

- CREATE_REFRESH_TEMPLATEファンクション

- CREATE_TEMPLATE_OBJECTファンクション

- CREATE_TEMPLATE_PARMファンクション

- CREATE_USER_AUTHORIZATIONファンクション

- CREATE_USER_PARM_VALUEファンクション

- DELETE_RUNTIME_PARMSプロシージャ

- DROP_ALL_OBJECTSプロシージャ

- DROP_ALL_TEMPLATE_PARMSプロシージャ

- DROP_ALL_TEMPLATE_SITESプロシージャ

- DROP_ALL_TEMPLATESプロシージャ

- DROP_ALL_USER_AUTHORIZATIONSプロシージャ

- DROP_ALL_USER_PARM_VALUESプロシージャ

- DROP_REFRESH_TEMPLATEプロシージャ

- DROP_SITE_INSTANTIATIONプロシージャ

- DROP_TEMPLATE_OBJECTプロシージャ

- DROP_TEMPLATE_PARMプロシージャ

- DROP_USER_AUTHORIZATIONプロシージャ

- DROP_USER_PARM_VALUEプロシージャ

- GET_RUNTIME_PARM_IDファンクション

- INSERT_RUNTIME_PARMSプロシージャ

- INSTANTIATE_OFFLINEファンクション

- INSTANTIATE_ONLINEファンクション

- LOCK_TEMPLATE_EXCLUSIVEプロシージャ

- LOCK_TEMPLATE_SHAREDプロシージャ

22 DBMS_REPUTIL

- DBMS_REPUTILサブプログラムの概要

- REPLICATION_OFFプロシージャ

- REPLICATION_ONプロシージャ

- REPLICATION_IS_ONファンクション

- FROM_REMOTEファンクション

- GLOBAL_NAMEファンクション

- MAKE_INTERNAL_PKGプロシージャ

- SYNC_UP_REPプロシージャ

第IV部 レプリケーション・データ・ディクショナリ・リファレンス

23 レプリケーション・カタログ・ビュー

- レプリケーション・カタログ・ビューの概要

- DBA_REGISTERED_MVIEW_GROUPS

- ALL_REPCAT_REFRESH_TEMPLATES

- ALL_REPCAT_TEMPLATE_OBJECTS

- ALL_REPCAT_TEMPLATE_PARMS

- ALL_REPCAT_TEMPLATE_SITES

- ALL_REPCAT_USER_AUTHORIZATIONS

- ALL_REPCAT_USER_PARM_VALUES

- ALL_REPCATLOG

- ALL_REPCOLUMN

- ALL_REPCOLUMN_GROUP

- ALL_REPCONFLICT

- ALL_REPDDL

- ALL_REPGENOBJECTS

- ALL_REPGROUP

- ALL_REPGROUP_PRIVILEGES

- ALL_REPGROUPED_COLUMN

- ALL_REPKEY_COLUMNS

- ALL_REPOBJECT

- ALL_REPPARAMETER_COLUMN

- ALL_REPPRIORITY

- ALL_REPPRIORITY_GROUP

- ALL_REPPROP

- ALL_REPRESOL_STATS_CONTROL

- ALL_REPRESOLUTION

- ALL_REPRESOLUTION_METHOD

- ALL_REPRESOLUTION_STATISTICS

- ALL_REPSITES

- DBA_REPCAT_REFRESH_TEMPLATES

- DBA_REPCAT_TEMPLATE_OBJECTS

- DBA_REPCAT_TEMPLATE_PARMS

- DBA_REPCAT_TEMPLATE_SITES

- DBA_REPCAT_USER_AUTHORIZATIONS

- DBA_REPCAT_USER_PARM_VALUES

- DBA_REPCATLOG

- DBA_REPCOLUMN

- DBA_REPCOLUMN_GROUP

- DBA_REPCONFLICT

- DBA_REPDDL

- DBA_REPEXTENSIONS

- DBA_REPGENOBJECTS

- DBA_REPGROUP

- DBA_REPGROUP_PRIVILEGES

- DBA_REPGROUPED_COLUMN

- DBA_REPKEY_COLUMNS

- DBA_REPOBJECT

- DBA_REPPARAMETER_COLUMN

- DBA_REPPRIORITY

- DBA_REPPRIORITY_GROUP

- DBA_REPPROP

- DBA_REPRESOL_STATS_CONTROL

- DBA_REPRESOLUTION

- DBA_REPRESOLUTION_METHOD

- DBA_REPRESOLUTION_STATISTICS

- DBA_REPSITES

- DBA_REPSITES_NEW

- USER_REPCAT_REFRESH_TEMPLATES

- USER_REPCAT_TEMPLATE_OBJECTS

- USER_REPCAT_TEMPLATE_PARMS

- USER_REPCAT_TEMPLATE_SITES

- USER_REPCAT_USER_AUTHORIZATION

- USER_REPCAT_USER_PARM_VALUES

- USER_REPCATLOG

- USER_REPCOLUMN

- USER_REPCOLUMN_GROUP

- USER_REPCONFLICT

- USER_REPDDL

- USER_REPGENOBJECTS

- USER_REPGROUP

- USER_REPGROUP_PRIVILEGES

- USER_REPGROUPED_COLUMN

- USER_REPKEY_COLUMNS

- USER_REPOBJECT

- USER_REPPARAMETER_COLUMN

- USER_REPPRIORITY

- USER_REPPRIORITY_GROUP

- USER_REPPROP

- USER_REPRESOL_STATS_CONTROL

- USER_REPRESOLUTION

- USER_REPRESOLUTION_METHOD

- USER_REPRESOLUTION_STATISTICS

- USER_REPSITES

24 レプリケーション動的パフォーマンス・ビュー

- V$MVREFRESH

- V$REPLPROP

- V$REPLQUEUE

25 マテリアライズド・ビューとリフレッシュ・グループ・ビュー

26 遅延トランザクション・ビュー

- DEFCALL

- DEFCALLDEST

- DEFDEFAULTDEST

- DEFERRCOUNT

- DEFERROR

- DEFLOB

- DEFPROPAGATOR

- DEFSCHEDULE

- DEFTRAN

- DEFTRANDEST

第V部 付録

A セキュリティ・オプション

- マルチマスター・レプリケーションのセキュリティ設定

- トラステッド・セキュリティとアントラステッド・セキュリティの比較

- マテリアライズド・ビュー・レプリケーションのセキュリティ設定

- トラステッド・セキュリティとアントラステッド・セキュリティの比較

B ユーザー定義の競合解消メソッド

- ユーザー定義の競合解消メソッド

- 競合解消メソッドのパラメータ

- 更新の競合の解消

- 一意性競合の解消

- 削除の競合の解消

- 複数層マテリアライズド・ビューとユーザー定義の競合解消メソッド

- ユーザー定義の競合解消メソッドの制限事項

- ユーザー定義の競合解消メソッドのSQL文に関する制限事項

- ユーザー定義の競合解消メソッドの列サブセット化に関する制限事項

- ユーザー定義の競合解消メソッドの例

- 最大値ユーザー・ファンクション

- 加算ユーザー・ファンクション

- ユーザー定義の競合通知方法

- 競合通知ログの作成

- 競合通知ログ表の例

- 競合通知パッケージの作成

- 競合通知パッケージの例

- 競合解消情報の表示

索引

はじめに

『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』では、レプリケーション・マネージメントAPIの特徴および機能を説明します。特に、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』には、レプリケーション管理APIのパッケージについてのリファレンス情報およびそれらの使用例も含まれています。

さらに、『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』には、レプリケーションに重要なレプリケーション・カタログおよびその他のデータ・ディクショナリ・ビューに関するリファレンス情報も含まれています。

ここでは、次の項目について説明します。

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

『Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス』は、レプリケーション環境の開発およびメンテナンスを行うデータベース管理者とアプリケーション開発者を対象としています。管理者およびアプリケーション開発者は、次のタスクの1つ以上を実行します。

- レプリケーション・サイトの構成

- マスター・グループの作成

- デプロイメント・テンプレートの作成

- マテリアライズド・ビュー・グループの作成

- 競合解消の構成

- レプリケーション環境の管理

- レプリケーション・マネージメントAPIの使用

- データ・ディクショナリ・ビューを使用したレプリケーション環境の監視

- セキュリティ・オプションの計画と構成

このリファレンスは、各自がリレーショナル・データベースの概念、分散データベースの管理方法、PL/SQL (プロシージャ・レプリケーションを使用する場合)、およびAdvanced Replication環境を実行するオペレーティング・システムについてよく理解していることを前提としています。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

Oracleサポート・サービスでは、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info) か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

関連ドキュメント

詳細は、次のOracleドキュメントを参照してください。

- 『Oracle Databaseアドバンスト・レプリケーション』

- 『Oracle Database概要』

- 『Oracle Database管理者ガイド』

- 『Oracle Database SQL言語リファレンス』

- 『Oracle Database PL/SQL言語リファレンス』

- Advanced Replication環境からOracle Streamsへの移行の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

このドキュメントの多くの例では、Oracle Databaseをインストールするときにデフォルトでインストールされるサンプル・データベースのサンプル・スキーマを使用しています。これらのスキーマの作成方法と使用方法については、『Oracle Databaseサンプル・スキーマ』を参照してください。

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

第I部

レプリケーション環境の構成

第I部ではレプリケーション・マネージメントAPIを使用してマルチマスター・レプリケーションおよびマテリアライズド・ビュー・レプリケーションを設定する方法について説明します。また、レプリケーション・マネージメントAPIを使用して競合解消メソッドを構成する方法についても説明します。

第I部は、次の章で構成されています。

- 第1章「アドバンスト・レプリケーションの概要」

- 第2章「レプリケーション・サイトの構成」

- 第3章「マスター・グループの作成」

- 第4章「デプロイメント・テンプレートの作成」

- 第5章「マテリアライズド・ビュー・グループの作成」

- 第6章「競合解消の構成」

1 アドバンスト・レプリケーションの概要

この章では、レプリケーション・マネージメントAPIを使用してレプリケーション環境を構築するプロセスを説明します。

この章には、次の項が含まれます。

- レプリケーション環境構築の概要

- 作業を開始する前に

レプリケーション環境構築の概要

図1-1に、レプリケーション環境を構築するための基本的な手順を示します。どのようなタイプのレプリケーション・サイトを構築する場合でも、まずサイトを設定します。

レプリケーション・サイトの設定を終えると、マスター・グループおよびマテリアライズド・ビュー・グループの構築を開始できます。レプリケーション環境の構築後に、必ず第6章と第II部「レプリケーション環境の管理と監視」を参照して、競合解消とレプリケーション環境の管理について理解してください。

図1-1 レプリケーション環境構築のプロセス

作業を開始する前に

レプリケーション・サイトを設定する際には、事前にレプリケーション環境が各自のニーズに合うように計画します。計画で考慮する項目を次に示します。

- レプリケート・データベース・オブジェクトを設計します。

- レプリケーションで重要な初期化パラメータの設定を決定します。

- マルチマスター・レプリケーション環境、マテリアライズド・ビュー・レプリケーション環境のどちらを構築するのか、または両レプリケーション環境を組み合せてハイブリッド環境を構築するのかを決定します。

- スケジュール・リンクの構成を決定します。

- スケジュール・パージの構成を決定します。

- シリアル伝播、パラレル伝播のどちらを使用するのかを決定します。

- パラレル伝播を使用する場合は、並列度を決定します。

- マテリアライズド・ビュー環境の構築を計画する場合は、環境構築にデプロイメント・テンプレートを使用するかどうかを決定します。

- 各自の環境における競合の可能性を分析し、競合の可能性がある場合は、どの競合解消メソッドを使用するかを決定します。

- レプリケーション環境のセキュリティを構成します。

- レプリケーション環境の耐障害性を設計します。

関連項目:
レプリケーション環境の計画の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

2 レプリケーション・サイトの構成

この章では、レプリケーション・マネージメントAPIを使用して、マスター・サイトとマテリアライズド・ビュー・レプリケーション・サイトを設定する方法を説明します。

この章には、次の項が含まれます。

- レプリケーション・サイト設定の概要

- マスター・サイトの設定

- マテリアライズド・ビュー・サイトの設定

レプリケーション・サイト設定の概要

レプリケーション環境を構築する前に、その環境に関係するサイトを設定する必要があります。図2-2と図2-3に示すように、マスター・サイトとマテリアライズド・ビュー・サイトでは設定方法が異なります。

このマニュアルの例では、次のデータベースを使用します。

- orc1.example.com

- orc2.example.com

- orc3.example.com

- orc4.example.com

- orc5.example.com

- mv1.example.com

- mv2.example.com

第2章から第6章では、図2-1に示すレプリケーション環境で作業します。この章では、指示に従ってこの環境を構築していきます。mv2.example.comはmv1.example.comマテリアライズド・ビューに基づいたマテリアライズド・ビューであり、複数層のマテリアライズド・ビュー環境を構築することに注意してください。図2-1の矢印はデータベース・リンクを表しています。

図2-1 3つのマスター・サイトと2つのマテリアライズド・ビュー・サイト

新しいマスター・サイトを構築する場合は図2-2の手順、新しいマテリアライズド・ビュー・サイトを構築する場合は図2-3の手順に従います。

図2-2 マスター・サイトの設定

マスター・サイトの設定

次の項では、サンプル・レプリケーション環境にorc1.example.com、orc2.example.comおよびorc3.example.comの3つのマスター・サイトを設定する手順について説明します。マスター・サイトを設定する前に、3つのすべてのデータベースが相互に通信できるようにネットワークおよびOracle Netを構成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

orc1.example.comの設定

次に示す手順に従って、orc1.example.comマスター・サイトを設定します。

手順1   SYSTEMとしてorc1.example.comのマスター・サイトに接続します。

SYSTEMとして、レプリケーションを設定するデータベースに接続します。orc1.example.comの設定を終えてから、orc2.example.comサイトの手順1およびorc3.example.comサイトの手順1を再開します。

*/

SET ECHO ON

SPOOL setup_masters.out

CONNECT system@orc1.example.com

/*

手順2   orc1.example.comのレプリケーション管理者を作成します。

レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。

*/

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER repadmin IDENTIFIED BY &password;

/*

注意:
管理ユーザーの適切なパスワードを入力します。

関連項目:
パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   orc1.example.comのレプリケーション管理者に権限を付与します。

レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username => 'repadmin');
END;
/

/*

repadminが任意のレプリケート表に対するマテリアライズド・ビュー・ログを作成できるようにするには、repadminに対しCOMMENT ANY TABLEおよびLOCK ANY TABLEを付与します。

*/

GRANT COMMENT ANY TABLE TO repadmin;
GRANT LOCK ANY TABLE TO repadmin;

/*

repadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、repadminにSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO repadmin;

/*

手順4   orc1.example.comでプロパゲータを登録します。

プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。

*/

BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
username => 'repadmin');
END;
/

/*

手順5    orc1.example.comで受信者を登録します。

受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。

*/

BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'repadmin',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/

/*

手順6   マスター・サイトorc1.example.comでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGEプロシージャにより、パージ・プロセスが自動化されます。レプリケーション管理者としてこのプロシージャを実行します。

注意:
日付式はNEXT_DATEおよびINTERVALのパラメータとして使用します。次に例を示します。

- 現在の日付はSYSDATEと指定します。

- 1時間の間隔はSYSDATE + 1/24と指定します。

- 7日間の間隔はSYSDATE + 7と指定します。

*/

CONNECT repadmin@orc1.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
delay_seconds => 0);
END;
/

/*

関連項目:
日付式の詳細は、『Oracle Database管理者ガイド』および『Oracle Database SQL言語リファレンス』を参照してください。

手順7   orc1.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当するorc1.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

プロキシ・マテリアライズド・ビュー管理者を作成します。

プロキシ・マテリアライズド・ビュー管理者は、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者の代理としてターゲット・マスター・サイトでタスクを実行します。

*/

CONNECT system@orc1.example.com

CREATE USER proxy_mviewadmin IDENTIFIED BY &password;

BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'proxy_mviewadmin',
privilege_type => 'proxy_snapadmin',
list_of_gnames => NULL);
END;
/

-- Place GRANT SELECT_CATALOG_ROLE statement here if necessary.

/*

マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadminにSELECT_CATALOG_ROLEを付与します。

GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;

Oracle Enterprise ManagerでAdvanced Replicationインタフェースを使用しない場合は、この権限をproxy_mviewadminに付与する必要はありません。ただし、Advanced Replicationインタフェースを使用する場合は、GRANT文を、前行のREGISTER_USER_REPGROUP文の直後の行に移動します。

プロキシ・リフレッシャを作成します。

プロキシ・リフレッシャはマスター・サイトで、マテリアライズド・ビュー・サイトのリフレッシャの代理としてタスクを実行します。

*/

CREATE USER proxy_refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO proxy_refresher;
GRANT SELECT ANY TABLE TO proxy_refresher;

/*

関連項目:
「マテリアライズド・ビュー・レプリケーションのセキュリティ設定」

orc2.example.comの設定

次に示す手順に従って、orc2.example.comマスター・サイトを設定します。

手順1   SYSTEMとしてorc2.example.comに接続します。

SYSTEMとして、レプリケーションを設定するデータベースに接続します。orc2.example.comの設定を終えてから、orc3.example.comサイトの手順1を開始します。

*/

CONNECT system@orc2.example.com

/*

手順2   orc2.example.comのレプリケーション管理者を作成します。

レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。

*/

CREATE USER repadmin IDENTIFIED BY &password;

/*

注意:
管理ユーザーの適切なパスワードを入力します。

関連項目:
パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   orc2.example.comのレプリケーション管理者に権限を付与します。

レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username => 'repadmin');
END;
/

/*

repadminが任意のレプリケート表に対するマテリアライズド・ビュー・ログを作成できるようにするには、repadminに対しCOMMENT ANY TABLEおよびLOCK ANY TABLE権限を付与します。

*/

GRANT COMMENT ANY TABLE TO repadmin;
GRANT LOCK ANY TABLE TO repadmin;

/*

repadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、repadminにSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO repadmin;

/*

手順4   orc2.example.comでプロパゲータを登録します。

プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。

*/

BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
username => 'repadmin');
END;
/

/*

手順5   orc2.example.comで受信者を登録します。

受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。

*/

BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'repadmin',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/

/*

手順6   マスター・サイトorc2.example.comでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGEプロシージャにより、パージ・プロセスが自動化されます。レプリケーション管理者としてこのプロシージャを実行します。

*/

CONNECT repadmin@orc2.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
delay_seconds => 0);
END;
/

/*

手順7   orc2.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当するorc2.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

プロキシ・マテリアライズド・ビュー管理者を作成します。

プロキシ・マテリアライズド・ビュー管理者は、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者の代理としてターゲット・マスター・サイトでタスクを実行します。

*/

CONNECT system@orc2.example.com

CREATE USER proxy_mviewadmin IDENTIFIED BY &password;

BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'proxy_mviewadmin',
privilege_type => 'proxy_snapadmin',
list_of_gnames => NULL);
END;
/

-- Place GRANT SELECT_CATALOG_ROLE statement here if necessary.

/*

マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadminにSELECT_CATALOG_ROLEを付与します。

*/

GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;

/*

Oracle Enterprise ManagerでAdvanced Replicationインタフェースを使用しない場合は、この権限をproxy_mviewadminに付与する必要はありません。ただし、Advanced Replicationインタフェースを使用する場合は、GRANT文を、前行のREGISTER_USER_REPGROUP文の直後の行に移動します。

プロキシ・リフレッシャを作成します。

プロキシ・リフレッシャはマスター・サイトで、マテリアライズド・ビュー・サイトのリフレッシャの代理としてタスクを実行します。

*/

CREATE USER proxy_refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO proxy_refresher;
GRANT SELECT ANY TABLE TO proxy_refresher;

/*

関連項目:
「マテリアライズド・ビュー・レプリケーションのセキュリティ設定」

orc3.example.comの設定

次に示す手順に従って、orc3.example.comマスター・サイトを設定します。

手順1   SYSTEMとしてorc3.example.comに接続します。

SYSTEMとして、レプリケーションを設定するデータベースに接続します。

*/

CONNECT system@orc3.example.com

/*

手順2   orc3.example.comのレプリケーション管理者を作成します。

レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。

*/

CREATE USER repadmin IDENTIFIED BY &password;

/*

注意:
管理ユーザーの適切なパスワードを入力します。

関連項目:
パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   orc3.example.comのレプリケーション管理者に権限を付与します。

レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username => 'repadmin');
END;
/

/*

repadminが任意のレプリケート表に対するマテリアライズド・ビュー・ログを作成できるようにするには、repadminに対しCOMMENT ANY TABLEおよびLOCK ANY TABLEを付与します。

*/

GRANT COMMENT ANY TABLE TO repadmin;
GRANT LOCK ANY TABLE TO repadmin;

/*

repadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、repadminにSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO repadmin;

/*

手順4   orc3.example.comでプロパゲータを登録します。

プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。

*/

BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
username => 'repadmin');
END;
/

/*

手順5   orc3.example.comで受信者を登録します。

受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。

*/

BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'repadmin',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/

/*

手順6   マスター・サイトorc3.example.comでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGE APIにより、パージ・プロセスが自動化されます。レプリケーション管理者としてこのプロシージャを実行します。

*/

CONNECT repadmin@orc3.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
delay_seconds => 0);
END;
/

/*

手順7   orc1.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当するorc1.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

プロキシ・マテリアライズド・ビュー管理者を作成します。

プロキシ・マテリアライズド・ビュー管理者は、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者の代理としてターゲット・マスター・サイトでタスクを実行します。

*/

CONNECT system@orc3.example.com

CREATE USER proxy_mviewadmin IDENTIFIED BY &password;

BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'proxy_mviewadmin',
privilege_type => 'proxy_snapadmin',
list_of_gnames => NULL);
END;
/

-- Place GRANT SELECT_CATALOG_ROLE statement here if necessary.

/*

マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadminにSELECT_CATALOG_ROLEを付与します。

*/

GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;

/*

Oracle Enterprise ManagerでAdvanced Replicationインタフェースを使用しない場合は、この権限をproxy_mviewadminに付与する必要はありません。ただし、Advanced Replicationインタフェースを使用する場合は、GRANT文を、前行のREGISTER_USER_REPGROUP文の直後の行に移動します。

プロキシ・リフレッシャを作成します。

プロキシ・リフレッシャはマスター・サイトで、マテリアライズド・ビュー・サイトのリフレッシャの代理としてタスクを実行します。

*/

CREATE USER proxy_refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO proxy_refresher;
GRANT SELECT ANY TABLE TO proxy_refresher;

/*

関連項目:
「マテリアライズド・ビュー・レプリケーションのセキュリティ設定」

マスター・サイト間のスケジュール・リンクの作成

次に示す手順に従って、マスター・サイト間のスケジュール・リンクを作成します。

手順1   マスター・サイト間でデータベース・リンクを作成します。

データベース・リンクは必要な配布メカニズムを備えていて、複数のレプリケーション・サイト間でデータをレプリケートできます。プライベート・データベース・リンクを作成する前に、各プライベート・データベース・リンクが使用するパブリック・データベース・リンクを作成する必要があります。次に、設定した各マスター・サイトのすべてのレプリケーション管理者間のデータベース・リンクを作成します。

関連項目:
データベース・リンクの詳細は、『Oracle Database管理者ガイド』を参照してください。

*/

CONNECT system@orc1.example.com
CREATE PUBLIC DATABASE LINK orc2.example.com USING 'orc2.example.com';
CREATE PUBLIC DATABASE LINK orc3.example.com USING 'orc3.example.com';

CONNECT repadmin@orc1.example.com
CREATE DATABASE LINK orc2.example.com CONNECT TO repadmin
IDENTIFIED BY &password;
CREATE DATABASE LINK orc3.example.com CONNECT TO repadmin
IDENTIFIED BY &password;

CONNECT system@orc2.example.com
CREATE PUBLIC DATABASE LINK orc1.example.com USING 'orc1.example.com';
CREATE PUBLIC DATABASE LINK orc3.example.com USING 'orc3.example.com';

CONNECT repadmin@orc2.example.com
CREATE DATABASE LINK orc1.example.com CONNECT TO repadmin
IDENTIFIED BY &password;
CREATE DATABASE LINK orc3.example.com CONNECT TO repadmin
IDENTIFIED BY &password;

CONNECT system@orc3.example.com
CREATE PUBLIC DATABASE LINK orc1.example.com USING 'orc1.example.com';
CREATE PUBLIC DATABASE LINK orc2.example.com USING 'orc2.example.com';

CONNECT repadmin@orc3.example.com
CREATE DATABASE LINK orc1.example.com CONNECT TO repadmin
IDENTIFIED BY &password;
CREATE DATABASE LINK orc2.example.com CONNECT TO repadmin
IDENTIFIED BY &password;

/*

手順2   各データベース・リンクのスケジュールを定義してスケジュール・リンクを作成します。

SCHEDULE_PUSHプロシージャを実行するときは、データベース・リンクを定義してスケジュール・リンクを作成します。スケジュール・リンクは、遅延トランザクション・キューが他のマスター・サイトの各々に伝播される頻度を決定します。手順1で作成した各データベース・リンクに対してSCHEDULE_PUSHプロシージャを実行する必要があります。データベース・リンクは、SCHEDULE_PUSHプロシージャの接続先パラメータで指定します。

Oracleの非同期レプリケーション・メカニズムを使用する場合でも、スケジュール・リンクを構成して、連続的、リアルタイムなレプリケーションをシミュレートできます。この例におけるスケジュール・リンクでは、連続的なレプリケーションをシミュレートします。

関連項目:
連続的なレプリケーションのシミュレーションの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

*/

CONNECT repadmin@orc1.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'orc2.example.com',
interval => 'SYSDATE + (1/144)',
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;
/

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'orc3.example.com',
interval => 'SYSDATE + (1/144)',
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;
/

CONNECT repadmin@orc2.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'orc1.example.com',
interval => 'SYSDATE + (1/144)',
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;
/

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'orc3.example.com',
interval => 'SYSDATE + (1/144)',
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;
/

CONNECT repadmin@orc3.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'orc1.example.com',
interval => 'SYSDATE + (1/144)',
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;
/

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'orc2.example.com',
interval => 'SYSDATE + (1/144)',
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;
/

SET ECHO OFF

SPOOL OFF

/**************************END OF SCRIPT***********************************/

マテリアライズド・ビュー・サイトの設定

図2-3 マテリアライズド・ビュー・サイトの設定

mv1.example.comの設定

次の手順を実行してmv1.example.comマスター・マテリアライズド・ビュー・サイトを設定します。mv1.example.comは、mv2.example.comがこれに基づくことになるため、マスター・マテリアライズド・ビュー・サイトとなります。マテリアライズド・ビュー・サイトを設定する前に、mv1.example.comがorc1.example.comと通信でき、mv2.example.comがmv1.example.comと通信できるようにネットワークおよびOracle Netを構成してください。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   SYSTEMとしてmv1.example.comのマテリアライズド・ビュー・サイトに接続します。

SYSTEMとして、マテリアライズド・ビュー・サイトとして設定するデータベースに接続します。

*/

SET ECHO ON

SPOOL setup_mvs.out

CONNECT system@mv1.example.com

/*

手順2   マテリアライズド・ビュー・サイト・ユーザーをmv1.example.comに作成します。

マテリアライズド・ビュー・サイトには複数のユーザーを作成します。必要なユーザーは、次のとおりです。

- マテリアライズド・ビュー管理者

- プロパゲータ

- リフレッシャ

- 受信者(サイトがmv1.example.comのように、他のマテリアライズド・ビューのマスター・マテリアライズド・ビュー・サイトとして機能する場合)

次のタスクを実行して、これらのユーザーを作成します。

マテリアライズド・ビュー管理者を作成します。

マテリアライズド・ビュー管理者は、マテリアライズド・ビュー・サイトの作成と管理を行います。マテリアライズド・ビュー管理者に適切な権限を付与するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER mviewadmin IDENTIFIED BY &password;

BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username => 'mviewadmin');
END;
/

GRANT COMMENT ANY TABLE TO mviewadmin;

GRANT LOCK ANY TABLE TO mviewadmin;

/*

mviewadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、mviewadminにSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO mviewadmin;

/*

プロパゲータを作成します。

プロパゲータは、遅延トランザクション・キューをターゲット・マスター・サイトに伝播します。

*/

CREATE USER propagator IDENTIFIED BY &password;

BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
username => 'propagator');
END;
/

/*

リフレッシャを作成します。

リフレッシャは、マテリアライズド・ビュー・サイトに対するターゲット・マスター・サイトのレプリケート表に対する変更の取込みを行います。このユーザーは、1つ以上のマテリアライズド・ビューをリフレッシュします。mviewadminユーザーをリフレッシャとする場合、この手順は必須ではありません。

*/

CREATE USER refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO refresher;

GRANT ALTER ANY MATERIALIZED VIEW TO refresher;

/*

受信者を登録します。

受信者は、マテリアライズド・ビュー・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。サイトが、他のマテリアライズド・ビュー・サイトのマスター・マテリアライズド・ビュー・サイトとして機能する場合のみ、受信者が必要です。

*/

BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'mviewadmin',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/

/*

注意:
管理ユーザーの適切なパスワードを入力します。

関連項目:
パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   マスター・サイトへのデータベース・リンクを作成します。

パブリック・データベース・リンクを作成します。

*/

CONNECT system@mv1.example.com

CREATE PUBLIC DATABASE LINK orc1.example.com USING 'orc1.example.com';

/*

マテリアライズド・ビュー管理者のデータベース・リンクを作成します。

マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者からマスター・サイトのプロキシ・マテリアライズド・ビュー管理者に至るデータベース・リンクを作成する必要があります。

*/

CONNECT mviewadmin@mv1.example.com;

CREATE DATABASE LINK orc1.example.com
CONNECT TO proxy_mviewadmin IDENTIFIED BY &password;

/*

プロパゲータ/受信者のデータベース・リンクを作成します。

マテリアライズド・ビュー・サイトのプロパゲータからマスター・サイトの受信者に至るデータベース・リンクを作成する必要があります。マスター・サイトの作成時に受信者は定義されています。

*/

CONNECT propagator@mv1.example.com

CREATE DATABASE LINK orc1.example.com
CONNECT TO repadmin IDENTIFIED BY &password;

/*

関連項目:
手順5

手順4   mv1.example.comマテリアライズド・ビュー・サイトでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGEプロシージャにより、パージ・プロセスが自動化されます。マテリアライズド・ビュー・サイトに含まれるマテリアライズド・ビューが、読取り専用のみの場合は、このプロシージャを実行する必要はありません。

*/

CONNECT mviewadmin@mv1.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
delay_seconds => 0,
rollback_segment => '');
END;
/

/*

手順5   mv1.example.comマテリアライズド・ビュー・サイトでスケジュール・プッシュを行います(オプション)。

マテリアライズド・ビュー・サイトがマスター・サイトと常時接続されている場合は、mv1.example.comマテリアライズド・ビュー・サイトでスケジュール・プッシュのオプションを選択できます。マテリアライズド・ビュー・サイトがマスター・サイトと長期間接続されていない場合は、スケジュール・プッシュは使用しないで必要に応じてリフレッシュを行ってください(スケジュール・プッシュはマスター・サイトを変更します)。

SCHEDULE_PUSHプロシージャは、遅延トランザクション・キューをターゲット・マスター・サイトに伝播するタイミングをスケジュール設定します。

*/

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'orc1.example.com',
interval => 'SYSDATE + 1/24',
next_date => SYSDATE,
stop_on_error => FALSE,
delay_seconds => 0,
parallelism => 0);
END;
/

/*

手順6   mv1.example.comマテリアライズド・ビュー・サイトでプロキシ・ユーザーを作成します。

プロキシ・マテリアライズド・ビュー管理者を作成します。

プロキシ・マテリアライズド・ビュー管理者は、このマテリアライズド・ビュー・サイトに基づいて、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者にかわってターゲット・マスター・マテリアライズド・ビュー・サイトのタスクを実行します。サイトが、他のマテリアライズド・ビュー・サイトのマスター・マテリアライズド・ビュー・サイトとして機能しない場合、このユーザーは必須ではありません。

*/

CONNECT system@mv1.example.com

CREATE USER proxy_mviewadmin IDENTIFIED BY &password;

BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => 'proxy_mviewadmin',
privilege_type => 'proxy_snapadmin',
list_of_gnames => NULL);
END;
/

-- Place GRANT SELECT_CATALOG_ROLE statement here if necessary.

/*

このマテリアライズド・ビュー・サイトに基づくマテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadminにSELECT_CATALOG_ROLEを付与します。

GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;

Oracle Enterprise ManagerでAdvanced Replicationインタフェースを使用しない場合は、この権限をproxy_mviewadminに付与する必要はありません。ただし、Advanced Replicationインタフェースを使用する場合は、GRANT文を、前行のREGISTER_USER_REPGROUP文の直後の行に移動します。

プロキシ・リフレッシャを作成します。

プロキシ・リフレッシャは、このマテリアライズド・ビュー・サイトに基づいたマテリアライズド・ビュー・サイトのリフレッシャのかわりに、マスター・マテリアライズド・ビュー・サイトのタスクを実行します。サイトが、他のマテリアライズド・ビュー・サイトのマスター・マテリアライズド・ビュー・サイトとして機能しない場合、このユーザーは必須ではありません。

*/

CREATE USER proxy_refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO proxy_refresher;
GRANT SELECT ANY TABLE TO proxy_refresher;

/*

関連項目:
「マテリアライズド・ビュー・レプリケーションのセキュリティ設定」

mv2.example.comの設定

次の手順に従って、mv2.example.comマテリアライズド・ビュー・サイトを設定します。mv2.example.comは、mv1.example.com、その他のマテリアライズド・ビューに基づいているため、複数層マテリアライズド・ビュー構成の一部です。

手順1   SYSTEMとしてレベル2マテリアライズド・ビュー・サイトmv2.example.comに接続します。

SYSTEMとして、レベル 2マテリアライズド・ビュー・サイトとして設定するデータベースに接続します。このサイト、mv2.example.comは、mv1.example.comに基づいたマテリアライズド・ビュー・サイトになります。

*/

CONNECT system@mv2.example.com

/*

手順2   レベル2マテリアライズド・ビュー・サイト・ユーザーをmv2.example.comに作成します。

レベル2マテリアライズド・ビュー・サイトには複数のユーザーを作成します。必要なユーザーは、次のとおりです。

- マテリアライズド・ビュー管理者

- プロパゲータ

- リフレッシャ

次のタスクを実行して、これらのユーザーを作成します。

マテリアライズド・ビュー管理者を作成します。

マテリアライズド・ビュー管理者は、レベル2マテリアライズド・ビュー・サイトの作成と管理を行います。マテリアライズド・ビュー管理者に適切な権限を付与するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

CREATE USER mviewadmin IDENTIFIED BY &password;

BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username => 'mviewadmin');
END;
/

/*

mviewadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、mviewadminにSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO mviewadmin;

/*

プロパゲータを作成します。

プロパゲータは、遅延トランザクション・キューをターゲット・マスター・マテリアライズド・ビュー・サイトに伝播します。

*/

CREATE USER propagator IDENTIFIED BY &password;

BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
username => 'propagator');
END;
/

/*

リフレッシャを作成します。

リフレッシャは、レベル2マテリアライズド・ビュー・サイトに対するターゲット・マスター・マテリアライズド・ビュー・サイトのレプリケート・マテリアライズド・ビューに対する変更の取込みを行います。

*/

CREATE USER refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO refresher;
GRANT ALTER ANY MATERIALIZED VIEW TO refresher;

/*

注意:
管理ユーザーの適切なパスワードを入力します。

関連項目:
パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   マスター・マテリアライズド・ビュー・サイトへのデータベース・リンクを作成します。

パブリック・データベース・リンクを作成します。

*/

CONNECT system@mv2.example.com

CREATE PUBLIC DATABASE LINK mv1.example.com USING 'mv1.example.com';

/*

マテリアライズド・ビュー管理者のデータベース・リンクを作成します。

レベル2マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者からマスター・サイトのプロキシ・マテリアライズド・ビュー管理者に至るデータベース・リンクを作成する必要があります。

*/

CONNECT mviewadmin@mv2.example.com;

CREATE DATABASE LINK mv1.example.com
CONNECT TO proxy_mviewadmin IDENTIFIED BY &password;

/*

プロパゲータ/受信者のデータベース・リンクを作成します。

レベル2マテリアライズド・ビュー・サイトのプロパゲータからマスター・マテリアライズド・ビュー・サイトの受信者に至るデータベース・リンクを作成する必要があります。マスター・マテリアライズド・ビュー・サイトの作成時に受信者は定義されています。

*/

CONNECT propagator@mv2.example.com

CREATE DATABASE LINK mv1.example.com
CONNECT TO mviewadmin IDENTIFIED BY &password;

/*

手順4   mv2.example.comのレベル2マテリアライズド・ビュー・サイトでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGEプロシージャにより、パージ・プロセスが自動化されます。レベル2マテリアライズド・ビュー・サイトに含まれるマテリアライズド・ビューが、読取り専用のみの場合は、このプロシージャを実行する必要はありません。

*/

CONNECT mviewadmin@mv2.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
delay_seconds => 0,
rollback_segment => '');
END;
/

/*

手順5   mv2.example.comマテリアライズド・ビュー・サイトでスケジュール・プッシュを行います(オプション)。

マテリアライズド・ビュー・サイトがマスター・マテリアライズド・ビュー・サイトと常時接続されている場合は、mv2.example.comマテリアライズド・ビュー・サイトでスケジュール・プッシュのオプションを選択できます。マテリアライズド・ビュー・サイトがマスター・マテリアライズド・ビュー・サイトと長期間接続されていない場合は、スケジュール・プッシュは使用しないで必要に応じてリフレッシュを行ってください(スケジュール・プッシュはマスター・マテリアライズド・ビュー・サイトを変更します)。

SCHEDULE_PUSHプロシージャは、遅延トランザクション・キューをターゲット・マスター・マテリアライズド・ビュー・サイトに伝播するタイミングをスケジュール設定します。

*/

CONNECT mviewadmin@mv2.example.com

BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => 'mv1.example.com',
interval => 'SYSDATE + 1/24',
next_date => SYSDATE,
stop_on_error => FALSE,
delay_seconds => 0,
parallelism => 0);
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

3 マスター・グループの作成

この章では、マスター・レプリケーション・サイトでマスター・グループを作成する方法を説明します。

この章には、次の項が含まれます。

- マスター・グループ作成の概要

- マスター・グループの作成マスター・グループの作成

マスター・グループ作成の概要

マスター・サイトを設定した後、マスター・グループを作成できます。レプリケーション環境を正しく構築するには、図3-2に示す手順に従う必要があります。

関連項目:
マスター・サイトの設定の詳細は、「レプリケーション・サイトの構成」を参照してください。

この章では、hr_repgマスター・グループを作成して、図3-1に示すオブジェクトをレプリケートします。

図3-1 全サイト間のhrスキーマの表をレプリケート

作業を開始する前に

この章のスクリプトを設計どおりに動作させるために、orc1.example.com、orc2.example.comおよびorc3.example.comにhrスキーマが存在することを確認してください。hrスキーマには次のデータベース・オブジェクトが含まれます。

- countries表

- departments表

- employees表

- jobs表

- job_history表

- locations表

- regions表

- dept_location_ix索引

- emp_department_ix索引

- emp_job_ix索引

- emp_manager_ix索引

- jhist_department_ix索引

- jhist_employee_ix索引

- jhist_job_ix索引

- loc_country_ix索引

リストされている索引は、hrスキーマの外部キー列を基準とした索引です。親表の更新や削除が許可されていない場合を除き、外部キー参照制約がある表のレプリケーションでは、常に外部キーに索引を作成してからこれらの索引をレプリケートすることをお薦めします。索引は自動でレプリケートされません。

デフォルトでは、Oracle Databaseのインストール時に、hrスキーマが自動的にインストールされます。この章のスクリプト例では、すべてのマスター・サイトにhrスキーマが存在し、そのスキーマには各サイトのデータベース・オブジェクトのすべてが含まれることを前提としています。また、表には、Oracleのインストール時に自動的に挿入されたデータが含まれるものとします。hrスキーマがレプリケーション・サイトにインストールされていない場合は、手動でインストールできます。

図3-2 マスター・グループの作成

関連項目:
hrスキーマやその他のサンプル・スキーマ、およびサンプル・スキーマの手動インストールについては、『Oracle Databaseサンプル・スキーマ』を参照してください。

マスター・グループの作成

次に示す手順に従って、hr_repgマスター・グループを作成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************/

SET ECHO ON

SPOOL create_mg.out

CONNECT repadmin@orc1.example.com

/*

手順1   マスター・サイトでスキーマを作成します。

マスター・グループに関係するすべてのマスター・サイトに、スキーマが存在しない場合は、スキーマを作成して、必要な権限を付与します。この例では、Oracleのインストール時にデフォルトでインストールされたスキーマの1つであるhrスキーマを使用します。したがって、hrスキーマはすべてのマスター・サイトに存在します。

*/

PAUSE Press <RETURN> to continue when the schema exists at all master sites.

/*

手順2   マスター・グループを作成します。

新しいマスター・グループを定義するには、CREATE_MASTER_REPGROUPプロシージャを使用します。オブジェクトをマスター・グループに追加する場合または他のレプリケーション管理タスクを実行する場合は、この手順で定義したマスター・グループ名を参照します。この手順はレプリケーション管理者が実行します。

*/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPGROUP (
gname => 'hr_repg');
END;
/

/*

手順3   マスター・グループにオブジェクトを追加します。

オブジェクトをマスター・グループに追加するには、CREATE_MASTER_REPOBJECTプロシージャを使用します。多くの場合、表と索引をマスター・グループへ追加しますが、プロシージャ、ビューその他も追加できます。

*/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TABLE',
oname => 'countries',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TABLE',
oname => 'departments',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TABLE',
oname => 'employees',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TABLE',
oname => 'jobs',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TABLE',
oname => 'job_history',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TABLE',
oname => 'locations',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TABLE',
oname => 'regions',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'INDEX',
oname => 'dept_location_ix',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'INDEX',
oname => 'emp_department_ix',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'INDEX',
oname => 'emp_job_ix',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'INDEX',
oname => 'emp_manager_ix',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'INDEX',
oname => 'jhist_department_ix',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'INDEX',
oname => 'jhist_employee_ix',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'INDEX',
oname => 'jhist_job_ix',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'INDEX',
oname => 'loc_country_ix',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

/*

手順4   マスター・サイトを追加します。

マスター定義サイト(デフォルトではマスター・グループが作成されたサイトがマスター定義サイトになります)でマスター・グループを定義すれば、レプリケーション環境に関係する他のサイトを定義できます。orc2.example.comおよびorc3.example.comサイトをレプリケーション環境に追加する場合があります。この例では、すべてのマスター・サイトにマスター・グループを作成しますが、データベースを静止することなく、まず1つのマスター・サイトにマスター・グループを作成して、後でマスター・サイトを追加することもできます。この場合には、この手順をスキップします。

関連項目:
詳細は、「マスター・グループを静止することなく、新しいマスター・サイトを追加」を参照してください。

この例では、hrスキーマがすべてのマスター・サイトに存在することが前提となっているため、ADD_MASTER_DATABASEプロシージャのuse_existing_objectsパラメータにTRUEが設定されています。つまり、hrスキーマのオブジェクトは、すべてのマスター・サイトで事前に作成されていることが前提となっています。また、各マスター・サイトの表には同一データが格納されていることが前提となるため、copy_rowsパラメータにFALSEが設定されています。

注意:
循環依存性を持つ表または自己参照型制約のある表を含むマスター・グループに新規マスター・サイトを追加する場合は、新規マスター・サイトで表定義を再作成し、データを手動でロードする必要があります。循環依存性の例としては、「表Aには表Bに対する外部キー制約があり、表Bには表Aに対する外部キー制約がある」などがあります。

*/

BEGIN
DBMS_REPCAT.ADD_MASTER_DATABASE (
gname => 'hr_repg',
master => 'orc2.example.com',
use_existing_objects => TRUE,
copy_rows => FALSE,
propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

注意:
DBA_REPSITESビューにorc2.example.comが表示されてから作業を続けます。他のSQL*Plusセッションで、次のSELECT文を実行し、orc2.example.comが表示されることを確認します。

SELECT DBLINK FROM DBA_REPSITES WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue.

BEGIN
DBMS_REPCAT.ADD_MASTER_DATABASE (
gname => 'hr_repg',
master => 'orc3.example.com',
use_existing_objects => TRUE,
copy_rows => FALSE,
propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

注意:
DBA_REPSITESビューにorc3.example.comが表示されてから作業を続けます。他のSQL*Plusセッションで、次のSELECT文を実行し、orc3.example.comが表示されることを確認します。

SELECT DBLINK FROM DBA_REPSITES WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue.

/*

手順5   競合の可能性がある場合は、競合解消メソッドを設定します。

関連項目:
競合解消メソッド構成の詳細は、第6章「競合解消の構成」を参照してください。

*/

PAUSE Press <RETURN> to continue after configuring conflict resolution methods
or if no conflict resolution methods are required.

/*

手順6   レプリケーション・サポートを生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'countries',
type => 'TABLE',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'departments',
type => 'TABLE',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'employees',
type => 'TABLE',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'jobs',
type => 'TABLE',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'job_history',
type => 'TABLE',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'locations',
type => 'TABLE',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'regions',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

注意:
DBA_REPCATLOGビューが空になってから、マスター・アクティビティを再開します。DBA_REPCATLOGビューを監視するには、次のSELECT文を実行します。

SELECT COUNT(*) FROM DBA_REPCATLOG WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue.

/*

手順7   レプリケーションを開始します。

マスター・グループの作成、レプリケーション・オブジェクトの追加、レプリケーション・サポートの生成および追加マスター・データベースの追加を行った後で、レプリケーション・アクティビティを開始する必要があります。RESUME_MASTER_ACTIVITYプロシージャを使用して、指定したマスター・グループのレプリケーションをオンにします。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

4 デプロイメント・テンプレートの作成

この章では、レプリケーション・マネージメントAPIを使用して、デプロイメント・テンプレートを作成する方法を説明します。

この章には、次の項が含まれます。

- Oracleデプロイメント・テンプレートの概念

- デプロイメント・テンプレートを作成する前に

- デプロイメント・テンプレートの作成

- デプロイメント・テンプレートをパッケージ化してインスタンス化

- インスタンス化ファイルの配布

- デプロイメント・テンプレートのインスタンス化

- インスタンス化後のリフレッシュ・グループのリフレッシュ

マテリアライズド・ビュー環境を構築する前に、マスター・サイトの設定、マスター・グループの作成および目的のマテリアライズド・ビュー・サイトの設定を行います。また、作成したマテリアライズド・ビュー・サイトでのアクティビティによって、マスター・サイトで競合が発生する可能性がある場合は、マテリアライズド・ビュー・グループを作成する前に、マテリアライズド・ビューのマスター表に対して競合解消を設定します。

関連項目:

- 「マスター・サイトの設定」

- 「マスター・グループ作成の概要」

- 「マテリアライズド・ビュー・サイトの設定」

- 第6章「競合解消の構成」

Oracleデプロイメント・テンプレートの概念

Oracleで提供されるデプロイメント・テンプレートを使用すると、データベース管理者はマテリアライズド・ビュー環境をパッケージ化して、その配布とインストールを簡単かつ安全に行ったり、カスタマイズしたりできます。デプロイメント・テンプレートは、1つのマテリアライズド・ビューと固定データ・セットのみで単純に構成することも、数百のマテリアライズド・ビューと1つ以上の変数に基づく動的データ・セットで複雑に構成することもできます。この目的は、環境を1回定義して、必要に応じてそのデプロイメント・テンプレートをデプロイすることです。Oracleデプロイメント・テンプレートの特徴を次に示します。

- 集中管理

- マテリアライズド・ビュー環境を繰り返しデプロイ可能

- テンプレート・パラメータを使用したリモート・サイトでのデータのサブセット化

- テンプレートのインスタンス化とデータ・アクセスの制御を認証されたユーザーのリスト

マテリアライズド・ビュー環境を適用するために、DBAがマスター・サイトにデプロイメント・テンプレートを作成します。このテンプレートには、マテリアライズド・ビュー環境をデプロイするために必要なすべての情報を格納します(たとえば、リモート・サイトとターゲット・リフレッシュ・グループでオブジェクトを作成するためのDDLなどを格納します)。また、このテンプレートには、ユーザーのセキュリティ情報やカスタム・マテリアライズド・ビューを作成するためのテンプレート・パラメータへのリンクも含まれています。

次のオブジェクト型のインスタンス化では、デプロイメント・テンプレートは使用できません。

- ユーザー定義型

- ユーザー定義型本体

- ユーザー定義演算子

- 索引タイプ

これらのオブジェクト型に基づいたオブジェクトのインスタンス化でも、デプロイメント・テンプレートは使用できません。

関連項目:
デプロイメント・テンプレートの概念については、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

デプロイメント・テンプレートを作成する前に

マスター・サイトの1つで、高速リフレッシュのマテリアライズド・ビューをサポートするには、マテリアライズド・ビューにレプリケートされる各マスター表のマテリアライズド・ビュー・ログを作成する必要があります。

この章の例では、hrサンプル・スキーマを使用します。hrスキーマの表のマテリアライズド・ビュー・ログを作成するには、次の命令を入力します。

CONNECT hr@orc3.example.com
Enter password: password

CREATE MATERIALIZED VIEW LOG ON hr.countries;
CREATE MATERIALIZED VIEW LOG ON hr.departments;
CREATE MATERIALIZED VIEW LOG ON hr.employees;
CREATE MATERIALIZED VIEW LOG ON hr.jobs;
CREATE MATERIALIZED VIEW LOG ON hr.job_history;
CREATE MATERIALIZED VIEW LOG ON hr.locations;
CREATE MATERIALIZED VIEW LOG ON hr.regions;

関連項目:
このSQL文の詳細は、『Oracle Database SQL言語リファレンス』のCREATE MATERIALIZED VIEW LOG文に関する項を参照してください。

デプロイメント・テンプレートの作成

この項では、レプリケーション・マネージメントAPIを使用してデプロイメント・テンプレートを作成する、完全なスクリプト例を示します。

関連項目:
デプロイメント・テンプレートの概念およびアーキテクチャについては、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

図4-1 デプロイメント・テンプレートの作成

スクリプト内のコメントにも、必ず目を通してください。コメントには、レプリケーション・マネージメントAPIで配置テンプレートを作成するための重要で役立つ情報が記述されています。

注意:

- 列のサブセットをマスター表とするマテリアライズド・ビューを作成する場合は、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用します。列のサブセット化の詳細は、『Oracle Databaseアドバンスト・レプリケーション』およびAdvanced Replicationインタフェースのオンライン・ヘルプを参照してください。

- このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

このスクリプトでは、4つのテンプレート・オブジェクト、2つのテンプレート・パラメータ、ユーザー・パラメータ値セットおよび許可されたユーザーを含むプライベート・デプロイメント・テンプレートが作成されます。次に示す手順に従って、テンプレートを構築します。

手順1   デプロイメント・テンプレートを作成します。

デプロイメント・テンプレートの構成要素を作成する前に、CREATE_RERESH_TEMPLATEプロシージャを使用して、デプロイメント・テンプレートの名前、テンプレートの特性(パブリックまたはプライベートのステータス、ターゲット・リフレッシュ・グループおよび所有者)を定義します。

*/

SET ECHO ON

SPOOL create_dt.out

CONNECT repadmin@orc3.example.com

DECLARE
a NUMBER;
BEGIN
a := DBMS_REPCAT_RGT.CREATE_REFRESH_TEMPLATE (
owner => 'hr',
refresh_group_name => 'hr_refg',
refresh_template_name => 'hr_refg_dt',
template_comment => 'Human Resources Deployment Template',
public_template => 'N');
END;
/

/*

手順2   テンプレートにオブジェクトを追加します。

countries_mvマテリアライズド・ビューを作成します。

*/

DECLARE
tempstring VARCHAR2(3000);
a NUMBER;
BEGIN
tempstring := 'CREATE MATERIALIZED VIEW hr.countries_mv
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT
country_id, country_name, region_id
FROM hr.countries@:dblink';
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
refresh_template_name => 'hr_refg_dt',
object_name => 'countries_mv',
object_type => 'MATERIALIZED VIEW',
ddl_text => tempstring,
master_rollback_seg => 'rbs');
END;
/

/*

マテリアライズド・ビューを作成するときは、必ず、マテリアライズド・ビューに対する問合せの中で表の所有者のスキーマ名を指定します。前述の例では、countries表の所有者としてhrを指定しました。

departments_mvマテリアライズド・ビューを作成します。

*/

DECLARE
tempstring VARCHAR2(3000);
a NUMBER;
BEGIN
tempstring := 'CREATE MATERIALIZED VIEW hr.departments_mv
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT
department_id, department_name, manager_id, location_id
FROM hr.departments@:dblink';
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
refresh_template_name => 'hr_refg_dt',
object_name => 'departments_mv',
object_type => 'MATERIALIZED VIEW',
ddl_text => tempstring,
master_rollback_seg => 'rbs');
END;
/

/*

employees_mvマテリアライズド・ビューを作成します。

*/

DECLARE
tempstring VARCHAR2(3000);
a NUMBER;
BEGIN
tempstring := 'CREATE MATERIALIZED VIEW hr.employees_mv
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT
employee_id, first_name, last_name, email, phone_number,
hire_date, job_id, salary, commission_pct, manager_id,
department_id
FROM hr.employees@:dblink WHERE department_id = :dept';
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
refresh_template_name => 'hr_refg_dt',
object_name => 'employees_mv',
object_type => 'MATERIALIZED VIEW',
ddl_text => tempstring,
master_rollback_seg => 'rbs');
END;
/

/*

jobs_mvマテリアライズド・ビューを作成します。

*/

DECLARE
tempstring VARCHAR2(3000);
a NUMBER;
BEGIN
tempstring := 'CREATE MATERIALIZED VIEW hr.jobs_mv
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT
job_id, job_title, min_salary, max_salary
FROM hr.jobs@:dblink';
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
refresh_template_name => 'hr_refg_dt',
object_name => 'jobs_mv',
object_type => 'MATERIALIZED VIEW',
ddl_text => tempstring,
master_rollback_seg => 'rbs');
END;
/

/*

job_history_mvマテリアライズド・ビューを作成します。

*/

DECLARE
tempstring VARCHAR2(3000);
a NUMBER;
BEGIN
tempstring := 'CREATE MATERIALIZED VIEW hr.job_history_mv
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT
employee_id, start_date, end_date, job_id, department_id
FROM hr.job_history@:dblink';
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
refresh_template_name => 'hr_refg_dt',
object_name => 'job_history_mv',
object_type => 'MATERIALIZED VIEW',
ddl_text => tempstring,
master_rollback_seg => 'rbs');
END;
/

/*

locations_mvマテリアライズド・ビューを作成します。

*/

DECLARE
tempstring VARCHAR2(3000);
a NUMBER;
BEGIN
tempstring := 'CREATE MATERIALIZED VIEW hr.locations_mv
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT
location_id, street_address, postal_code, city,
state_province, country_id
FROM hr.locations@:dblink';
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
refresh_template_name => 'hr_refg_dt',
object_name => 'locations_mv',
object_type => 'MATERIALIZED VIEW',
ddl_text => tempstring,
master_rollback_seg => 'rbs');
END;
/

/*

regions_mvマテリアライズド・ビューを作成します。

*/

DECLARE
tempstring VARCHAR2(3000);
a NUMBER;
BEGIN
tempstring := 'CREATE MATERIALIZED VIEW hr.regions_mv
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT
region_id, region_name
FROM hr.regions@:dblink';
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
refresh_template_name => 'hr_refg_dt',
object_name => 'regions_mv',
object_type => 'MATERIALIZED VIEW',
ddl_text => tempstring,
master_rollback_seg => 'rbs');
END;
/

/*

手順3   パラメータのデフォルト値を定義します。

他の手順では、CREATE_*ファンクションおよびプロシージャではなく、ALTER_TEMPLATE_PARMプロシージャを使用して、テンプレート・パラメータの値とプロンプト文字列を定義します。実パラメータは、手順1で作成されたので、ALTER_*プロシージャを使用します。:dblinkおよび:deptテンプレート・パラメータはddl_textパラメータで定義済です。OracleはDDL中のこれらのパラメータを検出して、自動的にテンプレート・パラメータを作成します。テンプレート・パラメータ情報の残り(すなわち、デフォルトのパラメータ値とプロンプト文字列)を定義するには、ALTER_TEMPLATE_PARMプロシージャを使用します。

次のタスクを実行して、パラメータのデフォルト値を定義します。

deptパラメータのデフォルト値を定義します。

*/

BEGIN
DBMS_REPCAT_RGT.ALTER_TEMPLATE_PARM (
refresh_template_name => 'hr_refg_dt',
parameter_name => 'dept',
new_default_parm_value => '30',
new_prompt_string => 'Enter your department number:',
new_user_override => 'Y');
END;
/

/*

dblinkパラメータのデフォルト値を定義します。

*/

BEGIN
DBMS_REPCAT_RGT.ALTER_TEMPLATE_PARM (
refresh_template_name => 'hr_refg_dt',
parameter_name => 'dblink',
new_default_parm_value => 'orc3.example.com',
new_prompt_string => 'Enter your master site:',
new_user_override => 'Y');
END;
/

/*

手順4   ユーザー・パラメータ値を定義します。

個々のリモート・マテリアライズド・ビュー・サイトにおけるカスタム・データ・セットのインスタンス化を自動的に行うためには、指定したユーザーが、ターゲット・テンプレートをインスタンス化した場合に自動的に使用されるユーザー・パラメータ値を定義します。CREATE_USER_PARM_VALUEプロシージャを使用すると、ユーザー・パラメータに値を割り当てることができます。

次のタスクを実行して、ユーザー・パラメータ値を定義します。

ユーザーhrに対するdeptユーザー・パラメータ値を定義します。

*/

DECLARE
a NUMBER;
BEGIN
a := DBMS_REPCAT_RGT.CREATE_USER_PARM_VALUE (
refresh_template_name => 'hr_refg_dt',
parameter_name => 'dept',
user_name => 'hr',
parm_value => '20');
END;
/

/*

ユーザーhrに対するdblinkユーザー・パラメータ値を定義します。

*/

DECLARE
a NUMBER;
BEGIN
a := DBMS_REPCAT_RGT.CREATE_USER_PARM_VALUE (
refresh_template_name => 'hr_refg_dt',
parameter_name => 'dblink',
user_name => 'hr',
parm_value => 'orc3.example.com');
END;
/

/*

手順5   プライベート・テンプレートに対してユーザーを認証します。

これはプライベート・テンプレート(手順1で定義したDBMS_REPCAT_RGT.CREATE_REFRESH_TEMPLATEファンクションのpublic_template => 'N')であるため、dt_personnelデプロイメント・テンプレートのインスタンス化をユーザーに認証する必要があります。認証ユーザーを作成するには、DBMS_REPCAT_RGTパッケージのCREATE_USER_AUTHORIZATIONファンクションを使用します。

*/

DECLARE
a NUMBER;
BEGIN
a := DBMS_REPCAT_RGT.CREATE_USER_AUTHORIZATION (
user_name => 'hr',
refresh_template_name => 'hr_refg_dt');
END;
/

COMMIT;

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

デプロイメント・テンプレートをパッケージ化してインスタンス化

デプロイメント・テンプレートを作成した後、テンプレートをパッケージ化してインスタンス化を行う必要があります。ここでは、オンラインとオフラインのインスタンス化プロシージャの使用例を示します。オンラインとオフラインのインスタンス化プロシージャは非常に類似しており、必要に応じてINSTANTIATE_ONLINEファンクションとINSTANTIATE_OFFLINEファンクションのいずれかを使用します。この項では、インスタンス化スクリプトの作成およびファイルへのそのスクリプトの保存という2つのタスクについて説明します。

図4-2 デプロイメント・テンプレートのパッケージ化およびインスタンス化

デプロイメント・テンプレートのパッケージ化

INSTANTIATE_OFFLINEまたはINSTANTIATE_ONLINEファンクションを実行すると、OracleではUSER_REPCAT_TEMP_OUTPUTデータ・ディクショナリ・ビューにスクリプトが移入されて、リモート・マテリアライズド・ビュー環境が構築されます。オンラインとオフラインのスクリプトのいずれにも、デプロイメント・テンプレートで指定されたオブジェクトを作成するためのSQL文が含まれます。ただし、オフライン・インスタンシエーション・スクリプトには、オブジェクトに移入するデータが含まれます。オンライン・インスタンシエーション・スクリプトには、このデータは含まれません。オンライン・インスタンシエーションでは、マテリアライズド・ビュー・サイトがマスター・サイトに接続して、このデータをダウンロードします。

必要に応じて、「デプロイメント・テンプレートをパッケージ化してオフライン・インスタンシエーション」または「デプロイメント・テンプレートをパッケージ化してオンライン・インスタンシエーション」に示す手順を実行してください。

注意:
INSTANTIATE_OFFLINEまたはINSTANTIATE_ONLINEファンクションのいずれかを、特定のマテリアライズド・ビュー・サイトに対して複数回実行する必要がある場合は、サイトのテンプレートを再パッケージする前に、DBMS_REPCAT_RGTパッケージのDROP_SITE_INSTANTIATIONプロシージャを実行します。このプロシージャを実行しない場合は、テンプレート・サイトの重複を示すエラーがOracleから戻されます。

デプロイメント・テンプレートをパッケージ化してオフライン・インスタンシエーション

INSTANTIATE_OFFLINEファンクションは、指定されたデプロイメント・テンプレートの内容に従って、マテリアライズド・ビュー環境を構築するスクリプトを生成します。このスクリプトには、マテリアライズド・ビュー環境を構築するためのDDL(CREATE文)の他に、マテリアライズド・ビュー環境に適切なデータ・セットを移入するためのDML(INSERT文)が含まれています。

注意:
デプロイメント・テンプレートをパッケージ化するマスター・サイトに、デプロイメント・テンプレート用のターゲット・マスター・オブジェクトが含まれている場合は、ループバック・データベース・リンクを作成する必要があります。

--Use the INSTANTIATE_OFFLINE function to package the
--template for offline instantiation by a remote materialized view
--site. Executing this procedure both creates a script that
--creates that materialized view environment and populates the
--environment with the proper data set. This script is stored
--in the temporary USER_REPCAT_TEMP_OUTPUT view.

CONNECT repadmin@orc3.example.com
Enter password: password

SET SERVEROUTPUT ON
DECLARE
dt_num NUMBER;
BEGIN
dt_num := DBMS_REPCAT_RGT.INSTANTIATE_OFFLINE(
refresh_template_name => 'hr_refg_dt',
user_name => 'hr',
site_name => 'mv4.example.com',
next_date => SYSDATE,
interval => 'SYSDATE + (1/144)');
DBMS_OUTPUT.PUT_LINE('Template ID = ' || dt_num);
END;
/
COMMIT;
/

dt_num変数に戻される値を記録しておきます。この値は、USER_REPCAT_TEMP_OUTPUTデータ・ディクショナリ・ビューから選択して、生成されたスクリプトを取り出すときに使用する必要があります。このタスクを実行した後、「インスタンス化スクリプトのファイルへの保存」に示す手順に従ってください。このスクリプトは、個々のマテリアライズド・ビュー・サイトに一意であり、他のマテリアライズド・ビュー・サイトでは使用できません。

デプロイメント・テンプレートをパッケージ化してオンライン・インスタンシエーション

INSTANTIATE_ONLINEファンクションは、指定されたデプロイメント・テンプレートの内容に従って、マテリアライズド・ビュー環境を構築するスクリプトを生成します。このスクリプトがリモート・マテリアライズド・ビュー・サイトで実行されると、スクリプト内のDDL(CREATE文)に従ってマテリアライズド・ビュー・サイトが作成され、マスター・サイトから適切なデータ・セットが移入されます。この処理では、リモート・マテリアライズド・ビュー・サイトが、マスター・サイトにオンラインで接続されている必要があります。

関連項目:
マテリアライズド・ビュー・サイトのその他の要件は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

--Use the INSTANTIATE_ONLINE function to "package" the
--template for online instantiation by a remote materialized view
--site. Executing this procedure creates a script which can
--then be used to create a materialized view environment. This script
--is stored in the temporary USER_REPCAT_TEMP_OUTPUT view.

CONNECT repadmin@orc3.example.com
Enter password: password

SET SERVEROUTPUT ON
DECLARE
dt_num NUMBER;
BEGIN
dt_num := DBMS_REPCAT_RGT.INSTANTIATE_ONLINE(
refresh_template_name => 'hr_refg_dt',
user_name => 'hr',
site_name => 'mv4.example.com',
next_date => SYSDATE,
interval => 'SYSDATE + (1/144)');
DBMS_OUTPUT.PUT_LINE('Template ID = ' || dt_num);
END;
/
COMMIT;
/

dt_num変数に戻される値を記録しておきます。この値は、USER_REPCAT_TEMP_OUTPUTデータ・ディクショナリ・ビューから選択して、生成されたスクリプトを取り出すときに使用する必要があります。このタスクを実行した後、「インスタンス化スクリプトのファイルへの保存」に示す手順に従ってください。

インスタンス化スクリプトのファイルへの保存

USER_REPCAT_TEMP_OUTPUTデータ・ディクショナリ・ビューの内容を効率的に保存するには、UTL_FILEパッケージを使用して、USER_REPCAT_TEMP_OUTPUTビューのTEXT列の内容をファイルに保存します。

これらの内容は、ディレクトリ・オブジェクトに対応するディレクトリに保存されます。ディレクトリ・オブジェクトを作成するには、CREATE ANY DIRECTORY権限が必要です。レプリケーション管理者がこの権限を持っていない場合は、権限を付与できる管理ユーザーとして接続します。次に例を示します。

GRANT CREATE ANY DIRECTORY TO repadmin;

注意:
USER_REPCAT_TEMP_OUTPUTデータ・ディクショナリ・ビューの内容は一時的なため、INSTANTIATE_OFFLINEファンクションまたはINSTANTIATE_ONLINEファンクションのいずれかをコールした直後に次のアクションを実行する必要があります。「デプロイメント・テンプレートのパッケージ化」の手順を完了していない場合には、ここで実行し、次のアクションを完了します。

関連項目:
UTL_FILEパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

次の項目を入力して、デプロイメント・テンプレート・スクリプトをファイルに保存します。

DECLARE
fh UTL_FILE.FILE_TYPE;
CURSOR ddlcursor(myid NUMBER) IS
SELECT TEXT FROM USER_REPCAT_TEMP_OUTPUT WHERE OUTPUT_ID = myid ORDER BY LINE;
BEGIN
fh := UTL_FILE.FOPEN ('file_location', 'file_name', 'w');
UTL_FILE.PUT_LINE (fh, 'SET ECHO OFF;');
FOR myrec IN ddlcursor(template_id) LOOP
UTL_FILE.PUT_LINE(fh, myrec.text);
END LOOP;
UTL_FILE.PUT_LINE (fh, 'SET ECHO ON;');
UTL_FILE.FFLUSH(fh);
UTL_FILE.FCLOSE(fh);
END;
/

file_location、file_nameおよびtemplate_idはプレースホルダであることに注意してください。使用している環境に合わせて正しい値に置換します。

- file_locationプレースホルダを、テンプレート・スクリプトの保存先ディレクトリを表すディレクトリ・オブジェクトの名前に置換します。

- file_nameプレースホルダを、テンプレートのスクリプトに使用する名前で置換します。

- template_idプレースホルダを、以前テンプレートをパッケージ化したときに、INSTANTIATE_OFFLINEまたはINSTANTIATE_ONLINEファンクションから戻された番号で置換します。

たとえば、次のような値があるとします。

プレースホルダ

値

file_location

/home/gen_files/

file_name

sf.sql

template_id

18

これらの値を指定した後、レプリケーション管理者としてマスター・サイトに接続します。次のプロシージャを実行してテンプレートのスクリプトをファイルに保存します。

CONNECT repadmin@orc3.example.com
Enter password: password

CREATE DIRECTORY GFILES AS '/home/gen_files';

DECLARE
fh UTL_FILE.FILE_TYPE;
CURSOR ddlcursor(myid NUMBER) IS
SELECT TEXT FROM USER_REPCAT_TEMP_OUTPUT WHERE OUTPUT_ID = myid
ORDER BY LINE;
BEGIN
fh := UTL_FILE.FOPEN ('GFILES', 'sf.sql', 'w');
UTL_FILE.PUT_LINE (fh, 'SET ECHO OFF;');
FOR myrec IN ddlcursor(18) LOOP
UTL_FILE.PUT_LINE(fh, myrec.text);
END LOOP;
UTL_FILE.PUT_LINE (fh, 'SET ECHO ON;');
UTL_FILE.FFLUSH(fh);
UTL_FILE.FCLOSE(fh);
END;
/

インスタンス化ファイルの配布

インスタンス化スクリプトを作成して、それをファイルに保存した後、テンプレートをインスタンス化するリモート・マテリアライズド・ビュー・サイトにこのファイルを配布する必要があります。ファイルを配布するには、FTPサイトにファイルを送信するか、CD-ROM、フロッピィ・ディスクなどに保存します。ファイルは、DBMS_FILE_TRANSFERパッケージを使用して転送することもできます。

デプロイメント・テンプレートのインスタンス化

インスタンス化スクリプトがリモート・マテリアライズド・ビュー・サイトに配布された後、そこでデプロイメント・テンプレートをインスタンス化できます。デプロイメント・テンプレートをインスタンス化する前に、マテリアライズド・ビュー・サイトが設定されていることを確認してください。次のスクリプトは、リモート・マテリアライズド・ビュー・サイトでインスタンス化処理を実行する方法を示します。

関連項目:

- デプロイメント・テンプレートをインスタンス化する前に満たす必要があるマテリアライズド・ビュー・サイトの要件は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- 「マテリアライズド・ビュー・サイトの設定」

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   マテリアライズド・ビュー・サイトにスキーマが存在しない場合は作成します。

リモート・マテリアライズド・ビュー・サイトでインスタンス化スクリプトを実行する前に、レプリケート・オブジェクトを含むスキーマを作成します。

次の例は、hrスキーマの作成方法を示します。このスキーマは、データベースに存在する場合があります。その場合、そのスキーマには、CREATE MATERIALIZED VIEW、ALTER ANY MATERIALIZED VIEW、CREATE DATABASE LINKなどの追加の権限が必要な場合があります。

*/

SET ECHO ON

SPOOL instant_mv.out

CONNECT system@mv4.example.com

CREATE TABLESPACE demo_mv
DATAFILE 'demo_mv.dbf' SIZE 10M AUTOEXTEND ON
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv
TEMPFILE 'temp_mv.dbf' SIZE 5M AUTOEXTEND ON;
ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mv
QUOTA UNLIMITED ON demo_mv;

ALTER USER hr TEMPORARY TABLESPACE temp_mv;

GRANT
CREATE SESSION,
CREATE TABLE,
CREATE PROCEDURE,
CREATE SEQUENCE,
CREATE TRIGGER,
CREATE VIEW,
CREATE SYNONYM,
ALTER SESSION,
CREATE MATERIALIZED VIEW,
ALTER ANY MATERIALIZED VIEW,
CREATE DATABASE LINK
TO hr;

/*

手順2   スキーマへのデータベース・リンクが存在しない場合は作成します。

デプロイメント・テンプレートをインスタンス化する前に、レプリケーション・スキーマへの必要なデータベース・リンクが存在することを確認します。マテリアライズド・ビューの所有者は、マスター・サイトの設定時に作成したproxy_refresherへのデータベース・リンクが必要です。

*/

CREATE PUBLIC DATABASE LINK orc3.example.com USING 'orc3.example.com';

CONNECT hr@mv4.example.com

CREATE DATABASE LINK orc3.example.com
CONNECT TO proxy_refresher IDENTIFIED BY &password;

/*

関連項目:
プロキシ・マスター・サイト・ユーザーの作成の詳細は、手順7を参照してください。

手順3   インスタンス化スクリプトを実行します。

*/

CONNECT mviewadmin@mv4.example.com

@d:\sf.sql

SET ECHO OFF

SPOOL OFF

/*

構築するマテリアライズド・ビュー環境の規模やロードされるデータ量によっては、インスタンス化処理にかなり時間がかかる場合があります。

************************** END OF SCRIPT **********************************/

インスタンス化後のリフレッシュ・グループのリフレッシュ

オフライン・インスタンシエーション・メソッドを使用してデプロイメント・テンプレートをインスタンス化した場合は、次の実行文を発行して、できるだけ早くリフレッシュ・グループをリフレッシュします。

CONNECT hr@mv4.example.com
Enter password: password

EXECUTE DBMS_REFRESH.REFRESH ('hr_refg');

5 マテリアライズド・ビュー・グループの作成

この章では、リモート・マテリアライズド・ビュー・レプリケーション・サイトで、マテリアライズド・ビュー・グループを作成する方法を説明します。

この章には、次の項が含まれます。

- マテリアライズド・ビュー・グループ作成の概要

- マテリアライズド・ビュー・グループの作成

マテリアライズド・ビュー環境を構築する前に、マスター・サイトの設定、マスター・グループの作成および目的のマテリアライズド・ビュー・サイトの設定を行います。また、作成したマテリアライズド・ビュー・サイトでのアクティビティによって、マスター・サイトで競合が発生する可能性がある場合は、マテリアライズド・ビュー・グループを作成する前に、マテリアライズド・ビューのマスター表に対して競合解消を設定します。

関連項目:

- 「マスター・サイトの設定」

- 「マスター・グループ作成の概要」

- 「マテリアライズド・ビュー・サイトの設定」

- 第6章「競合解消の構成」

マテリアライズド・ビュー・グループ作成の概要

マテリアライズド・ビュー・サイトを設定して、1つ以上のマスター・グループを作成すれば、リモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー・グループを作成できます。図5-1では、マテリアライズド・ビュー・グループの作成プロセスを説明しています。

関連項目:
マテリアライズド・ビュー・サイトの設定の詳細は、第2章「レプリケーション・サイトの構成」を参照してください。マスター・グループの作成の詳細は、第3章「マスター・グループの作成」を参照してください。

図5-1 マテリアライズド・ビュー・グループの作成

マテリアライズド・ビュー・グループの作成

この章では、2つのマテリアライズド・ビュー・サイトmv1.example.comおよびmv2.example.comに、2つのマテリアライズド・ビュー・グループを作成するプロセスを説明します。

- mv1.example.comのマテリアライズド・ビュー・グループは、orc1.example.comマスター・サイトのhr_repgマスター・グループのオブジェクトに基づいています。

- mv2.example.comのマテリアライズド・ビュー・グループは、mv1.example.comマテリアライズド・ビュー・サイトのhr_repgマテリアライズド・ビュー・グループのオブジェクトに基づいています。

このため、この章の例では複数層マテリアライズド・ビュー環境の作成方法、1つ以上のマテリアライズド・ビューが基にする他のマテリアライズド・ビューをどこにするかを説明します。

次の手順に従って、これら2つのマテリアライズド・ビュー・グループを作成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

mv1.example.comにマテリアライズド・ビュー・グループを作成

次の手順に従って、mv1.example.comマテリアライズド・ビュー・サイトにhr_repgマテリアライズド・ビュー・グループを作成します。このマテリアライズド・ビュー・グループは、orc1.example.comマスター・サイトのhr_repgマスター・グループに基づいています。

手順1   マスター・サイトにマテリアライズド・ビュー・ログを作成します。

マスター・サイトの1つで、マテリアライズド・ビュー・サイトをサポートするには、マテリアライズド・ビューにレプリケートされる各マスター表のマテリアライズド・ビュー・ログを作成する必要があります。orc1.example.comがmv1.example.comマテリアライズド・ビュー・サイトのターゲット・マスター・サイトであることを図2-1で再確認してください。必要なマテリアライズド・ビュー・ログは、orc1.example.comに作成します。

*/

SET ECHO ON

SPOOL create_mv_group.out

CONNECT hr@orc1.example.com

CREATE MATERIALIZED VIEW LOG ON hr.countries;
CREATE MATERIALIZED VIEW LOG ON hr.departments;
CREATE MATERIALIZED VIEW LOG ON hr.employees;
CREATE MATERIALIZED VIEW LOG ON hr.jobs;
CREATE MATERIALIZED VIEW LOG ON hr.job_history;
CREATE MATERIALIZED VIEW LOG ON hr.locations;
CREATE MATERIALIZED VIEW LOG ON hr.regions;

/*

関連項目:
このSQL文の詳細は、『Oracle Database SQL言語リファレンス』のCREATE MATERIALIZED VIEW LOG文に関する項を参照してください。

手順2   レプリケート・スキーマおよびそのデータベース・リンクが存在しない場合は作成します。

マテリアライズド・ビュー・グループを構築する前に、リモート・マテリアライズド・ビュー・サイトにレプリケート・スキーマが存在して、必要なデータベース・リンクが作成されていることを確認します。

この例で、hrスキーマが存在しない場合は作成します。マテリアライズド・ビュー・サイトにhrスキーマが存在する場合は、必要な権限を付与してこの手順の次のタスクに進みます。

*/

CONNECT system@mv1.example.com

CREATE TABLESPACE demo_mv1
DATAFILE 'demo_mv1.dbf' SIZE 10M AUTOEXTEND ON
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv1
TEMPFILE 'temp_mv1.dbf' SIZE 5M AUTOEXTEND ON;

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mv1
QUOTA UNLIMITED ON demo_mv1;

ALTER USER hr TEMPORARY TABLESPACE temp_mv1;

GRANT
CREATE SESSION,
CREATE TABLE,
CREATE PROCEDURE,
CREATE SEQUENCE,
CREATE TRIGGER,
CREATE VIEW,
CREATE SYNONYM,
ALTER SESSION,
CREATE MATERIALIZED VIEW,
ALTER ANY MATERIALIZED VIEW,
CREATE DATABASE LINK
TO hr;

/*

レプリケート・スキーマへのデータベース・リンクが存在しない場合は作成します。

マテリアライズド・ビュー・グループを構築する前に、レプリケーション・スキーマへの必要なデータベース・リンクが存在することを確認します。マテリアライズド・ビューの所有者は、マスター・サイトの設定時に作成したproxy_refresherへのデータベース・リンクが必要です。

*/

CONNECT hr@mv1.example.com

CREATE DATABASE LINK orc1.example.com
CONNECT TO proxy_refresher IDENTIFIED BY &password;

/*

手順3   マテリアライズド・ビュー・グループを作成します。

次のプロシージャは、リモート・マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が実行します。

*/

CONNECT mviewadmin@mv1.example.com

/*

gnameパラメータで指定したマスター・グループは、ターゲット・マスター・サイトでレプリケートするマスター・グループの名前と一致する必要があります。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname => 'hr_repg',
master => 'orc1.example.com',
propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

手順4   リフレッシュ・グループを作成します。

特定のリフレッシュ・グループに追加されたすべてのマテリアライズド・ビューは、同時にリフレッシュされます。このため、リフレッシュ・グループ内の関連するマテリアライズド・ビュー間では、トランザクション一貫性が保たれます。

*/

BEGIN
DBMS_REFRESH.MAKE (
name => 'mviewadmin.hr_refg',
list => '',
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
implicit_destroy => FALSE,
rollback_seg => '',
push_deferred_rpc => TRUE,
refresh_after_errors => FALSE);
END;
/

/*

手順5   オブジェクトをマテリアライズド・ビュー・グループに追加します。

マスター表に基づいてマテリアライズド・ビューを作成します。

マテリアライズド・ビューを作成するときは、必ず、マテリアライズド・ビューに対する問合せの中で表の所有者のスキーマ名を指定します。次の例では、各問合せにおける表の所有者としてhrが指定されています。

*/

CREATE MATERIALIZED VIEW hr.countries_mv1
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.countries@orc1.example.com;

CREATE MATERIALIZED VIEW hr.departments_mv1
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.departments@orc1.example.com;

CREATE MATERIALIZED VIEW hr.employees_mv1
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.employees@orc1.example.com;

CREATE MATERIALIZED VIEW hr.jobs_mv1
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.jobs@orc1.example.com;

CREATE MATERIALIZED VIEW hr.job_history_mv1
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.job_history@orc1.example.com;

CREATE MATERIALIZED VIEW hr.locations_mv1
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.locations@orc1.example.com;

CREATE MATERIALIZED VIEW hr.regions_mv1
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.regions@orc1.example.com;

/*

オブジェクトをマテリアライズド・ビュー・グループに追加します。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'countries_mv1',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'departments_mv1',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'employees_mv1',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'jobs_mv1',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'job_history_mv1',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'locations_mv1',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'regions_mv1',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

/*

手順6   オブジェクトをリフレッシュ・グループに追加します。

リフレッシュ・グループに追加するすべてのマテリアライズド・ビュー・グループ・オブジェクトは同時にリフレッシュされるので、関連するマテリアライズド・ビュー間での参照整合性が保たれます。

*/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.countries_mv1',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.departments_mv1',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.employees_mv1',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.jobs_mv1',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.job_history_mv1',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.locations_mv1',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.regions_mv1',
lax => TRUE);
END;
/

/*

mv2.example.comにマテリアライズド・ビュー・グループを作成

次の手順に従って、mv2.example.comマテリアライズド・ビュー・サイトにhr_repgマテリアライズド・ビュー・グループを作成します。このマテリアライズド・ビュー・グループは、mv1.example.comマテリアライズド・ビュー・サイトのhr_repgマテリアライズド・ビュー・グループに基づいています。

手順1   マスター・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー・ログを作成します。

マスター・マテリアライズド・ビュー・サイトの1つが他のマテリアライズド・ビュー・サイトをサポートするには、他のマテリアライズド・ビュー・サイトにレプリケートされるマテリアライズド・ビューごとにマテリアライズド・ビュー・ログを作成する必要があります。mv1.example.comがmv2.example.comマテリアライズド・ビュー・サイトのターゲット・マスター内部化ビュー・サイトであることを図2-1で再確認してください。必要なマテリアライズド・ビュー・ログは、mv1.example.comに作成します。

*/

CONNECT hr@mv1.example.com

CREATE MATERIALIZED VIEW LOG ON hr.countries_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.departments_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.employees_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.jobs_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.job_history_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.locations_mv1;
CREATE MATERIALIZED VIEW LOG ON hr.regions_mv1;

/*

関連項目:
このSQL文の詳細は、『Oracle Database SQL言語リファレンス』のCREATE MATERIALIZED VIEW LOG文に関する項を参照してください。

手順2   レプリケート・スキーマおよびそのデータベース・リンクが存在しない場合は作成します。

マテリアライズド・ビュー・グループを構築する前に、リモート・マテリアライズド・ビュー・サイトにレプリケート・スキーマが存在して、必要なデータベース・リンクが作成されていることを確認します。

この例で、hrスキーマが存在しない場合は作成します。マテリアライズド・ビュー・サイトにhrスキーマが存在する場合は、この手順の次のタスクに進みます。

*/

CONNECT system@mv2.example.com
CREATE TABLESPACE demo_mv2
DATAFILE 'demo_mv2.dbf' SIZE 10M AUTOEXTEND ON
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv2
TEMPFILE 'temp_mv2.dbf' SIZE 5M AUTOEXTEND ON;

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mv2
QUOTA UNLIMITED ON demo_mv2;

ALTER USER hr TEMPORARY TABLESPACE temp_mv2;

GRANT
CREATE SESSION,
CREATE TABLE,
CREATE PROCEDURE,
CREATE SEQUENCE,
CREATE TRIGGER,
CREATE VIEW,
CREATE SYNONYM,
ALTER SESSION,
CREATE MATERIALIZED VIEW,
ALTER ANY MATERIALIZED VIEW,
CREATE DATABASE LINK
TO hr;

/*

レプリケート・スキーマへのデータベース・リンクが存在しない場合は作成します。

マテリアライズド・ビュー・グループを構築する前に、レプリケーション・スキーマへの必要なデータベース・リンクが存在することを確認します。マテリアライズド・ビューの所有者は、マスター・マテリアライズド・ビュー・サイトの設定時に作成したproxy_refresherへのデータベース・リンクが必要です。

*/

CONNECT hr@mv2.example.com

CREATE DATABASE LINK mv1.example.com
CONNECT TO proxy_refresher IDENTIFIED BY &password;

/*

関連項目:
プロキシ・マスター・マテリアライズド・ビュー・サイトのユーザー作成の詳細は、手順6を参照してください。

手順3   マテリアライズド・ビュー・グループを作成します。

次のプロシージャは、リモート・マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が実行します。

*/

CONNECT mviewadmin@mv2.example.com

/*

gnameパラメータで指定したレプリケーション・グループは、ターゲット・マスター・マテリアライズド・ビュー・サイトでレプリケートするレプリケーション・グループの名前と一致する必要があります。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname => 'hr_repg',
master => 'mv1.example.com',
propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

手順4   リフレッシュ・グループを作成します。

特定のリフレッシュ・グループに追加されたすべてのマテリアライズド・ビューは、同時にリフレッシュされます。このため、リフレッシュ・グループ内の関連するマテリアライズド・ビュー間では、トランザクション一貫性が保たれます。

*/

BEGIN
DBMS_REFRESH.MAKE (
name => 'mviewadmin.hr_refg',
list => '',
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
implicit_destroy => FALSE,
rollback_seg => '',
push_deferred_rpc => TRUE,
refresh_after_errors => FALSE);
END;
/

/*

手順5   オブジェクトをマテリアライズド・ビュー・グループに追加します。

マスター・マテリアライズド・ビューに基づいてマテリアライズド・ビューを作成します。

他のマテリアライズド・ビューに基づいたマテリアライズド・ビューを作成した場合は必ず、マテリアライズド・ビューの問合せでマテリアライズド・ビュー所有者の名前を指定します。次の例では、各問合せにおけるマテリアライズド・ビューの所有者としてhrが指定されています。

*/

CREATE MATERIALIZED VIEW hr.countries_mv2
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.countries_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.departments_mv2
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.departments_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.employees_mv2
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.employees_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.jobs_mv2
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.jobs_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.job_history_mv2
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.job_history_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.locations_mv2
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.locations_mv1@mv1.example.com;

CREATE MATERIALIZED VIEW hr.regions_mv2
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.regions_mv1@mv1.example.com;

/*

マテリアライズド・ビューをマテリアライズド・ビュー・グループに追加します。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'countries_mv2',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'departments_mv2',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'employees_mv2',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'jobs_mv2',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'job_history_mv2',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'locations_mv2',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'regions_mv2',
type => 'SNAPSHOT',
min_communication => TRUE);
END;
/

/*

手順6   オブジェクトをリフレッシュ・グループに追加します。

リフレッシュ・グループに追加するすべてのマテリアライズド・ビュー・グループ・オブジェクトは同時にリフレッシュされるので、関連するマテリアライズド・ビュー間での参照整合性が保たれます。

*/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.countries_mv2',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.departments_mv2',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.employees_mv2',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.jobs_mv2',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.job_history_mv2',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.locations_mv2',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.regions_mv2',
lax => TRUE);
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

6 競合解消の構成

この章では、レプリケーション環境に競合解消メソッドを定義する方法を説明します。

この章には、次の項が含まれます。

- 競合解消の準備

- 更新の競合の競合解消メソッドの作成

- 一意性競合の競合解消メソッドの作成

- 削除の競合防止メソッドの作成

- 動的所有権の競合防止メソッド

- 競合解消の監査

競合解消の準備

レプリケーション環境において複数のサイト間での競合を防ぐようにデータベースおよびフロントエンド・アプリケーションを設計していても、競合の可能性をなくすことはできないでしょう。レプリケーションの最も重要な側面の1つは、レプリケーション環境に参加しているすべてのサイトでデータ収束を確保することです。

データの競合が発生した場合、競合がビジネス・ルールに従って解消され、すべてのサイトでデータを正常に収束させるためのメカニズムが必要です。

Advanced Replicationでは、ビジネス・ルールに従って競合を解消する、データベース用の競合解消システムを定義できます。Oracleの組込みの競合解消メソッドで競合を解消できない場合は、独自の競合解消メソッドを作成し、それを使用して競合を解消できます。

レプリケート表に競合解消メソッドを実装する前に、システム内のデータを分析し、競合の起こりやすい領域を確認します。たとえば、従業員番号などの静的データは、頻繁には変更されないため、競合はあまり起こりません。これに対して、従業員の担当顧客は頻繁に変わるので、データの競合が起こりやすくなります。

競合の起こりやすい領域を特定した後、その解消方法を決定する必要があります。たとえば、最新の変更を優先させたり、特定のサイトを優先させたりします。

様々な競合解消メソッドを説明したそれぞれの項を読むと、それぞれのメソッドが何に最も適しているかを理解できます。そのため、それぞれの項を読み、自分のビジネスで競合の可能性をどのように解消するのがよいかを検討してください。

問題の起こりうる領域を特定し、その問題を解決するビジネス・ルールを決定した後、Oracleの競合解消メソッド(またはユーザー独自のメソッドのいずれか)を使用して競合解消システムを実装します。

関連項目:
競合解消メソッドの概念および各メソッドに対するデータ収束の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

更新の競合の競合解消メソッドの作成

データの競合は、複数のサイトでほぼ同時に同じ行が更新された場合、またはあるサイトの遅延トランザクションが他のサイトに正しく伝播される前に最も発生します。

更新の競合を回避する方法の1つは、同期レプリケーション環境を実装することです。ただし、この方法は、大量のネットワーク・リソースを必要とします。

もう1つの方法は、Oracle競合解消メソッドを使用することです。これらの方法を使用すると、同じ行が複数の更新を受信した場合に起こる更新の競合に対処できます。

上書きおよび廃棄による競合解消メソッド

上書きによるメソッドと廃棄によるメソッドは、レプリケーション元またはレプリケーション先のサイトからの値を無視するため、複数のマスター・サイトでの確実なデータ収束は保証されません。これらのメソッドは、単一のマスター・サイトと複数のマテリアライズド・ビュー・サイトで使用するか、あるいは、なんらかのユーザー定義の通知機能と使用することを前提としています。

上書きによるメソッドは、レプリケーション元の新しい値で、レプリケーション先のカレント値を置き換えます。これに対して、廃棄によるメソッドは、レプリケーション元からの新しい値を無視します。

関連項目:
上書きおよび廃棄の詳細は、「ADD_conflicttype_RESOLUTIONプロシージャ」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

次の手順に従って、上書きまたは廃棄の競合解消メソッドを作成します。次の例は、マスター・サイトでの廃棄による競合解消メソッドの使用を示しています。したがって、競合が発生すると、マテリアライズド・ビュー・サイトからのデータは廃棄され、マスター・サイトのデータは保持されます。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者として接続します。

次の手順のプロシージャは、レプリケーション管理者が実行します。

*/

SET ECHO ON

SPOOL discard_conflictres.out

CONNECT repadmin@orc1.example.com

/*

手順2   競合解消メソッドを適用する表が含まれたマスター・グループを静止します。

上書きまたは廃棄による競合解消メソッドを定義する前に、競合解消メソッドを適用する表を含むマスター・グループを静止します。単一のマスター・レプリケーション環境においては、マスター・グループの静止は必要ありません。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   ターゲット表の列グループを作成します。

Oracleの競合解消メソッドはすべて、列グループと呼ばれる論理列グループ化に基づいています。

*/

BEGIN
DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname => 'hr',
oname => 'departments',
column_group => 'dep_cg',
list_of_column_names => 'manager_id,location_id');
END;
/

/*

手順4   指定した表に対して競合解消メソッドを定義します。

この例では、OVERWRITE競合解消メソッドを作成します。

*/

BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'hr',
oname => 'departments',
column_group => 'dep_cg',
sequence_no => 1,
method => 'DISCARD',
parameter_column_name => 'manager_id,location_id');
END;
/

/*

手順5   競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'departments',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順6   レプリケーション・サポートが生成された後に、マスター・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

最小および最大の競合解消メソッド

Advanced Replicationによって列グループの競合が検出され、最小のメソッドまたは最大のメソッドがコールされると、列グループ内の該当する列で、レプリケーション元の新しい値とレプリケーション先のカレント値が比較されます。競合解消メソッドを定義する場合は、この列を指定します。

指定した列の新規値が現行値より小さい場合または大きい場合(使用するメソッドによる)、その行の他のすべてのエラーが解消された場合、接続元サイトの列グループ値が接続先サイトに適用されます。そうでない場合は、行が変更されずにそのまま保持されます。

次の手順に従って、最小または最大の競合解消メソッドを作成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者として接続します。

次の手順のプロシージャは、レプリケーション管理者が実行します。

*/

SET ECHO ON

SPOOL min_conflictres.out

CONNECT repadmin@orc1.example.com

/*

手順2   競合解消メソッドを適用する表が含まれたマスター・グループを静止します。

最小または最大の競合解消メソッドを定義する前に、競合解消メソッドを適用する表を含むマスター・グループを静止します。単一のマスター・レプリケーション環境においては、マスター・グループの静止は必要ありません。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   ターゲット表の列グループを作成します。

Oracleの競合解消メソッドはすべて、列グループと呼ばれる論理列グループ化に基づいています。

*/

BEGIN
DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname => 'hr',
oname => 'jobs',
column_group => 'job_minsal_cg',
list_of_column_names => 'min_salary');
END;
/

/*

手順4   指定した表に対して競合解消メソッドを定義します。

この例では、MINIMUM競合解消メソッドを作成します。

*/

BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'hr',
oname => 'jobs',
column_group => 'job_minsal_cg',
sequence_no => 1,
method => 'MINIMUM',
parameter_column_name => 'min_salary');
END;
/

/*

手順5   競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'jobs',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順6   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

タイムスタンプによる競合解消メソッド

最古のタイムスタンプによるメソッドと最新のタイムスタンプによるメソッドは、最小のメソッドと最大のメソッドに類似しています。タイムスタンプによるメソッドを使用するには、DATE型のレプリケート表にある列を指定する必要があります。アプリケーションで列グループのいずれかの列を更新する場合は、レプリケーション先のtimestamp列の値をローカルのSYSDATE値で更新する必要があります。他のサイトから適用された変更に対しては、タイムスタンプ値をレプリケート元のタイムスタンプ値に設定します。

タイムスタンプによる競合解消が正しく機能するための2つの要素は次のとおりです。

- コンピュータ間で同期化された時刻の設定

- タイムスタンプを自動的に記録するためのタイムスタンプ・フィールドとトリガー

次の手順に従って、タイムスタンプによる競合解消メソッドを作成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者として接続します。

次の手順のプロシージャは、レプリケーション管理者が実行します。

*/

SET ECHO ON

SPOOL timestamp_conflictres.out

CONNECT repadmin@orc1.example.com

/*

手順2   競合解消メソッドを適用する表が含まれたマスター・グループを静止します。

タイムスタンプによる競合解消メソッドを定義する前に、競合解消メソッドを適用する表を含むマスター・グループを静止します。単一のマスター・レプリケーション環境においては、マスター・グループの静止は必要ありません。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   行を挿入または更新した場合は、表に列を追加して、タイムスタンプ値を記録します。

ターゲット表にタイムスタンプ・フィールドが存在しない場合は、行が挿入または更新されたときにタイムスタンプ値を記録する表に、列を追加します。DDLをターゲット表に適用するには、ALTER_MASTER_REPOBJECTプロシージャを使用します。DDLを発行するのみでレプリケート・オブジェクトが無効になります。

*/

BEGIN
DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
sname => 'hr',
oname => 'countries',
type => 'TABLE',
ddl_text => 'ALTER TABLE hr.countries ADD (timestamp DATE)');
END;
/

/*

手順4   変更された表のレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'countries',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順5   行が挿入または更新されたときにタイムスタンプを記録するトリガーを作成します。

記録された値は、タイムスタンプによるメソッドに基づいた競合の解消で使用されます。トリガーを作成して、マスター・グループに追加するには、DDLを直接実行するのではなく、DBMS_REPCAT.CREATE_MASTER_REPOBJECTプロシージャを使用します。

注意:
優先グループによる競合解消には、datetimeおよびintervalデータ型の列は使用できません。

*/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TRIGGER',
oname => 'insert_time',
sname => 'hr',
ddl_text => 'CREATE TRIGGER hr.insert_time
BEFORE
INSERT OR UPDATE ON hr.countries FOR EACH ROW
BEGIN
IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
:NEW.TIMESTAMP := SYSDATE;
END IF;
END;');
END;
/

/*

手順6   ターゲット表の列グループを作成します。

Oracleの競合解消メソッドはすべて、列グループと呼ばれる論理列グループ化に基づいています。

*/

BEGIN
DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname => 'hr',
oname => 'countries',
column_group => 'countries_timestamp_cg',
list_of_column_names => 'country_name,region_id,timestamp');
END;
/

/*

手順7   指定した表に対して競合解消メソッドを定義します。

この例では、以前作成したtimestamp列を使用して、LATEST TIMESTAMP競合解消メソッドを指定します。

*/

BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'hr',
oname => 'countries',
column_group => 'countries_timestamp_cg',
sequence_no => 1,
method => 'LATEST TIMESTAMP',
parameter_column_name => 'timestamp');
END;
/

/*

手順8   競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'countries',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順9   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

加算による競合解消メソッドと平均による競合解消メソッド

加算によるメソッドと平均によるメソッドは、1つの数値列のみから構成される列グループに使用します。この競合解消メソッドは、一方の値のみを受け付けるのではなく、比較対象の2つの値を加算するか、またはその2つの平均を取ります。

次の手順に従って、加算競合解消メソッドまたは平均競合解消メソッドを作成します。この例では、競合が発生した場合に、従業員のコミッション率の平均を取ります。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者として接続します。

次の手順のプロシージャは、レプリケーション管理者が実行します。

*/

SET ECHO ON

SPOOL average_conflictres.out

CONNECT repadmin@orc1.example.com

/*

手順2   競合解消メソッドを適用する表が含まれたマスター・グループを静止します。

加算競合解消メソッドおよび平均競合解消メソッドを定義する前に、競合解消メソッドを適用する表を含むマスター・グループを静止します。単一のマスター・レプリケーション環境においては、マスター・グループの静止は必要ありません。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   ターゲット表の列グループを作成します。

Oracleの競合解消メソッドはすべて、列グループと呼ばれる論理列グループ化に基づいています。

*/

BEGIN
DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname => 'hr',
oname => 'employees',
column_group => 'commission_average_cg',
list_of_column_names => 'commission_pct');
END;
/

/*

手順4   指定した表に対して競合解消メソッドを定義します。

この例では、sal列を使用して、AVERAGE競合解消メソッドを指定します。

*/

BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'hr',
oname => 'employees',
column_group => 'commission_average_cg',
sequence_no => 1,
method => 'AVERAGE',
parameter_column_name => 'commission_pct');
END;
/

/*

手順5   競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'employees',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順6   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

優先グループによる競合解消メソッド

優先グループでは、特定の列にある値ごとに優先レベルを指定できます。Oracleによって競合が検出されると、優先列で優先順位の低い値を持つ表が、優先順位の高い値を持つ表のデータで更新されます。

次の手順に従って、優先グループによる競合解消メソッドを作成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者として接続します。

次の手順のプロシージャは、レプリケーション管理者が実行します。

*/

SET ECHO ON

SPOOL priority_groups_conflictres.out

CONNECT repadmin@orc1.example.com

/*

手順2   競合解消メソッドを適用する表が含まれたマスター・グループを静止します。

優先グループによる競合解消メソッドを定義する前に、競合解消メソッドを適用する表を含むマスター・グループを静止します。単一のマスター・レプリケーション環境においては、マスター・グループの静止は必要ありません。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   サイトの優先順位による競合解消メカニズムを使用する列グループに、job_id列が含まれていることを確認します。

この列を既存の列グループに追加するには、ADD_GROUPED_COLUMNプロシージャを使用します。列グループを作成していない場合は、DBMS_REPCAT.MAKE_COLUMN_GROUPプロシージャを使用して、新しい列グループを作成できます。

*/

BEGIN
DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname => 'hr',
oname => 'employees',
column_group => 'employees_priority_cg',
list_of_column_names => 'manager_id,hire_date,salary,job_id');
END;
/

/*

手順4   優先順位の値を表に割り当てる前に、定義した値を保持する優先グループを作成します。

*/

BEGIN
DBMS_REPCAT.DEFINE_PRIORITY_GROUP (
gname => 'hr_repg',
pgroup => 'job_pg',
datatype => 'VARCHAR2');
END;
/

/*

手順5   利用できるすべての表の値に対して優先順位の値を定義します。

DBMS_REPCAT.ADD_PRIORITY_datatypeプロシージャは、複数のバージョンが利用できます。利用可能な各データ型にはバージョンがあります(NUMBER、VARCHAR2など)。利用するすべての表に対して優先順位の値を定義し終えるまで、必要に応じてこのプロシージャを実行します。

関連項目:
詳細は、「ADD_PRIORITY_datatypeプロシージャ」を参照してください。

*/

BEGIN
DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
gname => 'hr_repg',
pgroup => 'job_pg',
value => 'ad_pres',
priority => 100);
END;
/

BEGIN
DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
gname => 'hr_repg',
pgroup => 'job_pg',
value => 'sa_man',
priority => 80);
END;
/

BEGIN
DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
gname => 'hr_repg',
pgroup => 'job_pg',
value => 'sa_rep',
priority => 60);
END;
/

BEGIN
DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
gname => 'hr_repg',
pgroup => 'job_pg',
value => 'pu_clerk',
priority => 40);
END;
/

BEGIN
DBMS_REPCAT.ADD_PRIORITY_VARCHAR2(
gname => 'hr_repg',
pgroup => 'job_pg',
value => 'st_clerk',
priority => 20);
END;
/

/*

手順6   PRIORITY GROUP解消メソッドをレプリケート表に追加します。

次の例では、このメソッドは指定した列グループの第2の競合解消メソッドです(sequence_noパラメータ)。

*/

BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'hr',
oname => 'employees',
column_group => 'employees_priority_cg',
sequence_no => 2,
method => 'PRIORITY GROUP',
parameter_column_name => 'job_id',
priority_group => 'job_pg');
END;
/

/*

手順7   競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'employees',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順8   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

サイトの優先順位による競合解消メソッド

サイトの優先順位は、優先グループを特殊化したものです。このため、サイトの優先順位に対応付けられたプロシージャは、優先グループに対応付けられたプロシージャと同じように機能します。競合は、フィールドの値の優先順位ではなく、関係するサイトの優先順位に基づいて解消されます。

たとえば、orc2.example.comの優先順位がorc1.example.comよりも高い場合に、この2つのサイトで競合が起こると、orc2.example.comの値が使用されます。

次の手順に従って、サイトの優先順位による競合解消メソッドを作成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者として接続します。

次の手順のプロシージャは、レプリケーション管理者が実行します。

*/

SET ECHO ON

SPOOL site_priority_conflictres.out

CONNECT repadmin@orc1.example.com

/*

手順2   競合解消メソッドを適用する表が含まれたマスター・グループを静止します。

サイトの優先順位による競合解消メソッドを定義する前に、競合解消メソッドを適用する表を含むマスター・グループを静止します。単一のマスター・レプリケーション環境においては、マスター・グループの静止は必要ありません。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   サイトの値を格納する表に、サイトの列を追加します。

DDLをターゲット表に適用するには、DBMS_REPCAT.ALTER_MASTER_REPOBJECTプロシージャを使用します。DDLを発行するのみでレプリケート・オブジェクトが無効になります。

*/

BEGIN
DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
sname => 'hr',
oname => 'regions',
type => 'TABLE',
ddl_text => 'ALTER TABLE hr.regions ADD (site VARCHAR2(20))');
END;
/

/*

手順4   影響のあったオブジェクトのレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'regions',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順5   行が挿入または更新されたときにサイトのグローバル名を記録するトリガーを作成します。

記録された値は、サイトの優先順位によるメソッドに基づいた競合の解消で使用されます。トリガーを作成して、マスター・グループに追加するには、DDLを直接実行するのではなく、DBMS_REPCAT.CREATE_MASTER_REPOBJECTプロシージャを使用します。

*/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TRIGGER',
oname => 'insert_site',
sname => 'hr',
ddl_text => 'CREATE TRIGGER hr.insert_site
BEFORE
INSERT OR UPDATE ON hr.regions 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   サイトの優先順位による競合解消メカニズムを使用する列グループに、新しい列が含まれていることを確認します。

この列を既存の列グループに追加するには、ADD_GROUPED_COLUMNプロシージャを使用します。列グループを作成していない場合は、DBMS_REPCAT.MAKE_COLUMN_GROUPプロシージャを使用して、新しい列グループを作成できます。

*/

BEGIN
DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname => 'hr',
oname => 'regions',
column_group => 'regions_sitepriority_cg',
list_of_column_names => 'region_id,region_name,site');
END;
/

/*

手順7   サイトの優先順位の値をレプリケート環境のサイトに割り当てる前に、定義した値を保持するサイトの優先グループを作成します。

*/

BEGIN
DBMS_REPCAT.DEFINE_SITE_PRIORITY (
gname => 'hr_repg',
name => 'regions_sitepriority_pg');
END;
/

/*

手順8   レプリケーション環境のサイトごとに優先順位の値を定義します。

レプリケーション環境の各サイトに対し、サイトの優先順位の値を定義し終えるまで、必要に応じてこのプロシージャを実行します。

*/

BEGIN
DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
gname => 'hr_repg',
name => 'regions_sitepriority_pg',
site => 'orc1.example.com',
priority => 100);
END;
/

BEGIN
DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
gname => 'hr_repg',
name => 'regions_sitepriority_pg',
site => 'orc2.example.com',
priority => 50);
END;
/

BEGIN
DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
gname => 'hr_repg',
name => 'regions_sitepriority_pg',
site => 'orc3.example.com',
priority => 25);
END;
/

/*

手順9   SITE PRIORITY解消メソッドをレプリケート表に追加します。

次の例では、このメソッドは指定した列グループの第3の競合解消メソッドです(sequence_noパラメータ)。

*/

BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'hr',
oname => 'regions',
column_group => 'regions_sitepriority_cg',
sequence_no => 1,
method => 'SITE PRIORITY',
parameter_column_name => 'site',
priority_group => 'regions_sitepriority_pg');
END;
/

/*

手順10   競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'regions',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順11   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

一意性競合の競合解消メソッドの作成

レプリケーション環境では、一意制約に関してデータの挿入を主な原因とする競合が発生する場合があります。ビジネス・ルールで重複行の削除が可能な場合、Oracleの組込み競合解消メソッドを使用して解消メソッドを定義できます。

ただし、競合する値を変更して、一意制約に違反しないようにする方が一般的です。競合する値を変更すれば、重要なデータが失われることはありません。Oracleの組込みの一意性競合解消メソッドを使用すると、値にサイト名や順序番号を付けることで、競合する値を一意にできます。

この他に、一意性競合解消メソッドの追加コンポーネントとして、通知機能があります。競合する情報はOracleによって変更されるので、その情報を表に挿入できますが、その場合、競合を通知して、その通知に基づいて競合を分析し、レコードを削除するのか、データを他のレコードにマージするのか、または競合するデータにまったく新しい値を定義するのかを決定することが必要です。

一意性競合解消メソッドでは列内の競合は一意制約により検出され、解消されます。この項の例では、email列に一意制約emp_email_ukが設定されているhrサンプル・スキーマのemployees表を使用します。

注意:
列に一意性競合解消メソッドを追加するには、列の一意索引名が一意制約名または主キー制約名と一致する必要があります。

次の手順に従って、一意性競合解消メソッドを作成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者として接続します。

*/

SET ECHO ON

SPOOL unique_conflictres.out

CONNECT repadmin@orc1.example.com

/*

手順2   競合解消メソッドを適用する表が含まれたマスター・グループを静止します。

一意性競合解消メソッドを定義する前に、競合解消メソッドを適用する表を含むマスター・グループが静止していることを確認します。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   通知機能から受信したメッセージを格納する表を作成します。

この例で使用する表の名前は、conf_reportです。

*/

BEGIN
DBMS_REPCAT.EXECUTE_DDL (
gname => 'hr_repg',
ddl_text => 'CREATE TABLE hr.conf_report (
line NUMBER(2),
txt VARCHAR2(80),
timestamp DATE,
table_name VARCHAR2(30),
table_owner VARCHAR2(30),
conflict_type VARCHAR2(7))');
END;
/

/*

手順4   手順3で作成した表の所有者として接続します。

*/

CONNECT hr@orc1.example.com

/*

手順5   競合が検出されたときにconf_report表へ通知を送信するパッケージを作成します。

この例で使用するパッケージの名前は、notifyです。

関連項目:
付録B「ユーザー定義の競合解消メソッド」では、このスクリプトで作成された競合解消通知パッケージを説明しています。

*/

CREATE OR REPLACE PACKAGE notify AS
FUNCTION emp_unique_violation (email IN OUT VARCHAR2,
discard_new_values IN OUT BOOLEAN)
RETURN BOOLEAN;
END notify;
/

CREATE OR REPLACE PACKAGE BODY notify AS
TYPE message_table IS TABLE OF VARCHAR2(80) INDEX BY BINARY_INTEGER;
PROCEDURE report_conflict(conflict_report IN MESSAGE_TABLE,
report_length IN NUMBER,
conflict_time IN DATE,
conflict_table IN VARCHAR2,
table_owner IN VARCHAR2,
conflict_type IN VARCHAR2) IS
BEGIN
FOR idx IN 1..report_length LOOP
BEGIN
INSERT INTO hr.conf_report
(line, txt, timestamp, table_name, table_owner, conflict_type)
VALUES (idx, SUBSTR(conflict_report(idx),1,80), conflict_time,
conflict_table, table_owner, conflict_type);
EXCEPTION WHEN others THEN NULL;
END;
END LOOP;
END report_conflict;
FUNCTION emp_unique_violation(email IN OUT VARCHAR2,
discard_new_values IN OUT BOOLEAN)
RETURN BOOLEAN IS
local_node VARCHAR2(128);
conf_report MESSAGE_TABLE;
conf_time DATE := SYSDATE;
BEGIN
BEGIN
SELECT global_name INTO local_node FROM global_name;
EXCEPTION WHEN others THEN local_node := '?';
END;
conf_report(1) := 'UNIQUENESS CONFLICT DETECTED IN EMPLOYEES ON ' ||
TO_CHAR(conf_time, 'MM-DD-YYYY HH24:MI:SS');
conf_report(2) := ' AT NODE ' || local_node;
conf_report(3) := 'ATTEMPTING TO RESOLVE CONFLICT USING' ||
' APPEND SITE NAME METHOD';
conf_report(4) := 'EMAIL: ' || email;
conf_report(5) := NULL;
report_conflict(conf_report,5,conf_time,'employees','hr','UNIQUE');
discard_new_values := FALSE;
RETURN FALSE;
END emp_unique_violation;
END notify;
/

/*

手順6   レプリケーション管理者として接続します。

*/

CONNECT repadmin@orc1.example.com

/*

手順7   手順5で作成したパッケージをレプリケーション環境のすべてのマスター・サイトにレプリケートします。

この手順によって、すべてのマスター・サイトで通知機能を利用できるようになります。

*/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type =>  'PACKAGE',
oname => 'notify',
sname => 'hr');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type =>  'PACKAGE BODY',
oname => 'notify',
sname => 'hr');
END;
/

/*

手順8   競合解消メソッドの一環として通知機能を追加します。

競合の発生を通知する機能のみの場合でも追加します。次の例では、USER FUNCTIONとして通知機能を追加しています。

*/

BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'hr',
oname => 'employees',
constraint_name => 'emp_email_uk',
sequence_no => 1,
method => 'USER FUNCTION',
comment => 'Notify DBA',
parameter_column_name => 'email',
function_name => 'hr.notify.emp_unique_violation');
END;
/

/*

手順9   表に実際の競合解消メソッドを追加します。

次の例では、APPEND SITE NAME一意性競合解消メソッドをレプリケート表へ追加しています。

*/

BEGIN
DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname => 'hr',
oname => 'employees',
constraint_name => 'emp_email_uk',
sequence_no => 2,
method => 'APPEND SITE NAME',
parameter_column_name => 'email');
END;
/

/*

手順10   競合解消メソッドを受信した表に対するレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'employees',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順11   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

削除の競合防止メソッドの作成

行の削除を行う場合は、比較する2つの値がある更新の競合とは違って、1つの値しか存在しないので、前述の更新の競合解消メソッドを適用できません。

レプリケーション環境で行を削除する最善の方法は、削除対象の行をマークし、マークされたすべてのレコードを表から定期的にパージして競合を回避することです。物理的に行が削除されるのではなく、比較される2つの値が存在するので、競合が発生しても、すべてのマスター・サイトでデータを収束させることができます(ただし、他のエラーが発生していないことを前提とします)。データが収束したことを確認した後、レプリケート・パージ・プロシージャを使用して、マークされた行をパージします。

データベース用のフロントエンド・アプリケーションを開発しているときに、削除用にマークされた行を除外したい場合があります。これは、こうすることでその行が物理的に削除されたようにユーザーに見えるためです。その場合単純に、データ・セットのSELECT文で削除用にマークされた行を除外します。

たとえば、次のようにSELECT文を指定して、現在の従業員をリストします。

SELECT * FROM hr.locations WHERE remove_date IS NULL;

次に、削除の競合を回避するレプリケート表を作成するメソッドを示します。また、削除対象としてマークされたレコードをパージするために、プロシージャ・レプリケーションを使用する方法も学びます。

次の手順に従って、削除の競合の競合防止メソッドを作成します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者としてマスター定義サイトに接続します。

*/

SET ECHO ON

SPOOL delete_conflictres.out

CONNECT repadmin@orc1.example.com

/*

手順2   競合解消メソッドを適用する表が含まれたマスター・グループを静止します。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   削除された記録のマークを格納するレプリケート表に列を追加します。

タイムスタンプを使用して削除の記録をマークすることをお薦めします(タイムスタンプでは、削除の記録がマークされた日時が示されます)。タイムスタンプを使用するということで、新しい列のデータ型はDATEとなります。remove_date列を既存のレプリケート表に追加するには、DBMS_REPCAT.ALTER_MASTER_REPOBJECTプロシージャを使用します。

*/

BEGIN
DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
sname => 'hr',
oname => 'locations',
type => 'TABLE',
ddl_text => 'ALTER TABLE hr.locations ADD (remove_date DATE)');
END;
/

/*

手順4   変更された表のレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'locations',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順5   レプリケーション環境のすべてのマスター・サイトにレプリケートされるパッケージを作成します。

このパッケージは、指定した表からマーク済の記録をすべてパージします。

*/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'PACKAGE',
oname => 'purge',
sname => 'hr',
ddl_text => 'CREATE OR REPLACE PACKAGE hr.purge AS
PROCEDURE remove_locations(purge_date DATE);
END;');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'PACKAGE BODY',
oname => 'purge',
sname => 'hr',
ddl_text => 'CREATE OR REPLACE PACKAGE BODY hr.purge AS
PROCEDURE remove_locations(purge_date IN DATE) IS
BEGIN
DBMS_REPUTIL.REPLICATION_OFF;
LOCK TABLE hr.locations IN EXCLUSIVE MODE;
DELETE hr.locations WHERE remove_date IS NOT NULL
AND remove_date < purge_date;
DBMS_REPUTIL.REPLICATION_ON;
EXCEPTION WHEN others THEN
DBMS_REPUTIL.REPLICATION_ON;
END;
END;');
END;
/

/*

手順6   各パッケージおよびパッケージ本体のレプリケーション・サポートを生成します。

レプリケーション・サポートの生成後、使用者用のシノニムが作成されて、レプリケート・オブジェクトとしてマスター・グループに追加されます。このシノニムには、defer_purge.remove_locationsというラベルが付けられます。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'purge',
type => 'PACKAGE',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'purge',
type => 'PACKAGE BODY',
min_communication => TRUE);
END;
/

/*

手順7   個別の端末ウィンドウで、他のすべてのマスター・サイトにおける任意の管理要求を手動でプッシュします。

複数の手順を含む管理操作も存在するため、DBMS_REPCATパッケージのDO_DEFERRED_REPCAT_ADMINプロシージャを数回実行します。次に例を示します。

*/

BEGIN
DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMIN (
gname => 'hr_repg',
all_sites => FALSE);
END;
/

*/

PAUSE Press <RETURN> to continue when you have verified that there are no
pending administrative requests in the DBA_REPCATLOG data dictionary view.

/*

手順8   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

動的所有権の競合防止メソッド

この項では、アプリケーションの競合を回避するための先進の設計方法について説明しています。トークン渡しとして知られているこの方法は、次の項で説明するワークフロー・メソッドに似ています。この項では、このメソッドを使用してすべての行の所有権を管理する方法を説明していますが、このメソッドを変更して行内の個々の列グループの所有権を管理することもできます。

ワークフローおよびトークン渡しの両方とも、データの動的所有権に対応しています。動的所有権の行の更新は一度に1サイトのみ可能ですが、サイト間での行の所有権の受渡しは可能です。ワークフローおよびトークン渡しの両方とも、1つ以上の識別子列の値を使用して、現在、行の更新が許可されている者を特定します。

ワークフロー

ワークフロー・パーティション分割では、サイト間で受け渡されるデータの所有権を考慮します。行の現在の所有者のみが、識別子列の値を変更することで行の所有権を他のサイトに渡せます。

受注、出荷および請求サイト別に簡単な例を紹介します。ここでは、受注のステータスを表示するのに識別子列を使用します。行の更新を許可されたサイトはステータスで特定します。受注サイトのユーザーは受注の入力後、この行のステータスをshipへと更新します。所有権が出荷サイトに渡されるため、受注サイトのユーザーはこの行を修正できません。

受注の出荷後、出荷サイトのユーザーは行のステータスをbillへと更新するため、所有権は請求サイトその他へ渡されます。

競合を回避するために、動的データ所有権を実装するアプリケーションが、次の条件を満たすことを確認します。

- 行の所有者のみが行を更新可能。

- ある行を2つ以上のサイトで共有することは不可。

- すべてのサイトにおける受注の競合が解消可能。

ワークフロー・パーティション分割では、行のカレント所有者のみが識別子列を更新することで、行の所有権を次のサイトに渡すことができます。他のサイトが所有権を放棄しないかぎり別のサイトに所有権が渡されることはないため、所有者が2人以上となることはありません。

ワークフローが順序付けされているため、ワークフローで最近発生したサイトからの変更を適用することによって、受注の競合を解決できます。受注の競合は、優先値がワークフロー・プロセスの各ステップで増える、優先順位による競合解消メソッドの形式を使用して解決できます。優先順位による競合解消メソッドは、優先値が常に増加しているかぎり、1つ以上のマスター・サイトに対して正常に収束します。

トークン渡し

トークン渡しでは、より一般化されたアプローチを使用してこれらの基準を満たします。トークン渡しを実装する場合は、識別子列ではなくレプリケート表が所有者およびエポック列を保有します。所有者列には、現在、行を所有サイトのグローバル・データベース名を格納します。

トークン渡しメカニズムの設計を終了すると、これを使用してワークフローなど各種データ所有権の動的パーティション化を実装できます。

トークン渡しを自動的に実装するようにアプリケーションを設計します。このアプリケーション以外から所有者またはエポック列を更新しないでください。

行の更新では、アプリケーションは次の条件に従います。

1. 行のカレント所有者の位置を特定します。

2. 行の所有権を設定します。

3. 行をロックして、所有権変更時の更新を防止します。

4. 更新を実行します。

Oracleは、トランザクションのコミット時にロックを解放します。

たとえば、図6-1では、従業員100の所有権をacct_sfデータベースからacct_nyデータベースへ渡す方法を説明しています。

図6-1 トークンの取込み

行の所有者の検索

所有権を取得する場合、acct_nyデータベースは単純な再帰的アルゴリズムを使用して、行の所有者を検索します。このアルゴリズムのサンプル・コードを次に示します。

-- Sample code for locating the token owner.
-- This is for a table TABLE_NAME with primary key PK.
-- Initial call should initialize loc_epoch to 0 and loc_owner
-- to the local global name.
get_owner(PK IN primary_key_type, loc_epoch IN OUT NUMBER,
loc_owner IN OUT VARCHAR2)
{
-- use dynamic SQL (dbms_sql) to perform a select similar to
-- the following:
SELECT owner, epoch into rmt_owner, rmt_epoch
FROM TABLE_NAME@loc_owner
WHERE primary_key = PK FOR UPDATE;
IF rmt_owner = loc_owner AND rmt_epoch >= loc_epoch THEN
loc_owner := rmt_owner;
loc_epoch := rmt_epoch;
RETURN;
ELSIF rmt_epoch >= loc_epoch THEN
get_owner(PK, rmt_epoch, rmt_owner);
loc_owner := rmt_owner;
loc_epoch := rmt_epoch;
RETURN;
ELSE
raise_application_error(-20000, 'No owner for row');
END IF;}

所有権の取得

行の所有権を検索した後、acct_nyサイトは次の手順に従ってacct_sfサイトから所有権を取得します。

1. sfサイトの行をロックして、所有権交換で生じる変更を防止します。
この操作により常に1つのサイトのみが所有者となれます。sfサイトでの更新はDBMS_REPUTIL.REPLICATION_OFFを使用してレプリケートしないでください。手順4のnyサイトでレプリケートされた所有権の変更は、影響を一切受けないsfサイトなど、レプリケーション環境の他のすべてのサイトに伝播されます。

2. sfサイトおよびnyサイトの所有者情報を同期式で更新します。

3. 新しい所有者サイトnyの行情報を、カレント所有者サイトsfの情報で更新します。
最新のデータであることが保証されます。今回は、nyサイトでの変更をレプリケートしないでください。sfサイトでこのデータに対して行うキューの変更は、通常の方法で他のすべてのサイトに伝播されます。sfの変更がnyに伝播されても、次の項目で説明するエポック番号の値を理由として無視されます。

4. 新しい所有者サイトのエポック番号を以前のサイトの値に1を加えた値で更新します。

この更新は新しい所有者でのみ行い、この更新を他のマスター・サイトに非同期式に伝播します。新しい所有者サイトでエポック番号を増やすと、受注の競合を防ぎます。

sfの変更(前述の手順2で示した遅延キューに対する変更)がnyサイトに伝播されたとき、nyサイトはこれを無視します。これは、同一のデータに対するエポック番号が、nyサイトのエポック番号より小さいためです。

その他、hqサイトがnyの変更を受信した後にsfの変更を受信したものの、nyサイトからの変更のエポック番号が大きいためhqサイトがsfの変更を無視するような例も考えられます。

変更の適用

更新を自動的に行うために、アプリケーションにはトークン渡しの方法を実装します。このアプリケーション以外から所有者またはエポック列を更新しないでください。所有権の変更時に取り込んだロックは、実際に更新するときに解放されます。変更された情報は、更新された所有者情報およびエポック情報とともに、通常の方法により非同期式で他のサイトへ伝播されます。

競合解消の監査

Oracleによって更新、削除または一意性競合が検出され、正常に解消された場合は、ALL_REPRESOLUTION_STATISTICSデータ・ディクショナリ・ビューを問い合せることによって、競合解消に使用された方法の情報を表示できます。このビューは、競合に関連する表に対して競合解消統計収集を有効化した場合にのみ更新されます。

関連項目:
詳細は、「ALL_REPRESOLUTION_STATISTICSビュー」を参照してください。

競合解消統計の収集

DBMS_REPCATパッケージのREGISTER_STATISTICSプロシージャを使用して、正常に実行された表の更新、削除および一意性の競合解消の情報を収集します。次の例では、hrスキーマ内の従業員表の統計が収集されます。

BEGIN
DBMS_REPCAT.REGISTER_STATISTICS (
sname => 'hr',
oname => 'employees');
END;
/

競合解消統計の表示

ある表に対してREGISTER_STATISTICSをコールすると、その表で正常に解消された各競合はALL_REPRESOLUTION_STATISTICSデータ・ディクショナリ・ビューに記録されます。解消不可能な競合の情報は、オブジェクトが登録されているかどうかに関係なく、通常、DEFERRORビューに記録されます。

関連項目:
詳細は、「ALL_REPRESOLUTION_STATISTICSビュー」および「DEFERRORビュー」を参照してください。

競合解消統計の取消し

正常に実行された表の更新、削除および一意性の競合解消の情報収集が不要になった場合は、DBMS_REPCATパッケージのCANCEL_STATISTICSプロシージャを使用します。次の例では、hrスキーマ内のemployees表に収集された統計を取り消します。

BEGIN
DBMS_REPCAT.CANCEL_STATISTICS (
sname => 'hr',
oname => 'employees');
END;
/

統計情報の消去

正常に実行された更新、削除、および一意性の競合解消の情報を記録するように表を登録している場合は、DBMS_REPCATパッケージのPURGE_STATISTICSプロシージャをコールすることによって、DBA_REPRESOLUTION_STATISTICSデータ・ディクショナリ・ビューからこの情報を削除できます。

次の例では、1月1日から3月31日の、employees表に対する挿入、更新および削除により解消した競合についての統計がパージされます。

BEGIN
DBMS_REPCAT.PURGE_STATISTICS (
sname  => 'hr',
oname  => 'employees',
start_date => '01-JAN-2001',
end_date => '31-MAR-2001');
END;
/

第II部

レプリケーション環境の管理と監視

第II部には、レプリケーション・マネージメントAPIを使用したレプリケーション環境の管理、データ・ディクショナリを使用したレプリケーション環境の監視に関する指示が含まれています。

第II部は次の章で構成されています。

- 第7章「マスター・レプリケーション環境の管理」

- 第8章「マテリアライズド・ビュー・レプリケーション環境の管理」

- 第9章「レプリケーション・オブジェクトおよびキューの管理」

- 第10章「レプリケーション環境の監視」

7 マスター・レプリケーション環境の管理

事業の拡大や縮小、緊急事態などにより、データ配信を変更する場合、レプリケーション環境の構成も変更する必要があります。この章では、レプリケーション環境のマスター・サイトの管理を説明します。この項では、マスター・サイトの変更と再構成を中心に説明しています。

この章には、次の項が含まれます。

- マスター定義サイトの変更

- 新しいマスター・サイトの追加

- マスター・グループからマスター・サイトの削除

- データ・ディクショナリ・ビュー内のコメント・フィールドの更新

- プロシージャ・レプリケーションの使用

マスター定義サイトの変更

ほとんどのレプリケーション管理タスクは、マスター定義サイトのみで実行できます。マスター定義サイトを他のマスター・サイトへ移動する場合は、DBMS_REPCATパッケージのRELOCATE_MASTERDEFプロシージャを使用します。このAPIは、マスター定義サイトが利用できなくなったために、新しいマスター定義サイトを指定する必要がある場合に使用します(「オプション2 :旧マスター定義サイトが利用不可」を参照してください)。

オプション1: すべてのマスター・サイトが利用可能

すべてのマスター・サイトが利用可能な場合は、この項のアクションを実行して、マスター定義サイトを変更します。これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者

実行場所: いずれかのマスター・サイト

レプリケーションの状態: 実行中(静止中ではない)

次の手順に従います。

手順1    SQL*Plusで、レプリケーション管理者としてマスター・サイトに接続します。

SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。

手順2   マスター定義サイトを再配置します。

BEGIN

DBMS_REPCAT.RELOCATE_MASTERDEF (
gname => 'hr_repg',
old_masterdef => 'orc1.example.com',
new_masterdef => 'orc2.example.com',
notify_masters => TRUE,
include_old_masterdef => TRUE);
END;
/

オプション2: 旧マスター定義サイトが利用不可

旧マスター・サイトが利用不可の場合は、この項のアクションを実行して、マスター定義サイトを変更します。これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者

実行場所: いずれかのマスター・サイト

レプリケーションの状態: 通常

次の手順に従います。

手順1    SQL*Plusで、レプリケーション管理者としてマスター・サイトに接続します。

SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。

手順2   マスター定義サイトを再配置します。

BEGIN

DBMS_REPCAT.RELOCATE_MASTERDEF (
gname => 'hr_repg',
old_masterdef => 'orc1.example.com',
new_masterdef => 'orc2.example.com',
notify_masters => TRUE,
include_old_masterdef => FALSE);
END;
/

新しいマスター・サイトの追加

レプリケーション環境が拡張されるにつれ、新しいマスター・サイトをマスター・グループに追加することが必要な場合があります。新しいマスター・サイトは実行中のマスター・グループへも静止中のマスター・グループへも追加できます。マスター・グループが静止中ではない場合は、ユーザーは、新しいマスター・サイトが追加されるときのデータに対して、データ操作言語(DML)を操作できます。ただし、マスター・グループが静止中ではない場合は、新しいマスター・サイトを追加するときに、より管理的なアクションが要求されます。

注意:
循環依存性を持つ表または自己参照型制約のある表を含むマスター・グループに新規マスター・サイトを追加する場合は、新規マスター・サイトで表定義を再作成し、データを手動でロードする必要があります。循環依存性の例としては、「表Aには表Bに対する外部キー制約があり、表Bには表Aに対する外部キー制約がある」などがあります。

該当する項の指示に従って、新しいマスター・サイトをマスター・グループに追加します。

- マスター・グループを静止することなく、新しいマスター・サイトを追加

- 静止中のマスター・グループに新しいマスター・サイトを追加

マスター・グループを静止することなく、新しいマスター・サイトを追加

この項には、新しいマスター・サイトを静止中ではない既存のマスター・グループへ追加するプロシージャが含まれています。これらの新しいサイトは、他のレプリケーション・グループのレプリケーション・サイト(マスター・サイトまたはマテリアライズド・ビュー・サイト)に存在する場合も存在しない場合もあります。

マスター・グループを静止しないで新しいマスター・サイトを追加する場合は、次のいずれかの方法が使用できます。

- 全データベースのエクスポートまたはインポート、あるいは変更ベースのリカバリを使用して、現在、レプリケーション・グループを保有していない新しいマスター・サイトを追加します。手順については、「全データベースのエクスポートまたはインポートの使用、あるいは変更ベースのリカバリの使用」を参照してください。

- オブジェクトレベルのエクスポートまたはインポートを使用して、すでに他のレプリケーション・グループを保有する新しいマスター・サイトを追加、またはレプリケーション・グループを保有していない新しいマスター・サイトを追加します。手順については、「オブジェクトレベルのエクスポート/インポートの使用」を参照してください。

全データベースのエクスポートまたはインポート、および変更ベースのリカバリを使用して、マスター定義サイトのすべてのレプリケーション・グループを新しいマスター・サイトに追加します。この方法を使用する場合は、次の条件が適用されます。

- 新しいマスター・サイトは既存のレプリケーション・グループを持つことはできません。

- マスター定義サイトはマテリアライズド・ビュー・グループを持つことはできません。

- マスター定義サイトはすべてのマスター・グループについて同じである必要があります。これらのマスター・グループの1つ以上で、異なるマスター定義サイトを保有する場合は、全データベースのエクスポートまたはインポート、あるいは変更ベースのリカバリは使用しません。その場合、かわりにオブジェクトレベルのエクスポートまたはインポートを使用します。

- 新しいマスター・サイトは、拡張プロセスの完了時には、マスター定義サイトのすべてのレプリケーション・グループを含んでいる必要があります。すなわち、マスター定義サイトのマスター・グループのサブセットを新しいマスター・サイトへ追加することはできません。グループのすべてを追加する必要があります。

使用している環境がこれらの条件の一部を満たすことができない場合は、オブジェクトレベルのエクスポートまたはインポートを使用して新しいマスター・サイトを追加します。図7-1は、これらの条件をまとめたものです。

注意:
変更ベースのリカバリを使用するには、既存のマスター・サイトおよび新しいマスター・サイトを同じオペレーティング・システム上で実行する必要があります(ただし、オペレーティング・システムのリリースは同じでなくてもかまいません)。この条件は、全データベースのエクスポートまたはインポートへは適用されません。

図7-1 マスター・サイトの追加に使用する方法を決定

オブジェクトレベルのエクスポートまたはインポートを使用して、マスター・グループをすでに他のレプリケーション・グループを保有するマスター・サイトへ追加、またはマスター・グループを現在レプリケーション・グループを保有していないマスター・サイトへ追加します。この方法では、1つ以上のマスター・グループを新しいマスター・サイトへ一度に追加できます。また、マスター定義サイトのマスター・グループのサブセットを選択して、操作実行時に新しいマスター・サイトへ追加できます。

オブジェクトレベルのインポートまたはエクスポートを使用し、複数のマスター・グループにわたる整合性制約がある場合で、新しいマスター・サイトにこれらの制約が参照する他の表が存在するときには、新しいマスター・サイトに追加されている表でのこれらの整合性制約を一時的に無効にする必要があります。最初は、新しいマスター・サイトを参照するDEFSCHEDULEデータ・ディクショナリ・ビューには2つの行があります。伝播が到達すると、このビューには行が1つになり、新しいマスター・サイトへのすべてのマスター・サイトからの伝播が到達すると、無効にした整合性制約を再度有効にできます。

マスター・グループを静止することなく新しいマスター・サイトを追加する2つの方法を再度、次に示します。

- 全データベースのエクスポートまたはインポート、あるいは変更ベースのリカバリ

- オブジェクトレベルのエクスポートまたはインポート

いずれかの方法を使用する場合は、新しいマスター・サイトの追加時に、新しいマスター・サイトへの遅延トランザクションの伝播は、部分的または完全に無効化されます。このため、既存の各マスター・サイトには、未伝播の遅延トランザクション・キューの中で最大のものを格納するのに十分な空き領域があることを確認します。

次の制限事項も両方法に適用されます。

- 影響を受けるマスター・グループはすべて、非同期レプリケーションを使用します。同期レプリケーションは使用できません。

- すべてのスケジュール・リンクは、パラレル化を1以上に設定したパラレル伝播を使用します。

- 影響を受けるすべてのマスター・グループのデータベース・リンクは、接続修飾子を所有しないか、またはすべてのマスター・グループで同一の接続修飾子を所有するかのいずれかです。

- 新しいマスター・サイトを1つ以上のマスター・グループへ追加するプロセスを開始した後は、これらの新しいマスター・サイトが追加されてから、影響を受けるマスター・グループへの追加を開始します。マスター定義サイトのDBA_NEW_REPSITESデータ・ディクショナリ・ビュー内に、影響を受けるマスター・グループの情報がある場合、マスター・グループに対して開始した追加プロセスは完了できません。

- 新しいマスター・サイトを1つ以上のマスター・グループへ追加するプロセスを開始した後は、新しいマスター・サイトが追加されるまで、これらのマスター・グループのマスター定義サイトを再配置できません。DBA_NEW_REPSITESデータ・ディクショナリ・ビュー内に、影響を受けるマスター・グループの情報がある場合は、マスター・グループに対して開始した追加プロセスは完了できません。

- マスター・サイトで許可されるマスター・サイトの追加要求は一度に1つのみです。たとえば、hq1.example.comがmgroup1のマスター定義サイトで、hq2.example.comがmgroup2のマスター定義サイトである場合、hq1.example.comのmgroup2への追加およびhq2.example.comのmgroup1への追加は同時に行うことはできません。

- オブジェクトレベルまたは全データベースのエクスポートまたはインポートを使用している場合は、エクスポートのロールバック・セグメントまたはUNDO表領域に十分な領域があることを確認します。

また、いずれかの方法で新しいマスター・サイトを追加する前に、新しいマスター・サイトがマルチマスター・レプリケーション用に正しく設定されていることを確認します。

注意:
次の項に記述された手順を続行できなくなった場合は、メッセージのトレース・ファイルおよびアラート・ログをチェックします。

関連項目:

- 新しいマスター・サイトをマルチマスター・レプリケーション用に設定する場合の詳細は、「マスター・サイトの設定」を参照してください。

- トレース・ファイルおよびアラート・ログの詳細は、『Oracle Database管理者ガイド』を参照してください。

- UNDO領域の管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

全データベースのエクスポートまたはインポートの使用、あるいは変更ベースのリカバリの使用

図7-2では、全データベースのエクスポートまたはインポート、あるいは変更ベースのリカバリを使用して、マスター・グループを静止することなく新しいマスター・サイトをマスター・グループに追加する主な手順について説明しています。次のスクリプト例では、新しいマスター・サイトorc4.example.comおよびorc5.example.comをhr_repgマスター・グループに追加しています。この例では、orc4.example.comは全データベースのエクスポートまたはインポートを使用して追加され、orc5.example.comは変更ベースのリカバリを使用して追加されています。

図7-2 全データベースのエクスポートまたはインポートの使用、あるいは変更ベースのリカバリの使用

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者(他の実行者が指定されていない場合)

実行場所:

- 各新しいマスター・サイトで手順1

- マスター定義サイトで手順2から5

- マスター定義サイトおよび各新しいマスター・サイトで手順6

- 手順7では、マスター定義サイトでのエクスポートおよびサイト間でのファイル転送が必要

- 各新しいマスター・サイトで手順8から10

レプリケーションの状態: 実行中(静止中ではない)

次の手順に従い、全データベースのエクスポートまたはインポート、あるいは変更ベースのリカバリを使用して、サイトをマスター・グループに追加します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   全データベースのエクスポートまたはインポートを使用している場合は、マスター・グループへ追加するデータベースを作成します。

変更ベースのリカバリを使用している場合、この手順は必要ありません。

関連項目:
データベース作成の詳細は、『Oracle Database管理者ガイド』を参照してください。

*/

SET ECHO ON

SPOOL add_masters_full.out

PAUSE Press <RETURN> when the databases for the new master sites are created.

/*

手順2   各新しいマスター・サイトをレプリケーション・サイトとして設定します。

次の構成を行う必要があることに注意してください。

*/

PAUSE Press <RETURN> to continue the new master sites have been setup and the
required scheduled links have been created.

/*

関連項目:

- スケジュール・リンクの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- 「マスター・サイトの設定」

- 「マスター・サイト間のスケジュール・リンクの作成」

- 新しい各マスター・サイトのレプリケーション管理者

- 既存の各マスター・サイトから新しい各マスター・サイトへのスケジュール・リンク

- 新しい各マスター・サイトから既存の各マスター・サイトへのスケジュール・リンク

- 新しい各マスター・サイトでのスケジュール・パージ

手順3   レプリケーション管理者としてマスター定義サイトに接続します。

*/

CONNECT repadmin@orc1.example.com

/*

手順4   各マスター・グループの新しいマスター・サイトを指定します。

新しいマスター・サイトを指定する前に、リンクが存在していない場合は既存のマスター・サイトと各新しいマスター・サイト間で必要なスケジュール・リンクを作成します。

関連項目:

- スケジュール・リンクの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- これらの例は、「マスター・サイト間のスケジュール・リンクの作成」を参照してください。

*/

BEGIN
DBMS_REPCAT.SPECIFY_NEW_MASTERS (
gname => 'HR_REPG',
master_list => 'orc4.example.com,orc5.example.com');
END;
/

/*

他のSQL*Plusセッションで次のデータ・ディクショナリ・ビューに問い合せることで、拡張プロセスの追跡を開始できます。

- DBA_REPSITES_NEW

- DBA_REPEXTENSIONS

*/

PAUSE Press <RETURN> when you have completed the these steps.

/*

手順5   新しいマスター・サイトを追加します。

次のプロシージャを実行する前に、新しいマスター・サイトで実行中のバックグラウンド・ジョブの数が適切であることを確認します。全データベースのエクスポートまたはインポートを使用している場合は、このプロシージャを実行する前に、エクスポートのロールバック・セグメントまたはUNDO表領域に十分な領域があることを確認します。

関連項目:

- レプリケーション環境のJOB_QUEUE_PROCESSES初期化パラメータ・プロパティの設定の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- UNDO領域の管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

*/

VARIABLE masterdef_flashback_scn NUMBER;
VARIABLE extension_id VARCHAR2(32);
BEGIN
DBMS_REPCAT.ADD_NEW_MASTERS (
export_required => TRUE,
available_master_list => NULL,
masterdef_flashback_scn => :masterdef_flashback_scn,
extension_id => :extension_id,
break_trans_to_masterdef => FALSE,
break_trans_to_new_masters => FALSE,
percentage_for_catchup_mdef => 80,
cycle_seconds_mdef => 60,
percentage_for_catchup_new => 80,
cycle_seconds_new => 60);
END;
/

/*

masterdef_flashback_scnおよびextension_idの値は変数に保存され、後のプロセスで使用されます。これらの値を参照する場合は、DBA_REPSITES_NEWおよびDBA_REPEXTENSIONSデータ・ディクショナリ・ビューへの問合せを行います。

*/

PAUSE Press <RETURN> when you have completed the these steps.

/*

SPECIFY_NEW_MASTERSおよびADD_NEW_MASTERSプロシージャで、特定のマスター・サイトに対して行った変更を取り消す場合は、DBMS_REPCAT.UNDO_ADD_NEW_MASTERS_REQUESTプロシージャを使用します。

orc4.example.comが全データベース・エクスポートまたはインポートを使用して追加されているため、export_requiredパラメータには、TRUEが指定されます。orc5.example.comは変更ベースのリカバリを使用していますが、少なくとも1つの新しいマスター・サイトがエクスポートまたはインポートを使用して追加されるためTRUE設定が正しくなります。

このプロシージャを実行した後、他のSQL*PlusセッションでDBA_REPCATLOGデータ・ディクショナリ・ビューに問合せを行うことで、進行状況を監視します。このビューに新しいマスター・サイトの追加情報がなくなるまでは、手順7には進まないでください。DBA_REPCATLOGには他の操作による無関係の情報が含まれていないことを前提に、次の文を入力します。

SELECT COUNT(*) FROM DBA_REPCATLOG;

この文から0(ゼロ)が戻されれば、すべてのプロセスは完了です。

*/

PAUSE Press <RETURN> to continue when DBA_REPCATLOG is empty.

/*

手順6   全データベースのエクスポートまたはインポートを実行する場合は、各データベースにディレクトリ・オブジェクトを作成します。

変更ベースのリカバリを使用して追加されたマスター・サイトでは、この手順は必要ないので、手順8に進みます。

この操作に含まれる各データベースは、データ・ポンプのダンプ・ファイルを保持するためのディレクトリ・オブジェクトを保有している必要があり、エクスポートまたはインポートを実行するユーザーはこのディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている必要があります。この例では、データ・ポンプ・エクスポートはマスター定義サイトで行われ、データ・ポンプ・インポートは各新しいマスター・サイトで行われます。

全データベースのエクスポート/インポートを実行する場合は、SQL文CREATE DIRECTORYを使用してディレクトリ・オブジェクトを作成できる管理ユーザーとしてSQL*Plusでデータベースに接続し、データ・ポンプのダンプ・ファイルおよびログ・ファイルを保存するためのディレクトリ・オブジェクトを作成します。次に例を示します。

*/

CONNECT system@orc1.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

CONNECT system@orc4.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

CONNECT system@orc5.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

/*

この例では、SYSTEMユーザーがすべてのエクスポートおよびインポートを実行します。ディレクトリ・オブジェクトを作成したユーザー以外のユーザーがエクスポートまたはインポートを実行する場合は、このユーザーにそのディレクトリ・オブジェクトに対するREADおよびWRITE権限を付与します。

操作に使用した各データベースでこれらのアクションが完了していることを確認します。

手順7   全データベースのエクスポートまたはインポートを使用して追加されたマスター・サイトの次のサブステップを実行します。

変更ベースのリカバリを使用して追加されたマスター・サイトでは、このサブステップは必要ないので、手順8に進みます。

マスター定義データベースの全データベースのエクスポートを実行します。FLASHBACK_SCNエクスポート・パラメータの手順5のmasterdef_flashback_scnパラメータから戻されるシステム変更番号(SCN)を使用します。

DBA_REPEXTENSIONSデータ・ディクショナリ・ビューにFLASHBACK_SCN値を問い合せることができます。

SELECT FLASHBACK_SCN FROM DBA_REPEXTENSIONS;

この例では、この問合せで戻される値は124723であるとします。

この例で、orc4.example.comは全データベースのエクスポートまたはインポートを使用しています。このため、この後の手順でorc4.example.comへインポートできるように、マスター定義データベースの全データベースのエクスポートを実行します。一方、orc5.example.comデータベースは変更ベースのリカバリを使用しています。このため、orc5.example.comのみの追加では、エクスポートは必要とされません。

コマンドラインで、エクスポートを実行します。この例では、SYSTEMユーザーとして接続します。データ・ポンプ・エクスポート・コマンドの例を次に示します。

expdp system FULL=y DIRECTORY=DPUMP_DIR DUMPFILE=fulldb_orc1.dmp FLASHBACK_SCN=124723

エクスポート・ユーティリティを実行する場合の考慮事項は、次のとおりです。

- DBAロールまたはEXP_FULL_DATABASEロールを所有するユーザーのみが全データベース・モードでのエクスポートを実行できます。

- エクスポートを実行する前に、UNDO_RETENTION初期化パラメータが正しく設定されていることを確認します。

関連項目:

- データ・ポンプ・エクスポートの実行方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

- UNDO領域の管理およびこのパラメータの設定の詳細は、『Oracle Database管理者ガイド』を参照してください。

*/

PAUSE Press <RETURN> to continue when the export is complete.

/*

マスター定義サイトへの伝播を再開します。

次のプロシージャを実行することで、マスター・サイトの拡張されたマスター・グループおよび影響されていないマスター・グループに対するエクスポートが正常に行われ、伝播が有効化されたことが示されます。

*/

BEGIN
DBMS_REPCAT.RESUME_PROPAGATION_TO_MDEF (
extension_id => :extension_id);
END;
/

/*

extension_idは、DBA_REPSITES_NEWデータ・ディクショナリ・ビューを問い合せることで検索できます。

エクスポート・ダンプ・ファイルを新しいマスター・サイトに転送します。

全データベースのエクスポートまたはインポートで追加された他の新しいマスター・サイトへは、DBMS_FILE_TRANSFERパッケージ、FTPなどの方法により、エクスポート・ダンプ・ファイルが転送されます。次の手順で説明するインポートを実行する場合、新しいサイトで、このエクスポート・ダンプ・ファイルが必要となります。

*/

PAUSE Press <RETURN> to continue after transferring the dump file.

/*

新しいマスター・サイトのJOB_QUEUE_PROCESSES初期化パラメータを0(ゼロ)に設定します。

*/

PAUSE Press <RETURN> to continue after JOB_QUEUE_PROCESSES is set to zero at each new master site.

/*

手順8   新しいマスター・サイトでインポートまたは変更ベースのリカバリを実行します。

全データベースのエクスポートまたはインポートを使用している場合は、全データベースのエクスポートまたはインポートで追加された新しいマスター・サイトの手順7でエクスポートしたデータベースの全データベースのインポートを実行します。

インポートを実行します。この例では、SYSTEMユーザーとして接続してorc4.example.comでインポートを実行します。インポート・コマンドの例を次に示します。

impdp system FULL=y DIRECTORY=DPUMP_DIR DUMPFILE=fulldb_orc1.dmp

DBAロールまたはIMP_FULL_DATABASEロールを所有するユーザーのみが全データベース・モードでのインポートを実行できます。

関連項目:
データ・ポンプ・インポートの実行方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

*/

PAUSE Press <RETURN> to continue when the import is complete.

/*

変更ベースのリカバリを使用している場合は、手順5のmasterdef_flashback_scnパラメータから戻されたシステム変更番号(SCN)を使用して変更ベースのリカバリを実行します。DBA_REPEXTENSIONSデータ・ディクショナリ・ビューにmasterdef_flashback_scn値を問い合せることができます。

次の方法で変更ベースのリカバリを実行できます。

- SQL*PlusのRECOVERコマンドを使用します。手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

- Recovery ManagerのDUPLICATEコマンドを使用します。手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

変更ベースのリカバリを実行するサイトに接続します。

*/

CONNECT repadmin@orc5.example.com

PAUSE Press <RETURN> to continue when the change-based recovery is complete. You
can use a separate terminal window to perform the change-based recovery.

/*

手順9   次の手順に従って、新しいサイトをマルチマスター・レプリケーション用に構成します。

1. 新しいマスター・サイトにレプリケート・スキーマとして存在するデータファイルなどの、データベース構造を確認します。この例では、レプリケート・スキーマはhrです。

2. 新しいマスター・サイトにグローバル名を設定します。新しいマスター・サイトのグローバル名は、手順4で実行したSPECIFY_NEW_MASTERSプロシージャに指定したグローバル名と一致する必要があります。DBA_REPSITES_NEWデータ・ディクショナリ・ビューのDBLINK列への問合せを行い、新しいマスター・サイトのグローバル名を確認できます。
次の例に示すように、ALTER DATABASE文を使用してグローバル名を設定できます。

ALTER DATABASE RENAME GLOBAL_NAME TO orc4.example.com;

3. 新しいマスター・サイトと既存のマスター・サイト間に、マスター定義サイトなどの、適切なスケジュール・リンクを作成します。

関連項目:
詳細は、「マスター・サイト間のスケジュール・リンクの作成」を参照してください。

*/

PAUSE Press <RETURN> when you have completed the these steps.

/*

手順10   新しいマスター・サイトで遅延トランザクションを受信します。

次のプロシージャでは、新しく準備されたマスター・サイトや既存のマスター・サイトから起動マスター・サイトへの遅延トランザクションの伝播が可能です。このプロシージャでは、起動マスター・サイトから新しく準備されたマスター・サイトや既存のマスター・サイトへの遅延トランザクションの伝播も可能です。

注意:
新しいマスター・サイトのインスタンス化(エクスポートまたはインポート、あるいは変更ベースのリカバリ)が完了するまでは、このプロシージャを起動しないでください。
プロシージャから完了通知が戻るまでは、データ操作言語(DML)文を新しいマスター・サイトの拡張マスター・グループのオブジェクトに適用しないでください。これは、これらのDML文が、レプリケートされないためです。

*/

CONNECT repadmin@orc4.example.com

BEGIN
DBMS_REPCAT.PREPARE_INSTANTIATED_MASTER (
extension_id  => :extension_id);
END;
/

CONNECT repadmin@orc5.example.com

BEGIN
DBMS_REPCAT.PREPARE_INSTANTIATED_MASTER (
extension_id  => :extension_id);
END;
/

SET ECHO OFF

SPOOL OFF

/*

注意:
extension_idは、DBA_REPSITES_NEWデータ・ディクショナリ・ビューを問い合せることで検索できます。

************************** END OF SCRIPT **********************************/

オブジェクトレベルのエクスポート/インポートの使用

図7-3では、オブジェクトレベルのエクスポートまたはインポート使用して、マスター・グループを静止することなく新しいマスター・サイトをマスター・グループに追加する主な手順について説明しています。次のプロシージャ例では、新しいマスター・サイトorc4.example.comおよびorc5.example.comをhr_repgマスター・グループに追加しています。オブジェクトレベルのエクスポートまたはインポートには、マスター・グループの表のエクスポートとインポートが含まれます。表のエクスポートとインポートでは、索引などの、その他の依存データベース・オブジェクトも同様にエクスポート、インポートされます。

2つのマスター・グループにまたがる整合性制約がある場合は、一方のマスター・グループに子表(子マスター・グループ)、他方のマスター・グループに親表(親マスター・グループ)を用意します。この場合、新しいマスター・サイトを両方のマスター・グループに同時に追加することをお薦めします。しかし、同時に追加することができない場合は、子マスター・グループを静止してから新しいマスター・サイトを追加します。ここでは、子表には外部キーが含まれているため、子表は親表の値に依存します。子マスター・グループを静止しないで追加を行うと、マスター・サイトの追加時に競合が発生します。親マスター・グループへのマスター・サイトの追加は静止なしでも行えます。

図7-3 オブジェクトレベルのエクスポート/インポートの使用

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者(他の実行者が指定されていない場合)

実行場所:

- マスター定義サイトで手順1から6

- マスター定義サイトおよび各新しいマスター・サイトで手順7

- マスター定義サイトで手順8および9

- 手順10ではサイト間のファイル転送が必要

- 各新しいマスター・サイトで手順11および12

レプリケーションの状態: 実行中(静止中ではない)

次の手順に従って、オブジェクトレベルのエクスポートまたはインポートを使用してサイトをマスター・グループに追加します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   新しいマスター・サイトにエクスポート・スキーマのユーザーが存在しない場合は、ここで作成します。

この例では、レプリケート・スキーマはhrです。このスキーマは、Oracleとともにインストールされるサンプル・スキーマであるため、新しいマスター・サイトに存在します。

関連項目:
サンプル・スキーマの概要とそのインストール方法の詳細は、『Oracle Databaseサンプル・スキーマ』を参照してください。

*/

SET ECHO ON

SPOOL add_masters_object.out

PAUSE Press <RETURN> to continue when the users are created at the new master sites.

/*

手順2   マスター・グループ内の表のいずれかに循環依存がある場合は、これらの表を新しいマスター・サイトで事前に作成しておきます。

循環依存を持つ表を事前に作成しないと、後でエラーが発生します。循環依存がなければ、この手順は必要ないので手順3に進みます。

hrスキーマの一部の表には、循環依存が含まれています。そのため、この例では、hrスキーマ内の表を新しい各マスター・サイトで事前に作成する必要があります。また、hrスキーマの表は、通常はOracleのインストール中に作成されるため、新しいマスター・サイトに存在する可能性があります。

表の事前作成が必要な場合は、インポート前に新しいマスター・サイトで、これらの表に対する参照整合性制約を無効化します。参照整合性制約が有効化されていると、既存の表にデータをインポートするときにエラーの原因になることがあります。この例では、新しいマスター・サイトで、hrスキーマに事前作成する表に対する参照整合性制約を無効化します。

また、新しいマスター・サイトで事前作成する表には、データを含めないでください。この例では、データが含まれないように、新しいマスター・サイトでhrスキーマ内の表を切り捨てます。

関連項目:

- 循環依存の詳細は、「新しいマスター・サイトの追加」の「注意」を参照してください。

- 既存の表にデータをインポートする方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

*/

PAUSE Press <RETURN> to continue when the tables are precreated at the new
master sites, if table precreation is required. After the tables are
precreated, the following statements disable the referential integrity
constraints related to the hr schema and truncate the tables in the hr schema
at the new site.

CONNECT oe@orc4.example.com

ALTER TABLE oe.warehouses
DISABLE CONSTRAINT warehouses_location_fk;

ALTER TABLE oe.customers
DISABLE CONSTRAINT customers_account_manager_fk;

ALTER TABLE oe.orders
DISABLE CONSTRAINT orders_sales_rep_fk;

CONNECT hr@orc4.example.com

ALTER TABLE hr.countries
DISABLE CONSTRAINT countr_reg_fk;

ALTER TABLE hr.departments
DISABLE CONSTRAINT dept_mgr_fk
DISABLE CONSTRAINT dept_loc_fk;

ALTER TABLE hr.employees
DISABLE CONSTRAINT emp_dept_fk
DISABLE CONSTRAINT emp_job_fk
DISABLE CONSTRAINT emp_manager_fk;

ALTER TABLE hr.job_history
DISABLE CONSTRAINT jhist_job_fk
DISABLE CONSTRAINT jhist_emp_fk
DISABLE CONSTRAINT jhist_dept_fk;

ALTER TABLE hr.locations
DISABLE CONSTRAINT loc_c_id_fk;

TRUNCATE TABLE hr.countries;
TRUNCATE TABLE hr.departments;
TRUNCATE TABLE hr.employees;
TRUNCATE TABLE hr.jobs;
TRUNCATE TABLE hr.job_history;
TRUNCATE TABLE hr.locations;
TRUNCATE TABLE hr.regions;

CONNECT oe@orc5.example.com

ALTER TABLE oe.warehouses
DISABLE CONSTRAINT warehouses_location_fk;

ALTER TABLE oe.customers
DISABLE CONSTRAINT customers_account_manager_fk;

ALTER TABLE oe.orders
DISABLE CONSTRAINT orders_sales_rep_fk;

CONNECT hr@orc5.example.com

ALTER TABLE hr.countries
DISABLE CONSTRAINT countr_reg_fk;

ALTER TABLE hr.departments
DISABLE CONSTRAINT dept_mgr_fk
DISABLE CONSTRAINT dept_loc_fk;

ALTER TABLE hr.employees
DISABLE CONSTRAINT emp_dept_fk
DISABLE CONSTRAINT emp_job_fk
DISABLE CONSTRAINT emp_manager_fk;

ALTER TABLE hr.job_history
DISABLE CONSTRAINT jhist_job_fk
DISABLE CONSTRAINT jhist_emp_fk
DISABLE CONSTRAINT jhist_dept_fk;

ALTER TABLE hr.locations
DISABLE CONSTRAINT loc_c_id_fk;

TRUNCATE TABLE hr.countries;
TRUNCATE TABLE hr.departments;
TRUNCATE TABLE hr.employees;
TRUNCATE TABLE hr.jobs;
TRUNCATE TABLE hr.job_history;
TRUNCATE TABLE hr.locations;
TRUNCATE TABLE hr.regions;

/*

手順3   新しい各マスター・サイトをレプリケーション・サイトとして設定します。

次の構成を行う必要があることに注意してください。

- 新しい各マスター・サイトのレプリケーション管理者

- 既存の各マスター・サイトから新しい各マスター・サイトへのスケジュール・リンク

- 新しい各マスター・サイトから既存の各マスター・サイトへのスケジュール・リンク

- 新しい各マスター・サイトでのスケジュール・パージ

*/

PAUSE Press <RETURN> to continue the new master sites have been setup and the
required scheduled links have been created.

/*

関連項目:

- スケジュール・リンクの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- 「マスター・サイトの設定」

- 「マスター・サイト間のスケジュール・リンクの作成」

手順4   レプリケーション管理者としてマスター定義サイトに接続します。

*/

CONNECT repadmin@orc1.example.com

/*

手順5   各マスター・グループの新しいマスター・サイトを指定します。

*/

BEGIN
DBMS_REPCAT.SPECIFY_NEW_MASTERS (
gname => 'hr_repg',
master_list => 'orc4.example.com,orc5.example.com');
END;
/

/*

他のSQL*Plusセッションで次のデータ・ディクショナリ・ビューに問い合せることで、拡張プロセスの追跡を開始できます。

- DBA_REPSITES_NEW

- DBA_REPEXTENSIONS

手順6   新しいマスター・サイトを追加します。

次のプロシージャを実行する前に、新しいマスター・サイトで実行中のバックグラウンド・ジョブの数が適切であることを確認します。このプロシージャを実行する前に、エクスポートのロールバック・セグメントまたはUNDO表領域に十分な領域があることも確認します。

関連項目:

- レプリケーション環境のJOB_QUEUE_PROCESSES初期化パラメータ・プロパティの設定の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- UNDO領域の管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

*/

VARIABLE masterdef_flashback_scn NUMBER;
VARIABLE extension_id VARCHAR2(32);
BEGIN
DBMS_REPCAT.ADD_NEW_MASTERS (
export_required => TRUE,
available_master_list => 'orc4.example.com,orc5.example.com',
masterdef_flashback_scn => :masterdef_flashback_scn,
extension_id => :extension_id,
break_trans_to_masterdef => FALSE,
break_trans_to_new_masters => FALSE,
percentage_for_catchup_mdef => 80,
cycle_seconds_mdef => 60,
percentage_for_catchup_new => 80,
cycle_seconds_new => 60);
END;
/

/*

available_master_listパラメータに指定したサイトは、手順5のSPECIFY_NEW_MASTERSプロシージャに指定したサイトと同じである必要があります。

masterdef_flashback_scnおよびextension_idの値は変数に保存され、後のプロセスで使用されます。これらの値を参照する場合は、DBA_REPSITES_NEWおよびDBA_REPEXTENSIONSデータ・ディクショナリ・ビューへの問合せを行います。

SPECIFY_NEW_MASTERSおよびADD_NEW_MASTERSプロシージャで、特定のマスター・サイトに対して行った変更を取り消す場合は、UNDO_ADD_NEW_MASTERS_REQUESTプロシージャを使用します。

このプロシージャを実行した後、他のSQL*PlusセッションでDBA_REPCATLOGデータ・ディクショナリ・ビューに問合せを行うことで、進行状況を監視します。このビューに新しいマスター・サイトの追加情報がなくなるまでは、手順8には進まないでください。DBA_REPCATLOGには他の操作による無関係の情報が含まれていないことを前提に、次の文を入力します。

SELECT COUNT(*) FROM DBA_REPCATLOG;

この文から0(ゼロ)が戻されれば、すべてのプロセスは完了です。

*/

PAUSE Press <RETURN> to continue when DBA_REPCATLOG is empty.

/*

手順7   各データベースにディレクトリ・オブジェクトを作成します。

この操作に含まれる各データベースは、データ・ポンプのダンプ・ファイルを保持するためのディレクトリ・オブジェクトを保有している必要があり、エクスポートまたはインポートを実行するユーザーはこのディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている必要があります。この例では、データ・ポンプ・エクスポートはマスター定義サイトで行われ、データ・ポンプ・インポートは各新しいマスター・サイトで行われます。

SQL文CREATE DIRECTORYを使用してディレクトリ・オブジェクトを作成できる管理ユーザーとしてSQL*Plusでデータベースに接続し、データ・ポンプのダンプ・ファイルおよびログ・ファイルを保存するためのディレクトリ・オブジェクトを作成します。次に例を示します。

*/

CONNECT system@orc1.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

CONNECT system@orc4.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

CONNECT system@orc5.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

/*

この例では、SYSTEMユーザーがすべてのエクスポートおよびインポートを実行します。ディレクトリ・オブジェクトを作成したユーザー以外のユーザーがエクスポートまたはインポートを実行する場合は、このユーザーにそのディレクトリ・オブジェクトに対するREADおよびWRITE権限を付与します。

操作に使用した各データベースでこれらのアクションが完了していることを確認します。

手順8   マスター定義データベースでオブジェクトレベルの表のエクスポートを実行します。

マスター定義データベースで、新しいマスター・サイトに作成するマスター・グループ内の各マスター表のオブジェクトレベルのエクスポートを実行します。オブジェクトレベルのエクスポートには、表モード、ユーザー・モードまたは表領域モードで実行するエクスポートがあります。

FLASHBACK_SCNエクスポート・パラメータの手順6のmasterdef_flashback_scnパラメータから戻されるシステム変更番号(SCN)を使用します。DBA_REPEXTENSIONSデータ・ディクショナリ・ビューにFLASHBACK_SCN値を問い合せることができます。

SELECT FLASHBACK_SCN FROM DBA_REPEXTENSIONS;

この例では、SCN値は3456871であるとします。

コマンドラインで、エクスポートを実行します。この例では、SYSTEMユーザーとして接続します。データ・ポンプ・エクスポート・コマンドの例を次に示します。

expdp system TABLES=HR.COUNTRIES,HR.DEPARTMENTS,HR.EMPLOYEES,
HR.JOB_HISTORY,HR.JOBS,HR.LOCATIONS,HR.REGIONS DIRECTORY=DPUMP_DIR
DUMPFILE=hr_tables.dmp CONTENT=data_only FLASHBACK_SCN=3456871

この例では、表がインポート・サイトに存在しているため、CONTENTパラメータを使用します。このパラメータを指定する必要がない場合もあります。

エクスポートを実行する前に、UNDO_RETENTION初期化パラメータが正しく設定されていることを確認します。

関連項目:

- データ・ポンプ・エクスポートの実行方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

- UNDO領域の管理およびUNDO_RETENTION初期化パラメータの設定の詳細は、『Oracle Database管理者ガイド』を参照してください。

*/

PAUSE Press <RETURN> to continue when the export is complete.

/*

手順9   マスター定義サイトへの伝播を再開します。

次のプロシージャを実行することで、マスター・サイトの拡張されたマスター・グループおよび影響されていないマスター・グループに対するエクスポートが正常に行われ、伝播が有効化されたことが示されます。

*/

CONNECT repadmin@orc1.example.com

BEGIN
DBMS_REPCAT.RESUME_PROPAGATION_TO_MDEF (
extension_id => :extension_id);
END;
/

/*

extension_idは、DBA_REPSITES_NEWデータ・ディクショナリ・ビューを問い合せることで検索できます。

手順10   エクスポート・ダンプ・ファイルを新しいマスター・サイトに転送します。

オブジェクトレベルのエクスポートまたはインポートで追加された他の新しいマスター・サイトへは、DBMS_FILE_TRANSFERパッケージ、FTPなどの方法により、エクスポート・ダンプ・ファイルが転送されます。次の手順で説明するインポートを実行する場合、各新しいサイトで、これらのエクスポート・ダンプ・ファイルが必要となります。

*/

PAUSE Press <RETURN> to continue when the export dump files have been
transfered to the new master sites that are being added with object-level
export/import.

/*

手順11   手順8でエクスポートした各オブジェクトの各新しいマスター・サイトでオブジェクトレベルのインポートを実行します。

コマンドラインで、インポートを実行します。この例では、SYSTEMユーザーとして接続します。インポート・コマンドの例を次に示します。

impdp system TABLES=HR.COUNTRIES,HR.DEPARTMENTS,HR.EMPLOYEES,
HR.JOB_HISTORY,HR.JOBS,HR.LOCATIONS,HR.REGIONS DIRECTORY=DPUMP_DIR
DUMPFILE=hr_tables.dmp CONTENT=data_only TABLE_EXISTS_ACTION=append

表に基づいて作成された索引など、他のオブジェクトは自動的にインポートされます。この例では、表がインポート・サイトに存在しているため、CONTENTおよびTABLE_EXISTS_ACTIONパラメータを使用します。これらのパラメータを指定する必要がない場合もあります。

関連項目:
データ・ポンプ・インポートの実行方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

各サイトでオブジェクトレベルのインポートを実行します。

*/

PAUSE Press <RETURN> to continue when the imports are complete at each site. You
can use a separate terminal window to perform the object-level imports.

/*

手順12   新しいマスター・サイトで遅延トランザクションを受信します。

次のプロシージャでは、新しく準備されたマスター・サイトや既存のマスター・サイトから起動マスター・サイトへの遅延トランザクションの伝播が可能です。このプロシージャでは、起動マスター・サイトから新しく準備されたマスター・サイトや既存のマスター・サイトへの遅延トランザクションの伝播も可能です。

注意:
新しいマスター・サイトに対するオブジェクトレベルのエクスポートまたはインポートが完了するまでは、このプロシージャは起動しないでください。
プロシージャから完了通知が戻るまでは、データ操作言語(DML)文を新しいマスター・サイトの拡張マスター・グループのオブジェクトに適用しないでください。これは、これらのDML文が、レプリケートされないためです。

*/

CONNECT repadmin@orc4.example.com

BEGIN
DBMS_REPCAT.PREPARE_INSTANTIATED_MASTER (
extension_id  => :extension_id);
END;
/

CONNECT repadmin@orc5.example.com

BEGIN
DBMS_REPCAT.PREPARE_INSTANTIATED_MASTER (
extension_id  => :extension_id);
END;
/

SET ECHO OFF

SPOOL OFF

/*

注意:
extension_idは、DBA_REPSITES_NEWデータ・ディクショナリ・ビューを問い合せることで検索できます。

************************** END OF SCRIPT **********************************/

静止中のマスター・グループに新しいマスター・サイトを追加

次に示す方法で、新しいマスター・サイトを静止中のマスター・グループに追加できます。

- ADD_MASTER_DATABASEプロシージャを使用して新しいマスター・サイトを追加

- エクスポート/インポートを使用するオフライン・インスタンシエーションで新しいマスター・サイトを追加

通常は、マスター・グループが小規模の場合または新しいマスター・サイトでレプリケーション表を事前に作成してデータをロードする場合にのみADD_MASTER_DATABASEプロシージャを使用します。これ以外の場合は、ADD_MASTER_DATABASEプロシージャは使用しません(このプロシージャでは、ネットワーク上のすべてのマスター・グループがコピーされるためです)。大規模なマスター・グループでは、新しいマスター・サイトのマスター・グループにオブジェクトを事前に作成するか、オフライン・インスタンシエーションを使用します。

ADD_MASTER_DATABASEプロシージャを使用して新しいマスター・サイトを追加

ADD_MASTER_DATABASEプロシージャを使用して、静止中の既存のマスター・グループにマスター・サイトを追加できます。このプロシージャを実行すると、既存のマスター・オブジェクトが新しいサイトにレプリケートされます。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者

実行場所: マスター定義サイト

レプリケーションの状態: 静止中

次の手順に従って、ADD_MASTER_DATABASEプロシージャを使用してサイトをマスター・グループに追加します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   新しいマスター・サイトを設定します。

新しいマスター・サイトを追加する前に、適切なスキーマおよびデータベース・リンクが作成されていることを確認します。新しいマスター・サイトから既存の各マスター・サイトへのデータベース・リンクの作成を確認します。既存の各マスター・サイトから新しいマスター・サイトへのデータベース・リンクも作成します。データベース・リンクの作成を終えた後、新しいデータベース・リンクごとにスケジュール・リンクも定義します。

関連項目:

- 「マスター・サイトの設定」

- 「マスター・サイト間のスケジュール・リンクの作成」

*/

SET ECHO ON

SPOOL add_masters_quiesced.out

PAUSE Press <RETURN> to the new master site has been set up.

/*

手順2   レプリケーション管理者としてマスター定義サイトに接続します。

*/

CONNECT repadmin@orc1.example.com

/*

手順3   レプリケーションの状態が通常の場合は、静止中に変更します。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順4   新しいマスター・サイトを追加します。

この例では、レプリケート・オブジェクトは新しいマスター・サイトに存在しないことを前提としています。したがって、マスター定義サイトにあるレプリケート・オブジェクトの行を新しいマスター・サイトにコピーするためにcopy_rowsパラメータはTRUEに設定され、アドバンスト・レプリケーションが新しいサイトにレプリケート・オブジェクトを作成するようにuse_existing_objectsパラメータはFALSEに設定されます。レプリケート・オブジェクトが新しいサイトに存在しても、データが含まれない場合、use_existing_objectsはTRUEに設定します。

*/

BEGIN
DBMS_REPCAT.ADD_MASTER_DATABASE (
gname => 'hr_repg',
master => 'orc4.example.com',
use_existing_objects => FALSE,
copy_rows => TRUE,
propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

DBA_REPCATLOGビューが空になるまで待機します。このビューには、正常な実行後には消去される一時的な情報が含まれます。他のSQL*Plusセッションで次のSELECT文を実行して、DBA_REPCATLOGビューを監視します。

SELECT COUNT(*) FROM DBA_REPCATLOG WHERE GNAME = 'HR_REPG';

この文から0(ゼロ)が戻されれば、すべてのプロセスは完了です。

*/

PAUSE Press <RETURN> to continue when DBA_REPCATLOG is empty.

/*

手順5   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

エクスポート/インポートを使用するオフライン・インスタンシエーションで新しいマスター・サイトを追加

確立されたレプリケーション環境が拡張されると、ADD_MASTER_DATABASEプロシージャを使用して新しいマスター・サイトをレプリケーション環境に追加した場合に、ネットワークの通信量が増大します。これは、ネットワークを通じて、表またはマテリアライズド・ビューの内容全体が新しいレプリケート・サイトに伝播されるためです。

このようなネットワークの通信量を最少にするには、レプリケーション環境を拡張する場合にオフライン・インスタンシエーション・プロシージャを使用します。オフライン・インスタンシエーションでは、Oracleのエクスポート・ユーティリティおよびインポート・ユーティリティを利用でき、これによって、エクスポート・ファイルを作成し、CD-ROMやテープなどのストレージ・メディアを使用して新しいサイトにデータを転送できます。

次のスクリプト例は、マスター・サイトのオフライン・インスタンシエーションを行う方法を示します。このスクリプトを実行すると、静止中の既存のマスター・グループに新しいマスター・サイトを追加する他の方法と比べ、ネットワークの通信量をかなり絞り込むことができます。このスクリプトは、新しいマスター・サイトにhrスキーマが存在しないことを前提とし、新しいマスター・サイトでこのスキーマをインスタンス化します。hrスキーマは、Oracleのインストール時に自動的に作成されます。この例を開始する前に、新しいマスター・サイトからhrスキーマを削除することもできます。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者(他の実行者が指定されていない場合)

実行場所: マスター定義サイトおよび新しいマスター・サイト

レプリケーションの状態: 静止中と部分的な再開

次の手順に従って、オフライン・インスタンシエーションを使用してサイトをマスター・グループに追加します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   新しいマスター・サイトを設定します。

新しいマスター・サイトのオフライン・インスタンシエーションを実行する前に、適切なスキーマおよびデータベース・リンクが作成されていることを確認します。新しいマスター・サイトから既存の各マスター・サイトへのデータベース・リンクの作成を確認します。既存の各マスター・サイトから新しいマスター・サイトへのデータベース・リンクも作成します。データベース・リンクの作成を終えた後、新しいデータベース・リンクごとにスケジュール・リンクも定義します。

関連項目:

- 「マスター・サイトの設定」

- 「マスター・サイト間のスケジュール・リンクの作成」

*/

SET ECHO ON

SPOOL add_masters_instant.out

PAUSE Press <RETURN> to the new master site has been set up.

/*

手順2   レプリケーション管理者としてマスター定義サイトに接続します。

*/

CONNECT repadmin@orc1.example.com

/*

手順3   マスター・アクティビティを一時停止します。

マスター・データのエクスポートおよびオフライン・インスタンシエーション・プロセスの開始の前に、既存のマスター・サイトのマスター・アクティビティを一時停止する必要があります。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順4   個別のSQL*Plusセッションにはペンディング・トランザクションがないことを検証します。

ここでは、未解決の遅延トランザクションのプッシュ、エラー・トランザクションの解決、および管理トランザクションのプッシュが含まれます。この手順は、既存の各マスター・サイトで実行する必要があります。

エラー・トランザクション・キューをチェックします。

SELECT * FROM DEFERROR;

遅延トランザクションがエラー・キューに入力された場合、エラーを解決するために手動で遅延トランザクションを再実行します。次に例を示します。

BEGIN
DBMS_DEFER_SYS.EXECUTE_ERROR (
deferred_tran_id => '128323',
destination => 'orc1.example.com');
END;
/

未処理の管理要求をチェックします。

SELECT * FROM DBA_REPCATLOG;

未処理の管理要求が残っている場合は、これらの要求を手動で実行することも、自動的に実行されるまで待機することも可能です。複数の手順を含む管理操作も存在するため、DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMINプロシージャを数回実行します。次に例を示します。

BEGIN
DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMIN (
gname => 'hr_repg',
all_sites => TRUE);
END;
/

*/

PAUSE Press <RETURN> to continue when you have verified that there are no pending requests.

/*

手順5   オフライン・インスタンシエーション・プロシージャを開始します。

*/

BEGIN
DBMS_OFFLINE_OG.BEGIN_INSTANTIATION (
gname => 'hr_repg',
new_site => 'orc4.example.com');
END;
/

/*

DBA_REPCATLOGビューが空になるまで待機します。このビューには、正常な実行後には消去される一時的な情報が含まれます。他のSQL*Plusセッションで次のSELECT文を実行して、DBA_REPCATLOGビューを監視します。

SELECT * FROM DBA_REPCATLOG WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue when DBA_REPCATLOG is empty.

/*

手順6   各データベースにディレクトリ・オブジェクトを作成します。

この操作に含まれる各データベースは、データ・ポンプのダンプ・ファイルを保持するためのディレクトリ・オブジェクトを保有している必要があり、エクスポートまたはインポートを実行するユーザーはこのディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている必要があります。この例では、データ・ポンプ・エクスポートはマスター定義サイトで行われ、データ・ポンプ・インポートは新しいマスター・サイトで行われます。

SQL文CREATE DIRECTORYを使用してディレクトリ・オブジェクトを作成できる管理ユーザーとしてSQL*Plusでデータベースに接続し、データ・ポンプのダンプ・ファイルおよびログ・ファイルを保存するためのディレクトリ・オブジェクトを作成します。次に例を示します。

*/

CONNECT system@orc1.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

CONNECT system@orc4.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

/*

操作に使用した両方のデータベースでこれらのアクションが完了していることを確認します。この例では、SYSTEMユーザーがディレクトリ・オブジェクトの作成およびすべてのエクスポートとインポートを実行します。ディレクトリ・オブジェクトを所有していないユーザーがエクスポートまたはインポートを実行する場合は、このユーザーにそのディレクトリ・オブジェクトに対するREADおよびWRITE権限を付与します。

手順7   個別の端末ウィンドウで、エクスポートを実行します。

コマンドラインで、エクスポートを実行します。この例では、SYSTEMユーザーとして接続します。データ・ポンプ・エクスポート・コマンドの例を次に示します。

expdp system SCHEMAS=hr DIRECTORY=DPUMP_DIR DUMPFILE=hr_schema.dmp

表のエクスポートでは、索引が自動的にエクスポートされます。

関連項目:
データ・ポンプ・エクスポートの実行方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

*/

PAUSE Press <RETURN> to continue when the export is complete.

/*

手順8   レプリケーション・アクティビティを部分的に再開します。

オフライン・インスタンシエーション・プロセスの完了には時間がかかるため、エクスポートの終了後、DBMS_OFFLINE_OGパッケージ内のRESUME_SUBSET_OF_MASTERSプロシージャを実行することにより、残りのマスター・サイト(新しいマスター・サイトは除きます)のレプリケーション・アクティビティを再開できます。次の例では、新しいマスター・サイトのorc4.example.comを除くすべてのマスター・サイトでレプリケーション・アクティビティが再開されます。

*/

CONNECT repadmin@orc1.example.com

BEGIN
DBMS_OFFLINE_OG.RESUME_SUBSET_OF_MASTERS (
gname => 'hr_repg',
new_site => 'orc4.example.com');
END;
/

/*

手順9   エクスポート・ダンプ・ファイルを新しいマスター・サイトに転送します。

新しいマスター・サイトへは、DBMS_FILE_TRANSFERパッケージ、FTPなどの方法により、エクスポート・ダンプ・ファイルが転送されます。次の手順で説明するインポートを実行する場合、新しいサイトで、このエクスポート・ダンプ・ファイルが必要となります。

*/

PAUSE Press <RETURN> to continue when the export dump file has been
transfered to the new master site.

/*

手順10   レプリケーション管理者として新しいマスター・サイトに接続します。

*/

CONNECT repadmin@orc4.example.com

/*

手順11   新しいマスター・サイトを準備します。

エクスポート・ファイルのデータをインポートするには、新しいサイトを準備する必要があります。新しいマスター・サイトで次のプロシージャを必ず実行します。

*/

BEGIN
DBMS_OFFLINE_OG.BEGIN_LOAD (
gname => 'hr_repg',
new_site => 'orc4.example.com');
END;
/

/*

手順12   個別の端末ウィンドウで、エクスポート・ダンプ・ファイルからデータをインポートします。

コマンドラインで、インポートを実行します。この例では、SYSTEMユーザーとして接続します。インポート・コマンドの例を次に示します。

impdp system SCHEMAS=hr DIRECTORY=DPUMP_DIR DUMPFILE=hr_schema.dmp

表に基づいて作成された索引など、他のオブジェクトは自動的にインポートされます。

関連項目:
データ・ポンプ・インポートの実行方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

*/

PAUSE Press <RETURN> to continue when the import is complete.

/*

手順13   新しいマスター・サイトのロード・プロセスを完了します。

エクスポート・ファイルをインポートすれば、新しいマスター・サイトのオフライン・インスタンシエーション・プロセスを完了できます。DBMS_OFFLINE_OG.END_LOADプロシージャを実行して、通常のレプリケーション・アクティビティ用の新しいサイトを準備します。

*/

BEGIN
DBMS_OFFLINE_OG.END_LOAD (
gname => 'hr_repg',
new_site => 'orc4.example.com');
END;
/

/*

手順14   レプリケーション管理者としてマスター定義サイトに接続します。

*/

CONNECT repadmin@orc1.example.com

/*

手順15   インスタンス化処理を完了します。

新しいマスター・サイトの手順を完了すれば、オフライン・インスタンシエーション・プロセスを完了できます。DBMS_OFFLINE_OGパッケージのEND_INSTANTIATIONプロシージャを実行することで、プロセスを完了して、すべてのマスター・サイトにおける通常のレプリケーション・アクティビティを再開します。マスター定義サイトで次のプロシージャを必ず実行します。

*/

BEGIN
DBMS_OFFLINE_OG.END_INSTANTIATION (
gname => 'hr_repg',
new_site => 'orc4.example.com');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

マスター・グループからマスター・サイトの削除

マスター・グループからマスター・サイトを削除する場合は、REMOVE_MASTER_DATABASESプロシージャを使用して1つ以上のマスター・サイトを削除します。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者

実行場所: マスター定義サイト

レプリケーションの状態: 静止中

次に示す手順に従って、マスター・サイトを削除します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者としてマスター定義サイトに接続します。

*/

SET ECHO ON

SPOOL remove_masters.out

CONNECT repadmin@orc1.example.com

/*

手順2   マスター・グループのレプリケーションの状態が通常の場合は、静止中に変更してください。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順3   マスター・サイトを削除します。

*/

BEGIN
DBMS_REPCAT.REMOVE_MASTER_DATABASES (
gname => 'hr_repg',
master_list => 'orc4.example.com');
END;
/

/*

DBA_REPCATLOGビューが空になるまで待機します。他のSQL*Plusセッションで次のSELECT文を実行して、DBA_REPCATLOGビューを監視します。

SELECT * FROM DBA_REPCATLOG WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue when DBA_REPCATLOG is empty for the master group.

/*

手順4   マスター・グループのマスター・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

使用不可能なマスター・サイトの削除

マスター・グループから削除するサイトはアクセス可能である必要はありません。システムまたはネットワークの障害により、長期間、マスター・サイトが使用できない場合は、マスター・グループからマスター・サイトを削除できます。

しかし、サイトが使用不可能であるため、多くの場合、マスター・グループのレプリケーション・アクティビティを一時停止することはできません。DBMS_REPCATパッケージのREMOVE_MASTER_DATABASESプロシージャを使用すると、マスター・グループが静止中でない場合でも、マスター・グループからマスター・サイトを削除できます。

この場合の対処を次に示します。

- 遅延トランザクション・キューのクリーン

- 非一貫性データの削除

具体的には、マスター・グループのレプリケーション・アクティビティを次に一時停止するときは、使用不可能なマスター・サイトが削除された後すぐに、次の手順を完了する必要があります。

手順1   マスター・グループのレプリケーション・アクティビティを一時停止します。

詳細は、「SUSPEND_MASTER_ACTIVITYプロシージャ」を参照してください。

手順2   遅延トランザクションの接続先が削除済のマスター・サイトである場合は、そのマスター・サイトからすべての遅延トランザクションを削除します。

詳細は、「DELETE_TRANプロシージャ」を参照してください。

手順3   削除済のマスター・サイトから、すべての遅延トランザクションを削除します。

詳細は、「DELETE_TRANプロシージャ」を参照してください。

手順4   残りの各マスター・サイトで、すべてのエラー・トランザクションを再実行または削除します。

エラー・トランザクションの再実行の詳細は、「エラー・キューの管理」を、エラー・トランザクションの削除の詳細は、「DELETE_TRANプロシージャ」をそれぞれ参照してください。

手順5   遅延トランザクションまたはエラー・トランザクションが、現存の各マスターに存在しないことを確認してください。

現存のマスターから1つ以上の遅延トランザクションが削除できない場合は、マスター・サイトでDBMS_DEFER_SYS.DELETE_TRANプロシージャを実行します。

手順6   レプリケート・データがすべて一貫したデータであることを確認します。

違いの判別と訂正の詳細は、第16章「DBMS_RECTIFIER_DIFF」を参照してください。

手順7   マスター・グループのレプリケーション・アクティビティを再開します。

詳細は、「RESUME_MASTER_ACTIVITYプロシージャ」を参照してください。

注意:
マスター・グループから使用不可能なマスター・サイトを削除した後は、削除したサイトからマスター・グループを削除してクリーン・アップを終了します。

データ・ディクショナリ・ビュー内のコメント・フィールドの更新

DBMS_REPCATパッケージには、レプリケーションに関連する様々なデータ・ディクショナリ・ビュー内のコメント情報を更新できるプロシージャがいくつかあります。表7-1に、各ビューに対してコールするプロシージャの一覧を示します。

表7-1 アドバンスト・レプリケーション・ビュー内のコメントの更新

ビュー

DBMS_REPCATプロシージャ

パラメータ情報の参照先

DBA_REPGROUP

COMMENT_ON_REPGROUP(
gname            IN VARCHAR2,
comment          IN VARCHAR2)

「COMMENT_ON_REPGROUPプロシージャ」

DBA_REPOBJECT

COMMENT_ON_REPOBJECT(
sname            IN VARCHAR2,
oname            IN VARCHAR2,
type             IN VARCHAR2,
comment          IN VARCHAR2)

「COMMENT_ON_REPOBJECTプロシージャ」

DBA_REPSITES

COMMENT_ON_REPSITES(
gname            IN VARCHAR2,
master           IN VARCHAR,
comment          IN VARCHAR2)

「COMMENT_ON_REPSITESプロシージャ」

DBA_REPCOLUMN_GROUP

COMMENT_ON_COLUMN_GROUP(
sname            IN VARCHAR2,
oname            IN VARCHAR2,
column_group     IN VARCHAR2,
comment          IN VARCHAR2)

「COMMENT_ON_COLUMN_GROUPプロシージャ」

DBA_REPPRIORITY_GROUP

COMMENT_ON_PRIORITY_GROUP(
gname            IN VARCHAR2,
pgroup           IN VARCHAR2)
comment          IN VARCHAR2)

「COMMENT_ON_PRIORITY_GROUPプロシージャ」

DBA_REPPRIORITY_GROUP (site priority group)

COMMENT_ON_SITE_PRIORITY(
gname            IN VARCHAR2,
name             IN VARCHAR2,
comment          IN VARCHAR2)

「COMMENT_ON_PRIORITY_GROUPプロシージャ」

DBA_REPRESOLUTION (uniqueness conflicts)

COMMENT_ON_UNIQUE_RESOLUTION(
sname            IN VARCHAR2,
oname            IN VARCHAR2,
constraint_name  IN VARCHAR2,
sequence_no      IN NUMBER,
comment          IN VARCHAR2)

COMMENT_ON_UNIQUE_RESOLUTIONプロシージャのパラメータは、「COMMENT_ON_conflicttype_RESOLUTIONプロシージャ」を参照してください。

DBA_REPRESOLUTION (update conflicts)

COMMENT_ON_UPDATE_RESOLUTION(
sname            IN VARCHAR2,
oname            IN VARCHAR2,
column_group     IN VARCHAR2,
sequence_no      IN NUMBER,
comment          IN VARCHAR2)

COMMENT_ON_UNIQUE_RESOLUTIONプロシージャのパラメータは、「COMMENT_ON_conflicttype_RESOLUTIONプロシージャ」を参照してください。

DBA_REPRESOLUTION (delete conflicts)

COMMENT_ON_DELETE_RESOLUTION(
sname            IN VARCHAR2,
oname            IN VARCHAR2,
sequence_no      IN NUMBER,
comment          IN VARCHAR2)

COMMENT_ON_UNIQUE_RESOLUTIONプロシージャのパラメータは、「COMMENT_ON_conflicttype_RESOLUTIONプロシージャ」を参照してください。

プロシージャ・レプリケーションの使用

プロシージャ・レプリケーションは、レプリケーション環境内で逐次実行され、多くの行を操作する大規模なバッチ指向の操作に有効です。

適切な応用例は、アーカイブ操作とも呼ばれるパージ操作です。これは、古いデータまたはオンライン・データベースから「論理的に」削除されたデータを削除するために、まれ(たとえば、四半期に一度)に時間外に実行されるものです。プロシージャ・レプリケーションを使用して削除された行をパージする例は、『Oracle Databaseアドバンスト・レプリケーション』の第5章「競合解消の概念とアーキテクチャ」の削除の競合防止に関する項で説明されています。

プロシージャ・レプリケーションの制限事項

レプリケート・プロシージャのパラメータはすべて、INパラメータです。OUTおよびIN/OUTモードはサポートされていません。これらのパラメータには次のデータ型がサポートされています。

- VARCHAR2

- NVARCHAR2

- NUMBER

- DATE

- TIMESTAMP

- TIME WITH TIME ZONE

- TIMESTAMP LOCAL TIME ZONE

- INTERVAL YEAR TO MONTH

- INTERVAL DAY TO SECOND

- RAW

- ROWID

- CHAR

- NCHAR

- BASICFILE記憶域を持つCLOB

- BASICFILE記憶域を持つNCLOB

- BASICFILE記憶域を持つBLOB

- CLOBとして格納されたXMLType

- 型継承または型進化を使用しないユーザー定義型

- 型継承または型進化を使用しないOracle提供の型

これらのパラメータでは次のデータ型がサポートされません。

- FLOAT

- BINARY_FLOAT

- BINARY_DOUBLE

- LONG

- LONG RAW

- SECUREFILE記憶域を持つCLOB

- SECUREFILE記憶域を持つNCLOB

- SECUREFILE記憶域を持つBLOB

- BFILE

- オブジェクト・リレーショナルまたはバイナリXMLとして格納されているXMLType

- 式の型

- 型継承または型進化を使用するユーザー定義型

- 型継承または型進化を使用するOracle提供の型

Oracleでは、レプリケート・プロシージャが生成した更新の競合が検出されません。レプリケート・プロシージャ自らが、競合の検出と解消を行う必要があります。独自の競合解消ルーチンの表現は困難なため、競合の可能性を単純に回避することが最良です。

次のガイドラインに従うことで、プロシージャ・レプリケーションを使用するすべてのサイトで、表の一貫性を維持することができます。

- 遅延プロシージャ本体の行レベルのレプリケーションを無効化する必要があります。詳細は、「データ・ディクショナリ・ビュー内のコメント・フィールドの更新」を参照してください。

- 「トランザクションのシリアル化」で説明するように、一度に実行できるレプリケート・プロシージャは1つのみです。

- 遅延トランザクションの伝播は逐次行います。スケジュール・リンクのガイドラインの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- レプリケート・プロシージャはパッケージ化が必要です(ただし、パッケージにファンクションを含めることはできません)。スタンドアロン遅延プロシージャおよび、スタンドアロンまたはパッケージ化遅延ファンクションは現在サポートされていません。

- 遅延プロシージャは所有データをローカルでのみ参照します。

- このプロシージャは、ローカルで生成されたフィールド、値または環境に依存するSQLファンクションを使用しません。たとえば、このプロシージャはSYSDATEをコールしません。

- データの所有権は静的に分割されます。すなわち、行の所有権はサイト間で変更されません。

- マスター・サイトに複数のマスター・グループを所有していて、1つ以上のマスター・グループが静止中の場合は、マスター・サイトのマスター・グループに対するプロシージャ・レプリケーションは実行できません。あるマスター・グループのプロシージャは他のマスター・グループのオブジェクトを更新できるため、この制限が規定されています。マスター・サイトのすべてのマスター・グループがデータを正常にレプリケートした場合にのみ、プロシージャ・レプリケーションを実行できます(すなわち、静止中のマスター・グループがない場合)。
たとえば、マスター・サイトdb1のマスター・グループAにsal_raiseという名前のプロシージャを所有している場合で、マスター・サイトdb1のマスター・グループBが静止中の場合は、マスター・グループAがレプリケーションを正常に終了しても、sal_raiseプロシージャを実行できません。

- プロシージャ・レプリケーションを使用する場合は、プロシージャ・コールのみがマスター・レプリケーション・サイトに伝播されます。プロシージャ・コールは、マテリアライズド・ビュー・サイトに伝播されません。しかし、マテリアライズド・ビュー・サイトではプロシージャ・レプリケーションを開始できます。この場合、プロシージャ・コールはレプリケーション環境のすべてのマスター・サイトに伝播されますが、マテリアライズド・ビュー・サイトには伝播されません。他のマテリアライズド・ビュー・サイトは、マテリアライズド・ビューをリフレッシュして、マスター・サイトの変更を取り込む必要があります。
たとえば、msite1およびmsite2という2つのマスター・サイトと、mview1およびmview2という2つのマテリアライズド・ビュー・サイトが含まれるレプリケーション環境を考えます。プロシージャ・レプリケーションがmview1で開始された場合、プロシージャはmview1で実行され、プロシージャ・コールは2つのマスター・サイトmsite1およびmsite2に伝播され、これらのサイトでもプロシージャが実行されます。ただし、このプロシージャ・コールは、mview2には伝播されません。したがって、次のリフレッシュの間、mview2はそのマスター・サイトでのプロシージャによる変更をすべてプルダウンします。

ユーザー定義型とプロシージャ・レプリケーション

プロシージャ・レプリケーションを使用する場合、プロシージャが参照するユーザー定義型およびユーザー定義のオブジェクトは次の条件を満たす必要があります。

- オブジェクト型に関しては、すべてのレプリケーション・サイトは、オブジェクト型の属性の順序に従う必要があります。オブジェクト型を作成する場合は、属性の順序を設定します。次のオブジェクト型を考慮します。

CREATE TYPE cust_address_typ AS OBJECT
(street_address     VARCHAR2(40),
postal_code        VARCHAR2(10),
city               VARCHAR2(30),
state_province     VARCHAR2(10),
country_id         CHAR(2));
/

すべてのレプリケーション・サイトで、street_addressは1番目の属性、postal_codeは2番目の属性、cityは3番目の属性である必要があります。

- Oracleオブジェクトに関しては、すべてのレプリケーション・サイトは同一のオブジェクト識別子(OID)、スキーマ所有者および各レプリケート・オブジェクト型のタイプ名を所有する必要があります。
分散スキーマ管理を常に使用して、オブジェクト型、列オブジェクトを持つ表およびオブジェクト表などのレプリケート・オブジェクトを作成または修正することで、これらの条件を満たすことができます。オブジェクト型の作成や修正に分散スキーマ管理を使用しない場合は、レプリケーション・エラーが発生することがあります。

関連項目:
レプリケーション・サイトにおける型の取決めの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

トランザクションのシリアル化

逐次実行ではデータの一貫性が維持できます。レプリケーション機能では、一度に1つのレプリケート・トランザクションを伝播および実行します。たとえば、ローカル・データの更新を行う2つのプロシージャ、AとBがあるとします。この条件で次のアクションを順番に実行するとします。

1. AとBをローカルで実行します。

2. 別のノード上にあるAとBの他のレプリカの実行要求をキューします。

3. コミットします。

別のノードにあるAとBのレプリカは、起点となるサイトでコミットされた順番通りに、逐次実行されます。AとBが起点となるサイトで同時に実行されると、ローカルとリモートとでは結果が異なることになります。起点となるサイトでAとBを逐次実行した場合は、すべてのサイトで同一の結果が得られます。トランザクションを逐次伝播することで、AとBはターゲット・サイトで必ず順番に実行されます。

一方、シリアル化を確実に行うために、プロシージャへの書込みは慎重に行います。たとえば、パラレル伝播を使用している場合は、起点となるサイトおよびターゲット・サイトにおけるシリアル化を確実に行うための問合せには、SELECT... FOR UPDATEを使用します。

レプリケート・プロシージャのサポートの生成

プロシージャの開始時には行レベルのレプリケーション・サポートを無効化し、終了時にはサポートを再び有効化する必要があります。この操作により、プロシージャを実行したことで発生する更新が他のサイトに伝播されることがなくなります。行レベルのレプリケーションの有効化および無効化は、次のプロシージャをコールすることで行います。

- DBMS_REPUTIL.REPLICATION_ON

- DBMS_REPUTIL.REPLICATION_OFF

関連項目:

- 「レプリケーションの使用禁止」

- 「REPLICATION_ONプロシージャ」

- 「REPLICATION_OFFプロシージャ」

レプリケート・パッケージのレプリケーション・サポートを生成すると、Oracleでは、レプリケーション・プロパゲータのスキーマにWrapperパッケージが作成されます。

注意:
現行のプロパゲータを登録解除すると、プロパゲータのスキーマにある既存の生成済ラッパーのすべてが削除されます。新しいプロパゲータを登録した後は、ラップされたストアド・プロシージャのレプリケーション・サポートを再生成します。

Wrapperパッケージの名前はオリジナル・パッケージと同じですが、このプロシージャのレプリケーション・サポートを生成したときに指定した文字列の接頭辞が付けられています。接頭辞を指定しないと、Oracleでは、デフォルトの接頭辞、defer_が使用されます。ラッパー・プロシージャは、call_localおよびcall_remoteの2つの追加パラメータ以外にオリジナルと同じパラメータを所有しています。これら2つのCHARパラメータで、プロシージャが実行されている場所を特定します。call_localが'Y'の場合は、ローカルでプロシージャが実行されます。call_remoteが'Y'の場合は、レプリケーション環境のすべてのマスター・サイトでプロシージャが実行されます。

同期式で変更を伝播する場合、または非同期式で変更を伝播する場合に、これらのプロシージャに対するコールが遅延トランザクション・キューに追加された場合は、リモート・プロシージャが直接コールされます。デフォルトでは、call_localは'N'で、call_remoteは'Y'です。

Oracleでは、パッケージのレプリケーション・サポートが2つのフェーズで生成されます。フェーズ1では、全サイトのパッケージ仕様部が作成されます。フェーズ2では、全サイトのパッケージ本体が生成されます。同期レプリケーションをサポートするには、これら2つのフェーズが必要です。

たとえば、1つの引数emailを取得するプロシージャnew_deptを含むemp_mgmtパッケージの作成を想定します。このパッケージをシステム内のすべてのマスター・サイトにレプリケートする場合、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用してパッケージをマスター・グループに追加し、オブジェクトのレプリケーション・サポートを生成します。これらの手順を完了すれば、アプリケーションは、次に示すレプリケート・パッケージのプロシージャをコールできます。

BEGIN
defer_emp_mgmt.new_dept( email        => 'jones',
call_local   => 'Y',
call_remote  => 'Y');
END;
/

関連項目:
Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用したマスター・グループおよびレプリケート・オブジェクトの管理の詳細は、Advanced Replicationインタフェースのオンライン・ヘルプを参照してください。

図7-4に示すように、ラッパー・プロシージャの論理により、ローカル・サイトおよびすべてのリモート・サイトでのプロシージャのコールが確実に行えます。また、ラッパー・プロシージャの論理により、レプリケート・プロシージャがリモート・サイトでコールされ、call_remoteがFALSEの場合、プロシージャがさらに伝播されることも回避できます。

データ所有権の静的分割を伴う複合レプリケーション環境で操作を行っている場合(すなわち、行レベルのレプリケーションを妨げない場合)は、行レベル・レプリケーションおよびプロシージャ・レプリケーションの両方が同じ非同期キューを使用するため、Advanced Replicationでは、リモート・ノードでの操作順序が維持されます。

図7-4 非同期プロシージャ・レプリケーション

8 マテリアライズド・ビュー・レプリケーション環境の管理

マテリアライズド・ビュー・レプリケーションは、ユーザーおよびフロントエンド・アプリケーションの必要を満たすと同時に、セキュリティ構成の要件を満たす、データ・セットの構築に柔軟性を提供します。この章では、レプリケーション・マネージメントAPIを使用したマテリアライズド・ビュー・サイトの管理方法を説明します。

この章には、次の項が含まれます。

- マテリアライズド・ビューのリフレッシュ

- マテリアライズド・ビュー・グループのマスター・サイトの変更

- マテリアライズド・ビュー・グループおよびオブジェクトの削除

- マテリアライズド・ビュー・ログの管理

- エクスポート/インポートによるマテリアライズド・ビュー・サイトのオフライン・インスタンシエーション

- マテリアライズド・ビュー・グループに対するグループ所有者の使用

マテリアライズド・ビューのリフレッシュ

マテリアライズド・ビューのリフレッシュにより、マテリアライズド・ビューのマスターのデータとマテリアライズド・ビューのデータが同期化されます。リフレッシュ・グループのすべてのマテリアライズド・ビューを一度にリフレッシュすることも、マテリアライズド・ビューを個別にリフレッシュすることもできます。マテリアライズド・ビュー・サイトで複数のマテリアライズド・ビューに依存するアプリケーションがある場合、アプリケーションで使用されるすべてのマテリアライズド・ビューでデータ変換に整合性が保たれるよう、リフレッシュ・グループの使用をお薦めします。

次の例では、hr_refgリフレッシュ・グループがリフレッシュされます。

EXECUTE DBMS_REFRESH.REFRESH ('hr_refg');

次の例では、hr.departments_mvマテリアライズド・ビューがリフレッシュされます。

BEGIN
DBMS_MVIEW.REFRESH (
list   =>  'hr.departments_mv',
method =>  '?');
END;
/

注意:
レプリケーション環境で使用するマテリアライズド・ビューは、DBMS_MVIEW.REFRESH_ALL_MVIEWSまたはDBMS_MVIEW.REFRESH_DEPENDENTプロシージャを使用してリフレッシュしないでください。レプリケーション環境のマテリアライズド・ビューは、DBMS_REFRESH.REFRESHまたはDBMS_MVIEW.REFRESHプロシージャを使用してリフレッシュします。

関連項目:
DBMS_MVIEWパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

マテリアライズド・ビュー・グループのマスター・サイトの変更

レベル1のマテリアライズド・ビュー・サイトでマテリアライズド・ビュー・グループのマスター・サイトを他のマスター・サイトに変更するには、次の例に示すように、DBMS_REPCATパッケージのSWITCH_MVIEW_MASTERプロシージャをコールします。

BEGIN
DBMS_REPCAT.SWITCH_MVIEW_MASTER (
gname  => 'hr_repg',
master => 'orc3.example.com');
END;
/

ここでは、hr_repgレプリケーション・グループのマスター・サイトがorc3.example.comマスター・サイトに変更されます。このプロシージャは、マスター・サイトを変更するマテリアライズド・ビュー・サイトでコールする必要があります。また、新しいデータベースとして、レプリケーション環境のマスター・サイトを指定する必要があります。このプロシージャをコールすると、新しいマスターを使用して、ローカル・マテリアライズド・ビュー・グループのマテリアライズド・ビューごとに完全リフレッシュが実行されます。SWITCH_MVIEW_MASTERプロシージャを実行する前に、新しいマスター・サイトを使用するためのマテリアライズド・ビュー・サイトを必ず設定しておきます。

切り替えられたマテリアライズド・ビューの古いマスター・サイトにあるSYS.SLOG$表のエントリは削除されません。その結果、古いマスター・サイトにある切り替えられた更新可能マテリアライズド・ビューのマテリアライズド・ビュー・ログ(MLOG$表)は、DBMS_MVIEW.PURGE_LOGをコールしてそれをパージしないかぎり、際限なく増大する可能性があります。

注意:
他のマテリアライズド・ビュー(レベル2以上)に基づくマテリアライズド・ビューのマスターを切り替えることはできません。このようなマテリアライズド・ビューのベースを別のマスターにするには、マテリアライズド・ビューを削除して再作成する必要があります。

関連項目:
「マテリアライズド・ビュー・サイトの設定」

マテリアライズド・ビュー・グループおよびオブジェクトの削除

様々な理由によって、マテリアライズド・ビュー・サイトのレプリケーション・アクティビティを削除する必要がある場合があります。たとえば、データ要件が変更されたり、従業員が退職した場合などです。

この項では、次の項について説明します。

- デプロイメント・テンプレートで作成されたマテリアライズド・ビュー・グループの削除

- 手動で作成されたマテリアライズド・ビュー・グループまたはオブジェクトの削除

- マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのクリーンアップ

デプロイメント・テンプレートで作成されたマテリアライズド・ビュー・グループの削除

マテリアライズド・ビュー・グループがデプロイメント・テンプレートで作成されている場合、リモート・マテリアライズド・ビュー・サイトのマテリアライズド・ビュー・グループを削除する前に、マテリアライズド・ビュー・グループのターゲット・マスター・サイトでDROP_SITE_INSTANTIATIONプロシージャを実行する必要があります。このプロシージャは、マテリアライズド・ビュー・グループに関連するメタデータの削除に加え、このサイトに関わる関連するデプロイメント・テンプレート・データも削除します。

DROP_SITE_INSTANTIATIONプロシージャにはパブリック・バージョンとプライベート・バージョンがあります。パブリック・バージョンでは、マテリアライズド・ビュー・グループの所有者がマテリアライズド・ビュー・サイトを削除できる一方、プライベート・バージョンでは、マテリアライズド・ビュー・グループの所有者のかわりにレプリケーション管理者が、マテリアライズド・ビュー・サイトを削除します。

パブリックのDROP_SITE_INSTANTIATIONの使用

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者:

- マスター・サイトのマテリアライズド・ビュー・グループ所有者

- マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者

実行場所:

- ターゲット・マテリアライズド・ビュー・サイト用マスター・サイト

- マテリアライズド・ビュー・サイト

レプリケーションの状態: 通常

次に示す手順に従って、デプロイメント・テンプレートで作成されたマテリアライズド・ビュー・グループを削除します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   マテリアライズド・ビュー・グループ所有者としてマスター・サイトに接続します。

*/

SET ECHO ON

SPOOL drop_mv_group_public.out

CONNECT hr@orc3.example.com

/*

手順2   インスタンス化されたマテリアライズド・ビュー・サイトをマスター・サイトから削除します。

*/

BEGIN
DBMS_REPCAT_INSTANTIATE.DROP_SITE_INSTANTIATION(
refresh_template_name =>  'hr_refg_dt',
site_name => 'mv4.example.com');
END;
/

/*

手順3   マテリアライズド・ビュー管理者としてリモート・マテリアライズド・ビュー・サイトに接続します。

*/

CONNECT mviewadmin@mv4.example.com

/*

リモート・マテリアライズド・ビュー・サイトに接続できない場合は、ターゲット・マテリアライズド・ビュー・グループはリフレッシュできませんが、既存のデータはまだマテリアライズド・ビュー・サイトに残っています。

手順4   マテリアライズド・ビュー・グループを削除します。

*/

BEGIN
DBMS_REPCAT.DROP_MVIEW_REPGROUP (
gname => 'hr_repg',
drop_contents => TRUE);
END;
/

/*

マテリアライズド・ビュー・グループの内容をマテリアライズド・ビュー・データベースから物理的に削除する場合は、drop_contentsパラメータにTRUEを指定します。

手順5   リフレッシュ・グループを削除します。

リフレッシュ・グループ所有者として接続し、リフレッシュ・グループを削除します。

*/

CONNECT hr@mv4.example.com

BEGIN
DBMS_REFRESH.DESTROY (
name => 'hr_refg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

プライベートのDROP_SITE_INSTANTIATIONの使用

次のスナップショットをマテリアライズド・ビュー・グループの所有者のかわりに、レプリケーション管理者が実行します。これらのアクションを実行するには、次の要件を満たす必要があります。

実行者:

- マスター・サイトのレプリケーション管理者

- マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者

実行場所:

- ターゲット・マテリアライズド・ビュー・サイト用マスター・サイト

- マテリアライズド・ビュー・サイト

レプリケーションの状態: 通常

次に示す手順に従って、デプロイメント・テンプレートで作成されたマテリアライズド・ビュー・グループを削除します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者としてマスター・サイトに接続します。

*/

SET ECHO ON

SPOOL drop_mv_group_private.out

CONNECT repadmin@orc1.example.com

/*

手順2   インスタンス化されたマテリアライズド・ビュー・サイトをマスター・サイトから削除します。

*/

BEGIN
DBMS_REPCAT_RGT.DROP_SITE_INSTANTIATION (
refresh_template_name => 'hr_refg_dt',
user_name             => 'hr',
site_name             => 'mv4.example.com');
END;
/

/*

手順3   マテリアライズド・ビュー管理者としてリモート・マテリアライズド・ビュー・サイトに接続します。

*/

CONNECT mviewadmin@mv4.example.com

/*

リモート・マテリアライズド・ビュー・サイトに接続できない場合は、ターゲット・マテリアライズド・ビュー・グループはリフレッシュできませんが、既存のデータはまだマテリアライズド・ビュー・サイトに残っています。

手順4   マテリアライズド・ビュー・グループを削除します。

*/

BEGIN
DBMS_REPCAT.DROP_MVIEW_REPGROUP (
gname => 'hr_repg',
drop_contents => TRUE,
gowner => 'hr');
END;
/

/*

マテリアライズド・ビュー・グループの内容をマテリアライズド・ビュー・データベースから物理的に削除する場合は、drop_contentsパラメータにTRUEを指定します。

手順5   リフレッシュ・グループを削除します。

リフレッシュ・グループ所有者として接続し、リフレッシュ・グループを削除します。

*/

CONNECT hr@mv4.example.com

BEGIN
DBMS_REFRESH.DESTROY (
name => 'hr_refg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

手動で作成されたマテリアライズド・ビュー・グループまたはオブジェクトの削除

マテリアライズド・ビュー・サイトのレプリケーション・サポートを削除する場合の最も安全な方法は、マテリアライズド・ビュー・サイトのレプリケート・オブジェクトまたはグループを物理的に削除することです。次の2つの項では、マテリアライズド・ビュー・グループに接続した状態で、これらのオブジェクトとグループを削除する方法を示します。

ここに示すプロシージャは、マテリアライズド・ビューが、ターゲット・マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続した状態で実行する必要があります。接続していると、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにあるすべての関連メタデータを、確実に削除できるためです。マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続できない場合は、「マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのクリーンアップ」の手順を実行して、関連メタデータを手動で削除します。

手動で作成されたマテリアライズド・ビュー・グループの削除

マテリアライズド・ビュー・グループをマテリアライズド・ビュー・サイトから削除することが必要になった場合は、DROP_MVIEW_REPGROUPプロシージャを使用してマテリアライズド・ビュー・グループを削除します。このプロシージャを実行してターゲット・マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続すると、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにあるターゲット・マテリアライズド・ビュー・グループのメタデータが削除されます。接続できない場合は、「マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのクリーンアップ」を参照してください。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: マテリアライズド・ビュー管理者

実行場所: リモート・マテリアライズド・ビュー・サイト

レプリケーションの状態: 該当せず

次に示す手順に従って、マテリアライズド・ビュー・サイトにあるマテリアライズド・ビュー・グループを削除します。

手順1   マテリアライズド・ビュー管理者としてマテリアライズド・ビュー・サイトに接続します。

CONNECT mviewadmin@mv1.example.com
Enter password: password

手順2   マテリアライズド・ビュー・グループを削除します。

BEGIN

DBMS_REPCAT.DROP_MVIEW_REPGROUP (
gname => 'hr_repg',
drop_contents => TRUE);
END;
/

マテリアライズド・ビュー・グループの内容をマテリアライズド・ビュー・データベースから物理的に削除する場合は、drop_contentsパラメータにTRUEを指定します。

マテリアライズド・ビュー・サイトのオブジェクトの削除

個別のマテリアライズド・ビューをマテリアライズド・ビュー・サイトから削除することが必要になった場合は、DROP_MVIEW_REPOBJECTプロシージャAPIを使用してマテリアライズド・ビューを削除します。このプロシージャを実行してターゲット・マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続すると、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにあるターゲット・マテリアライズド・ビューのメタデータが削除されます。接続できない場合は、「マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのクリーンアップ」を参照してください。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: マテリアライズド・ビュー管理者

実行場所: リモート・マテリアライズド・ビュー・サイト

レプリケーションの状態: 該当せず

次に示す手順に従って、マテリアライズド・ビュー・サイトにある個別のマテリアライズド・ビューを削除します。

手順1   マテリアライズド・ビュー管理者としてマテリアライズド・ビュー・サイトに接続します。

CONNECT mviewadmin@mv1.example.com
Enter password: password

手順2   マテリアライズド・ビューを削除します。

BEGIN

DBMS_REPCAT.DROP_MVIEW_REPOBJECT (
sname => 'hr',
oname => 'employees_mv1',
type => 'SNAPSHOT',
drop_objects => TRUE);
END;
/

マテリアライズド・ビューの内容をマテリアライズド・ビュー・データベースから物理的に削除する場合は、drop_contentsパラメータにTRUEを指定します。

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのクリーンアップ

ターゲット・マスター・サイトまたはターゲット・マテリアライズド・ビュー・サイトに接続中に、マテリアライズド・ビュー・グループまたはマテリアライズド・ビュー・オブジェクトを削除できない場合は、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにある関連メタデータを手動で削除する必要があります。メタデータをクリーンアップすると、マスター表またはマスター・マテリアライズド・ビューに加えられた変更をマテリアライズド・ビュー・ログに保持する必要がなくなります。次の項では、マテリアライズド・ビュー・グループまたはオブジェクトを削除した後、マスター・サイトまたはマテリアライズド・ビュー・サイトをクリーンアップする方法を説明します。

マテリアライズド・ビュー・グループの削除後のクリーンアップ

「手動で作成されたマテリアライズド・ビュー・グループの削除」に示す手順を実行してもマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続されない場合は、次に示す手順を実行して、ターゲット・マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトをクリーンアップすることをお薦めします。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者

実行場所: ターゲット・マテリアライズド・ビュー・サイト用のマスター・サイトまたはマスター・マテリアライズド・ビュー・サイト

レプリケーションの状態: 通常

マテリアライズド・ビュー・グループを削除した後、次に示す手順を実行して、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトをクリーンアップします。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者としてマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続します。

*/

SET ECHO ON

SPOOL cleanup_master1.out

CONNECT repadmin@orc1.example.com

/*

手順2   マテリアライズド・ビュー・グループを登録解除します。

*/

BEGIN
DBMS_REPCAT.UNREGISTER_MVIEW_REPGROUP (
gname => 'hr_repg',
mviewsite => 'mv1.example.com');
END;
/

/*

手順3   ターゲット・マテリアライズド・ビューとしてマークされていたエントリのマテリアライズド・ビュー・ログをパージします。

手順2で登録解除したマテリアライズド・ビュー・グループにあった各マテリアライズド・ビューに対し、PURGE_MVIEW_FROM_LOGプロシージャを実行します。

注意:
なんらかの理由でマテリアライズド・ビュー・グループの登録解除が失敗した場合も、この手順は実行する必要があります。

関連項目:
DBMS_MVIEWパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

*/

BEGIN
DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner => 'hr',
mviewname => 'countries_mv1',
mviewsite => 'mv1.example.com');
END;
/

BEGIN
DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner => 'hr',
mviewname => 'departments_mv1',
mviewsite => 'mv1.example.com');
END;
/

BEGIN
DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner => 'hr',
mviewname => 'employees_mv1',
mviewsite => 'mv1.example.com');
END;
/

BEGIN
DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner => 'hr',
mviewname => 'jobs_mv1',
mviewsite => 'mv1.example.com');
END;
/

BEGIN
DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner => 'hr',
mviewname => 'job_history_mv1',
mviewsite => 'mv1.example.com');
END;
/

BEGIN
DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner => 'hr',
mviewname => 'locations_mv1',
mviewsite => 'mv1.example.com');
END;
/

BEGIN
DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner => 'hr',
mviewname => 'regions_mv1',
mviewsite => 'mv1.example.com');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

個別のマテリアライズド・ビュー・サポートのクリーンアップ

「マテリアライズド・ビュー・サイトのオブジェクトの削除」に示す手順を実行してもマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続されない場合は、次に示す手順を実行して、ターゲット・マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトをクリーンアップすることをお薦めします。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者

実行場所: ターゲット・マテリアライズド・ビュー・サイト用のマスター・サイトまたはマスター・マテリアライズド・ビュー・サイト

レプリケーションの状態: 通常

個別のマテリアライズド・ビューを削除した後、次に示す手順を実行して、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトをクリーンアップします。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   レプリケーション管理者としてマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続します。

*/

SET ECHO ON

SPOOL cleanup_master2.out

CONNECT repadmin@orc1.example.com

/*

手順2   マテリアライズド・ビューを登録解除します。

*/

BEGIN
DBMS_MVIEW.UNREGISTER_MVIEW (
mviewowner => 'hr',
mviewname => 'employees_mv1',
mviewsite => 'mv1.example.com');
END;
/

/*

関連項目:
DBMS_MVIEWパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

手順3   ターゲット・マテリアライズド・ビューとしてマークされていたエントリの、関連するマテリアライズド・ビュー・ログをパージします。

注意:
なんらかの理由でマテリアライズド・ビューの登録解除が失敗した場合も、この手順は実行する必要があります。

関連項目:
DBMS_MVIEWパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

*/

BEGIN
DBMS_MVIEW.PURGE_MVIEW_FROM_LOG (
mviewowner => 'hr',
mviewname => 'employees_mv1',
mviewsite => 'mv1.example.com');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

マテリアライズド・ビュー・ログの管理

次の項では、マテリアライズド・ビュー・ログの管理方法を説明します。

- マテリアライズド・ビュー・ログの変更

- マテリアライズド・ビュー・ログ領域の管理

- マテリアライズド・ビュー・ログが含まれるマスター表の再編成

- マテリアライズド・ビュー・ログの削除

マテリアライズド・ビュー・ログの変更

マテリアライズド・ビュー・ログを作成すると、記憶領域パラメータおよび対応するマテリアライズド・ビューに対するサポートを変更できます。次の項では、マテリアライズド・ビュー・ログの変更方法を説明します。次のユーザーのみが、マテリアライズド・ビュー・ログを変更できます。

- マスター表またはマスター・マテリアライズド・ビューの所有者。

- マスター表またはマスター・マテリアライズド・ビューのSELECT権限、およびMLOG$_master_nameのALTER権限を持つユーザー。master_nameとは、マテリアライズド・ビュー・ログ用マスターの名前です。たとえば、マスター表がemployeesの場合、マテリアライズド・ビュー・ログ表の名前はMLOG$_employeesとなります。

マテリアライズド・ビュー・ログ記憶域パラメータの変更

マテリアライズド・ビュー・ログの記憶域パラメータを変更するには、ALTER MATERIALIZED VIEW LOG文を使用します。たとえば、次の文では、hrスキーマ内のemployees表のマテリアライズド・ビュー・ログが変更されます。

ALTER MATERIALIZED VIEW LOG ON hr.employees
PCTFREE 25
PCTUSED 40;

列の追加のためのマテリアライズド・ビュー・ログの変更

マテリアライズド・ビュー・ログに新しい列を追加するには、SQL文ALTER MATERIALIZED VIEW LOGを使用します。たとえば、次の文では、salesスキーマ内のcustomers表のマテリアライズド・ビュー・ログが変更されます。

ALTER MATERIALIZED VIEW LOG ON hr.employees
ADD (department_id);

関連項目:
マテリアライズド・ビュー・ログへの列の追加の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

マテリアライズド・ビュー・ログ領域の管理

マテリアライズド・ビューのリフレッシュ時にマテリアライズド・ビュー・ログ内のどの行が使用されたかが自動的に追跡され、ログが際限なく増大しないよう、不要な行がログからパージされます。複数の単純マテリアライズド・ビューでは同じマテリアライズド・ビュー・ログを使用できるため、あるマテリアライズド・ビューのリフレッシュにすでに使用された行が、まだ別のマテリアライズド・ビューのリフレッシュに必要な場合があります。このため、すべてのマテリアライズド・ビューで使用されるまで行はログから削除されません。

たとえば、マスター・サイトのcustomers表に対して2つのマテリアライズド・ビューが作成されたとします。customersマテリアライズド・ビューは、spdb1データベースでリフレッシュされます。この場合、マスター表および関連するマテリアライズド・ビュー・ログを管理するサーバーでは、このマテリアライズド・ビューのリフレッシュ時に使用されたマテリアライズド・ビュー・ログの行は、spdb2データベースのcustomersマテリアライズド・ビューがこの行を使用してリフレッシュされるまで、パージされません。

マテリアライズド・ビュー・ログから行をパージする前に、すべての依存マテリアライズド・ビューがリフレッシュされるのを待つ必要があるため、複数のマテリアライズド・ビューが同じマスター表またはマスター・マテリアライズド・ビューをベースにしている場合、マテリアライズド・ビュー・ログが際限なく増大する可能性があります。

このような状況は、たとえば1つのマスター表またはマスター・マテリアライズド・ビューが複数のマテリアライズド・ビューのベースとなっており、かつ次の条件のいずれかに該当する場合に発生することがあります。

- あるマテリアライズド・ビューが自動リフレッシュ用に構成されておらず、手動でのリフレッシュが長期間実行されていない場合

- あるマテリアライズド・ビューのリフレッシュ間隔が非常に長い場合(たとえば1年ごと)

- ネットワーク障害によって、マスター表またはマスター・マテリアライズド・ビューをベースとする1つ以上のマテリアライズド・ビューの自動リフレッシュが実行できない場合

- ネットワークまたはサイト障害によって、マテリアライズド・ビューが削除されたことをマスター表またはマスター・マテリアライズド・ビューが認識できない場合

注意:
マテリアライズド・ビューで削除された変更がリフレッシュされる前にマテリアライズド・ビュー・ログのパージまたはTRUNCATEを行った場合は、マテリアライズド・ビューの完全リフレッシュを実行する必要があります。

マテリアライズド・ビュー・ログからの行のパージ

マテリアライズド・ビュー・ログが使用するデータベース領域を最小にするため、マテリアライズド・ビュー・ログは常にできるかぎり小さくなるようにしてください。マテリアライズド・ビュー・ログから行を削除して、新しいログ・レコード用に領域を解放するには、次のアクションのいずれかを実行します。

- ログに対応付けられたマテリアライズド・ビューをリフレッシュします。これによって、マテリアライズド・ビュー・ログから行がパージされます。

- 最も古いn回目のリフレッシュが行われたマテリアライズド・ビューのみに必要な行を削除することにより、ログのレコードを手動でパージします。

マテリアライズド・ビュー・ログから行を手動でパージするには、そのログを含むデータベースで、DBMS_MVIEWパッケージのPURGE_LOGプロシージャを実行します。たとえば、最も前にリフレッシュされたマテリアライズド・ビューのみに必要なエントリをcustomers表のマテリアライズド・ビュー・ログからパージするには、次のプロシージャを実行します。

BEGIN
DBMS_MVIEW.PURGE_LOG (
master => 'hr.employees',
num    => 1,
flag   => 'DELETE');
END;
/

マテリアライズド・ビュー・ログの所有者またはDBMS_MVIEWパッケージのEXECUTE権限を持つユーザーのみが、PURGE_LOGプロシージャを実行してマテリアライズド・ビュー・ログから行をパージできます。

関連項目:
DBMS_MVIEWパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

マテリアライズド・ビュー・ログの切捨て

マテリアライズド・ビュー・ログが増大し、多数のエクステントが割り当てられた場合、その行のログをパージしても、ログに割り当てられた領域の量は減少しません。このような場合は、マテリアライズド・ビュー・ログを切り捨てる必要があります。マテリアライズド・ビュー・ログの所有者またはDELETE ANY TABLEシステム権限を持つユーザーのみが、マテリアライズド・ビュー・ログを切り捨てることができます。

マテリアライズド・ビュー・ログを切り捨てることによりマテリアライズド・ビュー・ログに割り当てられた領域を減少させるには、次に示す手順を実行します。

手順1   マスター表またはマスター・マテリアライズド・ビューに対する排他ロックを取得して、後続のプロセス中に更新が発生しないようにします。

たとえば、次のような文を実行します。

LOCK TABLE hr.employees IN EXCLUSIVE MODE;

手順2   2番目のデータベース・セッションで、マテリアライズド・ビュー・ログ(MLOG$実表)の行を一時表にコピーします。

たとえば、次のような文を実行します。

CREATE TABLE hr.templog AS SELECT * FROM hr.MLOG$_employees;

手順3    2番目のセッションで、SQL文TRUNCATE TABLEを使用してログを切り捨てます。

たとえば、次のような文を実行します。

TRUNCATE TABLE hr.MLOG$_employees;

手順4   2番目のセッションで、元の行を再挿入します。

この手順を実行すると、依存マテリアライズド・ビューの完全リフレッシュを実行する必要がなくなります。

たとえば、次のような文を実行します。

INSERT INTO hr.MLOG$_employees SELECT * FROM hr.templog;

DROP TABLE hr.templog;

手順5   最初のセッションで、マスター表またはマスター・マテリアライズド・ビューの排他ロックを解除します。

この手順は、ロールバックを実行して行うことができます。

ROLLBACK;

注意:
新しい位置に行をコピーしてからログを切り捨てるまでの間に、マスター表またはマスター・マテリアライズド・ビューに対して行われた変更は、完全リフレッシュを実行するまで表示されません。

マテリアライズド・ビュー・ログが含まれるマスター表の再編成

パフォーマンスを改善し、ディスクの使用率を最適化するために、マスター表を定期的に再編成できます。この項では、マスターの再編成方法および関連するマテリアライズド・ビューの高速リフレッシュ機能の維持方法を説明します。

注意:
これらの項では表のオンライン再定義は説明しません。マテリアライズド・ビュー・ログ、マスター・マテリアライズド・ビューまたはマテリアライズド・ビューが含まれるマスター表のオンライン再定義はできません。オンライン再定義は、マテリアライズド・ビュー・ログを含まないマスター表でのみ可能です。表のオンライン再定義の詳細は、『Oracle Database管理者ガイド』を参照してください。

再編成通知

表を再編成するときに、マテリアライズド・ビュー・ログのROWID情報を無効にする必要があります。表の再編成は、再編成によって表が切り捨てられた場合のみ自動的に検出されます。

表が切り捨てられない場合は、表の再編成を通知する必要があります。表の再編成をサポートするために、DBMS_MVIEWパッケージのBEGIN_TABLE_REORGANIZATIONプロシージャとEND_TABLE_REORGANIZATIONプロシージャによって、表の再編成が通知されます。これらのプロシージャは、クリーンアップ操作を実行し、高速リフレッシュ・メカニズムが必要とするログの整合性とトリガーを検証し、表のマテリアライズド・ビュー・ログ内のROWID情報を無効にします。入力は、再編成されるマスターの名前と所有者です。出力はありません。

関連項目:
「表employeesの再編成の方法2」

マスターの切捨て

表が切り捨てられると、そのマテリアライズド・ビュー・ログも切り捨てられます。ただし、主キー・マテリアライズド・ビューの場合、マテリアライズド・ビュー・ログを切り捨てずに、高速リフレッシュを継続できます。マテリアライズド・ビュー・ログに格納されている情報は保持されますが、マスターが切り捨てられるとマテリアライズド・ビュー・ログはROWIDに関して無効になります。マテリアライズド・ビュー・ログのROWID情報は新しく作成されたことになり、ROWIDマテリアライズド・ビューで高速リフレッシュ用に使用できません。

PRESERVE MATERIALIZED VIEW LOGオプションはデフォルトです。したがって、PRESERVE MATERIALIZED VIEW LOGオプションを指定するか、オプションを指定しない場合、マスターのマテリアライズド・ビュー・ログの情報は保持されますが、現在のROWIDマテリアライズド・ビューはリフレッシュを高速にするために、完全なリフレッシュが行われた後にのみログを使用できます。

注意:
以前に高速リフレッシュが可能だったマテリアライズド・ビューのリフレッシュを有効にするには、「データベース表の再編成方法」のガイドラインに従ってください。

PURGE MATERIALIZED VIEW LOGオプションが指定された場合は、マテリアライズド・ビュー・ログがマスターとともにパージされます。

例

次の2つの文のいずれも、employeesという名前のマスター表が切り捨てられた場合にマテリアライズド・ビュー・ログ情報を保持します。

TRUNCATE TABLE hr.employees PRESERVE MATERIALIZED VIEW LOG;
TRUNCATE TABLE hr.employees;

次の文は、マスター表とともにマテリアライズド・ビュー・ログを切り捨てます。

TRUNCATE TABLE hr.employees PURGE MATERIALIZED VIEW LOG;

データベース表の再編成方法

高速リフレッシュ機能を保持したまま表を再編成する方法が4つ提供されています。これらの方法については、次の項で説明します。他の再編成方法では、後続の高速リフレッシュを使用可能にするために、最初に完全リフレッシュを実行する必要があります。

注意:
マスターの再編成中はダイレクト・ローダーを使用しないでください。ダイレクト・ローダーは列の再順序付けの原因となり、副問合せおよびLOBマテリアライズド・ビューで使用されるログ情報を無効にすることがあります。

表employeesの再編成の方法1

次の手順に従います。

1. 表employeesに対してDBMS_MVIEW.BEGIN_TABLE_REORGANIZATIONをコールします。

2. 表名employeesをemployees_oldに変更します。

3. 表employeesをSELECT * FROM employees_oldとして作成します。

4. 新しい表employeesに対してDBMS_MVIEW.END_TABLE_REORGANIZATIONをコールします。

注意:
表名を変更すると、対応付けられたPL/SQLのトリガーも表の新しい名前に変更されます。

BEGIN_TABLE_REORGANIZATIONのコールとEND_TABLE_REORGANIZATIONのコールの間に、再編成された表に対してトランザクションが発行されないようにしてください。

表employeesの再編成の方法2

次の手順に従います。

1. 表employeesに対してDBMS_MVIEW.BEGIN_TABLE_REORGANIZATIONをコールします。

2. 表employeesをエクスポートします。

3. 表employeesをPRESERVE MATERIALIZED VIEW LOGオプションで切り捨てます。

4. 従来型パスを使用して表employeesをインポートします。

5. 新しい表employeesに対してDBMS_MVIEW.END_TABLE_REORGANIZATIONをコールします。

注意:
再編成中にマスターを切り捨てるときは、切り捨てる表のDDLのPRESERVE MATERIALIZED VIEW LOG句を使用する必要があります。

BEGIN_TABLE_REORGANIZATIONのコールとEND_TABLE_REORGANIZATIONのコールの間に、再編成された表に対してトランザクションが発行されないようにしてください。

表employeesの再編成の方法3

次の手順に従います。

1. 表employeesに対してDBMS_MVIEW.BEGIN_TABLE_REORGANIZATIONをコールします。

2. 表employeesをエクスポートします。

3. 表名employeesをemployees_oldに変更します。

4. 従来型パスを使用して表employeesをインポートします。

5. 新しい表employeesに対してDBMS_MVIEW.END_TABLE_REORGANIZATIONをコールします。

注意:
表名を変更すると、対応付けられたPL/SQLのトリガーも表の新しい名前に変更されます。

BEGIN_TABLE_REORGANIZATIONのコールとEND_TABLE_REORGANIZATIONのコールの間に、再編成された表に対してトランザクションが発行されないようにしてください。

表employeesの再編成の方法4

次の手順に従います。

1. 表employeesに対してDBMS_MVIEW.BEGIN_TABLE_REORGANIZATIONをコールします。

2. 表employeesの内容を選択してフラット・ファイルに格納します。

3. 表名employeesをemployees_oldに変更します。

4. 表employees_oldと同じ形式で表employeesを作成します。

5. 従来型パスを使用してSQL*Loaderを実行します。

6. 新しい表employeesに対してDBMS_MVIEW.END_TABLE_REORGANIZATIONをコールします。

注意:
表名を変更すると、対応付けられたPL/SQLのトリガーも表の新しい名前に変更されます。

BEGIN_TABLE_REORGANIZATIONのコールとEND_TABLE_REORGANIZATIONのコールの間に、再編成された表に対してトランザクションが発行されないようにしてください。

関連項目:
DBMS_MVIEWパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

マテリアライズド・ビュー・ログの削除

マテリアライズド・ビュー・ログは、マスターや既存のマテリアライズド・ビューに関係なく削除できます。たとえば、次の条件のいずれかに該当する場合は、マテリアライズド・ビュー・ログを削除できます。

- マスターのすべてのマテリアライズド・ビューが削除された場合

- マスターのすべてのマテリアライズド・ビューで、高速リフレッシュではなく、完全リフレッシュを使用する場合

- マスターが、高速リフレッシュを必要とするマテリアライズド・ビューをサポートしない場合

ここでマスターとは、マスター表またはマスター・マテリアライズド・ビューです。マテリアライズド・ビュー・ログを削除するには、SQL*PlusでDROP MATERIALIZED VIEW LOG文を実行します。たとえば、次の文では、salesスキーマ内のcustomersという名前の表のマテリアライズド・ビュー・ログが削除されます。

DROP MATERIALIZED VIEW LOG ON hr.employees;

マスターの所有者またはDROP ANY TABLEシステム権限を持つユーザーのみが、マテリアライズド・ビュー・ログを削除できます。

エクスポート/インポートによるマテリアライズド・ビュー・サイトのオフライン・インスタンシエーション

レプリケーション環境に新しいマテリアライズド・ビュー・サイトを追加すると、ネットワークの通信量が増大する場合があります。ネットワークの通信量は、ネットワークを通じて、表またはマテリアライズド・ビューの内容全体を新しいマテリアライズド・ビュー・サイトに伝播すると増大します。

このようなネットワークの通信量を最少にするために、オフライン・インスタンシエーション・プロシージャを使用して新しいマテリアライズド・ビュー・サイトを追加できます。オフライン・インスタンシエーションを使用すると、マテリアライズド・ビュー・サイトに新しいマテリアライズド・ビュー・グループを作成できます。オフライン・インスタンシエーションでは、Oracleのエクスポート・ユーティリティおよびインポート・ユーティリティを利用でき、これによって、エクスポート・ファイルを作成し、CD-ROMやテープなどのストレージ・メディアを使用して新しいサイトにデータを転送できます。オフライン・インスタンシエ-ションは、ターゲット・コンピュータがモデム接続を使用するラップトップの可能性があるため、特にマテリアライズド・ビューで役立ちます。

次のスクリプトでは、新しいマテリアライズド・ビュー・サイトで新しいマテリアライズド・ビュー・グループに対するオフライン・インスタンシエーションが実行されます。このマテリアライズド・ビュー・グループは、マスター・サイトの既存のマスター・グループに基づいています。これらのアクションを実行するには、次の要件を満たす必要があります。

実行者:

- マスター・サイトのレプリケーション管理者

- 新しいマテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者

実行場所:

- ターゲット・マテリアライズド・ビュー・サイト用マスター・サイト

- 新しいマテリアライズド・ビュー・サイト

レプリケーションの状態: 通常

マテリアライズド・ビュー・サイト:

- マテリアライズド・ビュー・サイトを設定します。この例では、mview.example.comがマテリアライズド・ビュー・サイトで、orc1.example.comがマスター・サイトです。

- マテリアライズド・ビュー・サイトのオフライン・インスタンシエーションを実行する前に、適切なスキーマが作成されていることを確認します。

- マスター・サイトにプロキシ・ユーザーが存在しない場合は作成します。

関連項目:

- マスター・サイトの設定方法、およびマスター・サイトでのプロキシ・ユーザーの作成方法の詳細は、「マスター・サイトの設定」を参照してください。

- マテリアライズド・ビュー・サイトの設定方法の詳細は、「マテリアライズド・ビュー・サイトの設定」を参照してください。

次に示す手順に従って、mview.example.comというマテリアライズド・ビュー・サイトを設定します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************ BEGINNING OF SCRIPT *********************************

手順1   レプリケーション管理者としてマスター・サイトに接続します。

*/

SET ECHO ON

SPOOL offline.out

CONNECT repadmin@orc1.example.com

/*

手順2   必要なマテリアライズド・ビュー・ログが存在しない場合は作成します。

関連マスター表に対するマテリアライズド・ビュー・ログが存在していない場合は、マスター・サイトで作成します。

*/

CREATE MATERIALIZED VIEW LOG ON hr.countries;
CREATE MATERIALIZED VIEW LOG ON hr.departments;
CREATE MATERIALIZED VIEW LOG ON hr.employees;
CREATE MATERIALIZED VIEW LOG ON hr.jobs;
CREATE MATERIALIZED VIEW LOG ON hr.job_history;
CREATE MATERIALIZED VIEW LOG ON hr.locations;
CREATE MATERIALIZED VIEW LOG ON hr.regions;

/*

手順3   マスター・サイトでマテリアライズド・ビュー用の一時スキーマを作成します。

エクスポート用のマテリアライズド・ビューを準備するには、レプリケート・オブジェクトを含むスキーマを作成する必要があります。

次の例では、一時スキーマtemp_schemaを作成します。

*/

CONNECT system@orc1.example.com

CREATE TABLESPACE offline_mview
DATAFILE 'offline_mview.dbf' SIZE 10M AUTOEXTEND ON
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE offline_temp_mview
TEMPFILE 'offline_temp_mview.dbf' SIZE 5M AUTOEXTEND ON;

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER temp_schema IDENTIFIED BY &password;

ALTER USER temp_schema DEFAULT TABLESPACE offline_mview
QUOTA UNLIMITED ON offline_mview;

ALTER USER temp_schema TEMPORARY TABLESPACE offline_temp_mview;

GRANT ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE,
CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW, CREATE INDEXTYPE,
CREATE OPERATOR, CREATE PROCEDURE, CREATE TRIGGER, CREATE TYPE,
CREATE MATERIALIZED VIEW, SELECT ANY TABLE
TO temp_schema;

CONNECT temp_schema@orc1.example.com;

/*

手順4   手順3で作成した個別のスキーマのマスター・サイトにある一時マテリアライズド・ビューを削除します。

このマテリアライズド・ビューには、エクスポート・ユーティリティを使用して新しいマテリアライズド・ビュー・サイトに転送するデータが含まれています。

注意:
SELECT文にデータベース・リンクが含まれていることを確認してください。この例では、データベース・リンクはorc1.example.comです。

*/

CREATE MATERIALIZED VIEW temp_schema.countries
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
FROM hr.countries@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.departments
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
FROM hr.departments@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.employees
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
FROM hr.employees@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.jobs
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
FROM hr.jobs@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.job_history
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
FROM hr.job_history@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.locations
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
FROM hr.locations@orc1.example.com;

CREATE MATERIALIZED VIEW temp_schema.regions
REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT *
FROM hr.regions@orc1.example.com;

/*

手順5   各データベースにディレクトリ・オブジェクトを作成します。

この操作に含まれる各データベースは、データ・ポンプのダンプ・ファイルを保持するためのディレクトリ・オブジェクトを保有している必要があり、エクスポートまたはインポートを実行するユーザーはこのディレクトリ・オブジェクトに対するREADおよびWRITE権限を持っている必要があります。この例では、データ・ポンプ・エクスポートはマスター・サイトで行われ、データ・ポンプ・インポートはマテリアライズド・ビュー・サイトで行われます。

SQL文CREATE DIRECTORYを使用してディレクトリ・オブジェクトを作成できる管理ユーザーとしてSQL*Plusでデータベースに接続し、データ・ポンプのダンプ・ファイルおよびログ・ファイルを保存するためのディレクトリ・オブジェクトを作成します。次に例を示します。

*/

CONNECT system@orc1.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

CONNECT system@mview.example.com

CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';

/*

操作に使用した両方のデータベースでこれらのアクションが完了していることを確認します。この例では、SYSTEMユーザーがディレクトリ・オブジェクトの作成およびすべてのエクスポートとインポートを実行します。ディレクトリ・オブジェクトを所有していないユーザーがエクスポートまたはインポートを実行する場合は、このユーザーにそのディレクトリ・オブジェクトに対するREADおよびWRITE権限を付与します。

手順6   マテリアライズド・ビューを含むスキーマのスキーマレベル・エクスポートを実行します。

コマンドラインで、マテリアライズド・ビュー用のすべてのデータおよびメタデータを含むエクスポートを実行します。この例では、SYSTEMユーザーとして接続します。データ・ポンプ・エクスポート・コマンドの例を次に示します。

expdp system SCHEMAS=temp_schema DIRECTORY=DPUMP_DIR
DUMPFILE=temp_schema.dmp

関連項目:
データ・ポンプ・エクスポートの実行方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

*/

PAUSE Press <RETURN> to continue when the export is complete.

/*

手順7   SYSTEMユーザーとして新しいマテリアライズド・ビュー・サイトに接続します。

*/

CONNECT system@mview.example.com

/*

手順8   hrユーザーを削除します。

この例では、マテリアライズド・ビュー・サイトでhrスキーマにマテリアライズド・ビューを作成します。このスキーマは、Oracleのインストール時に作成されます。このスキーマは、この手順を実行すると削除されますが、この例の後半で再作成され、マテリアライズド・ビューが移入されます。

*/

DROP USER hr CASCADE;

/*

手順9   マテリアライズド・ビュー・サイトに必要なスキーマおよびデータベース・リンクが存在しない場合は作成します。

マテリアライズド・ビューのオフライン・インスタンシエーションを実行する前に、新しいマテリアライズド・ビュー・サイトのマテリアライズド・ビューを含むスキーマと、マテリアライズド・ビュー・サイトからマスター・サイトへのデータベース・リンクを作成します。マテリアライズド・ビューは、マスター・サイトのマスター・オブジェクトを含むスキーマと同じスキーマに存在する必要があります。スキーマが存在する場合は、必要な権限を付与してデータベース・リンクを作成します。

*/

CREATE TABLESPACE demo_mview
DATAFILE 'demo_mview.dbf' SIZE 10M AUTOEXTEND ON
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mview
TEMPFILE 'temp_mview.dbf' SIZE 5M AUTOEXTEND ON;

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mview
QUOTA UNLIMITED ON demo_mview;

ALTER USER hr TEMPORARY TABLESPACE temp_mview;

GRANT
CREATE SESSION,
CREATE TABLE,
CREATE PROCEDURE,
CREATE SEQUENCE,
CREATE TRIGGER,
CREATE VIEW,
CREATE SYNONYM,
ALTER SESSION,
CREATE MATERIALIZED VIEW,
ALTER ANY MATERIALIZED VIEW,
CREATE DATABASE LINK
TO hr;

CONNECT hr@mview.example.com

CREATE DATABASE LINK orc1.example.com CONNECT TO hr IDENTIFIED by &password;

/*

手順10   マテリアライズド・ビュー管理者として新しいマテリアライズド・ビュー・サイトに接続します。

*/

CONNECT mviewadmin@mview.example.com

/*

手順11   空のマテリアライズド・ビュー・グループを作成します。

新しいマテリアライズド・ビュー・サイトでDBMS_REPCAT.CREATE_MVIEW_REPGROUPプロシージャを実行し、マテリアライズド・ビューを追加するための空のマテリアライズド・ビュー・グループを作成します。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname            => 'hr_repg',
master           => 'orc1.example.com',
propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

手順12   空のリフレッシュ・グループを作成します。

特定のリフレッシュ・グループに追加されたすべてのマテリアライズド・ビューは、同時にリフレッシュされます。このため、リフレッシュ・グループ内の関連するマテリアライズド・ビュー間では、トランザクション一貫性が保たれます。

*/

BEGIN
DBMS_REFRESH.MAKE (
name => 'mviewadmin.hr_refg',
list => '',
next_date => SYSDATE,
interval => 'SYSDATE + 1/24',
implicit_destroy => FALSE,
rollback_seg => '',
push_deferred_rpc => TRUE,
refresh_after_errors => FALSE);
END;
/

/*

手順13   個別の端末ウィンドウで、新しいマテリアライズド・ビュー・サイトにエクスポート・ダンプ・ファイルを転送します。

新しいマテリアライズド・ビュー・サイトへは、DBMS_FILE_TRANSFERパッケージ、FTPなどの方法により、エクスポート・ダンプ・ファイルが転送されます。

*/

PAUSE Press <RETURN> to continue after transferring the dump file.

/*

手順14   個別の端末ウィンドウで、新しいマテリアライズド・ビュー・サイトの所有者にマテリアライズド・ビューをインポートします。

コマンドラインで、手順5でエクスポートしたファイルのインポートを実行します。この例では、SYSTEMユーザーとして接続します。

データ・ポンプによってデータをインポートする場合は、REMAP_SCHEMAパラメータを使用して、マスター・サイトに作成した一時ユーザーからマテリアライズド・ビュー・サイトのマテリアライズド・ビューの所有者にデータをインポートします。この例では、temp_schemaがマスター・サイトの一時ユーザーで、hrがマテリアライズド・ビュー・サイトのマテリアライズド・ビューの所有者です。

また、データ・ポンプを使用する場合は、マスター・サイトとマテリアライズド・ビュー・サイトで表領域が異なるときにREMAP_TABLESPACEパラメータを使用できます。この例では、手順3で作成したoffline_mviewがマスター・サイトの表領域で、手順9で作成したdemo_mviewがマテリアライズド・ビュー・サイトの表領域です。

インポート・コマンドの例を次に示します。

impdp system DIRECTORY=DPUMP_DIR DUMPFILE=temp_schema.dmp
REMAP_SCHEMA=temp_schema:hr REMAP_TABLESPACE=offline_mview:demo_mview

DBAロールまたはIMP_FULL_DATABASEロールを所有するユーザーのみがREMAP_SCHEMAパラメータを使用してインポートできます。

関連項目:
データ・ポンプ・インポートの実行方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。

*/

PAUSE Press <RETURN> to continue when the import is complete.

/*

手順15   マテリアライズド・ビューをマテリアライズド・ビュー・グループに追加します。

DBMS_REPCAT.CREATE_MVIEW_REPOBJECTプロシージャを実行して、手順9で作成したマテリアライズド・ビュー・グループにマテリアライズド・ビューを追加します。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname             => 'hr_repg',
sname             => 'hr',
oname             => 'countries',
type              => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname             => 'hr_repg',
sname             => 'hr',
oname             => 'departments',
type              => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname             => 'hr_repg',
sname             => 'hr',
oname             => 'employees',
type              => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname             => 'hr_repg',
sname             => 'hr',
oname             => 'jobs',
type              => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname             => 'hr_repg',
sname             => 'hr',
oname             => 'job_history',
type              => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname             => 'hr_repg',
sname             => 'hr',
oname             => 'locations',
type              => 'SNAPSHOT',
min_communication => TRUE);
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname             => 'hr_repg',
sname             => 'hr',
oname             => 'regions',
type              => 'SNAPSHOT',
min_communication => TRUE);
END;
/

/*

手順16   マテリアライズド・ビューをリフレッシュ・グループに追加します。

リフレッシュ・グループに追加するすべてのマテリアライズド・ビュー・グループ・オブジェクトは同時にリフレッシュされるので、関連するマテリアライズド・ビュー間での参照整合性が保たれます。DBMS_REFRESH.ADDプロシージャを実行して、手順12で作成したリフレッシュ・グループにマテリアライズド・ビューを追加します。

*/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.countries',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.departments',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.employees',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.jobs',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.job_history',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.locations',
lax => TRUE);
END;
/

BEGIN
DBMS_REFRESH.ADD (
name => 'mviewadmin.hr_refg',
list => 'hr.regions',
lax => TRUE);
END;
/

/*

手順17   マテリアライズド・ビューをリフレッシュして、マスター・サイトで登録します。

新しいマテリアライズド・ビュー・サイトにあるマテリアライズド・ビューをリフレッシュすると、マスター表からの最新の変更が取得される以外に、ターゲット・マスター・サイトにあるオフライン・インスタンシエーションを行ったマテリアライズド・ビューが登録されます。

*/

EXECUTE DBMS_REFRESH.REFRESH ('hr_refg');

/*

手順18   SYSTEMユーザーとしてマスター・サイトに接続します。

*/

CONNECT system@orc1.example.com

/*

手順19   一時スキーマを削除して、マスター・サイトにある、手順4で作成した一時マテリアライズド・ビューを削除します。

*/

DROP USER temp_schema CASCADE;

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

マテリアライズド・ビュー・グループに対するグループ所有者の使用

新しいマテリアライズド・ビューのグループおよびその関連オブジェクトを定義する際にグループ所有者を指定すると、単一のマテリアライズド・ビュー・サイトにある同じレプリケーション・グループに基づいて複数のマテリアライズド・ビュー・グループを作成できます。また、グループ所有者を指定すると、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトの同じレプリケーション・グループに基づいた複数のマテリアライズド・ビュー・グループを作成できます。これは、マテリアライズド・ビュー・サイトで、様々なスキーマにマテリアライズド・ビュー・グループを作成することによって行います。この例では、スキーマbobおよびjaneをグループ所有者として使用し、これらのスキーマがマテリアライズド・ビュー・サイトにあることを前提としています。

実行者:

- 新しいマテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者

実行場所:

- マテリアライズド・ビュー・サイト

レプリケーションの状態: 通常

マテリアライズド・ビュー・サイト:

- マテリアライズド・ビュー・サイトを設定します。この例では、mv1.example.comがマテリアライズド・ビュー・サイトで、orc1.example.comがマスター・サイトです。

- マスター・サイトにプロキシ・ユーザーが存在しない場合は作成します。

- マスター・サイトのhrスキーマに表のマテリアライズド・ビュー・ログが存在しない場合は作成します。

次に示す手順に従って、グループ所有者を使用します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

関連項目:

- グループ所有者の使用方法、および複数のデータ・セットを使用するメリットの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- マスター・サイトの設定方法、およびマスター・サイトでのプロキシ・ユーザーの作成方法の詳細は、「マスター・サイトの設定」を参照してください。

- マテリアライズド・ビュー・サイトの設定方法の詳細は、「マテリアライズド・ビュー・サイトの設定」を参照してください。

/************************* BEGINNING OF SCRIPT ******************************

手順1   hrスキーマからマスター・サイトにデータベース・リンクを作成します。

マテリアライズド・ビュー・グループを構築する前に、リモート・マテリアライズド・ビュー・サイトにレプリケート・スキーマが存在して、必要なデータベース・リンクが作成されていることを確認します。

この例で、hrスキーマが存在しない場合は作成します。マテリアライズド・ビュー・サイトにhrスキーマが存在する場合は、必要な権限を付与します。

*/

CONNECT system@mv1.example.com

CREATE TABLESPACE demo_mv1
DATAFILE 'demo_mv1.dbf' SIZE 10M AUTOEXTEND ON
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

CREATE TEMPORARY TABLESPACE temp_mv1
TEMPFILE 'temp_mv1.dbf' SIZE 5M AUTOEXTEND ON;

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER hr IDENTIFIED BY &password;

ALTER USER hr DEFAULT TABLESPACE demo_mv1
QUOTA UNLIMITED ON demo_mv1;

ALTER USER hr TEMPORARY TABLESPACE temp_mv1;

GRANT
CREATE SESSION,
CREATE TABLE,
CREATE PROCEDURE,
CREATE SEQUENCE,
CREATE TRIGGER,
CREATE VIEW,
CREATE SYNONYM,
ALTER SESSION,
CREATE MATERIALIZED VIEW,
ALTER ANY MATERIALIZED VIEW,
CREATE DATABASE LINK
TO hr;

/*

レプリケート・スキーマへのデータベース・リンクが存在しない場合は作成します。

マテリアライズド・ビュー・グループを構築する前に、レプリケーション・スキーマへの必要なデータベース・リンクが存在することを確認します。マテリアライズド・ビューの所有者は、マスター・サイトの設定時に作成したproxy_refresherへのデータベース・リンクが必要です。

*/

SET ECHO ON

SPOOL mv_group_owner.out

CONNECT hr@mv1.example.com

CREATE DATABASE LINK orc1.example.com
CONNECT TO proxy_refresher IDENTIFIED BY &password;

/*

手順2   マテリアライズド・ビュー管理者としてマテリアライズド・ビュー・サイトに接続します。

*/

CONNECT mviewadmin@mv1.example.com

/*

手順3   CREATE_MVIEW_REPGROUPプロシージャを使用して、マテリアライズド・ビュー・グループをグループ所有者(gowner)bobで作成します。

gnameパラメータで指定したレプリケーション・グループは、ターゲット・マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでレプリケートするレプリケーション・グループの名前と一致する必要があります。gownerパラメータを使用すると、同じのマテリアライズド・ビュー・サイトにある同じレプリケーション・グループに基づいて複数のマテリアライズド・ビュー・グループを作成できる、追加の識別子を指定できます。

この例では、グループ所有者bobおよびjane用にマテリアライズド・ビュー・グループが作成され、どちらのマテリアライズド・ビュー・グループも同じレプリケーション・グループをベースとします。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname => 'hr_repg',
master => 'orc1.example.com',
propagation_mode => 'ASYNCHRONOUS',
gowner => 'bob');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname => 'hr_repg',
master => 'orc1.example.com',
propagation_mode => 'ASYNCHRONOUS',
gowner => 'jane');
END;
/

/*

手順4   bobが所有するマテリアライズド・ビューを作成します。

マテリアライズド・ビュー・オブジェクトを作成するときに使用されるgowner値は、前のプロシージャでマテリアライズド・ビュー・グループを作成したときに指定したgowner値と一致する必要があります。マテリアライズド・ビュー・グループを作成した後、bobとjaneが所有するhr_repgマテリアライズド・ビュー・グループの、同じマスターをベースとするマテリアライズド・ビューを作成できます。この例では、これらのユーザーが存在していることを前提としています。

注意:
各オブジェクトは一意の名前を持つ必要があります。あるgownerを使用して複数のマテリアライズド・ビュー・グループを使用するときは、重複するオブジェクト名は問題になる可能性があります。オブジェクトのネーミングの競合を回避するため、次のプロシージャに示すように、作成するオブジェクト名の末尾にgowner値を追加してもかまいません(CREATEMATERIALIZEDVIEWhr.countries_bobなど)。このようなネーミング・メソッドにより、競合する名前を持つオブジェクトの作成を回避できます。

マテリアライズド・ビューを作成するときは、必ず、マテリアライズド・ビューに対する問合せの中で表の所有者のスキーマ名を指定します。次の例では、各問合せにおける表の所有者としてhrが指定されています。

*/

CREATE MATERIALIZED VIEW hr.countries_bob
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.countries@orc1.example.com;

CREATE MATERIALIZED VIEW hr.departments_bob
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.departments@orc1.example.com;

CREATE MATERIALIZED VIEW hr.employees_bob
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.employees@orc1.example.com;

CREATE MATERIALIZED VIEW hr.jobs_bob
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.jobs@orc1.example.com;

CREATE MATERIALIZED VIEW hr.job_history_bob
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.job_history@orc1.example.com;

CREATE MATERIALIZED VIEW hr.locations_bob
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.locations@orc1.example.com;

CREATE MATERIALIZED VIEW hr.regions_bob
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.regions@orc1.example.com;

/*

手順5   janeが所有するマテリアライズド・ビューを作成します。

*/

CREATE MATERIALIZED VIEW hr.departments_jane
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.departments@orc1.example.com;

CREATE MATERIALIZED VIEW hr.employees_jane
REFRESH FAST WITH PRIMARY KEY FOR UPDATE
AS SELECT * FROM hr.employees@orc1.example.com;

/*

手順6   bobが所有するマテリアライズド・ビューをマテリアライズド・ビュー・グループに追加します。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'countries_bob',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'bob');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'departments_bob',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'bob');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'employees_bob',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'bob');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'jobs_bob',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'bob');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'job_history_bob',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'bob');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'locations_bob',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'bob');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'regions_bob',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'bob');
END;
/

/*

手順7   janeが所有するマテリアライズド・ビューをマテリアライズド・ビュー・グループに追加します。

*/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'departments_jane',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'jane');
END;
/

BEGIN
DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
gname => 'hr_repg',
sname => 'hr',
oname => 'employees_jane',
type => 'SNAPSHOT',
min_communication => TRUE,
gowner => 'jane');
END;
/

SET ECHO OFF

SPOOL OFF

/*

手順8   マテリアライズド・ビューをリフレッシュ・グループに追加します。

関連項目:
リフレッシュ・グループへのマテリアライズド・ビューの追加の詳細は、第5章「マテリアライズド・ビュー・グループの作成」(手順6)を参照してください。

/************************* END OF SCRIPT **********************************/

9 レプリケーション・オブジェクトおよびキューの管理

この章では、レプリケーション・マネージメントAPIを使用した、レプリケーション環境でのレプリケーション・オブジェクトおよびキューの管理方法を説明します。

この章には、次の項が含まれます。

- 静止中のマスター・グループにあるレプリケート・オブジェクトの変更

- 変更をレプリケートしない表の変更

- レプリケート表でのLONG列のLOB列への変換

- レプリケート表間の違いの判別

- 遅延トランザクション・キューの管理

- エラー・キューの管理

静止中のマスター・グループにあるレプリケート・オブジェクトの変更

データベースを変更する場合、レプリケート・オブジェクトの特性も変更する必要がある場合があります。DDLを直接実行して、レプリケート・オブジェクトを変更しないでください。直接実行すると、レプリケーション環境に障害が発生する原因となります。

DBMS_REPCATパッケージのALTER_MASTER_REPOBJECTプロシージャを使用して、静止中のマスター・グループにあるレプリケート・オブジェクトの特性を変更します。その場合、次のスクリプト例に示すように、必要なDDLをプロシージャ・コールに含めます(ddl_textパラメータを参照してください)。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者

実行場所: マスター定義サイト

レプリケーションの状態: 静止中

次に示す手順に従って、静止中のマスター・グループにあるレプリケート・オブジェクトを変更します。

注意:
このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************

手順1   マスター表を変更する場合、そのマスター表に基づく更新可能なマテリアライズド・ビューがあれば、更新可能なマテリアライズド・ビューをリフレッシュします。

更新可能なマテリアライズド・ビューをリフレッシュして、マスター表に変更をプッシュします。手順については、「マテリアライズド・ビューのリフレッシュ」を参照してください。

*/

PAUSE Press <RETURN> to continue when all of the updatable materialized views that are based on the master table have been refreshed.

/*

手順2   レプリケーション管理者としてマスター定義サイトに接続します。

*/

SET ECHO ON

SPOOL alter_rep_object.out

CONNECT repadmin@orc1.example.com

/*

手順3   必要な場合は、マスター・グループを静止します。

静止が不要な場合の詳細は、「ALTER_MASTER_REPOBJECTプロシージャ」を参照してください。

*/

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

/*

手順4   個別のSQL*Plusセッションで、静止するマスター・グループのステータスをチェックします。

グループのステータスがQUIESCEDになるまで進行を中断します。

ステータスをチェックするには、次の問合せを実行します。

SELECT GNAME, STATUS FROM DBA_REPGROUP;

*/

PAUSE Press <RETURN> to continue when the master group's status is QUIESCED.

/*

手順5   レプリケート・オブジェクトを変更します。

*/

BEGIN
DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
sname => 'hr',
oname => 'employees',
type => 'TABLE',
ddl_text => 'ALTER TABLE hr.employees ADD (timestamp DATE)');
END;
/

/*

手順6   変更されたオブジェクトに対するレプリケーション・サポートを再生成します。

*/

BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'hr',
oname => 'employees',
type => 'TABLE',
min_communication => TRUE);
END;
/

/*

手順7   個別のSQL*Plusセッションで、DBA_REPCATLOGが空であるかどうかを確認します。

このビューが空になるまで進行を中断します。

他のSQL*Plusセッションで次のSELECT文を実行して、DBA_REPCATLOGビューを監視します。

SELECT * FROM DBA_REPCATLOG WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue when DBA_REPCATLOG is empty.

/*

手順8   必要な場合は、マスター表のマテリアライズド・ビュー・ログを再作成します。

マスター表に基づく高速リフレッシュが可能なマテリアライズド・ビューがあるマスター表を変更し、かつ、次のいずれかの条件が満たされる場合は、マテリアライズド・ビュー・ログを削除して再作成する必要があります。

- マテリアライズド・ビュー・ログには、マスター表に追加された1つ以上の新しい列が含まれている必要がある。この場合には、マテリアライズド・ビュー・ログを変更して、列を追加できます。「列の追加のためのマテリアライズド・ビュー・ログの変更」を参照してください。

- マテリアライズド・ビュー・ログには、マスター表の変更された列が1つ以上含まれている。

- マテリアライズド・ビュー・ログには、マスター表から削除された列が1つ以上含まれている。

*/

PAUSE Press <RETURN> to continue after the materialized view logs are re-created.

/*

手順9   必要な場合は、マテリアライズド・ビューを再作成します。

マスター表に基づく更新可能なマテリアライズド・ビューがあるマスター表を変更した場合は、これらの更新可能なマテリアライズド・ビューをすべて再作成する必要があります。

マスター表に基づく読取り専用のマテリアライズド・ビューがあるマスター表を変更し、かつ、次のいずれかの条件が満たされる場合は、これらの読取り専用のマテリアライズド・ビューを再作成する必要があります。

- 読取り専用のマテリアライズド・ビューは、マスター表に追加された1つ以上の列を参照する必要がある。

- 読取り専用のマテリアライズド・ビューは、マスター表の変更された列を1つ以上参照する。

- 読取り専用のマテリアライズド・ビューは、マスター表から削除された列を1つ以上参照する。

*/

PAUSE Press <RETURN> to continue after the materialized views are re-created.

/*

手順10   レプリケーション・アクティビティを再開します。

*/

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/

変更をレプリケートしない表の変更

レプリケート・オブジェクトを変更する必要があるが、この変更をレプリケーション環境の他のサイトにレプリケートしない場合があります。たとえば、次の状況でレプリケーションを使用禁止にする必要があります。

- プロシージャ・レプリケーションを使用して変更を伝播するときは、必ずプロシージャの開始時に行レベル・レプリケーションを使用禁止にします。

- トリガー・アクションを複数回レプリケートするのを回避するため、レプリケート表で定義されたトリガー中のレプリケーションを使用禁止にする必要がある場合があります。詳細は、「レプリケート・トリガーの起動を1回のみにする」を参照してください。

- 競合を手動で解決する場合、表の他のコピーにこの変更をレプリケートしない場合があります。

これが必要になるのは、たとえば、エラー・トランザクションを再実行したときに競合するレプリケート更新が成功するように、1つのサイトのレコードの状態を訂正する必要がある場合です。または、トランザクションが接続先サイトで適用できなかったため、起点サイトでのトランザクションの効果を取り消すために、レプリケートされない変更を使用する場合があります。この例では、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用して、競合するトランザクションを接続先サイトから削除できます。

変更をレプリケートせずに表を変更するには、DBMS_REPUTILパッケージのREPLICATION_ONプロシージャおよびREPLICATION_OFFプロシージャを使用します。これらのプロシージャは引数を取らず、生成されたレプリケーション・トリガーでフラグとして使用されます。

注意:
レプリケーションを使用可能または使用禁止にするには、DBMS_REPUTILパッケージのEXECUTE権限を持っている必要があります。

レプリケーションの使用禁止

DBMS_REPUTIL.REPLICATION_OFFプロシージャは、カレント・セッションに関する内部レプリケーション変数の状態をFALSEに設定します。すべてのレプリケート・トリガーが、トランザクションをキューに入れる前にこの変数の状態をチェックするため、行レベル・レプリケーションを使用してレプリケート表を変更しても、遅延トランザクションはキューに入れられません。

注意:
レプリケーションのオンまたはオフの切り替えは、カレント・セッションにのみ適用されます。すなわち、現在同じサーバーに接続している他のユーザーは、遅延トランザクション・キューでコミットされる変更の入力を制限されません。

プロシージャ・レプリケーションを使用している場合は、次の例に示すようにプロシージャの開始時にREPLICATION_OFFをコールします。これにより、レプリケーション機能により行レベル・レプリケーションが使用されて変更が伝播されることがなくなります。

CREATE OR REPLACE PACKAGE update_objects AS
PROCEDURE update_emp(adjustment IN NUMBER);
END;
/

CREATE OR REPLACE PACKAGE BODY update_objects AS
PROCEDURE update_emp(adjustment IN NUMBER) IS
BEGIN
--turn off row-level replication for set update
DBMS_REPUTIL.REPLICATION_OFF;
UPDATE emp . . .;
--reenable replication
DBMS_REPUTIL.REPLICATION_ON;
EXCEPTION WHEN OTHERS THEN
. . .
DBMS_REPUTIL.REPLICATION_ON;
END;
END;
/

レプリケーションの再有効化

競合を解消した後、またはレプリケート・プロシージャの終了時に、必ずDBMS_REPUTIL.REPLICATION_ONをコールし、レプリケート表またはマテリアライズド・ビューに対する変更の通常のレプリケーションを再開してください。このプロシージャは引数を取りません。REPLICATION_ONのコールにより、内部レプリケーション変数がTRUEに設定されます。

レプリケート・トリガーの起動を1回のみにする

レプリケート表でレプリケート・トリガーを定義済の場合、変更を行うごとにトリガーが1回のみ起動するようにする必要がある場合があります。通常は、トリガーを起動するのは変更が最初に行われたときのみで、変更がリモート・サイトにレプリケートされたときはリモート・トリガーを起動しません。

トリガーの開始時にDBMS_REPUTIL.FROM_REMOTEパッケージ変数の値をチェックする必要があります。この変数の値がFALSEの場合のみ、トリガーで表が更新される必要があります。

または、トリガーを起動する行以外の行を変更する場合は、トリガーの開始時にレプリケーションを使用禁止にし、トリガーの終了時に再び使用可能にできます。この方法により、元の変更のみがリモート・サイトにレプリケートされます。これによりレプリケート・トリガーが各リモート・サイトで起動します。レプリケート・トリガーで実行される更新は、他のサイトにプッシュされません。

このアプローチでは、競合解消はコールされません。このため、トリガーにより生じる変更がデータの整合性に影響しないようにする必要があります。

レプリケート表でのLONG列のLOB列への変換

BASICFILE記憶域を使用するLOB列はレプリケートできますが、LONG列はレプリケートできません。LONG列からCLOB列へのデータ型の変換、およびLONG_RAW列からBLOB列へのデータ型の変換が可能です。

LONG列をLOB列に変換すると、このような列のデータは変換後にレプリケートされるため、ネットワーク帯域幅の要件が増加する可能性があります。この項のプロシージャを実行する前に、十分なネットワーク帯域幅があることを確認してください。

注意:
SECUREFILE記憶域を使用するLOB列は、レプリケートできません。

関連項目:
アプリケーションの詳細およびLONGからLOBへの変換の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

次に示す手順に従って、レプリケート表でLONG列をLOB列に変換します。

手順1   LONG列のデータがすべてのレプリケーション・サイトで整合性があることを確認します。

LONG列を含む表がマスター表として構成されている場合は、LONG列のデータへの変更はレプリケートされません。このため、LONG列のデータがすべてのレプリケーション・サイトで一致しない場合があります。変換前に、LONG列のデータがすべてのマスター・サイトで一致することを確認する必要があります。

手順2   レプリケーション管理者としてマスター定義サイトに接続します。

CONNECT repadmin@orc1.example.com

手順3   レプリケーションの状態が通常の場合は、静止中に変更します。

BEGIN

DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'sales_mg');
END;
/

手順4   LONG列をLOB列に変換します。

BEGIN

DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
sname => 'staff',
oname => 'positions',
type => 'TABLE',
ddl_text => 'ALTER TABLE staff.positions MODIFY (job_desc CLOB)');
END;
/

類似したALTER TABLE文を使用して、LONG_RAW列をBLOB列に変換できます。

手順5   変更されたマスター表に対するレプリケーション・サポートを再生成します。

BEGIN

DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => 'staff',
oname => 'positions',
type => 'TABLE',
min_communication => TRUE);
END;
/

手順6   レプリケーションを再開します。

BEGIN

DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'sales_mg');
END;
/

手順7   マテリアライズド・ビューがいずれかのマスター・サイトの変更された表をベースにしている場合は、このマテリアライズド・ビューを再作成します。

必要な場合は、マテリアライズド・ビューを再作成します。

レプリケート表間の違いの判別

レプリケート表間に違いが生じる場合があります。レプリケーション環境を管理するとき、2つのレプリケート表の内容が同じであるかどうかを定期的にチェックできます。DBMS_RECTIFIER_DIFFパッケージ内の次のプロシージャを使用すると、2つの表の違いを識別でき、また任意で調整もできます。

注意:
DBMS_COMPARISONパッケージを使用して、データベース・オブジェクト間の相違点を特定し、収束することもできます。

関連項目:

- DBMS_COMPARISONパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

- DBMS_COMPARISONパッケージの使用方法の詳細は、『Oracle Database 2日でデータ・レプリケーションおよび統合ガイド』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

DIFFERENCESプロシージャの使用

DIFFERENCESプロシージャは、1つの表の2つのレプリカを比較し、第1のレプリカにあるが第2のレプリカにはない行、および第2のレプリカにあるが第1のレプリカにはない行をすべて判別します。このプロシージャの出力は、ユーザーが作成した2つの表に格納されます。第1の表には欠落行の値が格納され、第2の表にはそれぞれの欠落行を含むサイトを示す情報が格納されます。

RECTIFYプロシージャの使用

RECTIFYプロシージャは、DIFFERENCESプロシージャで生成された情報を使用して、2つの表を調整します。第1の表にはあるが第2の表にはない行はすべて、第2の表に挿入されます。第2の表にはあるが第1の表にはない行はすべて、第2の表から削除されます。

レプリケート表のコピーをすべて同一にリストアするには、次の手順に従います。

手順1   表のコピーを1つ選択して参照表にします。

他のすべての表のレプリカを必要に応じて更新するときに、このコピーを使用します。

手順2   違いをチェックする必要があるのが、表の中のすべての行および列か、またはサブセットのみかを判別します。

たとえば、前回の違いのチェック以降に更新されていない行は、チェックしなくてもよい場合があります。すべての列をチェックする必要はありませんが、列のリストには、表の主キーを構成する(または代替識別キーとして指定した)列がすべて含まれている必要があります。

手順3   表の中のどの列をチェックするかを決定した後は、比較の結果を保持するための表を2つ作成します。

まず、比較する列のデータを保持する表を作成する必要があります。たとえば、employees表のemployee_id列、salary列およびdepartment_id列を比較する場合は、次のようなCREATE文を実行する必要があります。

CREATE TABLE hr.missing_rows_data (
employee_id     NUMBER(6),
salary          NUMBER(8,2),
department_id   NUMBER(4));

次に、行が検出された位置を示す表も作成する必要があります。この表には、次の例に示すデータ型の列を3つ入れる必要があります。

CREATE TABLE hr.missing_rows_location (
present     VARCHAR2(128),
absent      VARCHAR2(128),
r_id        ROWID);

手順4   比較対象の表があるレプリケーション・グループのレプリケーション・アクティビティを中断します。

グループのレプリケーション・アクティビティの中断は必須ではありませんが、最初に表を静止せずに調整すると、データに不整合が生じることがあります。

CONNECT repadmin

BEGIN
DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

手順5   参照表があるサイトで、DIFFERENCESプロシージャをコールします。

たとえば、ニューヨークのサイトとサンフランシスコのサイトのemployees表を比較する場合、次のようなプロシージャをコールします。

BEGIN
DBMS_RECTIFIER_DIFF.DIFFERENCES (
sname1              =>   'hr',
oname1              =>   'employees',
reference_site      =>   'ny.example.com',
sname2              =>   'hr',
oname2              =>   'employees',
comparison_site     =>   'mv4.example.com',
where_clause        =>   '',
column_list         =>   'employee_id,salary,department_id',
missing_rows_sname  =>   'hr',
missing_rows_oname1 =>   'missing_rows_data',
missing_rows_oname2 =>   'missing_rows_location',
missing_rows_site   =>   'ny.example.com',
max_missing         =>    500,
commit_rows         =>    50);
END;
/

図9-1に、employee表の2つのレプリカと、これらのレプリカに対してDIFFERENCESプロシージャを実行した場合に出力される欠落行表の例を示します。

図9-1 レプリカ間の違いの判別

2つの欠落行表が、ROWIDおよびr_id列によって対応付けられている点に注目してください。

手順6   参照サイトの表に等しくなるように比較サイトの表を調整します。

BEGIN

DBMS_RECTIFIER_DIFF.RECTIFY (
sname1              =>   'hr',
oname1              =>   'employees',
reference_site      =>   'ny.example.com',
sname2              =>   'hr',
oname2              =>   'employees',
comparison_site     =>   'mv4.example.com',
column_list         =>   'employee_id,salary,department_id',
missing_rows_sname  =>   'hr',
missing_rows_oname1 =>   'missing_rows_data',
missing_rows_oname2 =>   'missing_rows_location',
missing_rows_site   =>   'ny.example.com',
commit_rows         =>    50);
END;
/

必要な挿入および削除を実行している間、その変更を伝播しないよう、RECTIFYプロシージャは、比較サイトのレプリケーションを一時的に使用禁止にします。RECTIFYは、最初に必要なDELETE操作をすべて実行し、次にINSERT操作をすべて実行します。これによって、主キー制約の違反は発生しなくなります。

RECTIFYプロシージャが正常に実行されると、欠落行表は空になります。

注意:
比較表にその他の制約がある場合は、RECTIFYのコール時にそれらに違反しないようにする必要があります。欠落行表の情報を使用して、表を直接更新することが必要な場合もあります。その場合は、必ず欠落行表から該当の行をDELETEしてください。

手順7   レプリケート表の残りのコピーに対して、手順5および6を繰り返します。

このプロシージャの完了時にすべてのコピーが確実に同一になるように、必ず毎回同じ参照表を使用してください。

手順8   マスター・グループのレプリケーション・アクティビティを再開します。

BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => 'hr_repg');
END;
/

遅延トランザクション・キューの管理

通常、Advanced Replicationは、遅延トランザクション・キューのプッシュおよびパージを自動的に行うように構成されます。ただし、遅延トランザクション・キューのプッシュやパージを手動で行う必要があることもあります。遅延トランザクション・キューをプッシュするプロセスは、マスター・サイトでもマテリアライズド・ビュー・サイトでも同じです。

遅延トランザクション・キューのプッシュ

マスター・サイトは、遅延トランザクション・キューのプッシュを設定された間隔で自動的に行うように構成されます。マテリアライズド・ビュー・サイトでは、マテリアライズド・ビューのリフレッシュ時に、遅延トランザクション・キューのトランザクションを自動的に伝播させない場合は、次の手順を実行して、更新可能なマテリアライズド・ビューに加えられた変更をそのマスター表またはマスター・マテリアライズド・ビューに伝播します。

この例では、マテリアライズド・ビュー・サイトでの遅延トランザクション・キューのプッシュを示しますが、そのプロセスはマスター・サイトでもマテリアライズド・ビュー・サイトでも同じです。

実行者: マテリアライズド・ビュー管理者

実行場所: マテリアライズド・ビュー・サイト

次の手順に従います。

手順1   マテリアライズド・ビュー管理者としてマテリアライズド・ビュー・サイトに接続します。

CONNECT mviewadmin@mv1.example.com

手順2   次のSELECT文を実行して、遅延トランザクションとその接続先を表示します。

遅延トランザクション・キューの伝播は、トランザクションの接続先をベースにします。それぞれ固有の接続先と、その接続先に保留されているトランザクションの数が表示されます。

SELECT DISTINCT(dblink), COUNT(deferred_tran_id)
FROM deftrandest GROUP BY dblink;

手順3   遅延トランザクションの接続先としてリストされている各サイトに、DBMS_DEFER_SYS.PUSHファンクションを実行します。

DECLARE
temp INTEGER;
BEGIN
temp := DBMS_DEFER_SYS.PUSH (
destination => 'orc1.example.com',
stop_on_error => FALSE,
delay_seconds => 0,
parallelism => 0);
END;
/

手順2で実行したSELECT文で戻された各接続先に、PUSHプロシージャを実行します。

遅延トランザクション・キューのパージ

遅延トランザクション・キュー内の正常に伝播されたトランザクションを、定期的に自動的にパージするようにシステムが設定されていない場合は、次の手順を実行して、手動でパージする必要があります。

この例では、マテリアライズド・ビュー・サイトでの遅延トランザクション・キューのパージを示しますが、そのプロセスはマスター・サイトでもマテリアライズド・ビュー・サイトでも同じです。

実行者: マテリアライズド・ビュー管理者

実行場所: マテリアライズド・ビュー・サイト

次の手順に従います。

手順1   マテリアライズド・ビュー管理者としてマテリアライズド・ビュー・サイトに接続します。

CONNECT mviewadmin@mv1.example.com

手順2   遅延トランザクション・キューをパージします。

DECLARE

temp INTEGER;
BEGIN
temp := DBMS_DEFER_SYS.PURGE (
purge_method => DBMS_DEFER_SYS.PURGE_METHOD_QUICK);
END;
/

注意:
purge_method_quickパラメータを使用する場合は、正常にプッシュされた遅延トランザクションおよび遅延プロシージャ・コールが、パージされるまで、それぞれDEFTRANおよびDEFCALLデータ・ディクショナリ・ビューに予想以上に長時間保持されることがあります。詳細は、DBMS_DEFER_SYS.PURGEに関する「使用上の注意」を参照してください。

ANYDATA型を使用した遅延コールの引数の値の判定

レプリケート表で列オブジェクト、コレクションまたはREFを使用している場合、DBMS_DEFER_QUERYパッケージのGET_ANYDATA_ARGファンクションを使用して、これらのユーザー定義型の1つを含む遅延コールの引数の値を判定できます。

次の例は、GET_ANYDATA_ARGファンクションの使用方法を示します。この例では、oeサンプル・スキーマで次のユーザー定義型を使用します。

CREATE TYPE phone_list_typ AS VARRAY(5) OF VARCHAR2(25);
/

CREATE TYPE warehouse_typ AS OBJECT
(warehouse_id       NUMBER(3),
warehouse_name     VARCHAR2(35),
location_id        NUMBER(4)
);
/

CREATE TYPE inventory_typ AS OBJECT
(product_id          NUMBER(6),
warehouse           warehouse_typ,
quantity_on_hand    NUMBER(8)
);
/

CREATE TYPE inventory_list_typ AS TABLE OF inventory_typ;
/

次のプロシージャは、遅延トランザクション・キューに格納されたコールのコレクション、オブジェクトおよびREFインスタンスの引数値を取得します。このプロシージャは、コール番号およびトランザクションIDが使用可能であることを前提としています。

プロシージャを作成するユーザーは、DBMS_DEFER_QUERYパッケージのEXECUTE権限を持っていることと、CREATE PROCEDURE権限を持っていることが必要です。この例では、oeサンプル・スキーマを使用します。このため、この例を実行するには、oeユーザーにこれらの権限を与える必要があります。管理ユーザーとして接続して、次のように入力します。

GRANT EXECUTE ON DBMS_DEFER_QUERY TO oe;

GRANT CREATE PROCEDURE TO oe;

CONNECT oe@orc1.example.com

CREATE OR REPLACE PROCEDURE get_userdef_arg AS
call_no      NUMBER := 0;
txn_id       VARCHAR2(128) := 'xx.xx.xx';
anydata_val  ANYDATA;
t            ANYTYPE;
data_pl      phone_list_typ;     -- varray
data_ntt     inventory_list_typ; -- nested table type
data_p       warehouse_typ;      -- object type
ref1         REF inventory_typ;  -- REF type
rval         PLS_INTEGER;        -- return value
tc           PLS_INTEGER;        -- return value
prec         PLS_INTEGER;        -- precision
scale        PLS_INTEGER;        -- scale
len          PLS_INTEGER;        -- length
csid         PLS_INTEGER;        -- character set id
csfrm        PLS_INTEGER;        -- character set form
cnt          PLS_INTEGER;        -- count of varray elements or number of
-- object attributes
sname        VARCHAR2(35);       -- schema name
type_name    VARCHAR2(35);       -- type name
version      VARCHAR2(35);
BEGIN
FOR i IN 1 .. 5 LOOP
anydata_val := DBMS_DEFER_QUERY.GET_ANYDATA_ARG(call_no, i, txn_id);
-- Get the type information, including type name.
tc := anydata_val.GetType(t);
tc := t.GetInfo(prec, scale, len, csid, csfrm, sname, type_name,
version, cnt);
-- Based on the type name, convert the anydata value to the appropriate
-- user-defined types.
IF type_name = 'PHONE_LIST_TYP' THEN
-- The anydata_val contains phone_list_typ varray instance.
rval := anydata_val.GetCollection(data_pl);
-- Do something with data_pl.
ELSIF type_name = 'INVENTORY_LIST_TYP' THEN
-- anydata_val contains inventory_list_typ nested table instance.
rval := anydata_val.GetCollection(data_ntt);
-- Do something with data_ntt.
ELSIF type_name = 'WAREHOUSE_TYP' THEN
-- The anydata_val contains warehouse_typ object instance.
rval := anydata_val.GetObject(data_p);
-- Do something with data_p.
ELSIF type_name = 'INVENTORY_TYP' THEN
-- The anydata_val contains a reference to inventory_typ object instance.
rval := anydata_val.GetRef(ref1);
-- Do something with ref1.
END IF;
END LOOP;
END;
/

関連項目:

- 「GET_datatype_ARGファンクション」

- ANYDATAデータ型の詳細は、『Oracle Database SQL言語リファレンス』、『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』および『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

エラー・キューの管理

レプリケーション環境の管理者は、エラー・キューを定期的に監視し、ターゲット・マスター・サイトに正常に適用されなかった遅延トランザクションがあるかどうかを確認します。

エラー・キューを調べるには、ターゲット・マスター・サイトに接続した状態で、次のSELECT文を(レプリケーション管理者として)実行します。

SELECT * FROM deferror;

エラー・キューにエラーがあった場合は、エラー条件を解決し、遅延トランザクションを再実行します。遅延トランザクションを再実行するには、遅延トランザクションを受信したユーザーのセキュリティ・コンテキストで再実行するか、または別のセキュリティ・コンテキストで再実行するという、2通りの方法があります。

注意:
エラー・トランザクションが複数ある場合に、確実に正しい順序で再実行するには、次の項のプロシージャでdeferred_tran_idパラメータにNULLを指定できます。NULLを指定しない場合、個々のトランザクションが不正な順序で再実行され、競合の原因となる場合があります。

受信者としてのエラー・トランザクションの再実行

次に示すプロシージャは、遅延トランザクションを受信したユーザーのセキュリティ・コンテキストで、指定された遅延トランザクションを再実行します。このプロシージャは、エラー条件が解決した後で実行します。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: レプリケーション管理者

実行場所: エラーの発生したサイト

レプリケーションの状態: 通常

次の手順に従います。

手順1    SQL*Plusで、レプリケーション管理者としてマスター・サイトに接続します。

SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。

手順2   エラー・トランザクションを再実行します。

BEGIN

DBMS_DEFER_SYS.EXECUTE_ERROR (
deferred_tran_id => '1.12.2904',
destination => 'orc2.example.com');
END;
/

代替ユーザーとしてのエラー・トランザクションの再実行

次に示すプロシージャは、カレント接続ユーザーのセキュリティ・コンテキストで、指定された遅延トランザクションを再実行します。このプロシージャは、エラー条件が解決した後で実行します。

これらのアクションを実行するには、次の要件を満たす必要があります。

実行者: 接続ユーザー

実行場所: エラーの発生したサイト

レプリケーションの状態: 通常

次の手順に従います。

手順1    SQL*Plusで、代替ユーザーとしてマスター・サイトに接続します。

SQL*Plusでデータベースに接続する方法については、『Oracle Database管理者ガイド』を参照してください。

手順2   エラー・トランザクションを再実行します。

BEGIN

DBMS_DEFER_SYS.EXECUTE_ERROR_AS_USER (
deferred_tran_id => '1.12.2904',
destination => 'orc2.example.com');
END;
/

10 レプリケーション環境の監視

この章では、データ・ディクショナリを使用してレプリケーション環境を監視する方法を説明します。

この章には、次の項が含まれます。

- マスター・レプリケーション環境の監視

- マテリアライズド・ビュー・サイトの監視

- 管理要求の監視

- 遅延トランザクション・キューの監視

- エラー・キューの監視

- レプリケーション環境のパフォーマンスの監視

注意:
Oracle Enterprise ManagerのAdvanced Replicationインタフェースも、レプリケーション環境を監視するための優れた手段です。この章の問合せで得られる情報のほとんどは、Advanced Replicationインタフェースを使用して検索できます。詳細は、Advanced Replicationインタフェースのオンライン・ヘルプを参照してください。

関連項目:
第IV部「レプリケーション・データ・ディクショナリ・リファレンス」

マスター・レプリケーション環境の監視

この項では、マスター・レプリケーション環境の情報を表示するために実行できる問合せを示します。レプリケーション環境には、マルチマスター環境、マスター・マテリアライズド・ビュー環境、および複数のマスター・サイトとマテリアライズド・ビューを含むハイブリッド環境があります。

この項には、次の項目が含まれます。

- マスター・サイトの監視

- マスター・グループの監視

- マスターの監視

マスター・サイトの監視

この項では、マスター・サイトの情報を表示するために実行できる問合せを示します。

マスター・サイトの一般情報のリスト表示

この項の問合せを実行することにより、マスター・サイトに関する次の一般情報を検索できます。

- 管理要求の数。

- 管理要求エラーの数。

- 伝播されていない遅延トランザクションと接続先のペアの数。各遅延トランザクションは伝播される接続先を複数持つ場合があり、また各接続先は、1つの遅延トランザクションと接続先のペアです。

たとえば、遅延トランザクションが10あり、各トランザクションが3つのサイトに伝播される必要がある場合、この問合せで戻される遅延トランザクションのペアは30あります。しばらくして、最初の遅延トランザクションが3つの接続先サイトのうちの2つに伝播された場合、まだ10の遅延トランザクションがありますが、遅延トランザクションのペアは2つ減り、この問合せで戻される伝播されていない遅延トランザクションのペアは28になります。この場合、最初の遅延トランザクションに残されているトランザクションのペアは1つのみです。

- 遅延トランザクション・エラー(エラー・トランザクション)の数。

- まだキューにある正常に伝播されたトランザクションの数。このトランザクションはキューからパージする必要があります。

次の問合せを実行して、カレント・マスター・サイトに関するこの情報をリストします。

COLUMN GLOBAL_NAME HEADING 'Database' FORMAT A25
COLUMN ADMIN_REQUESTS HEADING 'Admin|Reqests' FORMAT 9999
COLUMN STATUS HEADING 'Admin|Errors' FORMAT 9999
COLUMN TRAN HEADING 'Def|Trans|Pairs' FORMAT 9999
COLUMN ERRORS HEADING 'Def|Trans|Errors' FORMAT 9999
COLUMN COMPLETE HEADING 'Propagated|Trans' FORMAT 9999

SELECT G.GLOBAL_NAME, D.ADMIN_REQUESTS, E.STATUS, DT.TRAN, DE.ERRORS, C.COMPLETE
FROM (SELECT GLOBAL_NAME FROM GLOBAL_NAME) G,
(SELECT COUNT(ID) ADMIN_REQUESTS FROM DBA_REPCATLOG) D,
(SELECT COUNT(STATUS) STATUS FROM DBA_REPCATLOG WHERE STATUS = 'ERROR') E,
(SELECT COUNT(*) TRAN FROM DEFTRANDEST) DT,
(SELECT COUNT(*) ERRORS FROM DEFERROR) DE,
(SELECT COUNT(A.DEFERRED_TRAN_ID) COMPLETE FROM DEFTRAN A
WHERE A.DEFERRED_TRAN_ID NOT IN (
SELECT B.DEFERRED_TRAN_ID FROM DEFTRANDEST B)) C;

出力は次のようになります。

Def    Def
Admin  Admin Trans  Trans Propagated
Database                  Reqests Errors Pairs Errors      Trans
------------------------- ------- ------ ----- ------ ----------
ORC1.EXAMPLE.COM                5      0    37      0         53

注意:
遅延トランザクション・キューに多数のトランザクションがある場合、この問合せは高コストになる場合があります。

マスター・グループの監視

この項では、レプリケーション・サイトにあるマスター・グループの情報を表示するために実行できる問合せを示します。

マスター・グループに関係するマスター・サイトのリスト表示

次の問合せを実行して、レプリケーション・サイトの各マスター・グループのマスター・サイトをリストし、各マスター・グループのマスター定義サイトを指定します。

COLUMN GNAME HEADING 'Master Group' FORMAT A20
COLUMN DBLINK HEADING 'Sites' FORMAT A25
COLUMN MASTERDEF HEADING 'Master|Definition|Site?' FORMAT A10

SELECT GNAME, DBLINK, MASTERDEF
FROM DBA_REPSITES
WHERE MASTER = 'Y'
AND GNAME NOT IN (SELECT GNAME FROM DBA_REPSITES WHERE SNAPMASTER = 'Y')
ORDER BY GNAME;

SELECT文の副問合せは、マテリアライズド・ビュー・グループが出力されないようにします。出力は次のようになります。

Master
Definition
Master Group         Sites                     Site?
-------------------- ------------------------- ----------
HR_REPG              ORC1.EXAMPLE.COM          Y
HR_REPG              ORC2.EXAMPLE.COM          N
HR_REPG              ORC3.EXAMPLE.COM          N

このリストは、orc1.example.comがhr_repgマスター・グループのマスター定義サイトであることを示します。また、このリストには、マスター・サイトorc2.example.comおよびorc3.example.comも含まれます。

マスター・グループの一般情報のリスト表示

この項の問合せを使用して、マスター・サイトにあるマスター・グループに関する次の一般情報をリストできます。

- 各マスター・グループの名前。

- 伝播されていない遅延トランザクションと接続先のペアの数。各遅延トランザクションは伝播される接続先を複数持つ場合があり、また各接続先は、1つの遅延トランザクションと接続先のペアです。

たとえば、遅延トランザクションが10あり、各トランザクションが3つのサイトに伝播される必要がある場合、この問合せで戻される遅延トランザクションのペアは30あります。しばらくして、最初の遅延トランザクションが3つの接続先サイトのうちの2つに伝播された場合、まだ10の遅延トランザクションがありますが、遅延トランザクションのペアは2つ減り、この問合せで戻される伝播されていない遅延トランザクションのペアは28になります。この場合、最初の遅延トランザクションに残されているトランザクションのペアは1つのみです。

- 各マスター・グループの遅延トランザクション・エラー(エラー・トランザクション)の数。

- 各マスター・グループの管理要求の数。

- 各マスター・グループの管理要求エラーの数。

次の問合せを実行し、この情報をリストします。

COLUMN GNAME HEADING 'Master Group' FORMAT A15
COLUMN deftran HEADING 'Number of|Deferred|Transaction|Pairs' FORMAT 9999
COLUMN deftranerror HEADING 'Number of|Deferred|Transaction|Errors' FORMAT 9999
COLUMN adminreq HEADING 'Number of|Administrative|Requests' FORMAT 9999
COLUMN adminreqerror HEADING 'Number of|Administrative|Request|Errors'
COLUMN adminreqerror FORMAT 9999

SELECT G.GNAME,
NVL(T.CNT1, 0) deftran,
NVL(IE.CNT2, 0) deftranerror,
NVL(A.CNT3, 0) adminreq,
NVL(B.CNT4, 0) adminreqerror
FROM
(SELECT DISTINCT GNAME FROM DBA_REPGROUP WHERE MASTER='Y') G,
(SELECT DISTINCT RO.GNAME, COUNT(DISTINCT D.DEFERRED_TRAN_ID) CNT1
FROM  DBA_REPOBJECT RO, DEFCALL D, DEFTRANDEST TD
WHERE RO.SNAME = D.SCHEMANAME
AND RO.ONAME = D.PACKAGENAME
AND RO.TYPE IN ('TABLE', 'PACKAGE', 'MATERIALIZED VIEW')
AND TD.DEFERRED_TRAN_ID = D.DEFERRED_TRAN_ID
GROUP BY RO.GNAME ) T,
(SELECT DISTINCT RO.GNAME, COUNT(DISTINCT E.DEFERRED_TRAN_ID) CNT2
FROM DBA_REPOBJECT RO, DEFCALL D, DEFERROR E
WHERE RO.SNAME = D.SCHEMANAME
AND RO.ONAME = D.PACKAGENAME
AND RO.TYPE IN ('TABLE', 'PACKAGE', 'MATERIALIZED VIEW')
AND E.DEFERRED_TRAN_ID = D.DEFERRED_TRAN_ID
AND E.CALLNO = D.CALLNO
GROUP BY RO.GNAME ) IE,
(SELECT GNAME, COUNT(*) CNT3 FROM DBA_REPCATLOG GROUP BY GNAME) A,
(SELECT GNAME, COUNT(*) CNT4 FROM DBA_REPCATLOG
WHERE STATUS = 'ERROR'
GROUP BY GNAME) B WHERE G.GNAME = IE.GNAME (+)
AND G.GNAME = T.GNAME (+)
AND G.GNAME = A.GNAME (+)
AND G.GNAME = B.GNAME (+) ORDER BY G.GNAME;

出力は次のようになります。

Number of   Number of                     Number of
Deferred    Deferred      Number of Administrative
Transaction Transaction Administrative        Request
Master Group          Pairs      Errors       Requests         Errors
--------------- ----------- ----------- -------------- --------------
HR_REPG                  54           0              0              0
OE_RG                    33           1              5              0

注意:
伝播されるのを待っているトランザクションが多数ある場合、この問合せは高コストになる場合があります。

マスターの監視

マスターには、マスター・サイトとマスター・マテリアライズド・ビュー・サイトがあります。この項では、マスターの情報を表示するために実行できる問合せを示します。

マスターでのマテリアライズド・ビューの情報のリスト表示

マスターをベースとするマテリアライズド・ビュー・サイトがある場合は、この項の問合せを使用して、マスターに関する次の情報をリストできます。

- マスターにあるレプリケーション・グループの数。レプリケーション・グループには、マスター・グループとマテリアライズド・ビュー・グループがあります。

- マスターにあるレプリケーション・グループをベースとする、登録済のマテリアライズド・ビュー・グループの数。

- マスターにあるオブジェクトをベースとする、登録済のマテリアライズド・ビューの数。オブジェクトには、マスター表とマスター・マテリアライズド・ビューがあります。

- マスターにあるマテリアライズド・ビュー・ログの数。

- マスターにあるデプロイメント・テンプレートの数。

次の問合せを実行し、この情報をリストします。

COLUMN repgroup HEADING 'Number of|Replication|Groups' FORMAT 9999
COLUMN mvgroup HEADING 'Number of|Registered|MV Groups' FORMAT 9999
COLUMN mv HEADING 'Number of|Registered MVs' FORMAT 9999
COLUMN mvlog HEADING 'Number of|MV Logs' FORMAT 9999
COLUMN template HEADING 'Number of|Templates' FORMAT 9999

SELECT A.REPGROUP repgroup,
B.MVGROUP mvgroup,
C.MV mv,
D.MVLOG mvlog,
E.TEMPLATE template
FROM (SELECT COUNT(G.GNAME) REPGROUP
FROM DBA_REPGROUP G, DBA_REPSITES S
WHERE G.MASTER = 'Y'
AND S.MASTER = 'Y'
AND G.GNAME = S.GNAME
AND S.MY_DBLINK = 'Y') A,
(SELECT COUNT(*) MVGROUP
FROM DBA_REGISTERED_MVIEW_GROUPS) B,
(SELECT COUNT(*) MV
FROM DBA_REGISTERED_MVIEWS) C,
(SELECT COUNT(*) MVLOG
FROM (SELECT 1 FROM DBA_MVIEW_LOGS
GROUP BY LOG_OWNER, LOG_TABLE)) D,
(SELECT COUNT(*) TEMPLATE FROM DBA_REPCAT_REFRESH_TEMPLATES) E;

出力は次のようになります。

Number of  Number of
Replication Registered      Number of Number of Number of
Groups  MV Groups Registered MVs   MV Logs Templates
----------- ---------- -------------- --------- ---------
1          5             27         6         3

マスターにあるマテリアライズド・ビュー・ログの情報のリスト表示

マテリアライズド・ビュー・ログにより、マスターをベースとするマテリアライズド・ビューで高速リフレッシュを実行できます。マスターには、マスター表とマスター・マテリアライズド・ビューがあります。マスターをベースとするマテリアライズド・ビュー・ログがある場合は、この項の問合せを使用して、このログに関する次の情報をリストできます。

- マテリアライズド・ビュー・ログ・データが格納される各ログ表の名前

- 各マテリアライズド・ビュー・ログの所有者

- 各マテリアライズド・ビュー・ログがベースとするマスター

- マテリアライズド・ビュー・ログが行IDマテリアライズド・ビュー・ログかどうか

- マテリアライズド・ビュー・ログが主キー・マテリアライズド・ビュー・ログかどうか

- マテリアライズド・ビュー・ログがオブジェクトIDマテリアライズド・ビュー・ログかどうか

- マテリアライズド・ビュー・ログにフィルタ列があるかどうか

次の問合せを実行し、この情報をリストします。

COLUMN LOG_TABLE HEADING 'Log Table' FORMAT A20
COLUMN LOG_OWNER HEADING 'Log|Owner' FORMAT A5
COLUMN MASTER HEADING 'Master' FORMAT A15
COLUMN ROWIDS HEADING 'Row|ID?' FORMAT A3
COLUMN PRIMARY_KEY HEADING 'Primary|Key?' FORMAT A7
COLUMN OBJECT_ID HEADING 'Object|ID?' FORMAT A6
COLUMN FILTER_COLUMNS HEADING 'Filter|Columns?' FORMAT A8

SELECT DISTINCT LOG_TABLE,
LOG_OWNER,
MASTER,
ROWIDS,
PRIMARY_KEY,
OBJECT_ID,
FILTER_COLUMNS
FROM DBA_MVIEW_LOGS
ORDER BY 1;

出力は次のようになります。

Log                   Row Primary Object Filter
Log Table            Owner Master          ID? Key?    ID?    Columns?
-------------------- ----- --------------- --- ------- ------ --------
MLOG$_COUNTRIES      HR    COUNTRIES       NO  YES     NO     NO
MLOG$_DEPARTMENTS    HR    DEPARTMENTS     NO  YES     NO     NO
MLOG$_EMPLOYEES      HR    EMPLOYEES       NO  YES     NO     NO
MLOG$_JOBS           HR    JOBS            NO  YES     NO     NO
MLOG$_JOB_HISTORY    HR    JOB_HISTORY     NO  YES     NO     NO
MLOG$_LOCATIONS      HR    LOCATIONS       NO  YES     NO     NO
MLOG$_REGIONS        HR    REGIONS         NO  YES     NO     NO

関連項目:
マテリアライズド・ビュー・ログの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

マテリアライズド・ビュー・ログを使用するマテリアライズド・ビューのリスト表示

あるマテリアライズド・ビュー・ログを複数のマテリアライズド・ビューが使用する場合があります。マスターをベースとするマテリアライズド・ビュー・ログがある場合は、この項の問合せを使用して、各ログを使用するマテリアライズド・ビューに関する次の情報をリストできます。

- マテリアライズド・ビュー・ログ・データが格納される各ログ表の名前

- 各マテリアライズド・ビュー・ログの所有者

- 各マテリアライズド・ビュー・ログがベースとするマスター

- マテリアライズド・ビュー・ログを使用する各マテリアライズド・ビューの、マテリアライズド・ビュー識別番号

- マテリアライズド・ビュー・ログを使用する各マテリアライズド・ビューの名前

次の問合せを実行し、この情報をリストします。

COLUMN LOG_TABLE HEADING 'Mview|Log Table' FORMAT A20
COLUMN LOG_OWNER HEADING 'Mview|Log Owner' FORMAT A10
COLUMN MASTER HEADING 'Master' FORMAT A20
COLUMN MVIEW_ID HEADING 'Mview|ID' FORMAT 9999
COLUMN NAME HEADING 'Mview Name' FORMAT A20

SELECT L.LOG_TABLE, L.LOG_OWNER, B.MASTER, B.MVIEW_ID, R.NAME
FROM ALL_MVIEW_LOGS L, ALL_BASE_TABLE_MVIEWS B, ALL_REGISTERED_MVIEWS R
WHERE B.MVIEW_ID = R.MVIEW_ID
AND B.OWNER = L.LOG_OWNER
AND B.MASTER = L.MASTER;

出力は次のようになります。

Mview                Mview                           Mview
Log Table            Log Owner  Master                  ID Mview Name
-------------------- ---------- -------------------- ----- --------------------
MLOG$_COUNTRIES      HR         COUNTRIES               21 COUNTRIES_MV1
MLOG$_DEPARTMENTS    HR         DEPARTMENTS             22 DEPARTMENTS_MV1
MLOG$_EMPLOYEES      HR         EMPLOYEES               23 EMPLOYEES_MV1
MLOG$_JOBS           HR         JOBS                    24 JOBS_MV1
MLOG$_JOB_HISTORY    HR         JOB_HISTORY             25 JOB_HISTORY_MV1
MLOG$_LOCATIONS      HR         LOCATIONS               26 LOCATIONS_MV1
MLOG$_REGIONS        HR         REGIONS                 27 REGIONS_MV1

マスターにあるデプロイメント・テンプレートの情報のリスト表示

デプロイメント・テンプレートにより、複数のマテリアライズド・ビュー環境をすばやく作成できます。また、変数を使用して、各マテリアライズド・ビュー環境を個別の必要に応じてカスタマイズすることもできます。この項の問合せを使用して、マスターにあるデプロイメント・テンプレートに関する次の情報をリストできます。

- 各デプロイメント・テンプレートの名前

- 各デプロイメント・テンプレートの所有者

- デプロイメント・テンプレートがパブリックかどうか

- 各デプロイメント・テンプレートをベースとする、インスタンス化されたマテリアライズド・ビュー・サイトの数

- 各デプロイメント・テンプレートに対応付けられたコメント

次の問合せを実行し、この情報をリストします。

COLUMN REFRESH_TEMPLATE_NAME HEADING 'Template|Name' FORMAT A10
COLUMN OWNER HEADING 'Owner' FORMAT A10
COLUMN PUBLIC_TEMPLATE HEADING 'Public?' FORMAT A7
COLUMN INSTANTIATED HEADING 'Number of|Instantiated|Sites' FORMAT 9999
COLUMN TEMPLATE_COMMENT HEADING 'Comment' FORMAT A35

SELECT DISTINCT RT.REFRESH_TEMPLATE_NAME,
OWNER,
PUBLIC_TEMPLATE,
RS.INSTANTIATED,
RT.TEMPLATE_COMMENT
FROM DBA_REPCAT_REFRESH_TEMPLATES RT,
(SELECT Y.REFRESH_TEMPLATE_NAME, COUNT(X.STATUS) INSTANTIATED
FROM DBA_REPCAT_TEMPLATE_SITES X, DBA_REPCAT_REFRESH_TEMPLATES Y
WHERE X.REFRESH_TEMPLATE_NAME(+) = Y.REFRESH_TEMPLATE_NAME
GROUP BY Y.REFRESH_TEMPLATE_NAME) RS
WHERE RT.REFRESH_TEMPLATE_NAME(+) = RS.REFRESH_TEMPLATE_NAME
ORDER BY 1;

出力は次のようになります。

Number of
Template                      Instantiated
Name       Owner      Public?        Sites Comment
---------- ---------- ------- ------------ -----------------------------------
HR_REFG_DT HR         N                  2 Human Resources Deployment Template

Public?列のNは、デプロイメント・テンプレートがプライベートであることを意味します。したがって、認証ユーザーのみがこのテンプレートをインスタンス化できます。この列のYは、デプロイメント・テンプレートがパブリックであることを意味します。パブリック・デプロイメント・テンプレートはすべてのユーザーがインスタンス化できます。

マテリアライズド・ビュー・サイトの監視

この項では、マテリアライズド・ビュー・サイトの情報を表示するために実行できる問合せを示します。この項には、次の項目が含まれます。

- マテリアライズド・ビュー・サイトの一般情報のリスト表示

- マテリアライズド・ビュー・グループの一般情報のリスト表示

- マテリアライズド・ビューの情報のリスト表示

- マテリアライズド・ビュー・サイトにあるリフレッシュ・グループの情報のリスト表示

- マテリアライズド・ビュー・サイトにある各リフレッシュ・ジョブのジョブIDの判定

- 現在リフレッシュしているマテリアライズド・ビューの判定

マテリアライズド・ビュー・サイトの一般情報のリスト表示

この項の問合せを使用して、カレント・マテリアライズド・ビュー・サイトに関する次の一般情報をリストできます。

- サイトにあるマテリアライズド・ビュー・グループの数

- サイトにあるマテリアライズド・ビューの数

- サイトにあるリフレッシュ・グループの数

次の問合せを実行し、この情報をリストします。

COLUMN MVGROUP HEADING 'Number of|Materialized|View Groups' FORMAT 9999
COLUMN MV HEADING 'Number of|Materialized|Views' FORMAT 9999
COLUMN RGROUP HEADING 'Number of|Refresh Groups' FORMAT 9999

SELECT A.MVGROUP, B.MV, C.RGROUP
FROM
(SELECT COUNT(S.GNAME) MVGROUP
FROM DBA_REPSITES S
WHERE S.SNAPMASTER = 'Y') A,
(SELECT COUNT(*) MV
FROM DBA_MVIEWS) B,
(SELECT COUNT(*) RGROUP
FROM DBA_REFRESH) C;

出力は次のようになります。

Number of    Number of
Materialized Materialized      Number of
View Groups        Views Refresh Groups
------------ ------------ --------------
5           25              5

マテリアライズド・ビュー・グループの一般情報のリスト表示

この項の問合せを使用して、カレント・マテリアライズド・ビュー・サイトにあるマテリアライズド・ビュー・グループに関する次の一般情報をリストできます。

- 各マテリアライズド・ビュー・グループの名前

- 各マテリアライズド・ビュー・グループのマスター

- マテリアライズド・ビュー・グループのマスターへの伝播方法(非同期または同期)

- 各マテリアライズド・ビュー・グループに対応付けられたコメント

次の問合せを実行し、この情報をリストします。

COLUMN GNAME HEADING 'Group Name' FORMAT A10
COLUMN DBLINK HEADING 'Master' FORMAT A25
COLUMN Propagation HEADING 'Propagation|Method' FORMAT A12
COLUMN SCHEMA_COMMENT HEADING 'Comment' FORMAT A30

SELECT S.GNAME,
S.DBLINK,
DECODE(S.PROP_UPDATES,
0, 'ASYNCHRONOUS',
1, 'SYNCHRONOUS') Propagation,
G.SCHEMA_COMMENT
FROM DBA_REPSITES S, DBA_REPGROUP G
WHERE S.GNAME = G.GNAME
AND S.SNAPMASTER = 'Y';

出力は次のようになります。

Propagation
Group Name Master                    Method       Comment
---------- ------------------------- ------------ ------------------------------
HR_REPG    ORC1.EXAMPLE.COM          ASYNCHRONOUS

マテリアライズド・ビューの情報のリスト表示

この項では、レプリケーション・サイトにあるマテリアライズド・ビューの情報を表示するために実行できる問合せを示します。

マテリアライズド・ビューのマスター情報のリスト表示

次の問合せは、レプリケーション・サイトにある各マテリアライズド・ビューのマスターを示し、かつマテリアライズド・ビューの高速リフレッシュが可能かどうかを示します。

COLUMN MVIEW_NAME HEADING 'Materialized|View Name' FORMAT A15
COLUMN OWNER HEADING 'Owner' FORMAT A10
COLUMN MASTER_LINK HEADING 'Master Link' FORMAT A30
COLUMN Fast_Refresh HEADING 'Fast|Refreshable?' FORMAT A16

SELECT MVIEW_NAME,
OWNER,
MASTER_LINK,
DECODE(FAST_REFRESHABLE,
'NO', 'NO',
'DML', 'YES',
'DIRLOAD', 'DIRECT LOAD ONLY',
'DIRLOAD_DML', 'YES',
'DIRLOAD_LIMITEDDML', 'LIMITED') Fast_Refresh
FROM DBA_MVIEWS;

出力は次のようになります。

Materialized                                              Fast
View Name       Owner      Master Link                    Refreshable?
--------------- ---------- ------------------------------ ----------------
COUNTRIES_MV1   HR         @ORC1.EXAMPLE.COM              YES
DEPARTMENTS_MV1 HR         @ORC1.EXAMPLE.COM              YES
EMPLOYEES_MV1   HR         @ORC1.EXAMPLE.COM              YES
JOBS_MV1        HR         @ORC1.EXAMPLE.COM              YES
JOB_HISTORY_MV1 HR         @ORC1.EXAMPLE.COM              YES
LOCATIONS_MV1   HR         @ORC1.EXAMPLE.COM              YES
REGIONS_MV1     HR         @ORC1.EXAMPLE.COM              YES

マテリアライズド・ビューのプロパティのリスト表示

この項の問合せを使用して、カレント・レプリケーション・サイトにあるマテリアライズド・ビューに関する次の情報をリストできます。

- 各マテリアライズド・ビューの名前

- 各マテリアライズド・ビューの所有者

- 各マテリアライズド・ビューが使用するリフレッシュ方法がCOMPLETE、FORCE、FASTまたはNEVERのいずれであるか

- マテリアライズド・ビューが更新可能かどうか

- 各マテリアライズド・ビューがリフレッシュされた最後の日付

次の問合せを実行し、この情報をリストします。

COLUMN MVIEW_NAME HEADING 'Materialized|View Name' FORMAT A15
COLUMN OWNER HEADING 'Owner' FORMAT A10
COLUMN REFRESH_METHOD HEADING 'Refresh|Method' FORMAT A10
COLUMN UPDATABLE HEADING 'Updatable?' FORMAT A10
COLUMN LAST_REFRESH_DATE HEADING 'Last|Refresh|Date'
COLUMN LAST_REFRESH_TYPE HEADING 'Last|Refresh|Type' FORMAT A15

SELECT MVIEW_NAME,
OWNER,
REFRESH_METHOD,
UPDATABLE,
LAST_REFRESH_DATE,
LAST_REFRESH_TYPE
FROM DBA_MVIEWS;

出力は次のようになります。

Last      Last
Materialized               Refresh               Refresh   Refresh
View Name       Owner      Method     Updatable? Date      Type
--------------- ---------- ---------- ---------- --------- ---------------
COUNTRIES_MV1   HR         FAST       Y          21-OCT-03 FAST
DEPARTMENTS_MV1 HR         FAST       Y          21-OCT-03 FAST
EMPLOYEES_MV1   HR         FAST       Y          21-OCT-03 FAST
JOBS_MV1        HR         FAST       Y          21-OCT-03 FAST
JOB_HISTORY_MV1 HR         FAST       Y          21-OCT-03 FAST
LOCATIONS_MV1   HR         FAST       Y          21-OCT-03 FAST
REGIONS_MV1     HR         FAST       Y          21-OCT-03 FAST

マテリアライズド・ビュー・サイトにあるリフレッシュ・グループの情報のリスト表示

マテリアライズド・ビュー・サイトにある各リフレッシュ・グループには、設定された間隔でリフレッシュ・グループのマテリアライズド・ビューをリフレッシュする、リフレッシュ・ジョブが対応付けられています。DBA_REFRESHデータ・ディクショナリ・ビューの問合せにより、マテリアライズド・ビュー・サイトにあるリフレッシュ・ジョブに関する次の情報をリストできます。

- リフレッシュ・グループの名前。

- リフレッシュ・グループの所有者。

- リフレッシュ・ジョブが中断されているかどうか。

- 次回リフレッシュ・ジョブが実行される日付および時刻。

- リフレッシュ・ジョブの現在の間隔設定。間隔設定では、ジョブの開始と同じジョブの次回の開始の間の、時間の長さを指定します。

次の問合せでこの情報が表示されます。

COLUMN RNAME HEADING 'Refresh|Group|Name' FORMAT A10
COLUMN ROWNER HEADING 'Refresh|Group|Owner' FORMAT A10
COLUMN BROKEN HEADING 'Broken?' FORMAT A7
COLUMN next_refresh HEADING 'Next Refresh'
COLUMN INTERVAL HEADING 'Interval' FORMAT A20

SELECT RNAME,
ROWNER,
BROKEN,
TO_CHAR(NEXT_DATE, 'DD-MON-YYYY HH:MI:SS AM') next_refresh,
INTERVAL
FROM DBA_REFRESH
ORDER BY 1;

出力は次のようになります。

Refresh    Refresh
Group      Group
Name       Owner      Broken? Next Refresh            Interval
---------- ---------- ------- ----------------------- --------------------
HR_REFG    MVIEWADMIN N       24-OCT-2003 07:18:44 AM SYSDATE + 1/24

Broken?列のNは、ジョブが中断されていないことを意味します。したがって、リフレッシュ・ジョブは次回開始時刻に実行されます。この列のYは、ジョブが中断されていることを意味します。

マテリアライズド・ビュー・サイトにある各リフレッシュ・ジョブのジョブIDの判定

この項の問合せを使用して、マテリアライズド・ビュー・サイトにあるリフレッシュ・ジョブに関する次の情報をリストできます。

- 各リフレッシュ・ジョブのジョブ識別番号。DBMS_JOBパッケージで作成された各ジョブには、一意の識別番号が割り当てられます。

- 権限スキーマ。権限スキーマとは、ジョブに適用されるデフォルトの権限を所有するスキーマです。

- 各リフレッシュ・ジョブを所有するスキーマ。通常は、マテリアライズド・ビュー管理者がリフレッシュ・ジョブを所有します。マテリアライズド・ビュー管理者の共通ユーザー名はmviewadminです。

- ジョブがリフレッシュするリフレッシュ・グループの名前。

- リフレッシュ・ジョブのステータスが通常か中断か。

次の問合せでこの情報が表示されます。

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN PRIV_USER HEADING 'Privilege|Schema' FORMAT A10
COLUMN RNAME HEADING 'Refresh|Group|Name' FORMAT A10
COLUMN ROWNER HEADING 'Refresh|Group|Owner' FORMAT A10
COLUMN BROKEN HEADING 'Broken?' FORMAT A7

SELECT J.JOB,
J.PRIV_USER,
R.ROWNER,
R.RNAME,
J.BROKEN
FROM DBA_REFRESH R, DBA_JOBS J
WHERE R.JOB = J.JOB
ORDER BY 1;

出力は次のようになります。

Refresh    Refresh
Privilege  Group      Group
Job ID Schema     Owner      Name       Broken?
------- ---------- ---------- ---------- -------
21 MVIEWADMIN MVIEWADMIN HR_REFG    N

Broken?列のNは、ジョブが中断されていないことを意味します。したがって、ジョブは次回開始時刻に実行されます。この列のYは、ジョブが中断されていることを意味します。

現在リフレッシュしているマテリアライズド・ビューの判定

次の問合せは、現在リフレッシュしているマテリアライズド・ビューを示します。

COLUMN SID HEADING 'Session|Identifier' FORMAT 9999
COLUMN SERIAL# HEADING 'Serial|Number' FORMAT 999999
COLUMN CURRMVOWNER HEADING 'Owner' FORMAT A15
COLUMN CURRMVNAME HEADING 'Materialized|View' FORMAT A25

SELECT * FROM V$MVREFRESH;

出力は次のようになります。

Session  Serial                 Materialized
Identifier  Number Owner           View
---------- ------- --------------- -------------------------
19     233 HR              COUNTRIES_MV
5     647 HR              EMPLOYEES_MV

注意:
マテリアライズド・ビューの遅延トランザクションがマスターにプッシュされているときは、V$MVREFRESH動的パフォーマンス・ビューに、更新可能なマテリアライズド・ビューの情報は含まれません。

管理要求の監視

この項では、マスター・サイトにある管理要求の情報を表示するために実行できる問合せを示します。この項には、次の項目が含まれます。

- 管理要求の一般情報のリスト表示

- 管理要求を実行するジョブの一般情報のリスト表示

- 管理要求を実行するジョブの一般情報のリスト表示

管理要求の一般情報のリスト表示

この項の問合せを使用して、マスター・サイトにある管理要求に関する次の一般情報をリストできます。

- 各管理要求の識別番号

- 各管理要求が要求するアクション

- 各要求のステータス

- 要求が実行されるマスター・サイト

次の問合せでこの情報が表示されます。

COLUMN ID HEADING 'Admin|Request|ID' FORMAT 999999
COLUMN REQUEST HEADING 'Request' FORMAT A25
COLUMN STATUS HEADING 'Status' FORMAT A15
COLUMN MASTER HEADING 'Master|Site' FORMAT A25

SELECT ID, REQUEST, STATUS, MASTER FROM DBA_REPCATLOG;

出力は次のようになります。

Admin
Request                                           Master
ID Request                   Status          Site
------- ------------------------- --------------- -------------------------
44 RESUME_MASTER_ACTIVITY    AWAIT_CALLBACK  ORC3.EXAMPLE.COM

DBMS_REPCATパッケージのDO_DEFERRED_REPCAT_ADMINプロシージャを使用して、管理要求を実行できます。

管理要求エラーの原因の判定

管理要求エラーの原因を、エラー・メッセージを表示して判定できます。次の問合せは、エラーとなった各管理要求に関するエラー・メッセージを表示します。

COLUMN ID HEADING 'Admin|Request|ID' FORMAT 999999
COLUMN REQUEST HEADING 'Request' FORMAT A30
COLUMN ERRNUM HEADING 'Error|Number' FORMAT 999999
COLUMN MESSAGE HEADING 'Error|Message' FORMAT A32

SELECT ID, REQUEST, ERRNUM, MESSAGE
FROM DBA_REPCATLOG WHERE STATUS = 'ERROR';

出力は次のようになります。

Admin
Request                                  Error Error
ID Request                         Number Message
------- ------------------------------ ------- ------------------------------
70 CREATE_MASTER_REPOBJECT          -2292 ORA-02292: integrity constrain
t (HR.DEPT_LOC_FK) violated -
child record found
ORA-02266: unique/primary keys
in table referenced by enable
d foreign keys

71 GENERATE_INTERNAL_PKG_SUPPORT   -23308 ORA-23308: object HR.LOCATIONS
does not exist or is invalid

管理要求を実行するジョブの一般情報のリスト表示

各マスター・グループには、管理要求を実行するdo_deferred_repcat_adminジョブが対応付けられています。DBA_JOBSデータ・ディクショナリ・ビューの問合せにより、レプリケーション・サイトにあるこのジョブに関する次の情報をリストできます。

- 各do_deferred_repcat_adminジョブのジョブ識別番号。DBMS_JOBパッケージで作成された各ジョブには、一意の識別番号が割り当てられます。

- 権限スキーマ。権限スキーマとは、ジョブに適用されるデフォルトの権限を所有するスキーマです。

- 各do_deferred_repcat_adminジョブのステータスが通常か中断か。

- 次回各do_deferred_repcat_adminジョブが実行される日付および時刻。

- 各do_deferred_repcat_adminジョブの現在の間隔設定。間隔設定では、ジョブの開始と同じジョブの次回の開始の間の、時間の長さを指定します。

次の問合せでこの情報が表示されます。

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN PRIV_USER HEADING 'Privilege|Schema' FORMAT A10
COLUMN BROKEN HEADING 'Broken?' FORMAT A7
COLUMN next_start HEADING 'Next Start'
COLUMN INTERVAL HEADING 'Interval' FORMAT A20

SELECT JOB,
PRIV_USER,
BROKEN,
TO_CHAR(NEXT_DATE,'DD-MON-YYYY HH:MI:SS AM') next_start,
INTERVAL
FROM DBA_JOBS
WHERE WHAT LIKE '%dbms_repcat.do_deferred_repcat_admin%'
ORDER BY 1;

出力は次のようになります。

Privilege
Job ID Schema     Broken? Next Start              Interval
------- ---------- ------- ----------------------- --------------------
24 REPADMIN   N       24-OCT-2003 07:23:48 AM SYSDATE + (1/144)

Broken?列のNは、ジョブが中断されていないことを意味します。したがって、ジョブは次回開始時刻に実行されます。この列のYは、ジョブが中断されていることを意味します。

各do_deferred_repcat_adminジョブの定義のチェック

DBA_JOBSデータ・ディクショナリ・ビューの問合せにより、レプリケーション・サイトにある各do_deferred_repcat_adminジョブの定義を表示できます。次の問合せで定義が表示されます。

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN WHAT HEADING 'Definitions of Admin Req Jobs' FORMAT A70

SELECT JOB, WHAT
FROM DBA_JOBS
WHERE WHAT LIKE '%dbms_repcat.do_deferred_repcat_admin%'
ORDER BY 1;

出力は次のようになります。

Job ID Definitions of Admin Req Jobs
------- ----------------------------------------------------------------------
321 dbms_repcat.do_deferred_repcat_admin('"HR_REPG"', FALSE);
342 dbms_repcat.do_deferred_repcat_admin('"OE_RG"', FALSE);

遅延トランザクション・キューの監視

この項では、レプリケーション・サイトにある遅延トランザクション・キューの情報を表示するために実行できる問合せを示します。この項には、次の項目が含まれます。

- トランザクション伝播の監視

- 正常に伝播されたトランザクションのパージの監視

トランザクション伝播の監視

この項では、遅延トランザクション・キューにあるトランザクションの伝播の情報を表示するために実行できる問合せを示します。

各接続先マスター・サイトの遅延トランザクションの数のリスト表示

この項の問合せを実行することにより、各接続先マスター・サイトの伝播されていない遅延トランザクションの数がわかります。この問合せは、カレント・マスター・サイトが遅延トランザクションを伝播している各マスター・サイトを示し、かつ各接続先サイトに伝播される遅延トランザクションの数を示します。

次の問合せを実行し、遅延トランザクションおよびエラー・トランザクションの数を確認します。

COLUMN DEST HEADING 'Destination' FORMAT A45
COLUMN TRANS HEADING 'Def Trans' FORMAT 9999

SELECT DBLINK DEST, COUNT(*) TRANS
FROM DEFTRANDEST D
GROUP BY DBLINK;

出力は次のようになります。

Destination                                   Def Trans
--------------------------------------------- ---------
ORC2.EXAMPLE.COM                                      1
ORC3.EXAMPLE.COM                                      1

注意:
伝播されるのを待っているトランザクションが多数ある場合、この問合せは高コストになる場合があります。

レプリケーション・サイトにあるプッシュ・ジョブの一般情報のリスト表示

レプリケーション・サイトにある各スケジュール・リンクには、遅延トランザクション・キューにある遅延トランザクションを接続先サイトに伝播する、プッシュ・ジョブが対応付けられています。この項の問合せを使用して、レプリケーション・サイトにあるプッシュ・ジョブに関する次の情報をリストできます。

- 各プッシュ・ジョブのジョブ識別番号。DBMS_JOBパッケージで作成された各ジョブには、一意の識別番号が割り当てられます。

- 権限スキーマ。権限スキーマとは、ジョブに適用されるデフォルトの権限を所有するスキーマです。

- 遅延トランザクションがプッシュされる接続先サイト。

- プッシュ・ジョブのステータスが通常か中断か。

次の問合せでこの情報が表示されます。

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN PRIV_USER HEADING 'Privilege|Schema' FORMAT A10
COLUMN DBLINK HEADING 'Destination' FORMAT A40
COLUMN BROKEN HEADING 'Broken?' FORMAT A7

SELECT J.JOB,
J.PRIV_USER,
S.DBLINK,
J.BROKEN
FROM DEFSCHEDULE S, DBA_JOBS J
WHERE S.DBLINK != (SELECT GLOBAL_NAME FROM GLOBAL_NAME)
AND S.JOB = J.JOB
ORDER BY 1;

出力は次のようになります。

Privilege
Job ID Schema     Destination                              Broken?
------- ---------- ---------------------------------------- -------
22 REPADMIN   ORC2.EXAMPLE.COM                         N
23 REPADMIN   ORC3.EXAMPLE.COM                         N

Broken?列のNは、ジョブが中断されていないことを意味します。したがって、ジョブは次回開始時刻に実行されます。この列のYは、ジョブが中断されていることを意味します。

プッシュ・ジョブの次回開始時刻および間隔の判定

レプリケーション・サイトにある各スケジュール・リンクには、遅延トランザクション・キューにある遅延トランザクションを接続先サイトに伝播する、プッシュ・ジョブが対応付けられています。DEFSCHEDULEおよびDBA_JOBSデータ・ディクショナリ・ビューの問合せにより、レプリケーション・サイトにあるプッシュ・ジョブに関する次の情報をリストできます。

- 各プッシュ・ジョブのジョブ識別番号。DBMS_JOBパッケージで作成された各ジョブには、一意の識別番号が割り当てられます。

- 遅延トランザクションがプッシュされる接続先サイト。

- 次回プッシュ・ジョブが実行される日付および時刻。

- プッシュ・ジョブの現在の間隔設定。間隔設定では、ジョブの開始と同じジョブの次回の開始の間の、時間の長さを指定します。

次の問合せでこの情報が表示されます。

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN DBLINK HEADING 'Destination' FORMAT A22
COLUMN next_start HEADING 'Next Start'
COLUMN INTERVAL HEADING 'Interval' FORMAT A25

SELECT JOB,
DBLINK,
TO_CHAR(NEXT_DATE, 'DD-MON-YYYY HH:MI:SS AM') next_start,
INTERVAL
FROM DEFSCHEDULE
WHERE DBLINK != (SELECT GLOBAL_NAME FROM GLOBAL_NAME)
AND JOB IS NOT NULL
ORDER BY 1;

出力は次のようになります。

Job ID Destination            Next Start              Interval
------- ---------------------- ----------------------- -------------------------
22 ORC2.EXAMPLE.COM       24-OCT-2003 07:23:48 AM SYSDATE + (1/144)
23 ORC3.EXAMPLE.COM       24-OCT-2003 07:23:48 AM SYSDATE + (1/144)

伝播のためにキューに入れられているトランザクションの合計数の判定

次の問合せを実行して、遅延トランザクション・キューで伝播されるのを待っているトランザクションの合計数を表示します。

SELECT COUNT(DISTINCT DEFERRED_TRAN_ID) "Transactions Queued"
FROM DEFTRANDEST;

出力は次のようになります。

Transactions Queued
-------------------
37

注意:
伝播されるのを待っているトランザクションが多数ある場合、この問合せは高コストになる場合があります。

正常に伝播されたトランザクションのパージの監視

この項では、遅延トランザクション・キューから正常に伝播されたトランザクションの、パージの情報を表示するために実行できる問合せを示します。

パージ・ジョブの一般情報のリスト表示

レプリケーション・サイトの標準設定の途中でパージ・ジョブを構成して、正常に伝播されたトランザクションを遅延トランザクション・キューから削除します。DBA_JOBSデータ・ディクショナリ・ビューの問合せにより、レプリケーション・サイトにあるパージ・ジョブに関する次の情報をリストできます。

- パージ・ジョブのジョブ識別番号。DBMS_JOBパッケージで作成された各ジョブには、一意の識別番号が割り当てられます。

- 権限スキーマ。権限スキーマとは、ジョブに適用されるデフォルトの権限を所有するスキーマです。

- ジョブのステータスが通常か中断か。

- 次回パージ・ジョブが実行される日付および時刻。

- パージ・ジョブの現在の間隔設定。間隔設定では、ジョブの開始と同じジョブの次回の開始の間の、時間の長さを指定します。

次の問合せでこの情報が表示されます。

COLUMN JOB HEADING 'Job ID' FORMAT 999999
COLUMN PRIV_USER HEADING 'Privilege|Schema' FORMAT A10
COLUMN BROKEN HEADING 'Broken?' FORMAT A7
COLUMN next_start HEADING 'Next Start'
COLUMN INTERVAL HEADING 'Interval' FORMAT A25

SELECT JOB,
PRIV_USER,
BROKEN,
TO_CHAR(NEXT_DATE, 'DD-MON-YYYY HH:MI:SS AM') next_start,
INTERVAL
FROM DBA_JOBS
WHERE WHAT LIKE '%dbms_defer_sys.purge%'
ORDER BY 1;

出力は次のようになります。

Privilege
Job ID Schema     Broken? Next Start              Interval
------- ---------- ------- ----------------------- -------------------------
21 REPADMIN   N       24-OCT-2003 07:42:18 AM SYSDATE + 1/24

Broken?列のNは、ジョブが中断されていないことを意味します。したがって、ジョブは次回開始時刻に実行されます。この列のYは、ジョブが中断されていることを意味します。

パージ・ジョブの定義のチェック

DBA_JOBSデータ・ディクショナリ・ビューの問合せにより、レプリケーション・サイトにあるパージ・ジョブの定義を表示できます。次の問合せで定義が表示されます。

SELECT WHAT "Definition of the Purge Job"
FROM DBA_JOBS
WHERE WHAT LIKE '%dbms_defer_sys.purge%' ORDER BY 1;

出力は次のようになります。

Definition of the Purge Job
--------------------------------------------------------------------------------
declare rc binary_integer; begin rc := sys.dbms_defer_sys.purge( delay_seconds=>
0); end;

最後の削除以降の時間の長さの判定

次の問合せは、正常に伝播されたトランザクションが遅延トランザクション・キューからパージされて以降の、時間の長さの合計を分単位で示します。

SELECT ((SYSDATE - LAST_PURGE_TIME) / 60) "Minutes Since Last Purge"
FROM V$REPLQUEUE;

出力は次のようになります。

Minutes Since Last Purge
------------------------
13.43333

パージされたトランザクションの合計数の判定

次の問合せは、インスタンスが最後に開始されて以降遅延トランザクション・キューからパージされた、正常に伝播されたトランザクションの合計数を示します。

SELECT TXNS_PURGED "Transactions Purged"
FROM V$REPLQUEUE;

出力は次のようになります。

Transactions Purged
-------------------
6541

エラー・キューの監視

この項では、レプリケーション・サイトにあるエラー・キューの情報を表示するために実行できる問合せを示します。エラー・キューには接続先サイトでエラーになった遅延トランザクションが含まれます。このエラー・トランザクションは接続先サイトでエラー・キューに入れられます。

この項には、次の項目が含まれます。

- レプリケーション・サイトにあるエラー・トランザクションの一般情報のリスト表示

- エラー・トランザクションの割合の判定

- 各起点マスター・サイトからのエラー・トランザクションの数のリスト表示

- レプリケーション・サイトのエラー・トランザクションに関するエラー・メッセージのリスト表示

- レプリケーション・サイトのエラー操作の判定

レプリケーション・サイトにあるエラー・トランザクションの一般情報のリスト表示

次の問合せは、レプリケーション・サイトにあるエラー・トランザクションの一般情報をリストします。

COLUMN DEFERRED_TRAN_ID HEADING 'Deferred|Transaction|ID' FORMAT A11
COLUMN ORIGIN_TRAN_DB HEADING 'Origin|Database' FORMAT A15
COLUMN DESTINATION HEADING 'Destination|Database' FORMAT A15
COLUMN TIME_OF_ERROR HEADING 'Time of|Error' FORMAT A22
COLUMN ERROR_NUMBER HEADING 'Oracle|Error|Number' FORMAT 999999

SELECT DEFERRED_TRAN_ID,
ORIGIN_TRAN_DB,
DESTINATION,
TO_CHAR(START_TIME, 'DD-Mon-YYYY hh24:mi:ss') TIME_OF_ERROR,
ERROR_NUMBER
FROM DEFERROR ORDER BY START_TIME;

出力は次のようになります。

Deferred                                                            Oracle
Transaction Origin           Destination      Time of                  Error
ID          Database         Database         Error                   Number
----------- ---------------- ---------------- ---------------------- -------
1.8.2470    ORC2.EXAMPLE.COM ORC1.EXAMPLE.COM 22-Oct-2003 07:19:14      1403

遅延トランザクションIDと接続先データベースを使用して、エラー原因となったトランザクションの再実行またはエラーの削除ができます。

たとえば、前の例のトランザクションを再実行するには、次のように入力します。

EXECUTE DBMS_DEFER_SYS.EXECUTE_ERROR('1.8.2470', 'ORC1.EXAMPLE.COM');

前の例のエラーを削除するには、次のように入力します。

EXECUTE DBMS_DEFER_SYS.DELETE_ERROR('1.8.2470', 'ORC1.EXAMPLE.COM');

通常は、エラーを手動で解決した場合のみ、エラーを削除します。

エラー・トランザクションの割合の判定

トランザクションをリモート・マスター・サイトに伝播するとき、正常に伝播されて適用されるトランザクションがある一方、リモート・マスター・サイトでエラーになるトランザクションがある場合があります。エラーになるトランザクションはエラー・トランザクションと呼ばれます。

次の問合せを実行して、リモート・マスター・サイトorc2.example.comへの伝播から発生したエラー・トランザクションの割合を表示します。

SELECT DECODE(TOTAL_TXN_COUNT, 0, 'No Transactions',
(TOTAL_ERROR_COUNT/TOTAL_TXN_COUNT)*100) "ERROR PERCENTAGE"
FROM DEFSCHEDULE
WHERE DBLINK = 'ORC2.EXAMPLE.COM';

出力は次のようになります。

Error Percentage
----------------
3.265

注意:
この問合せが'No transactions'を戻す場合は、統計が最後に消去されて以降、指定されたリモート・サイトに伝播されたトランザクションはありません。

各起点マスター・サイトからのエラー・トランザクションの数のリスト表示

この項の問合せを実行することにより、各起点マスター・サイトによるプッシュから発生したトランザクション・エラーの数を検索できます。

次の問合せを実行し、遅延トランザクションおよびエラー・トランザクションの数を確認します。

COLUMN SOURCE HEADING 'Origin' FORMAT A45
COLUMN ERRORS HEADING 'Def Trans Errors' FORMAT 9999

SELECT E.ORIGIN_TRAN_DB SOURCE, COUNT(*) ERRORS
FROM DEFERROR E
GROUP BY E.ORIGIN_TRAN_DB;

出力は次のようになります。

Origin                                        Def Trans Errors
--------------------------------------------- ----------------
ORC2.EXAMPLE.COM                                             1
ORC3.EXAMPLE.COM                                             3

レプリケーション・サイトのエラー・トランザクションに関するエラー・メッセージのリスト表示

次の問合せは、レプリケーション・サイトにあるエラー・トランザクションに関するエラー・メッセージをリストします。

COLUMN DEFERRED_TRAN_ID HEADING 'Deferred|Transaction|ID' FORMAT A11
COLUMN ERROR_MSG HEADING 'Error Messages' FORMAT A68

SELECT DEFERRED_TRAN_ID, ERROR_MSG
FROM DEFERROR;

出力は次のようになります。

Deferred
Transaction
ID          Error Messages
----------- --------------------------------------------------------------------
1.8.2470    ORA-01403: no data found

レプリケーション・サイトのエラー操作の判定

次の問合せは、レプリケーション・サイトでエラー原因となった各コールに関して試みられた操作のタイプをリストします。

COLUMN CALLNO HEADING 'Call|Number' FORMAT 9999
COLUMN DEFERRED_TRAN_ID HEADING 'Deferred|Transaction|ID' FORMAT A11
COLUMN PACKAGENAME HEADING 'Package|Name' FORMAT A20
COLUMN PROCNAME HEADING 'Operation' FORMAT A15
COLUMN ORIGIN_TRAN_DB HEADING 'Origin|Database' FORMAT A16

SELECT /*+ ORDERED */
C.CALLNO,
C.DEFERRED_TRAN_ID,
C.PACKAGENAME,
C.PROCNAME, E.ORIGIN_TRAN_DB
FROM DEFERROR E, DEFCALL C
WHERE C.DEFERRED_TRAN_ID = E.DEFERRED_TRAN_ID
AND C.CALLNO = E.CALLNO
ORDER BY E.START_TIME;

出力は次のようになります。

Deferred
Call Transaction Package                              Origin
Number ID          Name                 Operation       Database
------ ----------- -------------------- --------------- ----------------
0 1.8.2470    EMPLOYEES$RP         REP_UPDATE      ORC2.EXAMPLE.COM

レプリケーション環境のパフォーマンスの監視

この項では、マスター・レプリケーション環境のパフォーマンスを監視するために実行できる問合せを示します。この項には、次の項目が含まれます。

- レプリケーション・トランザクションの行変更の平均数の追跡

- リモート・サイトでトランザクションを適用するための平均時間の判定

- パラレル伝播ジョブがスリープに費やす時間の割合の判定

- DEFSCHEDULEビューのリモート・マスター・サイトに関する統計の消去

- V$REPLPROPを使用した遅延トランザクションのパラレル伝播の監視

レプリケーション・トランザクションの行変更の平均数の追跡

次の問合せは、インスタンス起動以降のレプリケーション・トランザクションの行変更の平均数を示します。

SELECT DECODE(TXNS_ENQUEUED, 0, 'No Transactions Enqueued',
(CALLS_ENQUEUED / TXNS_ENQUEUED)) "Average Number of Row Changes"
FROM V$REPLQUEUE;

出力は次のようになります。

Average Number of Row Changes
-----------------------------
56.16

注意:
この問合せが'No Transactions Enqueued'を戻す場合は、インスタンスの開始以降エンキューされたトランザクションはありません。

遅延トランザクション・キューに入るトランザクションの率の追跡

次の問合せは、インスタンス起動以降、現在のサイトで遅延トランザクション・キューに入るトランザクションの1秒ごとの平均数を示します。

SELECT (R.TXNS_ENQUEUED / ((SYSDATE - I.STARTUP_TIME)*24*60*60)) "Average TPS"
FROM V$REPLQUEUE R, V$INSTANCE I;

出力は次のようになります。

Average TPS
-----------
150

トランザクションの伝播のために作成されるネットワークの平均通信量の判定

遅延トランザクションの伝播は、ネットワークに一定の通信量を発生させます。ここでトランザクションにより発生するネットワークの通信量とは、送受信されるバイト数と、トランザクションの伝播に必要なネットワーク・ラウンドトリップの数です。

ラウンドトリップとは、連続して受信される1つ以上のメッセージが後に続く、連続して送信される1つ以上のメッセージです。たとえば、次の場合はどちらも1つのラウンドトリップです。

- サイトAがサイトBに1つのメッセージを送信し、次にサイトBがサイトAに1つのメッセージを送信します。

- サイトAがサイトBに20のメッセージを送信し、次にサイトBがサイトAに20つのメッセージを送信します。

これは、ラウンドトリップの数とはサイト間の往復通信の数であり、ラウンドトリップの数を評価するときは、メッセージの数は無関係であることを示しています。

次の問合せは、トランザクションをorc2.example.comリモート・マスター・サイトに伝播するときに発生するネットワークの平均通信量を示します。

COLUMN AV_BYTES HEADING 'Average Bytes' FORMAT 999999999
COLUMN AV_TRIPS HEADING 'Average Round Trips' FORMAT 9999999

SELECT
DECODE(TOTAL_TXN_COUNT, 0, 'No Transactions',
((TOTAL_BYTES_SENT + TOTAL_BYTES_RECEIVED) / TOTAL_TXN_COUNT)) AV_BYTES,
DECODE(TOTAL_TXN_COUNT, 0, 'No Transactions',
(TOTAL_ROUND_TRIPS / TOTAL_TXN_COUNT)) AV_TRIPS
FROM DEFSCHEDULE WHERE DBLINK = 'ORC2.EXAMPLE.COM';

出力は次のようになります。

Average Bytes          Average Round Trips
---------------------- -------------------
69621.5                5

注意:

- この問合せが両方の列で'No transactions'を戻す場合は、統計が最後に消去されて以降、指定されたリモート・サイトに伝播されたトランザクションはありません。

- この問合せでは、指定されたデータベース・リンクでパラレル伝播を使用する場合にのみ結果が戻されます。パラレル伝播を使用するには、DBMS_DEFER_SYSパッケージのSCHEDULE_PUSHプロシージャを実行する際に、parallelismパラメータを1以上に設定します。

関連項目:

- パラレル伝播の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- 「SCHEDULE_PUSHプロシージャ」

リモート・サイトでトランザクションを適用するための平均時間の判定

平均待機時間とは、現在のサイトでのトランザクションの最初のコールと、リモート・サイトでトランザクションが適用されたことの確認の間の、平均秒数です。最初のコールはトランザクションがコミットされた時点ではなく、ユーザーが最初にデータ操作言語(DML)に変更を加えた時点から開始されます。

次の問合せは、トランザクションをリモート・マスター・サイトorc2.example.comで適用するための平均待機時間を示します。

SELECT AVG_LATENCY "Average Latency"
FROM DEFSCHEDULE
WHERE DBLINK='ORC2.EXAMPLE.COM';

出力は次のようになります。

Average Latency
---------------
25.5

パラレル伝播ジョブがスリープに費やす時間の割合の判定

パラレル伝播コーディネータがアクティブでないことを、スリープしているといいます。伝播コーディネータがスリープ状態になる時間の長さは、DBMS_DEFER_SYS.PUSHプロシージャのdelay_secondsパラメータを使用して制御します。

次の問合せは、トランザクションをorc2.example.comリモート・マスター・サイトに伝播するとき、パラレル伝播コーディネータがスリープに費やす時間の割合を示します。

SELECT DECODE(AVG_THROUGHPUT, 0, NULL,
((TOTAL_SLEEP_TIME / (TOTAL_TXN_COUNT / AVG_THROUGHPUT)) * 100))
"Percent Sleep Time"
FROM DEFSCHEDULE WHERE DBLINK = 'ORC2.EXAMPLE.COM';

出力は次のようになります。

Percent Sleep Time
------------------
2

この場合では、パラレル伝播コーディネータは98%の時間アクティブです。

注意:
この問合せがNULLを戻す場合は、統計が最後に消去されて以降、または最後のデータベース起動以降、指定されたリモート・サイトに伝播されたトランザクションはありません。

DEFSCHEDULEビューのリモート・マスター・サイトに関する統計の消去

特定のリモート・マスター・サイトに関するDEFSCHEDULEビューの伝播統計を消去するには、DBMS_DEFER_SYSパッケージのCLEAR_PROP_STATISTICSプロシージャを使用します。たとえば、orc2.example.comリモート・マスター・サイトに関する伝播統計を消去するには、次のプロシージャを実行します。

BEGIN
DBMS_DEFER_SYS.CLEAR_PROP_STATISTICS (
dblink => 'ORC2.EXAMPLE.COM');
END;
/

V$REPLPROPを使用した遅延トランザクションのパラレル伝播の監視

V$REPLPROP動的パフォーマンス・ビューは、現在のパラレル伝播セッションの情報を提供します。

注意:
V$REPLPROP動的パフォーマンス・ビューは、遅延トランザクションのパラレル伝播を使用している場合にのみ関係します。シリアル伝播を使用している場合は、このビューは空です。

遅延トランザクションを伝播するデータベースの判定

次の問合せを実行して、現在パラレル伝播を使用して遅延トランザクションを伝播している各データベースの、データベース・リンクをリストします。

SELECT DBLINK "Database Link"
FROM V$REPLPROP
WHERE NAME LIKE '%Coordinator%';

出力は次のようになります。

Database Link
-----------------
ORC2.EXAMPLE.COM
ORC3.EXAMPLE.COM

現在リモート・マスターに伝播されているトランザクションの判定

現在パラレル伝播を使用して特定のリモート・マスター・サイトに伝播されているトランザクションの情報に関しては、次の情報をリストできます。

- 各トランザクションのトランザクション識別番号。

- 各トランザクションのコールの数。

- 各トランザクションの処理済のコールの割合。この列の数値は、トランザクションのコールが処理されるに従って増加します。数値が100になったときは、すべてのコールが処理済です。

次の問合せでこの情報が表示されます。

SELECT /*+ ORDERED */ P.XID "Tran Being Propagated",
(MAX(C.CALLNO) + 1) "Number of Calls in Tran",
(P.SEQUENCE/MAX(C.CALLNO) + 1) * 100 "% Processed Calls"
FROM V$REPLPROP P, DEFCALL C
WHERE P.NAME LIKE '%SLAVE%'
AND P.DBLINK = 'mv4.example.com'
AND C.DEFERRED_TRAN_ID = P.XID
GROUP BY P.XID, P.SEQUENCE;

出力は次のようになります。

Tran Being Propagated  Number of Calls in Tran % Processed Calls
---------------------- ----------------------- -----------------
1.11.4264                                43357               78
1.15.4256                                23554               49

既存のトランザクションがプッシュされて新しいトランザクションが処理されると同時に、トランザクション識別番号は変更される必要があります。この問合せは、レプリケーション環境に次の条件のいずれかが該当する場合に特に役立ちます。

- 多数のトランザクションを定期的にプッシュする場合。

- 非常に大きなトランザクションがいくつかある場合。

- 非同期伝播を使用した連続的なプッシュのシミュレーションを行う場合。

レプリケーション環境に最初の2つの条件が該当する場合は、この問合せを実行して、プロセスがトランザクションをプッシュしているかどうかをチェックできます。このタイプの環境では、トランザクションをプッシュしていないときはプロセスが存在しません。

連続的な送信のシミュレーションを行っているレプリケーション環境では、遅延トランザクション・キューにプッシュすべきトランザクションがあるときは必ずプロセスが存在します。プッシュすべきトランザクションが存在しないときは、プロセスが存在しない場合があります。このため、プッシュすべきトランザクションがあるときは、この問合せを実行して、プロセスが存在してトランザクションを処理しているかどうかを確認できます。

関連項目:
レプリケーション環境での連続的なプッシュのスケジューリングの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

第III部

レプリケーション・マネージメントAPIパッケージ・リファレンス

第III部には、レプリケーション・マネージメントAPIに関する次のリファレンス情報が含まれます。

- 各パッケージのプロシージャおよびファンクション

- パッケージ化されたプロシージャやファンクションのパラメータ

- プロシージャやファンクションで発生する可能性のある例外

注意:
この部の章で説明するPL/SQLプロシージャおよびファンクションの一部は、オーバーロードされています。すなわち、1つのパッケージ内に、同一の名前のプロシージャまたはファンクションが複数ありますが、それらの仮パラメータの個数、順序またはデータ型のグループは異なります。オーバーロードされているプロシージャまたはファンクションは、その旨を記述します。オーバーロードおよびPL/SQLの一般情報の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

この部は、次の章を含んでいます。

- 第11章「レプリケーション・マネージメントAPIリファレンスの概要」

- 第12章「DBMS_DEFER」

- 第13章「DBMS_DEFER_QUERY」

- 第14章「DBMS_DEFER_SYS」

- 第15章「DBMS_OFFLINE_OG」

- 第16章「DBMS_RECTIFIER_DIFF」

- 第17章「DBMS_REFRESH」

- 第18章「DBMS_REPCAT」

- 第19章「DBMS_REPCAT_INSTANTIATE」

- 第20章「DBMS_REPCAT_ADMIN」

- 第21章「DBMS_REPCAT_RGT」

- 第22章「DBMS_REPUTIL」

11 レプリケーション・マネージメントAPIリファレンスの概要

Advanced Replicationをインストールすると、レプリケーション・マネージメントApplication Program Interface(API)もインストールされます。レプリケーション・マネージメントAPIは、管理者が各サイトのレプリケーション機能を設定および管理するための、PL/SQLパッケージのコレクションです。また、Oracle Enterprise ManagerのAdvanced Replicationインタフェースでも、作業の実行に各サイトのレプリケーション・マネージメントAPIのプロシージャやファンクションが使用されます。

この章には、次の項が含まれます。

- Oracleレプリケーション・マネージメントAPIの使用例

- レプリケーション・マネージメントAPIを使用する際の考慮事項

- Advanced Replicationインタフェースとレプリケーション・マネージメントAPI

- 日時データ型および期間データ型の略称

注意:
この部の章で説明するPL/SQLプロシージャおよびファンクションの一部は、オーバーロードされています。すなわち、1つのパッケージ内に、同一の名前のプロシージャまたはファンクションが複数ありますが、それらの仮パラメータの個数、順序またはデータ型のグループは異なります。オーバーロードされているプロシージャまたはファンクションは、その旨を記述します。オーバーロードおよびPL/SQLの一般情報の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。

Oracleレプリケーション・マネージメントAPIの使用例

Oracleのレプリケーション・マネージメントAPIを使用するには、SQL*Plusなどの問合せツールを使用して、プロシージャまたはファンクションをコールします。たとえば、次に示すDBMS_REPCAT.CREATE_MASTER_REPOBJECTプロシージャをコールすると、hr_repgレプリケーション・グループ内に新しいレプリケート表hr.employeesが作成されます。

BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => 'hr_repg',
type => 'TABLE',
oname => 'employees',
sname => 'hr',
use_existing_object => TRUE,
copy_rows => FALSE);
END;
/

レプリケーション・マネージメントAPIファンクションをコールするには、ファンクションの戻り値を受け取る環境を用意する必要があります。たとえば、次に示す無名PL/SQLブロックは、DBMS_DEFER_SYS.DISABLEDファンクションをIF文でコールします。

BEGIN
IF DBMS_DEFER_SYS.DISABLED ('inst2') THEN
DBMS_OUTPUT.PUT_LINE('Propagation to INST2 is disabled.');
ELSE
DBMS_OUTPUT.PUT_LINE('Propagation to INST2 is enabled.');
END IF;
END;
/

レプリケーション・マネージメントAPIを使用する際の考慮事項

レプリケーション・マネージメントAPIのプロシージャおよびファンクションの多くには、いくつかの重要な考慮事項があります。次に例を示します。

- プロシージャやファンクションのいくつかは、マルチマスター構成のマスター定義サイトからのみコールします。

- マスター・グループに対して特定の管理操作を行う場合は、レプリケーション・マネージメントAPIのプロシージャやファンクションをコールする前に、そのグループのレプリケーション・アクティビティを中断する必要があります。

- Oracleレプリケーション・マネージメントAPIのプロシージャやファンクションをコールする順序は大変重要です。レプリケーション・マネージメント・コールを発行する方法の詳細は、次の項を参照してください。

Advanced Replicationインタフェースとレプリケーション・マネージメントAPI

Oracle Enterprise ManagerのAdvanced Replicationインタフェースでは、ほとんどのファンクションの実行に、レプリケーション・マネージメントAPIが使用されます。Advanced Replicationインタフェースには次に示す機能が備わっているため、レプリケーション・マネージメントAPIコールを個別に発行するより便利です。

- APIコールのパラメータの入力および調整を行うGUIインタフェースを用意

- 大量の関連APIコールを、適切に順序付け

- APIコールで戻された出力を、メッセージ・ボックスとエラー・ファイルに表示

日時データ型および期間データ型の略称

日時データ型および期間データ型の多くの名前は、レプリケーション・マネージメントAPIのプロシージャおよびファンクションとともに使用するには長すぎます。このため、これらのデータ型に関してはフルネームのかわりに略称を使用する必要があります。各データ型およびその略称を次の表に示します。DATEおよびTIMESTAMPデータ型には略称は必要ありません。

データ型

略称

TIME WITH TIME ZONE

TSTZ

TIMESTAMP LOCAL TIME ZONE

TSLTZ

INTERVAL YEAR TO MONTH

IYM

INTERVAL DAY TO SECOND

IDS

たとえば、DBMS_DEFER_QUERY.GET_datatype_ARGファンクションを使用して遅延コールのTIMESTAMP LOCAL TIME ZONE引数を判定する場合は、datatypeのかわりにTSLTZを使用します。したがって、DBMS_DEFER_QUERY.GET_TSLTZ_ARGファンクションを実行します。

12 DBMS_DEFER

DBMS_DEFERは、レプリケート・トランザクション遅延リモート・プロシージャ・コール機能のユーザー・インタフェースです。レプリケート・アプリケーションは、このインタフェースのコールを使用して、リモート・ノードでの後のトランザクション実行のためにプロシージャ・コールをキューに入れます。

通常こうしたプロシージャは、行トリガーの後、またはアプリケーション固有の更新プロシージャの後でコールされます。

この章には、次の項が含まれます。

- DBMS_DEFERサブプログラムの概要

DBMS_DEFERサブプログラムの概要

表12-1 DBMS_DEFERパッケージのサブプログラム

サブプログラム

説明

「CALLプロシージャ」

リモート・プロシージャへの遅延コールを作成します。

「COMMIT_WORKプロシージャ」

正しく定義された遅延リモート・プロシージャ・コールのチェック後に、トランザクションのコミットを実行します。

「datatype_ARGプロシージャ」

遅延リモート・プロシージャ・コールに渡されるデータを提供します。

「TRANSACTIONプロシージャ」

新しい遅延トランザクションの開始を示します。

CALLプロシージャ

このプロシージャは、リモート・プロシージャへの遅延コールを作成します。

構文

DBMS_DEFER.CALL (
schema_name       IN   VARCHAR2,
package_name      IN   VARCHAR2,
proc_name         IN   VARCHAR2,
arg_count         IN   NATURAL,
{ nodes           IN   node_list_t
| group_name      IN   VARCHAR2 :=''});

注意:
このプロシージャはオーバーロードされています。nodesパラメータとgroup_nameパラメータは、同時には指定できません。

パラメータ

表12-2 CALLプロシージャのパラメータ

パラメータ

説明

schema_name

ストアド・プロシージャが置かれたスキーマの名前です。

package_name

ストアド・プロシージャを含むパッケージの名前です。ストアド・プロシージャはパッケージの一部になります。スタンドアロン・プロシージャへの遅延コールはサポートされていません。

proc_name

コールを遅らせる、リモート・プロシージャの名前です。

arg_count

プロシージャのパラメータ数です。これらの各パラメータにつき1回、DBMS_DEFER.datatype_ARGへのコールが必要です。

注意: 一部のパラメータがデフォルトである場合でも、プロシージャのパラメータをすべて数に含める必要があります。

nodes

遅延コールを伝播する、完全修飾されたデータベース名のPL/SQL連想配列です。表の索引付けは、1の位置から始まり、NULLエントリが見つかるまで、またはno_data_found例外が発生するまで続行されます。表内のデータには、大文字と小文字の区別がありません。このパラメータはオプションです。

group_name

内部使用に予約されています。

例外

表12-3 CALLプロシージャの例外

例外

説明

ORA-23304 (malformedcall)

引数の数が正しくありません。

ORA-23319

パラメータ値が無効です。

ORA-23352

nodes、または前のDBMS_DEFER.TRANSACTIONコールで指定された接続先リストに重複があります。

COMMIT_WORKプロシージャ

このプロシージャは、正しく定義された遅延リモート・プロシージャ・コールのチェック後に、トランザクションのコミットを実行します。

構文

DBMS_DEFER.COMMIT_WORK (
commit_work_comment IN VARCHAR2);

パラメータ

表12-4 COMMIT_WORKプロシージャのパラメータ

パラメータ

説明

commit_work_comment

SQLのCOMMIT COMMENT文に相当します。

例外

表12-5 COMMIT_WORKプロシージャの例外

例外

説明

ORA-23304 (malformedcall)

トランザクションの形式が正しくなかったか、またはトランザクションが正常に終了しませんでした。

datatype_ARGプロシージャ

このプロシージャは、遅延リモート・プロシージャ・コールに渡すデータを提供します。遅延リモート・プロシージャに渡す必要があるデータ型に応じて、次に示すプロシージャのいずれかをコールする必要があります。

DBMS_DEFER.CALLを実行した後、プロシージャの各パラメータを、datatype_ARGプロシージャを使用して指定する必要があります。すなわち、遅延リモート・プロシージャ・コールにはデフォルト・パラメータを使用できません。たとえば、次のようなプロシージャがあるとします。

CREATE OR REPLACE PACKAGE my_pack AS
PROCEDURE my_proc(a VARCHAR2, b VARCHAR2 DEFAULT 'SALES');
END;
/

DBMS_DEFER.CALLプロシージャを実行するときは、パラメータごとに個別のプロシージャ・コールをmy_procプロシージャに組み込む必要があります。

CREATE OR REPLACE PROCEDURE load_def_tx IS
node DBMS_DEFER.NODE_LIST_T;
BEGIN
node(1) := 'MYCOMPUTER.EXAMPLE.COM';
node(2) := NULL;
DBMS_DEFER.TRANSACTION(node);
DBMS_DEFER.CALL('PR', 'MY_PACK', 'MY_PROC', 2);
DBMS_DEFER.VARCHAR2_ARG('TEST');
DBMS_DEFER.VARCHAR2_ARG('SALES'); -- required, cannot omit to use default
END;
/

注意:

- ANYDATA_ARGプロシージャは、ユーザー定義型のオブジェクト・タイプ、コレクションおよびREFをサポートしています。ANYDATAデータ型の詳細は、『Oracle Database SQL言語リファレンス』および『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください。

- このプロシージャは日時データ型および期間データ型の略称を使用します。たとえば、TIMESTAMP WITH TIME ZONEデータ型にはTSTZが使用されます。これらの略称の詳細は、「日時データ型および期間データ型の略称」を参照してください。

構文

DBMS_DEFER.ANYDATA_ARG      (arg  IN ANYDATA);
DBMS_DEFER.NUMBER_ARG       (arg  IN NUMBER);
DBMS_DEFER.DATE_ARG         (arg  IN DATE);
DBMS_DEFER.VARCHAR2_ARG     (arg  IN VARCHAR2);
DBMS_DEFER.CHAR_ARG         (arg  IN CHAR);
DBMS_DEFER.ROWID_ARG        (arg  IN ROWID);
DBMS_DEFER.RAW_ARG          (arg  IN RAW);
DBMS_DEFER.BLOB_ARG         (arg  IN BLOB);
DBMS_DEFER.CLOB_ARG         (arg  IN CLOB);
DBMS_DEFER.NCLOB_ARG        (arg  IN NCLOB);
DBMS_DEFER.NCHAR_ARG        (arg  IN NCHAR);
DBMS_DEFER.NVARCHAR2_ARG    (arg  IN NVARCHAR2);
DBMS_DEFER.ANY_CLOB_ARG     (arg  IN CLOB);
DBMS_DEFER.ANY_VARCHAR2_ARG (arg  IN VARCHAR2);
DBMS_DEFER.ANY_CHAR_ARG     (arg  IN CHAR);
DBMS_DEFER.IDS_ARG          (arg  IN DSINTERVAL_UNCONSTRAINED);
DBMS_DEFER.IYM_ARG          (arg  IN YMINTERVAL_UNCONSTRAINED);
DBMS_DEFER.TIMESTAMP_ARG    (arg  IN TIMESTAMP_UNCONSTRAINED);
DBMS_DEFER.TSLTZ_ARG        (arg  IN TIMESTAMP_LTZ_UNCONSTRAINED);
DBMS_DEFER.TSTZ_ARG         (arg  IN TIMESTAMP_TZ_UNCONSTRAINED);

パラメータ

表12-6 datatype_ARGプロシージャのパラメータ

パラメータ

説明

arg

以前コールを遅延したリモート・プロシージャに渡すパラメータ値です。

例外

表12-7 datatype_ARGプロシージャの例外

例外

説明

ORA-23323

引数値が長すぎます。

TRANSACTIONプロシージャ

このプロシージャは、新しい遅延トランザクションの開始を示します。このコールを省略した場合、DBMS_DEFER.CALLへの最初のコールが、新しいトランザクションの開始とみなされます。

構文

DBMS_DEFER.TRANSACTION (
nodes  IN   node_list_t);

注意:
このプロシージャはオーバーロードされています。入力パラメータがない場合の動作は、入力パラメータがある場合の動作と似ていますが、前者では、ノード・パラメータのノードではなく、DEFDEFAULTDEST ビューのnodesを使用します。

パラメータ

表12-8 TRANSACTIONプロシージャのパラメータ

パラメータ

説明

nodes

トランザクションの遅延コールを伝播する、完全修飾されたデータベース名のPL/SQL連想配列です。表の索引付けは、1の位置から始まり、NULLエントリが見つかるまで、またはno_data_found例外が発生するまで続行されます。表内のデータには、大文字と小文字の区別がありません。

例外

表12-9 TRANSACTIONプロシージャの例外

例外

説明

ORA-23304 (malformedcall)

前のトランザクションの形式が正しくなかったか、または前のトランザクションが正常に終了しませんでした。

ORA-23319

パラメータ値が無効です。

ORA-23352

ノード・リストに重複が存在するときに、DBMS_DEFER.CALLによって発生します。

13 DBMS_DEFER_QUERY

DBMS_DEFER_QUERYは、ビューを通じて公開されていない遅延トランザクション・キュー・データの問合せを可能にします。

この章には、次の項が含まれます。

- DBMS_DEFER_QUERYサブプログラムの概要

DBMS_DEFER_QUERYサブプログラムの概要

表13-1 DBMS_DEFER_QUERYパッケージのサブプログラム

サブプログラム

説明

「GET_ARG_TYPEファンクション」

遅延コールの引数の形式を判定します。

「GET_ARG_TYPEファンクション」

遅延コールの引数のタイプを判定します。

「GET_CALL_ARGSプロシージャ」

指定されたコールの様々な引数のテキスト・バージョンを戻します。

「GET_datatype_ARGファンクション」

遅延コールの引数値を判定します。

「GET_OBJECT_NULL_VECTOR_ARGファンクション」

列オブジェクトのタイプ情報を戻します。

GET_ARG_FORMファンクション

このファンクションは、遅延コール・パラメータのキャラクタ・セット・フォームを戻します。

関連項目:
Oracle Enterprise ManagerのAdvanced Replicationインタフェースでの遅延トランザクションおよびエラー・トランザクションの表示の詳細は、Advanced Replicationインタフェースのオンライン・ヘルプを参照してください。

構文

DBMS_DEFER_QUERY.GET_ARG_FORM (
callno                IN   NUMBER,
arg_no                IN   NUMBER,
deferred_tran_id      IN   VARCHAR2)
RETURN NUMBER;

パラメータ

表13-2 GET_ARG_FORMファンクションのパラメータ

パラメータ

説明

callno

DEFCALLビューからのコール識別子です。

arg_no

コールの引数リスト内のパラメータの位置です。指定できるパラメータの位置は、1からコール内のパラメータの数までです。

deferred_tran_id

遅延トランザクションの識別子です。

例外

表13-3 GET_ARG_FORMファンクションの例外

例外

説明

NO_DATA_FOUND

入力パラメータが遅延コールのパラメータに対応しません。

戻り値

表13-4 GET_ARG_FORMファンクションの戻り値

定数戻り値

戻り値

可能なデータ型

DBMS_DEFER_QUERY.ARG_FORM_NONE

0

DATE
NUMBER
ROWID
RAW
BLOB
User-defined types

DBMS_DEFER_QUERY.ARG_FORM_IMPLICIT

1

CHAR
VARCHAR2
CLOB

DBMS_DEFER_QUERY.ARG_FORM_NCHAR

2

NCHAR
NVARCHAR2
NCLOB

GET_ARG_TYPEファンクション

このファンクションは、遅延コールの引数のタイプを判定します。遅延リモート・プロシージャ・コール(Remote Procedure Call: RPC)パラメータのタイプが戻されます。

関連項目:
Oracle Enterprise ManagerのAdvanced Replicationインタフェースでの遅延トランザクションおよびエラー・トランザクションの表示の詳細は、Advanced Replicationインタフェースのオンライン・ヘルプを参照してください。

構文

DBMS_DEFER_QUERY.GET_ARG_TYPE (
callno            IN   NUMBER,
arg_no            IN   NUMBER,
deferred_tran_id  IN   VARCHAR2)
RETURN NUMBER;

パラメータ

表13-5 GET_ARG_TYPEファンクションのパラメータ

パラメータ

説明

callno

遅延リモート・プロシージャ・コールのDEFCALLビューから渡される識別番号です。

arg_no

タイプを判定するコールへの引数の数値的な位置です。プロシージャへの最初の引数は、1の位置にあります。

deferred_tran_id

遅延トランザクションの識別子です。

例外

表13-6 GET_ARG_TYPEファンクションの例外

例外

説明

NO_DATA_FOUND

入力パラメータが遅延コールのパラメータに対応しません。

戻り値

表13-7 GET_ARG_TYPEファンクションの戻り値

定数戻り値

戻り値

対応するデータ型

DBMS_DEFER_QUERY.ARG_TYPE_VARCHAR2

1

VARCHAR2

DBMS_DEFER_QUERY.ARG_TYPE_NUM

2

NUMBER

DBMS_DEFER_QUERY.ARG_TYPE_ROWID

11

ROWID

DBMS_DEFER_QUERY.ARG_TYPE_DATE

12

DATE

DBMS_DEFER_QUERY.ARG_TYPE_RAW

23

RAW

DBMS_DEFER_QUERY.ARG_TYPE_CHAR

96

CHAR

DBMS_DEFER_QUERY.ARG_TYPE_ANYDATA

109

ANYDATA

DBMS_DEFER_QUERY.ARG_TYPE_CLOB

112

CLOB

DBMS_DEFER_QUERY.ARG_TYPE_BLOB

113

BLOB

DBMS_DEFER_QUERY.ARG_TYPE_BFIL

114

BFILE

DBMS_DEFER_QUERY.ARG_TYPE_OBJECT_NULL_VECTOR

121

OBJECT_NULL_VECTOR

DBMS_DEFER_QUERY.ARG_TYPE_TIMESTAMP

180

TIMESTAMP

DBMS_DEFER_QUERY.ARG_TYPE_TSTZ

181

TSTZ

DBMS_DEFER_QUERY.ARG_TYPE_IYM

182

IYM

DBMS_DEFER_QUERY.ARG_TYPE_IDS

183

IDS

DBMS_DEFER_QUERY.ARG_TYPE_TSLTZ

231

TSLTZ

注意:

- ANYDATAデータ型は、ユーザー定義型のオブジェクト・タイプ、コレクションおよびREFをサポートしています。ANYDATAデータ型の詳細は、『Oracle Database SQL言語リファレンス』および『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください。

- このファンクションは日時データ型および期間データ型の略称を使用します。たとえば、TIMESTAMP WITH TIME ZONEデータ型にはTSTZが使用されます。これらの略称の詳細は、「日時データ型および期間データ型の略称」を参照してください。

GET_CALL_ARGSプロシージャ

このプロシージャは、指定されたコールの様々な引数のテキスト・バージョンを戻します。テキスト・バージョンは最初の2000バイトに制限されます。

関連項目:

- 「GET_datatype_ARGファンクション」

- ANYDATAデータ型の詳細は、『Oracle Database SQL言語リファレンス』および『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください。

構文

DBMS_DEFER_QUERY.GET_CALL_ARGS (
callno    IN  NUMBER,
startarg  IN  NUMBER := 1,
argcnt    IN  NUMBER,
argsize   IN  NUMBER,
tran_db   IN  VARCHAR2,
tran_id   IN  VARCHAR2,
date_fmt  IN  VARCHAR2,
types     OUT TYPE_ARY,
forms     OUT TYPE_ARY,
vals      OUT VAL_ARY);

DBMS_DEFER_QUERY.GET_CALL_ARGS (
callno         IN  NUMBER,
startarg       IN  NUMBER := 1,
argcnt         IN  NUMBER,
argsize        IN  NUMBER,
tran_id        IN  VARCHAR2,
date_fmt       IN  VARCHAR2,
time_fmt       IN  VARCHAR2,
ttz_fmt        IN  VARCHAR2,
timestamp_fmt  IN  VARCHAR2,
tstz_fmt       IN  VARCHAR2,
types          OUT TYPE_ARY,
forms          OUT TYPE_ARY,
vals           OUT VAL_ARY);

DBMS_DEFER_QUERY.GET_CALL_ARGS (
callno         IN  NUMBER,
startarg       IN  NUMBER := 1,
argcnt         IN  NUMBER,
argsize        IN  NUMBER,
tran_id        IN  VARCHAR2,
date_fmt       IN  VARCHAR2,
time_fmt       IN  VARCHAR2,
ttz_fmt        IN  VARCHAR2,
timestamp_fmt  IN  VARCHAR2,
tstz_fmt       IN  VARCHAR2,
tsltz_fmt      IN  VARCHAR2,
types          OUT TYPE_ARY,
forms          OUT TYPE_ARY,
vals           OUT VAL_ARY);

注意:
このプロシージャはオーバーロードされています。

パラメータ

表13-8 GET_CALL_ARGSプロシージャのパラメータ

パラメータ

説明

callno

遅延リモート・プロシージャ・コール(RPC)のDEFCALLビューから渡される識別番号です。

startarg

記述される最初の引数の数値的な位置です。

argcnt

コール内の引数の数です。

argsize

戻される引数の最大サイズです。

tran_db

トランザクションが開始されたデータベースのグローバル名です。

tran_id

遅延トランザクションの識別子です。

date_fmt

戻される日付の形式です。

time_fmt

戻される時間の形式です。

ttz_fmt

タイムゾーンを含む、戻される時間の形式です。

timestamp_fmt

戻されるタイムスタンプの形式です。

tstz_fmt

タイムゾーンを含む、戻されるタイムスタンプの形式です。

tsltz_fmt

ローカル・タイムゾーンを含む、戻されるタイムスタンプの形式です。

types

引数のタイプを含む配列です。

forms

引数のキャラクタ・セット形式を含む配列です。

vals

テキスト形式の引数値を含む配列です。

例外

表13-9 GET_CALL_ARGSプロシージャの例外

例外

説明

NO_DATA_FOUND

入力パラメータが遅延コールのパラメータに対応しません。

GET_datatype_ARG ファンクション

このファンクションは、遅延コールの引数値を判定します。

ANYDATA型は、ユーザー定義型のオブジェクト型、コレクションおよびREFをサポートしています。このファンクションがサポートする型には、DBMS_DEFERパッケージ内のANYDATA_ARGプロシージャでエンキューできないものもあります。

型引数に戻されるテキストには、型所有者、型名、型バージョン、長さ、精度、スケール、キャラクタ・セット識別子、キャラクタ・セット・フォームおよびコレクションの要素数またはオブジェクト型の属性数の値があります。これらの値はコロン(:)で区切られます。

関連項目:

- 「datatype_ARGプロシージャ」

- Oracle Enterprise ManagerのAdvanced Replicationインタフェースでの遅延トランザクションおよびエラー・トランザクションの表示の詳細は、Advanced Replicationインタフェースのオンライン・ヘルプを参照してください。

- ANYDATAデータ型の詳細は、『Oracle Database SQL言語リファレンス』および『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください。

- このファンクションは日時データ型および期間データ型の略称を使用します。たとえば、TIMESTAMP WITH TIME ZONEデータ型にはTSTZが使用されます。これらの略称の詳細は、「日時データ型および期間データ型の略称」を参照してください。

構文

取得する引数値のタイプに応じて、該当するファンクションの構文は次のとおりです。これらのファンクションでは、指定された引数の値が戻されます。

DBMS_DEFER_QUERY.GET_datatype_ARG (
callno             IN   NUMBER,
arg_no             IN   NUMBER,
deferred_tran_id   IN   VARCHAR2 DEFAULT NULL)
RETURN datatype;

datatypeは次のとおりです。

{ ANYDATA
| NUMBER
| VARCHAR2
| CHAR
| DATE
| RAW
| ROWID
| BLOB
| CLOB
| NCLOB
| NCHAR
| NVARCHAR2
| IDS
| IYM
| TIMESTAMP
| TSLTZ
| TSTZ }

パラメータ

表13-10 GET_datatype_ARGファンクションのパラメータ

パラメータ

説明

callno

遅延リモート・プロシージャ・コールのDEFCALLビューから渡される識別番号です。

arg_no

値を判定するコールへの引数の数値的な位置です。プロシージャへの最初の引数は、1の位置にあります。

deferred_tran_id

遅延トランザクションの識別子です。GET_ARG_TYPEファンクションに渡された、直前のトランザクション識別子が設定されます。デフォルトではNULLです。

例外

表13-11 GET_datatype_ARGファンクションの例外

例外

説明

NO_DATA_FOUND

入力パラメータが遅延コールのパラメータに対応しません。

ORA-26564

入力パラメータが、指定された型でもANYDATA型がサポートする型でもありません。

GET_OBJECT_NULL_VECTOR_ARGファンクション

このファンクションは、型所有者、名前およびハッシュコードを含む列オブジェクトのタイプ情報を戻します。

構文

DBMS_DEFER_QUERY.GET_OBJECT-NULL_VECTOR_ARG (
callno                IN   NUMBER,
arg_no                IN   NUMBER,
deferred_tran_id      IN   VARCHAR2)
RETURN SYSTEM.REPCAT$_OBJECT_NULL_VECTOR;

パラメータ

表13-12 GET_OBJECT_NULL_VECTOR_ARGファンクションのパラメータ

パラメータ

説明

callno

DEFCALLビューからのコール識別子です。

arg_no

コールの引数リスト内のパラメータの位置です。指定できるパラメータの位置は、1からコール内のパラメータの数までです。

deferred_tran_id

遅延トランザクションの識別子です。

例外

表13-13 GET_OBJECT_NULL_VECTOR_ARGファンクションの例外

例外

説明

NO_DATA_FOUND

入力パラメータが遅延コールのパラメータに対応しません。

ORA-26564

パラメータがobject_null_vector型ではありません。

戻り値

表13-14 GET_OBJECT_NULL_VECTOR_ARGファンクションの戻り値

戻り値

型定義

SYSTEM.REPCAT$_OBJECT_NULL_VECTOR型

CREATE TYPE
SYSTEM.REPCAT$_OBJECT_NULL_VECTOR
AS OBJECT (
type_owner      VARCHAR2(30),
type_name       VARCHAR2(30),
type_hashcode   RAW(17),
null_vector     RAW(2000));

14 DBMS_DEFER_SYS

DBMS_DEFER_SYSプロシージャは、デフォルトのレプリケーション・ノード・リストを管理します。このパッケージは、レプリケート・トランザクション遅延リモート・プロシージャ・コール機能へのシステム管理者用インタフェースです。管理者およびレプリケーション・デーモンは、この機能を使用して、リモート・ノードのキューに入れられたトランザクションを実行でき、さらに管理者は、リモート・コールの宛先のノードを制御できます。

この章には、次の項が含まれます。

- DBMS_DEFER_SYSサブプログラムの概要

DBMS_DEFER_SYSサブプログラムの概要

表14-1 DBMS_DEFER_SYSパッケージのサブプログラム

サブプログラム

説明

「ADD_DEFAULT_DESTプロシージャ」

接続先データベースをDEFDEFAULTDESTビューに追加します。

「CLEAR_PROP_STATISTICSプロシージャ」

DEFSCHEDULEデータ・ディクショナリ・ビューの伝播統計を消去します。

「DELETE_DEFAULT_DESTプロシージャ」

接続先データベースをDEFDEFAULTDESTビューから削除します。

「DELETE_DEF_DESTINATIONプロシージャ」

接続先データベースをDEFSCHEDULEビューから削除します。

「DELETE_ERRORプロシージャ」

トランザクションをDEFERRORビューから削除します。

「DELETE_TRANプロシージャ」

トランザクションをDEFTRANDESTビューから削除します。

「DISABLEDファンクション」

カレント・サイトから指定されたサイトへの、遅延トランザクション・キューの伝播が有効になっているかどうかを判定します。

EXCLUDE_PUSHファンクション

遅延トランザクションPUSHを防ぐ排他ロックを取得します。

「EXECUTE_ERRORプロシージャ」

正常に終了しなかった遅延トランザクションを、トランザクションの元の受信者のセキュリティ・コンテキストで再実行します。

「EXECUTE_ERROR_AS_USERプロシージャ」

正常に終了しなかった遅延トランザクションを、このプロシージャを実行するユーザーのセキュリティ・コンテキストで再実行します。

「PURGEファンクション」

カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューから、プッシュされたトランザクションをパージします。

「PUSHファンクション」

カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延リモート・プロシージャ・コール・キューを、強制的にリモート・サイトへプッシュします。

「REGISTER_PROPAGATORプロシージャ」

指定されたユーザーを、ローカル・データベースのプロパゲータとして登録します。

「SCHEDULE_PURGEプロシージャ」

カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューから、プッシュされたトランザクションをパージするジョブをスケジュールします。

「SCHEDULE_PUSHプロシージャ」

遅延トランザクション・キューをリモート・サイトにプッシュするジョブをスケジュールします。

「SET_DISABLEDプロシージャ」

カレント・サイトから、指定された接続先サイトへの遅延トランザクション・キューの伝播を、使用禁止または使用可能にします。

「UNREGISTER_PROPAGATORプロシージャ」

プロパゲータとしてのユーザーの登録を、ローカル・データベースから削除します。

「UNSCHEDULE_PURGEプロシージャ」

マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューからの、プッシュされたトランザクションの自動パージを中止します。

「UNSCHEDULE_PUSHプロシージャ」

マスター・サイトまたはマテリアライズド・ビュー・サイトからリモート・サイトへの、遅延トランザクション・キューの自動プッシュを中止します。

ADD_DEFAULT_DESTプロシージャ

このプロシージャは、接続先データベースをDEFDEFAULTDESTデータ・ディクショナリ・ビューに追加します。

構文

DBMS_DEFER_SYS.ADD_DEFAULT_DEST (
dblink   IN   VARCHAR2);

パラメータ

表14-2 ADD_DEFAULT_DESTプロシージャのパラメータ

パラメータ

説明

dblink

DEFDEFAULTDESTビューに追加するノードの、完全修飾されたデータベース名です。

例外

表14-3 ADD_DEFAULT_DESTプロシージャの例外

例外

説明

ORA-23352

指定されたdblinkは、デフォルトのリストにすでに存在しています。

CLEAR_PROP_STATISTICSプロシージャ

このプロシージャは、DEFSCHEDULEデータ・ディクショナリ・ビューの伝播統計を消去します。このプロシージャが正常に実行されると、このビューのすべての統計は0(ゼロ)に戻され、新しく統計収集が開始されます。

特に、このプロシージャはDEFSCHEDULEデータ・ディクショナリ・ビューの次の列からの統計を消去します。

- TOTAL_TXN_COUNT

- AVG_THROUGHPUT

- AVG_LATENCY

- TOTAL_BYTES_SENT

- TOTAL_BYTES_RECEIVED

- TOTAL_ROUND_TRIPS

- TOTAL_ADMIN_COUNT

- TOTAL_ERROR_COUNT

- TOTAL_SLEEP_TIME

構文

DBMS_DEFER_SYS.CLEAR_PROP_STATISTICS (
dblink   IN   VARCHAR2);

パラメータ

表14-4 CLEAR_PROP_STATISTICSプロシージャのパラメータ

パラメータ

説明

dblink

統計を消去するノードの、完全修飾されたデータベース名です。消去される統計は、現在のノードからdblinkに指定されたノードへの遅延トランザクションの伝播に関する統計です。

DELETE_DEFAULT_DESTプロシージャ

このプロシージャは、接続先データベースをDEFDEFAULTDESTビューから削除します。

構文

DBMS_DEFER_SYS.DELETE_DEFAULT_DEST (
dblink   IN   VARCHAR2);

パラメータ

表14-5 DELETE_DEFAULT_DESTプロシージャのパラメータ

パラメータ

説明

dblink

DEFDEFAULTDESTビューから削除するノードの、完全修飾されたデータベース名です。ビューでこのdblinkが見つからない場合、削除作業は実行されません。

DELETE_DEF_DESTINATIONプロシージャ

このプロシージャは、接続先データベースをDEFSCHEDULEビューから削除します。

構文

DBMS_DEFER_SYS.DELETE_DEF_DESTINATION (
destination   IN   VARCHAR2,
force         IN   BOOLEAN := FALSE);

パラメータ

表14-6 DELETE_DEF_DESTINATIONプロシージャのパラメータ

パラメータ

説明

destination

DEFSCHEDULEビューから削除する接続先の完全修飾されたデータベース名です。ビューでこの接続先が見つからない場合、削除作業は実行されません。

force

値がTRUEに設定されていると、すべての安全チェックが無視され、接続先が削除されます。

DELETE_ERRORプロシージャ

このプロシージャは、DEFERRORビューからトランザクションを削除します。

構文

DBMS_DEFER_SYS.DELETE_ERROR(
deferred_tran_id     IN   VARCHAR2,
destination          IN   VARCHAR2);

パラメータ

表14-7 DELETE_ERRORプロシージャのパラメータ

パラメータ

説明

deferred_tran_id

DEFERRORビューから削除する遅延トランザクションの、DEFERRORビューから渡される識別番号です。このパラメータがNULLの場合、他のパラメータの要件に一致するすべてのトランザクションが削除されます。

destination

トランザクションが初めにキューに入れられたデータベースのDEFERRORビューから渡される、完全修飾されたデータベース名です。このパラメータがNULLの場合、他のパラメータの要件に一致するすべてのトランザクションが、DEFERRORビューから削除されます。

DELETE_TRAN プロシージャ

このプロシージャは、DEFTRANDESTビューからトランザクションを削除します。他のDEFTRANDESTまたはDEFERRORエントリがない場合、トランザクションはDEFTRANビューとDEFCALLビューからも削除されます。

構文

DBMS_DEFER_SYS.DELETE_TRAN (
deferred_tran_id     IN   VARCHAR2,
destination          IN   VARCHAR2);

パラメータ

表14-8 DELETE_TRANプロシージャのパラメータ

パラメータ

説明

deferred_tran_id

削除する遅延トランザクションのDEFTRANビューから渡される識別番号です。値がNULLの場合、他のパラメータの要件に一致するすべてのトランザクションが削除されます。

destination

トランザクションが初めにキューに入れられたデータベースのDEFTRANDESTビューから渡される、完全修飾されたデータベース名です。値がNULLの場合、他のパラメータの要件に一致するすべてのトランザクションが削除されます。

DISABLEDファンクション

このファンクションは、カレント・サイトから指定されたサイトへの、遅延トランザクション・キューの伝播が有効になっているかどうかを判定します。指定された接続先に対して遅延リモート・プロシージャ・コール(Remote Procedure Call: RPC)のキューが使用禁止になっている場合、DISABLEDファンクションによってTRUEが戻されます。

構文

DBMS_DEFER_SYS.DISABLED (
destination  IN   VARCHAR2)
RETURN BOOLEAN;

パラメータ

表14-9 DISABLEDファンクションのパラメータ

パラメータ

説明

destination

伝播ステータスをチェックするノードの、完全修飾されたデータベース名です。

例外

表14-10 DISABLEDファンクションの例外

例外

説明

NO_DATA_FOUND

指定されたdestinationがDEFSCHEDULEビューにありません。

戻り値

表14-11 DISABLEDファンクションの戻り値

値

説明

TRUE

カレント・サイトからこのサイトへの伝播は使用禁止になっています。

FALSE

カレント・サイトからこのサイトへの伝播は有効になっています。

EXCLUDE_PUSHファンクション

このファンクションは、遅延トランザクションPUSHを防ぐ排他ロックを取得します(シリアルまたはパラレル)。このファンクションは、ロックの取得時にコミットを実行します。ロックはRELEASE_ON_COMMIT => TRUEで取得されるため、次のコミット後に、遅延トランザクション・キューのプッシュを再開できます。

構文

DBMS_DEFER_SYS.EXCLUDE_PUSH (
timeout   IN   INTEGER)
RETURN INTEGER;

パラメータ

表14-12 EXCLUDE_PUSHファンクションのパラメータ

パラメータ

説明

timeout

タイムアウトを秒で設定します。エラーが発生したか、またはPUSHが行われているために、設定された期間内にロックが取得されない場合は、値1が戻されます。タイムアウトの値をDBMS_LOCK.MAXWAITに設定すると、無期限に待機します。

戻り値

表14-13 EXCLUDE_PUSHファンクションの戻り値

値

説明

0

ロックは正常に取得されました。

1

タイムアウトにより、ロックは取得されませんでした。

2

デッドロックにより、ロックは取得されませんでした。

4

ロックはすでに取得されています。

EXECUTE_ERRORプロシージャ

このプロシージャは、正常に終了しなかった遅延トランザクションを、トランザクションの元の受信者のセキュリティ・コンテキストで再実行します。

構文

DBMS_DEFER_SYS.EXECUTE_ERROR (
deferred_tran_id IN   VARCHAR2,
destination      IN   VARCHAR2);

パラメータ

表14-14 EXECUTE_ERRORプロシージャのパラメータ

パラメータ

説明

deferred_tran_id

再実行する遅延トランザクションのDEFERRORビューから渡される識別番号です。これがNULLの場合、destinationへのキューに入れられているすべてのトランザクションが再実行されます。

destination

トランザクションが初めにキューに入れられたデータベースのDEFERRORビューから渡される、完全修飾されたデータベース名です。NULLは指定できません。指定したデータベース名が完全修飾されていない場合や無効の場合、エラーは発生しません。

例外

表14-15 EXECUTE_ERRORプロシージャの例外

例外

説明

ORA-24275 error

NULLパラメータとNULL以外のパラメータの無効な組合せが使用されています。

badparam

パラメータ値が欠落しているか、または無効です(たとえば、destinationがNULL)。

missinguser

無効なユーザーです。

EXECUTE_ERROR_AS_USER プロシージャ

このプロシージャは、正常に終了しなかった遅延トランザクションを再実行します。各トランザクションは、接続しているユーザーのセキュリティ・コンテキストで実行されます。

構文

DBMS_DEFER_SYS.EXECUTE_ERROR_AS_USER (
deferred_tran_id IN   VARCHAR2,
destination      IN   VARCHAR2);

パラメータ

表14-16 EXECUTE_ERROR_AS_USERプロシージャのパラメータ

パラメータ

説明

deferred_tran_id

再実行する遅延トランザクションのDEFERRORビューから渡される識別番号です。これがNULLの場合、destinationへのキューに入れられているすべてのトランザクションが再実行されます。

destination

トランザクションが初めにキューに入れられたデータベースのDEFERRORビューから渡される、完全修飾されたデータベース名です。NULLは指定できません。

例外

表14-17 EXECUTE_ERROR_AS_USERプロシージャの例外

例外

説明

ORA-24275 error

NULLパラメータとNULL以外のパラメータの無効な組合せが使用されています。

badparam

パラメータ値が欠落しているか、または無効です(たとえば、destinationがNULL)。

missinguser

無効なユーザーです。

PURGEファンクション

このファンクションは、カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューから、プッシュされたトランザクションをパージします。

構文

DBMS_DEFER_SYS.PURGE (
purge_method         IN  BINARY_INTEGER := purge_method_quick,
rollback_segment     IN  VARCHAR2       := NULL,
startup_seconds      IN  BINARY_INTEGER := 0,
execution_seconds    IN  BINARY_INTEGER := seconds_infinity,
delay_seconds        IN  BINARY_INTEGER := 0,
transaction_count    IN  BINARY_INTEGER := transactions_infinity,
write_trace          IN  BOOLEAN        := NULL);
RETURN BINARY_INTEGER;

パラメータ

表14-18 PURGEファンクションのパラメータ

パラメータ

説明

purge_method

遅延トランザクション・キューのパージ方法を制御します。purge_method_quickはコストを低く抑えられますが、purge_method_preciseの方が精度が高くなります。

purge_method_quickを使用するには、次のように指定します。

dbms_defer_sys.purge_method_quick

purge_method_preciseを使用するには、次のように指定します。

dbms_defer_sys.purge_method_precise

purge_method_quickを使用する場合は、正常にプッシュされた遅延トランザクションおよび遅延プロシージャ・コールが、パージされるまで、それぞれDEFTRANおよびDEFCALLデータ・ディクショナリ・ビューに予想以上に長時間保持されることがあります。詳細は、「使用上の注意」を参照してください。

rollback_segment

パージに使用するロールバック・セグメントの名前、またはデフォルトのNULLです。

startup_seconds

同じ遅延トランザクション・キューの前のパージを待つ最大秒数です。

execution_seconds

値が0(ゼロ)より大きい場合、指定された実秒数後に、パージが完全に停止します。

delay_seconds

delay_secondsの間、遅延トランザクション・キューにパージするトランザクションがなくなると、パージが完全に停止します。

transaction_count

値が0(ゼロ)より大きい場合、transaction_countの数だけトランザクションがパージされると、完全に停止します。

write_trace

値がTRUEに設定されている場合、PURGEファンクションから戻された結果値が、サーバーのトレース・ファイルに記録されます。値がFALSEに設定されている場合は、結果値が記録されません。

戻り値

表14-19 PURGEファンクションの戻り値

値

説明

result_ok

OKです。delay_secondsの経過後に終了しました。

result_startup_seconds

スタート時にロック・タイムアウトにより終了しました。

result_execution_seconds

execution_secondsの超過により終了しました。

result_transaction_count

transaction_countの超過により終了しました。

result_errors

エラー発生後に終了しました。

result_split_del_order_limit

排他モードでエンキューの取得の失敗後に終了しました。このリターン・コードが戻された場合は、パージを再試行してください。問題が解決しない場合は、Oracleサポート・サービスまでお問い合せください。

result_purge_disabled

静止せずに新しいマスター・サイトを追加するときの同期のため、キューのパージが内部で使用禁止になっています。

例外

表14-20 PURGEファンクションの例外

例外

説明

argoutofrange

パラメータ値が有効範囲外です。

executiondisabled

パージの実行が使用禁止になっています。

defererror

内部エラーが発生しました。

使用上の注意

DBMS_DEFER_SYS.PURGEファンクションのpurge_methodパラメータにpurge_method_quickを指定すると、遅延トランザクションおよび遅延プロシージャ・コールが正常にプッシュされた後、それぞれDEFTRANおよびDEFCALLデータ・ディクショナリ・ビューに保持されることがあります。これは、複数のデータベース・リンクがあるレプリケーション環境で、1つのデータベース・リンクのみに対してプッシュが実行された場合に発生します。

遅延トランザクションおよび遅延プロシージャ・コールをパージするには、次のいずれかを実行します。

- purge_method_quickではなく、purge_methodパラメータのpurge_method_preciseを使用します。purge_method_preciseを使用するとコストは増大しますが、遅延トランザクションおよびプロシージャ・コールは、正常にプッシュされた後で確実にパージされます。

- purge_methodパラメータにpurge_method_quickを指定して、遅延トランザクションをすべてのデータベース・リンクにプッシュします。遅延トランザクションおよび遅延プロシージャ・コールは、最後のデータベース・リンクに正常にプッシュされた時点でパージされます。

PUSHファンクション

このファンクションは、カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延リモート・プロシージャ・コール(RPC)・キューを、強制的にリモート・サイトへプッシュ(伝播)します。シリアル伝播またはパラレル伝播のいずれかが使用されます。

構文

DBMS_DEFER_SYS.PUSH (
destination          IN  VARCHAR2,
parallelism          IN  BINARY_INTEGER := 0,
heap_size            IN  BINARY_INTEGER := 0,
stop_on_error        IN  BOOLEAN        := FALSE,
write_trace          IN  BOOLEAN        := FALSE,
startup_seconds      IN  BINARY_INTEGER := 0,
execution_seconds    IN  BINARY_INTEGER := seconds_infinity,
delay_seconds        IN  BINARY_INTEGER := 0,
transaction_count    IN  BINARY_INTEGER := transactions_infinity,
delivery_order_limit IN  NUMBER         := delivery_order_infinity)
RETURN BINARY_INTEGER;

パラメータ

表14-21 PUSHファンクションのパラメータ

パラメータ

説明

destination

変更を転送するマスター・サイトまたはマテリアライズド・ビュー・サイトの、完全修飾されたデータベース名です。

parallelism

0(ゼロ)はシリアル伝播を指定します。

n > 1は、n個のパラレル処理のパラレル伝播を指定します。

1は、パラレル処理を1つのみ使用するパラレル伝播を指定します。

heap_size

パラレル伝播スケジュールのために同時に検査されるトランザクションの最大数です。最適なパフォーマンスを実現するデフォルト値が、自動的に計算されます。

注意: Oracleサポート・サービスから指示された場合を除き、パラメータを設定しないでください。

stop_on_error

値がFALSEの場合(デフォルト)、競合などのエラーが発生しても処理が続行されます。値がTRUEの場合、接続先サイトでのエラーの発生が最初に指摘されたときに伝播を中止します。

注意: stop_on_errorがTRUEに設定され、parallelismパラメータが0(ゼロ)より大きい場合、トランザクションは、エラーの発生後も一定期間伝播および適用されます。

write_trace

値がTRUEの場合、ファンクションから戻された結果値が、サーバーのトレース・ファイルに記録されます。値がFALSEに設定されている場合は、結果値が記録されません。

startup_seconds

同じ接続先への前のプッシュを待つ最大秒数です。

execution_seconds

値が0(ゼロ)より大きい場合、指定された実秒数後に、プッシュが完全に停止します。transaction_countおよびexecution_secondsが0(ゼロ)の場合(デフォルト)、キューにトランザクションがなくなるまで、トランザクションが実行されます。

execution_secondsパラメータは、操作が開始可能な期間のみを制御します。リモート・サイトのトランザクションに必要な時間は含まれません。したがって、execution_secondsパラメータは、リモート・サイトへのトランザクションの伝播を正確に制御して停止するためのものではありません。正確に制御する必要がある場合は、transaction_countまたはdelivery_orderパラメータを使用します。

delay_seconds

キューが空でも、指定された秒数が経過するまでプッシュは終了しません。タイトなループからPUSHがコールされるとき、実行オーバーヘッドを縮小するのに便利です。

transaction_count

値が0(ゼロ)より大きい場合、トランザクションの最大数のプッシュ後に停止します。transaction_countおよびexecution_secondsが0(ゼロ)の場合(デフォルト)、キューにプッシュの必要なトランザクションがなくなるまで、トランザクションが実行されます。

delivery_order_limit

delivery_orderがdelivery_order_limit以上であるトランザクションのプッシュ前に、実行が完全に停止します。

戻り値

表14-22 PUSHファンクションの戻り値

値

説明

result_ok

OKです。delay_secondsの経過後に終了しました。

result_startup_seconds

スタート時にロック・タイムアウトにより終了しました。

result_execution_seconds

execution_secondsの超過により終了しました。

result_transaction_count

transaction_countの超過により終了しました。

result_delivery_order_limit

delivery_order_limitの超過により終了しました。

result_errors

エラー発生後に終了しました。

result_push_disabled

PUSHが内部で使用禁止になりました。通常はこの戻り値は、マスター・グループを静止せずにマスター・グループに新しいマスター・サイトを追加するとき、伝播同期のため、接続先への伝播が内部で使用禁止に設定されたことを意味します。伝播はのちに自動的に使用可能になります。

result_split_del_order_limit

排他モードでエンキューの取得の失敗後に終了しました。このリターン・コードが戻された場合は、プッシュを再試行してください。問題が解決しない場合は、Oracleサポート・サービスまでお問い合せください。

例外

表14-23 PUSHファンクションの例外

例外

説明

incompleteparallelpush

シリアル伝播を実行するには、パラレル伝播を完全に停止する必要があります。

executiondisabled

遅延リモート・プロシージャ・コール(RPC)の実行が、接続先で使用禁止になっています。

crt_err_err

DEFERRORにエントリを作成中、エラーが発生しました。

deferred_rpc_quiesce

レプリケーション・グループのレプリケーション・アクティビティが中断されました。

commfailure

遅延リモート・プロシージャ・コール(RPC)中に通信障害が発生しました。

missingpropagator

プロパゲータが存在しません。

REGISTER_PROPAGATORプロシージャ

このプロシージャは、指定されたユーザーをローカル・データベースのプロパゲータとして登録します。また、指定されたユーザーに(ユーザーがラッパーを作成できるように)次の権限を付与します。

- CREATE SESSION

- CREATE PROCEDURE

- CREATE DATABASE LINK

- EXECUTE ANY PROCEDURE

構文

DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
username  IN  VARCHAR2);

パラメータ

表14-24 REGISTER_PROPAGATORプロシージャのパラメータ

パラメータ

説明

username

ユーザー名です。

例外

表14-25 REGISTER_PROPAGATORプロシージャの例外

例外

説明

missinguser

指定されたユーザーは存在しません。

alreadypropagator

指定されたユーザーはすでにプロパゲータとして登録されています。

duplicatepropagator

他のプロパゲータがすでに登録されています。

SCHEDULE_PURGEプロシージャ

このプロシージャは、カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューから、プッシュされたトランザクションのパージ・ジョブをスケジュールします。1つのパージ・ジョブをスケジュールする必要があります。

関連項目:
このプロシージャを使用した、遅延トランザクション・キューの連続的または定期的なパージのスケジュールの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_DEFER_SYS.SCHEDULE_PURGE (
interval             IN  VARCHAR2,
next_date            IN  DATE,
reset                IN  BOOLEAN        := NULL,
purge_method         IN  BINARY_INTEGER := NULL,
rollback_segment     IN  VARCHAR2       := NULL,
startup_seconds      IN  BINARY_INTEGER := NULL,
execution_seconds    IN  BINARY_INTEGER := NULL,
delay_seconds        IN  BINARY_INTEGER := NULL,
transaction_count    IN  BINARY_INTEGER := NULL,
write_trace          IN  BOOLEAN        := NULL);

パラメータ

表14-26 SCHEDULE_PURGEプロシージャのパラメータ

パラメータ

説明

interval

次のパージの時間を計算するファンクションを指定できます。値はDEFSCHEDULEビューのintervalフィールドに格納され、このビューのnext_dateフィールドの計算に使用します。このパラメータのデフォルト値NULLを使用した場合、このフィールドの値は変更されません。このフィールドに既存の値が設定されていない場合は、NULLで作成されます。このフィールドに値を設定しない場合は、next_dateに値を設定する必要があります。

next_date

サイトのキューから、プッシュされたトランザクションをパージする時間を指定できます。値はDEFSCHEDULEビューのnext_dateフィールドに格納されます。このパラメータのデフォルト値NULLを使用した場合、このフィールドの値は変更されません。このフィールドに既存の値が入っていない場合は、NULLで作成されます。このフィールドに値を設定しない場合は、intervalに値を設定する必要があります。

reset

TRUEに設定すると、LAST_TXN_COUNT、LAST_ERRORおよびLAST_MSGがNULLに設定されます。

purge_method

遅延トランザクション・キューのパージ方法を制御します。purge_method_quickはコストを低く抑えられますが、purge_method_preciseの方が精度が高くなります。

purge_method_quickを使用するには、次のように指定します。

dbms_defer_sys.purge_method_quick

purge_method_preciseを使用するには、次のように指定します。

dbms_defer_sys.purge_method_precise

purge_method_quickを使用する場合は、正常にプッシュされた遅延トランザクションおよび遅延プロシージャ・コールが、パージされるまで、それぞれDEFTRANおよびDEFCALLデータ・ディクショナリ・ビューに予想以上に長時間保持されることがあります。詳細は、「使用上の注意」を参照してください。これらの使用方法はDBMS_DEFER_SYS.PURGEファンクションに関するものですが、DBMS_DEFER_SYS.SCHEDULE_PURGEプロシージャにも適用可能です。

rollback_segment

パージに使用するロールバック・セグメントの名前、またはデフォルトのNULLです。

startup_seconds

同じ遅延トランザクション・キューの前のパージを待つ最大秒数です。

execution_seconds

値が0(ゼロ)より大きい場合、指定された実秒数後に、パージが完全に停止します。

delay_seconds

delay_secondsの間、遅延トランザクション・キューにパージするトランザクションがなくなると、パージが完全に停止します。

transaction_count

値が0(ゼロ)より大きい場合、transaction_countの数だけトランザクションがパージされると、完全に停止します。

write_trace

値がTRUEに設定されている場合、PURGEファンクションから戻された結果値が、サーバーのトレース・ファイルに記録されます。

SCHEDULE_PUSHプロシージャ

このプロシージャは、遅延トランザクション・キューをリモート・サイトにプッシュするジョブをスケジュールします。このプロシージャではCOMMITが実行されます。

関連項目:
このプロシージャを使用した、遅延トランザクション・キューの連続的または定期的なプッシュのスケジュールの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination          IN  VARCHAR2,
interval             IN  VARCHAR2,
next_date            IN  DATE,
reset                IN  BOOLEAN        := FALSE,
parallelism          IN  BINARY_INTEGER := NULL,
heap_size            IN  BINARY_INTEGER := NULL,
stop_on_error        IN  BOOLEAN        := NULL,
write_trace          IN  BOOLEAN        := NULL,
startup_seconds      IN  BINARY_INTEGER := NULL,
execution_seconds    IN  BINARY_INTEGER := NULL,
delay_seconds        IN  BINARY_INTEGER := NULL,
transaction_count    IN  BINARY_INTEGER := NULL);

パラメータ

表14-27 SCHEDULE_PUSHプロシージャのパラメータ

パラメータ

説明

destination

変更を転送するマスター・サイトまたはマテリアライズド・ビュー・サイトの、完全修飾されたデータベース名です。

interval

次のプッシュの時間を計算するファンクションを指定できます。値はDEFSCHEDULEビューのintervalフィールドに格納され、このビューのnext_dateフィールドの計算に使用します。このパラメータのデフォルト値NULLを使用した場合、このフィールドの値は変更されません。このフィールドに既存の値が設定されていない場合は、NULLで作成されます。このフィールドに値を設定しない場合は、next_dateに値を設定する必要があります。

next_date

遅延トランザクションをリモート・サイトにプッシュする時間を指定できます。値はDEFSCHEDULEビューのnext_dateフィールドに格納されます。このパラメータのデフォルト値NULLを使用した場合、このフィールドの値は変更されません。このフィールドに既存の値が設定されていない場合は、NULLで作成されます。このフィールドに値を設定しない場合は、intervalに値を設定する必要があります。

reset

TRUEに設定すると、LAST_TXN_COUNT、LST_ERRORおよびLAST_MSGがNULLに設定されます。

parallelism

0(ゼロ)はシリアル伝播を指定します。

n > 1は、n個のパラレル処理のパラレル伝播を指定します。

1は、パラレル処理を1つのみ使用するパラレル伝播を指定します。

heap_size

パラレル伝播スケジュールのために同時に検査されるトランザクションの最大数です。最適なパフォーマンスを実現するデフォルト値が、自動的に計算されます。

注意: Oracleサポート・サービスから指示された場合を除き、パラメータを設定しないでください。

stop_on_error

値がFALSEの場合(デフォルト)、競合などのエラーが発生しても処理が続行されます。値がTRUEの場合、接続先サイトでのエラーの発生が最初に指摘されたときに伝播を中止します。

注意: stop_on_errorがTRUEに設定され、parallelismパラメータが0(ゼロ)より大きい場合、トランザクションは、エラーの発生後も一定期間伝播および適用されます。

write_trace

値がTRUEの場合、ファンクションから戻された結果値が、サーバーのトレース・ファイルに記録されます。

startup_seconds

同じ接続先への前のプッシュを待つ最大秒数です。

execution_seconds

値が0(ゼロ)より大きい場合、指定された実秒数後に、実行が完全に停止します。transaction_countおよびexecution_secondsが0(ゼロ)の場合(デフォルト)、キューにトランザクションがなくなるまで、トランザクションが実行されます。

delay_seconds

キューが空でも、指定された秒数が経過するまでプッシュは終了しません。タイトなループからPUSHがコールされるとき、実行オーバーヘッドを縮小するのに便利です。

transaction_count

値が0(ゼロ)より大きい場合、トランザクションの最大数のプッシュ後に停止します。transaction_countおよびexecution_secondsが0(ゼロ)の場合(デフォルト)、キューにプッシュの必要なトランザクションがなくなるまで、トランザクションが実行されます。

SET_DISABLEDプロシージャ

カレント・サイトから指定された接続先サイトへの、遅延トランザクション・キューの伝播が使用禁止あるいは使用可能にされます。disabledパラメータがTRUEの場合、指定された接続先への伝播が使用禁止になり、PUSHが呼び出されても遅延リモート・プロシージャ・コール(RPC)キューがプッシュされなくなります。SET_DISABLEDは、指定された接続先へキューをすでにプッシュしているセッションには適用されますが、DBMS_DEFERでキューに追加されているセッションには適用されません。

disabledパラメータがFALSEの場合、指定された接続先への伝播が有効になり、キューはプッシュされませんが、PUSHの呼出しによる指定された接続先へのキューのプッシュが可能になります。disabledパラメータがTRUEかFALSEかに関係なく、設定が他のセッションにも適用されるようにするには、COMMITが必要です。

構文

DBMS_DEFER_SYS.SET_DISABLED (
destination   IN   VARCHAR2,
disabled      IN   BOOLEAN := TRUE,
catchup       IN   RAW := '00',
override      IN   BOOLEAN := FALSE);

パラメータ

表14-28 SET_DISABLEDプロシージャのパラメータ

パラメータ

説明

destination

伝播ステータスを変更するノードの、完全修飾されたデータベース名です。

disabled

デフォルトでは、このパラメータによって、カレント・サイトから指定された接続先への遅延トランザクション・キューの伝播が使用禁止になります。値をFALSEに設定すると、伝播が有効になります。

catchup

マスター・グループを静止せずに新しいマスター・サイトをマスター・グループに追加するための、拡張識別子です。新しいマスター・サイトが接続先です。DEFSCHEDULEデータ・ディクショナリ・ビューの問合せを行い、既存の拡張識別子を検索します。

override

デフォルトのFALSE設定では、disabledパラメータがFALSEに設定されており、Oracle内部で伝播が使用禁止になった場合、cantsetdisabled例外が呼び出されます。

TRUE設定では、同期のために内部で伝播の使用禁止状態が設定されたかどうかは無視され、常にdisabledパラメータの指定どおりの状態の設定が行われます。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

例外

表14-29 SET_DISABLEDプロシージャの例外

例外

説明

NO_DATA_FOUND

指定されたdestinationのDEFSCHEDULEビューには、エントリが見つかりませんでした。

cantsetdisabled

マスター・グループを静止せずにマスター・グループに新しいマスター・サイトを追加している間に、このサイトの使用禁止ステータスは、同期をとるために内部で設定されます。このプロシージャを呼び出す前に、静止しないで新しいマスター・サイトの追加が完了したことを確認してください。

UNREGISTER_PROPAGATORプロシージャ

プロパゲータとしてのユーザーの登録を、ローカル・データベースから削除します。このプロシージャでは、次の処理が行われます。

- 指定されたプロパゲータがDEFPROPAGATORから削除されます。

- REGISTER_PROPAGATORによってユーザーに付与された権限が取り消されます。別個に付与された同一の権限も取り消されます。

- 指定されたプロパゲータのスキーマ内に生成されたラッパーが削除されます。削除されたラッパーには、レプリケーション・カタログで削除済のマークが付けられます。

構文

DBMS_DEFER_SYS.UNREGISTER_PROPAGATOR (
username  IN  VARCHAR2
timeout   IN  INTEGER DEFAULT DBMS_LOCK.MAXWAIT);

パラメータ

表14-30 UNREGISTER_PROPAGATORプロシージャのパラメータ

パラメータ

説明

username

プロパゲータ・ユーザーの名前です。

timeout

タイムアウトを秒で設定します。プロパゲータが稼働中の場合、プロシージャはタイムアウトで指定された時間が経過するまで待機します。デフォルトはDBMS_LOCK.MAXWAITです。

例外

表14-31 UNREGISTER_PROPAGATORプロシージャの例外

パラメータ

説明

missingpropagator

指定されたユーザーはプロパゲータではありません。

propagator_inuse

プロパゲータが稼働中のため、登録を削除できません。後で再度実行してください。

UNSCHEDULE_PURGEプロシージャ

このプロシージャは、マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューからの、プッシュされたトランザクションの自動パージを中止します。

構文

DBMS_DEFER_SYS.UNSCHEDULE_PURGE();

パラメータ

なし

UNSCHEDULE_PUSHプロシージャ

このプロシージャは、マスター・サイトまたはマテリアライズド・ビュー・サイトからリモート・サイトへの、遅延トランザクション・キューの自動プッシュを中止します。

構文

DBMS_DEFER_SYS.UNSCHEDULE_PUSH (
dblink   IN   VARCHAR2);

パラメータ

表14-32 UNSCHEDULE_PUSHプロシージャのパラメータ

パラメータ

説明

dblink

遅延リモート・プロシージャ・コールの定期的な実行スケジュールを変更するデータベースの、完全修飾されたパス名です。

例外

表14-33 UNSCHEDULE_PUSHプロシージャの例外

例外

説明

NO_DATA_FOUND

指定されたdblinkのDEFSCHEDULEビューには、エントリが見つかりませんでした。

15 DBMS_OFFLINE_OG

DBMS_OFFLINE_OGパッケージには、マスター・グループのオフライン・インスタンシエーションのためのパブリックAPIが含まれます。

この章には、次の項が含まれます。

- DBMS_OFFLINE_OGサブプログラムの概要

注意:
このプロシージャは、マルチマスター・レプリケーション環境での、マスター表のオフライン・インスタンシエーションに使用します。
このプロシージャをDBMS_REPCAT_INSTANTIATEパッケージのプロシージャ(デプロイメント・テンプレートのインスタンス化に使用)と混同しないでください。これらのプロシージャの使用方法の詳細は、このパッケージのドキュメントを参照してください。

DBMS_OFFLINE_OGサブプログラムの概要

表15-1 DBMS_OFFLINE_OGパッケージのサブプログラム

サブプログラム

説明

「BEGIN_INSTANTIATIONプロシージャ」

マスター・グループのオフライン・インスタンシエーションを開始します。

「BEGIN_LOADプロシージャ」

オフライン・インスタンシエーションの一環として行われる新しいマスター・サイトへのデータのインポート中、トリガーを使用禁止にします。

「END_INSTANTIATIONプロシージャ」

マスター・グループのオフライン・インスタンシエーションを終了します。

「END_LOADプロシージャ」

オフライン・インスタンシエーションの一環として行われる新しいマスター・サイトへのデータのインポート後、トリガーを再び有効にします。

「RESUME_SUBSET_OF_MASTERSプロシージャ」

マスター・グループのオフライン・インスタンシエーションが行われている間、新しいサイトを除くすべての既存のサイトで、レプリケーション・アクティビティを再開します。

BEGIN_INSTANTIATIONプロシージャ

このプロシージャは、マスター・グループのオフライン・インスタンシエーションを開始します。このプロシージャは、マスター定義サイトからコールする必要があります。

注意:
このプロシージャは、マルチマスター・レプリケーション環境での、マスター表のオフライン・インスタンシエーションに使用します。
このプロシージャをDBMS_REPCAT_INSTANTIATEパッケージのプロシージャ(デプロイメント・テンプレートのインスタンス化に使用)と混同しないでください。これらのプロシージャの使用方法の詳細は、このパッケージのドキュメントを参照してください。

関連項目:
マスター・サイトのオフライン・インスタンシエーションによる、マスター・グループへの新しいマスター・サイトの追加の詳細は、「エクスポート/インポートを使用するオフライン・インスタンシエーションで新しいマスター・サイトを追加」を参照してください。

構文

DBMS_OFFLINE_OG.BEGIN_INSTANTIATION (
gname     IN   VARCHAR2,
new_site  IN   VARCHAR2
fname     IN   VARCHAR2);

パラメータ

表15-2 BEGIN_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

gname

新しいサイトにレプリケートするレプリケーション・グループの名前です。

new_site

レプリケーション・グループをレプリケートする新しいサイトの、完全修飾されたデータベース名です。

fname

このパラメータは内部で使用します。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

例外

表15-3 BEGIN_INSTANTIATIONプロシージャの例外

例外

説明

badargument

レプリケーション・グループまたは新しいマスター・サイトの名前が、NULLまたは空の文字列です。

dbms_repcat.nonmasterdef

このプロシージャは、マスター定義サイトからコールする必要があります。

sitealreadyexists

指定されたサイトは、すでにこのレプリケーション・グループのマスター・サイトになっています。

wrongstate

マスター定義サイトのステータスは、静止中である必要があります。

dbms_repcat.missingrepgroup

gnameは、マスター・グループとしては存在していません。

dbms_repcat.missing_flavor

この例外が発生した場合は、Oracleサポート・サービスまでお問い合せください。

BEGIN_LOADプロシージャ

このプロシージャは、オフライン・インスタンシエーションの一環として行われる新しいマスター・サイトへのデータのインポート中、トリガーを使用禁止にします。このプロシージャは、新しいマスター・サイトからコールする必要があります。

注意:
このプロシージャは、マルチマスター・レプリケーション環境での、マスター表のオフライン・インスタンシエーションに使用します。
このプロシージャをDBMS_REPCAT_INSTANTIATEパッケージのプロシージャ(デプロイメント・テンプレートのインスタンス化に使用)と混同しないでください。これらのプロシージャの使用方法の詳細は、このパッケージのドキュメントを参照してください。

関連項目:
マスター・サイトのオフライン・インスタンシエーションによる、マスター・グループへの新しいマスター・サイトの追加の詳細は、「エクスポート/インポートを使用するオフライン・インスタンシエーションで新しいマスター・サイトを追加」を参照してください。

構文

DBMS_OFFLINE_OG.BEGIN_LOAD (
gname     IN   VARCHAR2,
new_site  IN   VARCHAR2);

パラメータ

表15-4 BEGIN_LOADプロシージャのパラメータ

パラメータ

説明

gname

メンバーをインポートするレプリケーション・グループの名前です。

new_site

レプリケーション・グループ・メンバーをインポートする新しいサイトの、完全修飾されたデータベース名です。

例外

表15-5 BEGIN_LOADプロシージャの例外

例外

説明

badargument

レプリケーション・グループまたは新しいマスター・サイトの名前が、NULLまたは空の文字列です。

wrongsite

このプロシージャは、新しいマスター・サイトからコールする必要があります。

unknownsite

指定されたサイトは、レプリケーション・グループで認識されません。

wrongstate

新しいマスター・サイトのステータスは、静止中である必要があります。

dbms_repcat.missingrepgroup

gnameは、マスター・グループとしては存在していません。

END_INSTANTIATIONプロシージャ

このプロシージャは、マスター・グループのオフライン・インスタンシエーションを終了します。このプロシージャは、マスター定義サイトからコールする必要があります。

注意:
このプロシージャは、マルチマスター・レプリケーション環境での、マスター表のオフライン・インスタンシエーションに使用します。
このプロシージャをDBMS_REPCAT_INSTANTIATEパッケージのプロシージャ(デプロイメント・テンプレートのインスタンス化に使用)と混同しないでください。これらのプロシージャの使用方法の詳細は、このパッケージのドキュメントを参照してください。

関連項目:
マスター・サイトのオフライン・インスタンシエーションによる、マスター・グループへの新しいマスター・サイトの追加の詳細は、「エクスポート/インポートを使用するオフライン・インスタンシエーションで新しいマスター・サイトを追加」を参照してください。

構文

DBMS_OFFLINE_OG.END_INSTANTIATION (
gname     IN  VARCHAR2,
new_site  IN  VARCHAR2);

パラメータ

表15-6 END_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

gname

新しいサイトにレプリケートするレプリケーション・グループの名前です。

new_site

レプリケーション・グループをレプリケートする新しいサイトの、完全修飾されたデータベース名です。

例外

表15-7 END_INSTANTIATIONプロシージャの例外

例外

説明

badargument

レプリケーション・グループまたは新しいマスター・サイトの名前が、NULLまたは空の文字列です。

dbms_repcat.nonmasterdef

このプロシージャは、マスター定義サイトからコールする必要があります。

unknownsite

指定されたサイトは、レプリケーション・グループで認識されません。

wrongstate

マスター定義サイトのステータスは、静止中である必要があります。

dbms_repcat.missingrepgroup

gnameは、マスター・グループとしては存在していません。

END_LOADプロシージャ

このプロシージャは、オフライン・インスタンシエーションの一環として行われる新しいマスター・サイトへのデータのインポート後、トリガーを再び有効にします。このプロシージャは、新しいマスター・サイトからコールする必要があります。

注意:
このプロシージャは、マルチマスター・レプリケーション環境での、マスター表のオフライン・インスタンシエーションに使用します。
このプロシージャをDBMS_REPCAT_INSTANTIATEパッケージのプロシージャ(デプロイメント・テンプレートのインスタンス化に使用)と混同しないでください。これらのプロシージャの使用方法の詳細は、このパッケージのドキュメントを参照してください。

関連項目:
マスター・サイトのオフライン・インスタンシエーションによる、マスター・グループへの新しいマスター・サイトの追加の詳細は、「エクスポート/インポートを使用するオフライン・インスタンシエーションで新しいマスター・サイトを追加」を参照してください。

構文

DBMS_OFFLINE_OG.END_LOAD (
gname     IN   VARCHAR2,
new_site  IN   VARCHAR2
fname     IN   VARCHAR2);

パラメータ

表15-8 END_LOADプロシージャのパラメータ

パラメータ

説明

gname

メンバーのインポートを終了したレプリケーション・グループの名前です。

new_site

レプリケーション・グループ・メンバーをインポートした新しいサイトの、完全修飾されたデータベース名です。

fname

このパラメータは内部で使用します。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

例外

表15-9 END_LOADプロシージャの例外

例外

説明

badargument

レプリケーション・グループまたは新しいマスター・サイトの名前が、NULLまたは空の文字列です。

wrongsite

このプロシージャは、新しいマスター・サイトからコールする必要があります。

unknownsite

指定されたサイトは、レプリケーション・グループで認識されません。

wrongstate

新しいマスター・サイトのステータスは、静止中である必要があります。

dbms_repcat.missingrepgroup

gnameは、マスター・グループとしては存在していません。

dbms_repcat.flavor_noobject

この例外が発生した場合は、Oracleサポート・サービスまでお問い合せください。

dbms_repcat.flavor_contains

この例外が発生した場合は、Oracleサポート・サービスまでお問い合せください。

RESUME_SUBSET_OF_MASTERSプロシージャ

マスター・サイトのオフライン・インスタンシエーションによりマスター・グループに新しいマスター・サイトを追加するとき、オフライン・インスタンシエーション・プロセスの完了に時間がかかる場合があります。このプロシージャは、マスター・グループのオフライン・インスタンシエーションの間、新しいサイトを除くすべての既存のサイトで、レプリケーション・アクティビティを再開します。このプロシージャは、通常DBMS_OFFLINE_OG.BEGIN_INSTANTIATIONプロシージャを実行した後に実行します。このプロシージャは、マスター定義サイトからコールする必要があります。

注意:
このプロシージャは、マルチマスター・レプリケーション環境での、マスター表のオフライン・インスタンシエーションに使用します。
このプロシージャをDBMS_REPCAT_INSTANTIATEパッケージのプロシージャ(デプロイメント・テンプレートのインスタンス化に使用)と混同しないでください。これらのプロシージャの使用方法の詳細は、このパッケージのドキュメントを参照してください。

関連項目:
マスター・サイトのオフライン・インスタンシエーションによる、マスター・グループへの新しいマスター・サイトの追加の詳細は、「エクスポート/インポートを使用するオフライン・インスタンシエーションで新しいマスター・サイトを追加」を参照してください。

構文

DBMS_OFFLINE_OG.RESUME_SUBSET_OF_MASTERS (
gname     IN  VARCHAR2,
new_site  IN  VARCHAR2
override  IN  BOOLEAN := FALSE);

パラメータ

表15-10 RESUME_SUBSET_OF_MASTERSプロシージャのパラメータ

パラメータ

説明

gname

新しいサイトにレプリケートするレプリケーション・グループの名前です。

new_site

レプリケーション・グループをレプリケートする新しいサイトの、完全修飾されたデータベース名です。

override

値がTRUEの場合は、保留になっている管理要求が無視され、各マスターで通常のレプリケーション・アクティビティがリストアされます。overrideパラメータは、緊急の場合のみTRUEに設定します。

値がFALSEの場合は、各マスターで通常のレプリケーション・アクティビティがリストアされます。ただし、そのマスターでgnameに対する管理要求が保留されていない場合にかぎられます。

例外

表15-11 RESUME_SUBSET_OF_MASTERSプロシージャの例外

例外

説明

badargument

レプリケーション・グループまたは新しいマスター・サイトの名前が、NULLまたは空の文字列です。

dbms_repcat.nonmasterdef

このプロシージャは、マスター定義サイトからコールする必要があります。

unknownsite

指定されたサイトは、レプリケーション・グループで認識されません。

wrongstate

マスター定義サイトのステータスは、静止中である必要があります。

dbms_repcat.missingrepgroup

gnameは、マスター・グループとしては存在していません。

16 DBMS_RECTIFIER_DIFF

DBMS_RECTIFIER_DIFFパッケージには、2つのレプリケーション・サイト間の、データの非一貫性の検出および解決に使用されるAPIが含まれています。

この章には、次の項が含まれます。

- DBMS_RECTIFIER_DIFFサブプログラムの概要

注意:
DBMS_COMPARISONパッケージを使用して、データベース・オブジェクト間の相違点を特定し、収束することもできます。

関連項目:

- DBMS_COMPARISONパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

- DBMS_COMPARISONパッケージの使用方法の詳細は、『Oracle Database 2日でデータ・レプリケーションおよび統合ガイド』および『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

DBMS_RECTIFIER_DIFFサブプログラムの概要

表16-1 DBMS_RECTIFIER_DIFFパッケージのサブプログラム

サブプログラム

説明

「DIFFERENCESプロシージャ」

2つの表の相違点を判定します。

「RECTIFYプロシージャ」

2つの表の相違点を解決します。

DIFFERENCESプロシージャ

このプロシージャは、2つの表の相違点を判定します。これは、ネストした表の記憶表を受け入れます。

注意:
このプロシージャは、LOB列やユーザー定義型をベースとする列には使用できません。

構文

DBMS_RECTIFIER_DIFF.DIFFERENCES (
sname1               IN  VARCHAR2,
oname1               IN  VARCHAR2,
reference_site       IN  VARCHAR2 := '',
sname2               IN  VARCHAR2,
oname2               IN  VARCHAR2,
comparison_site      IN  VARCHAR2 := '',
where_clause         IN  VARCHAR2 := '',
{ column_list        IN  VARCHAR2 := '',
| array_columns      IN  DBMS_UTILITY.NAME_ARRAY, }
missing_rows_sname   IN  VARCHAR2,
missing_rows_oname1  IN  VARCHAR2,
missing_rows_oname2  IN  VARCHAR2,
missing_rows_site    IN  VARCHAR2 := '',
max_missing          IN  INTEGER,
commit_rows          IN  INTEGER := 500);

注意:
このプロシージャはオーバーロードされています。column_listパラメータとarray_columnsパラメータは、同時には指定できません。

パラメータ

表16-2 DIFFERENCESプロシージャのパラメータ

パラメータ

説明

sname1

reference_siteのスキーマの名前です。

oname1

reference_siteの表の名前です。

reference_site

参照データベース・サイトの名前です。デフォルトのNULLは、カレント・サイトを示します。

sname2

comparison_siteのスキーマの名前です。

oname2

comparison_siteの表の名前です。

comparison_site

比較データベース・サイトの名前です。デフォルトのNULLは、カレント・サイトを示します。

where_clause

この句を満たす行のみが比較されます。デフォルトのNULLの場合は、すべての行が比較されます。

column_list

2つの表で比較される1つ以上の列名の、カンマ区切りのリストです。カンマの前後には空白を入れません。デフォルトのNULLの場合は、すべての列が比較されます。

array_columns

2つの表で比較される列名の、PL/SQL連想配列です。索引付けは1の位置から始まり、配列の最後の要素はNULLになります。1の位置がNULLの場合は、すべての列が使用されます。

missing_rows_sname

欠落行のある表が含まれるスキーマの名前です。

missing_rows_oname1

comparison_siteの表から欠落しているreference_siteの表の行、およびreference_siteの表から欠落しているcomparison_siteサイトの行の情報が格納される、missing_rows_siteにある既存の表の名前です。

missing_rows_oname2

欠落行の情報が格納されるmissing_rows_siteにある既存の表の名前です。この表には3つの列があります。R_ID列はmissing_rows_oname1表の行のROWIDを示し、PRESENT列は行が存在するサイトの名前を示し、ABSENT列は行が欠落しているサイトの名前を示します。

missing_rows_site

missing_rows_oname1表とmissing_rows_oname2表があるサイトの名前です。デフォルトのNULLは、表がカレント・サイトにあることを示します。

max_missing

missing_rows_oname表に挿入する必要のある行の最大数を指定する整数です。max_missingの行数よりも多く欠落している場合、多くの行がmissing_rows_onameに挿入され、行がさらに欠落しているかどうかを判断せずに、ルーチンが通常に戻ります。このパラメータは、フラグメントがあまりにも異なるために、行が欠落している表に非常に多くのエントリがあり、継続する意味がない場合に役立ちます。max_missingが1未満かNULLの場合に、例外badnumberを発生させます。

commit_rows

COMMITが行われる前に、参照表や比較表に挿入される、または参照表や比較表から削除される行の最大数です。デフォルトでは、500行が挿入または削除された後、COMMITが行われます。空の文字列(' ')やNULLの場合は、1つの表に対してすべての行が挿入または削除された後に、COMMITが行われます。

例外

表16-3 DIFFERENCESプロシージャの例外

例外

説明

nosuchsite

データベース・サイトが見つかりませんでした。

badnumber

commit_rowsパラメータが1未満です。

missingprimarykey

列のリストには、主キー(または等価のSET_COLUMNS)が含まれる必要があります。

badname

表またはスキーマの名前が、NULLまたは空の文字列です。

cannotbenull

パラメータはNULLに設定できません。

notshapeequivalent

比較される表の形式が一致しません。形式とは、列数、列名、列のデータ型を意味します。

unknowncolumn

列が存在しません。

unsupportedtype

タイプがサポートされていません。

dbms_repcat.commfailure

リモート・サイトにアクセスできません。

dbms_repcat.missingobject

表が存在しません。

制限事項

欠落行表に一意キーまたは主キー制約がある場合、エラーORA-00001(一意制約に反しています)が発生します。

RECTIFYプロシージャ

このプロシージャは、2つの表の相違点を解決します。これは、ネストした表の記憶表を受け入れます。

注意:
このプロシージャは、LOB列やユーザー定義型をベースとする列には使用できません。

構文

DBMS_RECTIFIER_DIFF.RECTIFY (
sname1               IN  VARCHAR2,
oname1               IN  VARCHAR2,
reference_site       IN  VARCHAR2 := '',
sname2               IN  VARCHAR2,
oname2               IN  VARCHAR2,
comparison_site      IN  VARCHAR2 := '',
{ column_list        IN  VARCHAR2 := '',
| array_columns      IN  dbms_utility.name_array, }
missing_rows_sname   IN  VARCHAR2,
missing_rows_oname1  IN  VARCHAR2,
missing_rows_oname2  IN  VARCHAR2,
missing_rows_site    IN  VARCHAR2 := '',
commit_rows          IN  INTEGER := 500);

注意:
このプロシージャはオーバーロードされています。column_listパラメータとarray_columnsパラメータは、同時には指定できません。

パラメータ

表16-4 RECTIFYプロシージャのパラメータ

パラメータ

説明

sname1

reference_siteのスキーマの名前です。

oname1

reference_siteの表の名前です。

reference_site

参照データベース・サイトの名前です。デフォルトのNULLは、カレント・サイトを示します。

sname2

comparison_siteのスキーマの名前です。

oname2

comparison_siteの表の名前です。

comparison_site

比較データベース・サイトの名前です。デフォルトのNULLは、カレント・サイトを示します。

column_list

2つの表で比較される1つ以上の列名の、カンマ区切りのリストです。カンマの前後には空白を入れません。デフォルトのNULLの場合は、すべての列が比較されます。

array_columns

2つの表で比較される列名の、PL/SQL連想配列です。索引付けは1の位置から始まり、配列の最後の要素はNULLになります。1の位置がNULLの場合は、すべての列が使用されます。

missing_rows_sname

欠落行のある表が含まれるスキーマの名前です。

missing_rows_oname1

comparison_siteの表から欠落しているreference_siteの表の行、およびreference_siteの表から欠落しているcomparison_siteサイトの行の情報が格納される、missing_rows_siteにある表の名前です。

missing_rows_oname2

欠落行の情報が格納されるmissing_rows_siteにある表の名前です。この表には3つの列があります。それぞれの列には、missing_rows_oname1表の行のROWID、行が存在するサイトの名前、および行が欠落しているサイトの名前が格納されます。

missing_rows_site

missing_rows_oname1表とmissing_rows_oname2表があるサイトの名前です。デフォルトのNULLは、表がカレント・サイトにあることを示します。

commit_rows

COMMITが行われる前に、参照表や比較表に挿入される、または参照表や比較表から削除される行の最大数です。デフォルトでは、500行が挿入または削除された後、COMMITが行われます。空の文字列(' ')やNULLの場合は、1つの表に対してすべての行が挿入または削除された後に、COMMITが行われます。

例外

表16-5 RECTIFYプロシージャの例外

例外

説明

nosuchsite

データベース・サイトが見つかりませんでした。

badnumber

commit_rowsパラメータが1未満です。

badname

表またはスキーマの名前が、NULLまたは空の文字列です。

dbms_repcat.commfailure

リモート・サイトにアクセスできません。

dbms_repcat.missingobject

表が存在しません。

17 DBMS_REFRESH

DBMS_REFRESHにより、リフレッシュを一括して行えるマテリアライズド・ビューのグループを作成し、ある一時点において、整合性のある変換が行えるようになります。

この章には、次の項が含まれます。

- DBMS_REFRESHサブプログラムの概要

DBMS_REFRESHサブプログラムの概要

表17-1 DBMS_REFRESHパッケージのサブプログラム

サブプログラム

説明

「ADDプロシージャ」

マテリアライズド・ビューをリフレッシュ・グループに追加します。

「CHANGEプロシージャ」

リフレッシュ・グループのリフレッシュ間隔を変更します。

「DESTROYプロシージャ」

リフレッシュ・グループからすべてのマテリアライズド・ビューを削除し、リフレッシュ・グループを削除します。

「MAKEプロシージャ」

リフレッシュ・グループ・メンバー、およびこのグループ・メンバーをリフレッシュする間隔を指定します。

「REFRESHプロシージャ」

リフレッシュ・グループを手動でリフレッシュします。

「SUBTRACTプロシージャ」

マテリアライズド・ビューをリフレッシュ・グループから削除します。

ADDプロシージャ

このプロシージャは、マテリアライズド・ビューをリフレッシュ・グループに追加します。

関連項目:
詳細は、手順6「オブジェクトをリフレッシュ・グループに追加します。」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REFRESH.ADD (
name     IN VARCHAR2,
{ list   IN VARCHAR2,
| tab    IN DBMS_UTILITY.UNCL_ARRAY, }
lax      IN BOOLEAN := FALSE);

注意:
このプロシージャはオーバーロードされています。listパラメータとtabパラメータは、同時には指定できません。

パラメータ

表17-2 ADDプロシージャのパラメータ

パラメータ

説明

name

[schema_name.]refresh_group_nameと指定された、メンバーを追加するリフレッシュ・グループの名前です。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。

list

リフレッシュ・グループに追加するマテリアライズド・ビューの、カンマ区切りのリストです。シノニムはサポートされていません。

各マテリアライズド・ビューは、[schema_name.]materialized_view_nameと指定されています。スキーマを指定しない場合は、リフレッシュ・グループの所有者がデフォルトで使用されます。

tab

カンマ区切りのリストのかわりに、DBMS_UTILITY.UNCL_ARRAYタイプのPL/SQL連想配列を使用でき、この表の各要素は、マテリアライズド・ビューの名前になります。最初のマテリアライズド・ビューは1の位置に置かれます。最後の位置はNULLになります。

各マテリアライズド・ビューは、[schema_name.]materialized_view_nameと指定されています。スキーマを指定しない場合は、リフレッシュ・グループの所有者がデフォルトで使用されます。

lax

マテリアライズド・ビューは、一度に1つのリフレッシュ・グループのみに所属できます。マテリアライズド・ビューを他のグループに移動する場合は、laxフラグをTRUEに設定する必要があります。マテリアライズド・ビューは自動的に移動され、移動先のグループのリフレッシュ間隔が適用されます。そうでない場合は、ADDのコールでエラー・メッセージが生成されます。

CHANGEプロシージャ

このプロシージャは、リフレッシュ・グループのリフレッシュ間隔を変更します。

関連項目:
リフレッシュ・グループの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REFRESH.CHANGE (
name                  IN VARCHAR2,
next_date             IN DATE           := NULL,
interval              IN VARCHAR2       := NULL,
implicit_destroy      IN BOOLEAN        := NULL,
rollback_seg          IN VARCHAR2       := NULL,
push_deferred_rpc     IN BOOLEAN        := NULL,
refresh_after_errors  IN BOOLEAN        := NULL,
purge_option          IN BINARY_INTEGER := NULL,
parallelism           IN BINARY_INTEGER := NULL,
heap_size             IN BINARY_INTEGER := NULL);

パラメータ

表17-3 CHANGEプロシージャのパラメータ

パラメータ

説明

name

リフレッシュ間隔を変更するリフレッシュ・グループの名前です。

next_date

次にリフレッシュを行う日付です。デフォルトでは、この日付は変更されません。

interval

このファンクションを使用して、リフレッシュ・グループ内のマテリアライズド・ビューを次にリフレッシュするタイミングが計算されます。intervalは、リフレッシュの直前に評価されます。したがって、リフレッシュにかかる時間より長い間隔を選択します。デフォルトでは、intervalは変更されません。

implicit_destroy

implicit_destroyフラグの値をリセットできます。このフラグが設定されている場合、グループにメンバーが存在しなくなると、そのグループが自動的に削除されます。デフォルトでは、このフラグは変更されません。

rollback_seg

使用するロールバック・セグメントを変更できます。デフォルトでは、ロールバック・セグメントは変更されません。このパラメータをリセットしてデフォルトのロールバック・セグメントを使用するには、引用符を含めてNULLを指定します。引用符を含めずにNULLを指定すると、現在使用しているロールバック・セグメントが変更されません。

push_deferred_rpc

更新可能なマテリアライズド・ビューのみで使用します。マテリアライズド・ビューをリフレッシュする前に、マテリアライズド・ビューから対応付けられたマスター表またはマスター・マテリアライズド・ビューに変更をプッシュする場合は、このパラメータをTRUEに設定します。そうしない場合、変更が一時的に失われたように見えることがあります。デフォルトでは、このフラグは変更されません。

refresh_after_errors

更新可能なマテリアライズド・ビューのみで使用します。マテリアライズド・ビューのマスター表またはマスター・マテリアライズド・ビューのDEFERRORビューに、未解決の競合がログインされていてもリフレッシュを行う場合は、このパラメータをTRUEに設定します。デフォルトでは、このフラグは変更されません。

purge_option

パラレル伝播メカニズムを使用している場合(すなわちparallelismが1以上に設定されている場合)、このパラメータは次のようになります。

- 0 =パージなし

- 1 =レイジー・パージ(デフォルト)

- 2 =アグレッシブ・パージ

ほとんどの場合、レイジー・パージが最適な設定になります。複数マスター・レプリケーション・グループが異なるターゲット・サイトにプッシュされ、1つ以上のレプリケーション・グループに対する更新が不定期に行われるか不定期にプッシュされる場合は、アグレッシブ・パージに設定してキューを少なくします。すべてのレプリケーション・グループへの更新と送信がまれな場合は、パージをパージなしに設定し、キューを減らすためにパージをアグレッシブに設定して時々PUSHを実行してください。

parallelism

0(ゼロ)はシリアル伝播を指定します。

n > 1は、n個のパラレル処理のパラレル伝播を指定します。

1は、パラレル処理を1つのみ使用するパラレル伝播を指定します。

heap_size

パラレル伝播スケジュールのために同時に検査されるトランザクションの最大数です。最適なパフォーマンスを実現するデフォルト値が、自動的に計算されます。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

DESTROYプロシージャ

このプロシージャは、リフレッシュ・グループからすべてのマテリアライズド・ビューを削除して、リフレッシュ・グループを削除します。

関連項目:
リフレッシュ・グループの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REFRESH.DESTROY (
name   IN   VARCHAR2);

パラメータ

表17-4 DESTROYプロシージャのパラメータ

パラメータ

説明

name

破棄するリフレッシュ・グループの名前です。

MAKEプロシージャ

このプロシージャは、リフレッシュ・グループ・メンバー、およびこのグループ・メンバーをリフレッシュする間隔を指定します。

関連項目:
詳細は、手順4「リフレッシュ・グループを作成します。」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REFRESH.MAKE (
name                  IN    VARCHAR2
{ list                IN    VARCHAR2,
| tab                 IN    DBMS_UTILITY.UNCL_ARRAY,}
next_date             IN    DATE,
interval              IN    VARCHAR2,
implicit_destroy      IN    BOOLEAN         := FALSE,
lax                   IN    BOOLEAN         := FALSE,
job                   IN    BINARY_INTEGER  := 0,
rollback_seg          IN    VARCHAR2        := NULL,
push_deferred_rpc     IN    BOOLEAN         := TRUE,
refresh_after_errors  IN    BOOLEAN         := FALSE
purge_option          IN    BINARY_INTEGER  := NULL,
parallelism           IN    BINARY_INTEGER  := NULL,
heap_size             IN    BINARY_INTEGER  := NULL);

注意:
このプロシージャはオーバーロードされています。listパラメータとtabパラメータは、同時には指定できません。

パラメータ

表17-5 MAKEプロシージャのパラメータ

パラメータ

説明

name

[schema_name.]refresh_group_nameと指定された、リフレッシュ・グループの識別に使用される一意の名前です。スキーマを指定しない場合は、現行のユーザー名がデフォルトで使用されます。リフレッシュ・グループは、表と同じ命名規則に従って名前付けをします。

list

リフレッシュするマテリアライズド・ビューの、カンマ区切りのリストです。シノニムはサポートされていません。これらのマテリアライズド・ビューは、異なるスキーマに置くことができ、また異なるマスター表またはマスター・マテリアライズド・ビューを持つことができます。ただし、すべてのマテリアライズド・ビューが、カレント・データベース内に存在する必要があります。

各マテリアライズド・ビューは、[schema_name.]materialized_view_nameと指定されています。スキーマを指定しない場合は、リフレッシュ・グループの所有者がデフォルトで使用されます。

tab

カンマ区切りのリストのかわりに、DBMS_UTILITY.UNCL_ARRAYデータ型を使用したPL/SQL連想配列で、リフレッシュするマテリアライズド・ビューの名前を指定できます。表にマテリアライズド・ビュー名がn個ある場合、最初のマテリアライズド・ビューは1の位置に置かれ、n + 1の位置はNULLに設定されます。

各マテリアライズド・ビューは、[schema_name.]materialized_view_nameと指定されています。スキーマを指定しない場合は、リフレッシュ・グループの所有者がデフォルトで使用されます。

next_date

次にリフレッシュを行う日付です。

interval

このファンクションを使用して、グループ内のマテリアライズド・ビューを次にリフレッシュするタイミングが計算されます。このフィールドは、next_date値とともに使用します。

たとえば、intervalにNEXT_DAY(SYSDATE+1, "MONDAY")を指定した場合、next_dateが月曜と評価されると、毎週月曜日にマテリアライズド・ビューがリフレッシュされます。intervalは、リフレッシュの直前に評価されます。したがって、リフレッシュにかかる時間より長い間隔を選択します。

implicit_destroy

リフレッシュ・グループにメンバーが存在しなくなったとき、リフレッシュ・グループを自動的に削除するには、このパラメータをTRUEに設定します。このフラグは、SUBTRACTプロシージャがコールされたときのみにチェックされます。つまり、このフラグが設定されていても、空のリフレッシュ・グループを作成できます。

lax

マテリアライズド・ビューは、一度に1つのリフレッシュ・グループのみに所属できます。マテリアライズド・ビューを既存のグループから新しいリフレッシュ・グループに移動する場合は、このパラメータをTRUEに設定する必要があります。マテリアライズド・ビューは自動的に移動され、移動先のグループのリフレッシュ間隔が適用されます。そうでない場合は、MAKEのコールでエラー・メッセージが生成されます。

job

インポート・ユーティリティで必要です。デフォルトの0(ゼロ)を使用してください。

rollback_seg

マテリアライズド・ビューのリフレッシュ時に使用するロールバック・セグメントの名前です。デフォルトのNULLの場合、デフォルトのロールバック・セグメントが使用されます。

push_deferred_rpc

更新可能なマテリアライズド・ビューのみで使用します。マテリアライズド・ビューをリフレッシュする前に、対応付けられたマスター表またはマスター・マテリアライズド・ビューに、マテリアライズド・ビューから変更をプッシュする場合は、デフォルト値TRUEを使用します。そうしない場合、変更が一時的に失われたように見えることがあります。

refresh_after_errors

更新可能なマテリアライズド・ビューのみで使用します。マテリアライズド・ビューのマスター表またはマスター・マテリアライズド・ビューのDEFERRORビューに、未解決の競合がログインされていてもリフレッシュを行う場合は、このパラメータを0(ゼロ)に設定します。

purge_option

パラレル伝播メカニズムを使用している場合(すなわちparallelismが1以上に設定されている場合)、0はパージなし、1はレイジー・パージ(デフォルト)、2はアグレッシブ・パージになります。ほとんどの場合、レイジー・パージが最適な設定になります。

複数マスター・レプリケーション・グループが異なるターゲット・サイトにプッシュされ、1つ以上のレプリケーション・グループに対する更新が不定期に行われるか不定期にプッシュされる場合は、アグレッシブ・パージに設定してキューを少なくします。すべてのレプリケーション・グループへの更新と送信がまれな場合は、パージをパージなしに設定し、キューを減らすためにパージをアグレッシブに設定して時々PUSHを実行してください。

parallelism

0(ゼロ)はシリアル伝播を指定します。

n > 1は、n個のパラレル処理のパラレル伝播を指定します。

1は、パラレル処理を1つのみ使用するパラレル伝播を指定します。

heap_size

パラレル伝播スケジュールのために同時に検査されるトランザクションの最大数です。最適なパフォーマンスを実現するデフォルト値が、自動的に計算されます。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

REFRESHプロシージャ

このプロシージャは、リフレッシュ・グループを手動でリフレッシュします。

関連項目:
リフレッシュ・グループの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REFRESH.REFRESH (
name   IN    VARCHAR2);

パラメータ

表17-6 REFRESHプロシージャのパラメータ

パラメータ

説明

name

手動でリフレッシュするリフレッシュ・グループの名前です。

SUBTRACTプロシージャ

このプロシージャは、マテリアライズド・ビューをリフレッシュ・グループから削除します。

関連項目:
リフレッシュ・グループの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REFRESH.SUBTRACT (
name      IN    VARCHAR2,
{ list    IN    VARCHAR2,
| tab     IN    DBMS_UTILITY.UNCL_ARRAY, }
lax       IN    BOOLEAN := FALSE);

注意:
このプロシージャはオーバーロードされています。listパラメータとtabパラメータは、同時には指定できません。

パラメータ

表17-7 SUBTRACTプロシージャのパラメータ

パラメータ

説明

name

メンバーを削除するリフレッシュ・グループの名前です。

list

リフレッシュ・グループから削除するマテリアライズド・ビューの、カンマ区切りのリストです。(シノニムはサポートされていません。)これらのマテリアライズド・ビューは、異なるスキーマに置くことができ、また異なるマスター表またはマスター・マテリアライズド・ビューを持つことができます。ただし、すべてのマテリアライズド・ビューが、カレント・データベース内に存在する必要があります。

tab

カンマ区切りのリストのかわりに、DBMS_UTILITY.UNCL_ARRAYデータ型を使用したPL/SQL連想配列で、リフレッシュするマテリアライズド・ビューの名前を指定できます。表にマテリアライズド・ビュー名がn個ある場合、最初のマテリアライズド・ビューは1の位置に置かれ、n + 1の位置はNULLに設定されます。

lax

リフレッシュ・グループ・メンバーではないマテリアライズド・ビューの削除を試みたときに、エラー・メッセージが生成されるようにするには、このパラメータをFALSEに設定します。

18 DBMS_REPCAT

DBMS_REPCATは、レプリケーション・カタログと環境を管理および更新するルーチンを提供します。

この章には、次の項が含まれます。

- DBMS_REPCATサブプログラムの概要

DBMS_REPCATサブプログラムの概要

表18-1 DBMS_REPCATパッケージのサブプログラム

サブプログラム

説明

「ADD_GROUPED_COLUMNプロシージャ」

既存の列グループにメンバーを追加します。

「ADD_MASTER_DATABASEプロシージャ」

レプリケーション環境に他のマスター・サイトを追加します。

「ADD_NEW_MASTERSプロシージャ」

DBA_REPSITES_NEWデータ・ディクショナリ・ビューのマスター・サイトを、使用可能な全マスター・サイトのレプリケーション・カタログに追加します。

「ADD_PRIORITY_datatypeプロシージャ」

優先グループにメンバーを追加します。

「ADD_SITE_PRIORITY_SITEプロシージャ」

サイト優先グループに新しいサイトを追加します。

「ADD_conflicttype_RESOLUTIONプロシージャ」

更新、削除または一意性競合のための、解消方法を指定します。

「ALTER_CATCHUP_PARAMETERSプロシージャ」

DBA_REPEXTENSIONSデータ・ディクショナリ・ビューに保存されたパラメータの値を変更します。

「ALTER_MASTER_PROPAGATIONプロシージャ」

指定されたマスター・サイトの、指定されたレプリケーション・グループの伝播方法を変更します。

「ALTER_MASTER_REPOBJECTプロシージャ」

レプリケーション環境のオブジェクトを変更します。

「ALTER_MVIEW_PROPAGATIONプロシージャ」

カレント・マテリアライズド・ビュー・サイトの、指定されたレプリケーション・グループの伝播方法を変更します。

「ALTER_PRIORITYプロシージャ」

指定された優先グループ・メンバーに対応付けられた優先順位レベルを変更します。

「ALTER_PRIORITY_datatypeプロシージャ」

優先グループ・メンバーの値を変更します。

「ALTER_SITE_PRIORITYプロシージャ」

指定されたサイトに対応付けられた優先順位レベルを変更します。

「ALTER_SITE_PRIORITY_SITEプロシージャ」

指定された優先順位レベルに対応付けられたサイトを変更します。

「CANCEL_STATISTICSプロシージャ」

正常に実行された、表の更新、一意性および削除の競合解消の統計の収集を中止します。

「COMMENT_ON_COLUMN_GROUPプロシージャ」

列グループのALL_REPCOLUMN_GROUPビュー内のコメント・フィールドを更新します。

「COMMENT_ON_MVIEW_REPSITESプロシージャ」

マテリアライズド・ビュー・サイトのALL_REPGROUPビュー内のSCHEMA_COMMENTフィールドを更新します。

「COMMENT_ON_PRIORITY_GROUPプロシージャ」

優先グループのALL_REPPRIORITY_GROUPビュー内のコメント・フィールドを更新します。

「COMMENT_ON_REPGROUPプロシージャ」

マスター・グループのALL_REPGROUPビュー内のコメント・フィールドを更新します。

「COMMENT_ON_REPOBJECTプロシージャ」

レプリケート・オブジェクトのALL_REPOBJECTビュー内のコメント・フィールドを更新します。

「COMMENT_ON_REPSITESプロシージャ」

レプリケート・サイトのALL_REPSITEビュー内のコメント・フィールドを更新します。

「COMMENT_ON_SITE_PRIORITYプロシージャ」

サイト優先グループのALL_REPPRIORITY_GROUPビュー内のコメント・フィールドを更新します。

「COMMENT_ON_conflicttype_RESOLUTIONプロシージャ」

競合解消ルーチンのALL_REPRESOLUTIONビュー内のコメント・フィールドを更新します。

「COMPARE_OLD_VALUESプロシージャ」

更新および削除のために、各マスター・サイトの古い列値をレプリケート表の非キー列と比較するかどうかを指定します。

「CREATE_MASTER_REPGROUPプロシージャ」

空の静止したマスター・グループを新規に作成します。

「CREATE_MASTER_REPOBJECTプロシージャ」

オブジェクトがレプリケート・オブジェクトであると指定します。

「CREATE_MVIEW_REPGROUPプロシージャ」

ローカル・データベースに、空のマテリアライズド・ビュー・グループを新規に作成します。

「CREATE_MVIEW_REPOBJECTプロシージャ」

マテリアライズド・ビュー・グループにレプリケート・オブジェクトを追加します。

「DEFINE_COLUMN_GROUPプロシージャ」

空の列グループを作成します。

「DEFINE_PRIORITY_GROUPプロシージャ」

マスター・グループの新しい優先グループを作成します。

「DEFINE_SITE_PRIORITYプロシージャ」

マスター・グループの新しいサイト優先グループを作成します。

「DO_DEFERRED_REPCAT_ADMINプロシージャ」

カレント・マスター・サイトの指定されたマスター・グループ、またはすべてのマスター・サイトで、ローカルな遅延管理プロシージャを実行します。

「DROP_COLUMN_GROUPプロシージャ」

列グループを削除します。

「DROP_GROUPED_COLUMNプロシージャ」

列グループからメンバーを削除します。

「DROP_MASTER_REPGROUPプロシージャ」

カレント・サイトからマスター・グループを削除します。

「DROP_MASTER_REPOBJECTプロシージャ」

マスター・グループからレプリケート・オブジェクトを削除します。

「DROP_MVIEW_REPGROUPプロシージャ」

マスター・グループからレプリケート・オブジェクトを削除します。

「DROP_MVIEW_REPGROUPプロシージャ」

レプリケーション環境からマテリアライズド・ビュー・サイトを削除します。

「DROP_MVIEW_REPOBJECTプロシージャ」

マテリアライズド・ビュー・サイトからレプリケート・オブジェクトを削除します。

「DROP_PRIORITYプロシージャ」

優先順位レベルに基づいて、優先グループ・メンバーを削除します。

「DROP_PRIORITY_GROUPプロシージャ」

指定されたマスター・グループの優先グループを削除します。

「DROP_PRIORITY_datatypeプロシージャ」

値に基づいて、優先グループ・メンバーを削除します。

「DROP_SITE_PRIORITYプロシージャ」

指定されたマスター・グループのサイト優先グループを削除します。

「DROP_SITE_PRIORITY_SITEプロシージャ」

サイト優先グループから、指定された名前のサイトを削除します。

「DROP_conflicttype_RESOLUTIONプロシージャ」

更新、削除または一意性競合解消メソッドを削除します。

「EXECUTE_DDLプロシージャ」

各マスター・サイトで実行されるDDLを渡します。

「GENERATE_MVIEW_SUPPORTプロシージャ」

トリガーをアクティブ化して、更新可能なマテリアライズド・ビューのレプリケーションやプロシージャ・レプリケーションのサポートに必要なパッケージを生成します。

「GENERATE_REPLICATION_SUPPORTプロシージャ」

指定したオブジェクトのレプリケーションのサポートに必要なトリガー、パッケージおよびプロシージャを生成します。

「MAKE_COLUMN_GROUPプロシージャ」

1つ以上のメンバーを持つ新しい列グループを作成します。

「PREPARE_INSTANTIATED_MASTERプロシージャ」

マスター・グループに追加するデータベースのグローバル名を変更します。

「PURGE_MASTER_LOGプロシージャ」

指定されたID番号、ソースまたはマスター・グループに対応付けられた、DBA_REPCATLOG内のローカル・メッセージを削除します。

「PURGE_STATISTICSプロシージャ」

ALL_REPRESOLUTION_STATISTICSビューから情報を削除します。

「REFRESH_MVIEW_REPGROUPプロシージャ」

マテリアライズド・ビュー・グループを、対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトからの最新データでリフレッシュします。

REGISTER_MVIEW_REPGROUPプロシージャ

DBA_REGISTERED_MVIEW_GROUPSでのマテリアライズド・ビューの挿入、変更または削除を行って、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでのマテリアライズド・ビューの管理を容易にします。

「REGISTER_STATISTICSプロシージャ」

正常に実行された、表の更新、削除および一意性の競合解消の統計を収集します。

「RELOCATE_MASTERDEFプロシージャ」

マスター定義サイトを、レプリケーション環境の他のマスター・サイトに変更します。

「REMOVE_MASTER_DATABASESプロシージャ」

レプリケーション環境から、1つ以上のマスター・データベースを削除します。

「RENAME_SHADOW_COLUMN_GROUPプロシージャ」

レプリケート表のシャドウ列グループの名前を変更して、名前付き列グループにします。

「REPCAT_IMPORT_CHECKプロシージャ」

レプリケート・オブジェクト、またはアドバンスト・レプリケーション機能で使用されたオブジェクトのエクスポートまたはインポート後に、マスター・グループのオブジェクトが適切なオブジェクト識別子およびステータス値を持つようにします。

「RESUME_MASTER_ACTIVITYプロシージャ」

レプリケーション環境を静止した後で、通常のレプリケーション・アクティビティを再開します。

「RESUME_PROPAGATION_TO_MDEFプロシージャ」

エクスポートが終了し、マスター・サイトに存在する拡張レプリケーション・グループおよび影響を受けないレプリケーション・グループの両方の伝播を有効にできるようになったことを示します。

「SEND_OLD_VALUESプロシージャ」

更新および削除のために、レプリケート表のキー列ではない古い列値を送信するかどうかを指定します。

「SET_COLUMNSプロシージャ」

主キーのかわりに代替列または列グループを使用して、行レベル・レプリケーションを使用する際に比較する表中の列を決定するよう指定します。

「SPECIFY_NEW_MASTERSプロシージャ」

既存のレプリケーション・グループに追加したいマスター・サイトを、グループを静止せずに指定します。

「STREAMS_MIGRATIONプロシージャ」

Advanced Replication環境をStreams環境に移行する移行スクリプトを生成します。

「SUSPEND_MASTER_ACTIVITYプロシージャ」

マスター・グループのレプリケーション・アクティビティを一時停止します。

「SWITCH_MVIEW_MASTERプロシージャ」

マテリアライズド・ビュー・グループのマスター・サイトを他のマスター・サイトに変更します。

「UNDO_ADD_NEW_MASTERS_REQUESTプロシージャ」

指定したextension_idの、SPECIFY_NEW_MASTERSプロシージャおよびADD_NEW_MASTERSプロシージャによるすべての変更を元に戻します。

「UNREGISTER_MVIEW_REPGROUPプロシージャ」

DBA_REGISTERED_MVIEW_GROUPSでのマテリアライズド・ビューの挿入、変更または削除を行って、マスター・サイトおよびマスター・マテリアライズド・ビュー・サイトでのマテリアライズド・ビューの管理を容易にします。

「VALIDATEファンクション」

マルチマスター・レプリケーション環境のキー条件が正確であるかどうかを確認します。

「WAIT_MASTER_LOGプロシージャ」

マスター・サイトに非同期で伝播された変更の適用状況を判定します。

ADD_GROUPED_COLUMNプロシージャ

このプロシージャは、既存の列グループにメンバーを追加します。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.ADD_GROUPED_COLUMN (
sname                 IN   VARCHAR2,
oname                 IN   VARCHAR2,
column_group          IN   VARCHAR2,
list_of_column_names  IN   VARCHAR2 | DBMS_REPCAT.VARCHAR2S);

パラメータ

表18-2 ADD_GROUPED_COLUMNプロシージャのパラメータ

パラメータ

説明

sname

レプリケート表が置かれたスキーマの名前です。

oname

列グループが対応付けられているレプリケート表の名前です。表はネストした表の記憶表を利用できます。

column_group

メンバーを追加する列グループの名前です。

list_of_column_names

指定された列グループに追加する列の名前です。列名は、カンマ区切りのリストとPL/SQL連想配列のいずれでも指定できます。PL/SQL連想配列のタイプはDBMS_REPCAT.VARCHAR2Sにする必要があります。表のすべての列を含む列グループを作成するには、単一の値'*'を使用します。

列オブジェクトは指定できますが、列オブジェクトの属性は指定できません。

表がオブジェクトである場合、SYS_NC_OID$を指定して列グループにオブジェクト識別子列を追加できます。この列は各行オブジェクトのオブジェクト識別子を追跡します。

表がネストした表の記憶表である場合は、NESTED_TABLE_IDを指定して、ネストした表の各行の識別子を追跡する列を追加できます。

例外

表18-3 ADD_GROUPED_COLUMNプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定された表は存在しません。

missinggroup

指定された列グループは存在しません。

missingcolumn

指定された列は、指定された表に存在しません。

duplicatecolumn

指定された列は、すでに他の列グループのメンバーになっています。

missingschema

指定されたスキーマは存在しません。

notquiesced

指定された表が所属するレプリケーション・グループは静止していません。

ADD_MASTER_DATABASEプロシージャ

このプロシージャは、レプリケーション環境に他のマスター・サイトを追加します。このプロシージャは、既存のマスター・サイトで、すべてのトリガーとそれらに対応付けられたパッケージを再生成します。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.ADD_MASTER_DATABASE (
gname                 IN   VARCHAR2,
master                IN   VARCHAR2,
use_existing_objects  IN   BOOLEAN  := TRUE,
copy_rows             IN   BOOLEAN  := TRUE,
comment               IN   VARCHAR2 := '',
propagation_mode      IN   VARCHAR2 := 'ASYNCHRONOUS',
fname                 IN   VARCHAR2 := NULL);

パラメータ

表18-4 ADD_MASTER_DATABASEプロシージャのパラメータ

パラメータ

説明

gname

レプリケートされるレプリケーション・グループの名前です。このレプリケーション・グループは、マスター定義サイトに存在している必要があります。

master

新しいマスター・データベースの、完全修飾されたデータベース名です。

use_existing_objects

新しいマスター・サイトのスキーマに存在する同じタイプで同じshapeのオブジェクトを再利用する場合は、TRUEを指定します。

copy_rows

新しいマスター・サイトの表の初期の内容を、マスター定義サイトの表の内容と一致させる場合は、TRUEを指定します。

comment

このコメントは、DBA_REPSITESビューのMASTER_COMMENTフィールドに追加されます。

propagation_mode

新しいマスター・データベースに変更を送る、または新しいマスター・データベースから変更を受け取る方法です。使用できる値はsynchronousおよびasynchronousです。

fname

このパラメータは内部で使用します。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

例外

表18-5 ADD_MASTER_DATABASEプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

notquiesced

マスター・グループのレプリケーションは中断されていません。

missingrepgroup

レプリケーション・グループは、指定されたデータベース・サイトに存在しません。

commfailure

新しいマスターにアクセスできません。

typefailure

指定された伝播モードは正しくありません。

duplrepgrp

マスター・サイトは存在しています。

ADD_NEW_MASTERSプロシージャ

このプロシージャは、DBA_REPSITES_NEWデータ・ディクショナリ・ビューのマスター・サイトを、SPECIFY_NEW_MASTERSプロシージャの実行時に指定されたマスター・グループに追加します。これらの新しいマスター・サイトに関する情報は、使用可能な全マスター・サイトのレプリケーション・カタログに追加されます。

この時点では、オブジェクトレベルのエクスポートまたはインポートでインスタンス化された全マスター・サイトがアクセス可能である必要があります。新しいレプリケーション・グループは、静止中状態で追加されます。全データベースのエクスポートやインポートを通して、または変更ベースのリカバリを通してインスタンス化されたマスター・サイトは、アクセス可能である必要はありません。

SPECIFY_NEW_MASTERSプロシージャを実行した後に、このプロシージャを実行します。

注意:
このプロシージャの実行後は、新しいマスター・サイトが追加されるまで遅延トランザクション・キューの伝播を無効または有効にしないでください。DBA_REPEXTENSIONSデータ・ディクショナリ・ビューは、伝播を無効または有効にする前に消去しておく必要があります。Oracle Enterprise ManagerのAdvanced Replicationインタフェース、またはDBMS_DEFER_SYSパッケージのSET_DISABLEDプロシージャを使用して、伝播を無効または有効にできます。

関連項目:

- 「SPECIFY_NEW_MASTERSプロシージャ」

- マスター・グループへのマスター・サイトの追加の詳細は、「新しいマスター・サイトの追加」を参照してください。

構文

DBMS_REPCAT.ADD_NEW_MASTERS (
export_required                IN    BOOLEAN,
{ available_master_list        IN    VARCHAR2,
| available_master_table       IN    DBMS_UTILITY.DBLINK_ARRAY,}
masterdef_flashback_scn        OUT   NUMBER,
extension_id                   OUT   RAW,
break_trans_to_masterdef       IN    BOOLEAN   := FALSE,
break_trans_to_new_masters     IN    BOOLEAN   := FALSE,
percentage_for_catchup_mdef    IN    BINARY_INTEGER  := 100,
cycle_seconds_mdef             IN    BINARY_INTEGER  := 60,
percentage_for_catchup_new     IN    BINARY_INTEGER  := 100,
cycle_seconds_new              IN    BINARY_INTEGER  := 60);

注意:
このプロシージャはオーバーロードされています。available_master_listパラメータとavailable_master_tableパラメータは、同時には指定できません。

パラメータ

表18-6 ADD_NEW_MASTERSプロシージャのパラメータ

パラメータ

説明

export_required

1つ以上の新しいマスター・サイトにオブジェクトレベルまたは全データベースのエクスポートが必要な場合は、TRUEに設定します。新しいマスター・サイトすべてに変更ベースのリカバリを使用している場合は、FALSEに設定します。

available_master_list

オブジェクトレベルのエクスポートまたはインポートを使用してインスタンス化される新しいマスター・サイトの、カンマ区切りのリストです。リストされたサイトは、SPECIFY_NEW_MASTERSプロシージャで指定されたサイトと一致する必要があります。既存のマスター・サイトは含めず、新しいマスター・サイトのみをリストします。各サイト名の間に空白は入れないでください。

すべてのマスターが全データベースのエクスポートやインポートまたは変更ベースのリカバリを使用してインスタンス化される場合は、NULLを指定します。

available_master_table

オブジェクトレベルのエクスポートまたはインポートを使用してインスタンス化される新しいマスター・サイトをリストした表です。表のサイトは、SPECIFY_NEW_MASTERSプロシージャで指定されたサイトと一致する必要があります。全データベースのエクスポートやインポートまたは変更ベースのリカバリを使用してインスタンス化されるマスターは、指定しないでください。

オブジェクトレベルのエクスポートまたはインポートを使用してインスタンス化されるマスター・サイトをリストする表には、拡張されるマスター・グループにおける新しいマスター・サイトのみをリストします。拡張されるマスター・グループの既存のマスター・サイトはリストしないでください。最初のマスター・サイトは1の位置、2番目のマスターは2の位置と、順に配置します。

masterdef_flashback_scn

このOUTパラメータは、エクスポートまたは変更ベースのリカバリの最中に使用する必要のあるシステム変更番号(SCN)を戻します。エクスポートを実行する際は、このパラメータに戻された値をFLASHBACK_SCNエクスポート・パラメータに使用します。flashback_scn値は、DBA_REPEXTENSIONSデータ・ディクショナリ・ビューを問い合せて検索できます。

extension_id

このOUTパラメータは現在保留になっている要求の識別子を戻して、静止せずにマスター・データベースを追加します。extension_idは、DBA_REPSITES_NEWおよびDBA_REPEXTENSIONSデータ・ディクショナリ・ビューを問い合せて検索できます。

break_trans_to_masterdef

このパラメータはexport_requiredがTRUEに設定されている場合のみ有効です。

break_trans_to_masterdefがTRUEに設定されている場合、既存のマスターは、マスター・サイトが追加されていないレプリケーション・グループのために、マスター定義サイトへの遅延トランザクションの伝播を継続できます。マスター・サイトが追加されているレプリケーション・グループの遅延トランザクションは、エクスポートが完了するまで伝播できません。

各遅延トランザクションは、1つ以上のリモート・プロシージャ・コール(RPC)からなっています。この値がFALSEに設定されており、影響を受けないマスター・グループおよび拡張されているマスター・グループの両方のオブジェクトを参照するトランザクションが発生した場合、トランザクションは2つに分割されて、2つの別個のトランザクションとして異なる時間に接続先に送られる場合があります。このようなトランザクションを分割トランザクションといいます。分割トランザクションが可能な場合は、この動作によって破られる可能性のある整合性制約を、新しいマスター・サイトが追加されるまで無効にしておく必要があります。

break_trans_to_masterdefがFALSEに設定されている場合、既存のマスターは、遅延トランザクションをマスター定義サイトに伝播することはできません。

break_trans_to_new_masters

break_trans_to_new_mastersがTRUEに設定されている場合、既存のマスター・サイトは、マスター・サイトが追加されていないレプリケーション・グループのために、新しいマスター・サイトへの遅延トランザクションの伝播を継続できます。

各遅延トランザクションは、1つ以上のリモート・プロシージャ・コール(RPC)からなっています。この値がTRUEに設定されており、影響を受けないマスター・グループおよび拡張されているマスター・グループの両方のオブジェクトを参照するトランザクションが発生した場合、トランザクションは2つに分割されて、2つの別個のトランザクションとして異なる時間に接続先に送られる場合があります。このようなトランザクションを分割トランザクションといいます。分割トランザクションが可能な場合は、この動作によって破られる可能性のある整合性制約を、新しいマスター・サイトが追加されるまで無効にしておく必要があります。

break_trans_to_new_mastersがFALSEに設定されている場合、遅延トランザクション・キューの新しいマスターへの伝播は無効になります。

percentage_for_catchup_mdef

このパラメータはexport_requiredおよびbreak_trans_to_masterdefの両方がTRUEに設定されている場合にのみ有効です。

マスター定義サイトへの伝播に追いつくために使用する、伝播リソースのパーセンテージです。10の倍数で、かつ0以上100以下の数値にする必要があります。

cycle_seconds_mdef

このパラメータはpercentage_for_catchup_mdefがともに有効で、10以上90以下の値に設定されている場合に有効です。この場合、マスター定義サイトへの伝播は、拡張されていないレプリケーション・グループと拡張されているレプリケーション・グループの間で交互に切り替わり、1サイクルごとに各グループに1回データがプッシュされます。このパラメータはサイクルの長さを秒単位で示します。

percentage_for_catchup_new

このパラメータはbreak_trans_to_new_mastersがTRUEに設定されている場合のみ有効です。

新しいマスター・サイトへの伝播に追いつくために使用する、伝播リソースのパーセンテージです。10の倍数で、かつ0以上100以下の数値にする必要があります。

cycle_seconds_new

このパラメータはpercentage_for_catchup_newがともに有効で、10以上90以下の値に設定されている場合に有効です。この場合、新しいマスターへの伝播は、拡張されていないレプリケーション・グループと拡張されているレプリケーション・グループに対して、各サイクル中にプッシュが行われるたびに、交互に実行されます。このパラメータはサイクルの長さを秒単位で示します。

例外

表18-7 ADD_NEW_MASTERSプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

typefailure

パラメータの1つに指定されたパラメータ値が不適正です。

novalidextreq

有効な拡張要求がありません。extension_idは使用できません。

nonewsites

指定された拡張要求に追加する新しいマスター・サイトがありません。

notanewsite

拡張要求のための新しいサイトではありません。SPECIFY_NEW_MASTERSプロシージャを実行したときに指定されなかったサイトが指定されています。

dbnotcompatible

機能がデータベースのバージョンと互換性がありません。すべてのデータベースには、9.2.0以上の互換性のレベルが必要です。

使用上の注意

変更ベースのリカバリまたはデータベース全体のエクスポートやインポートを使用してインスタンス化される新しいマスター・サイトには、次の条件が適用されます。

- 新しいマスター・サイトは既存のレプリケーション・グループを持つことはできません。

- マスター定義サイトはマテリアライズド・ビュー・グループを持つことはできません。

- マスター定義サイトはすべてのマスター・グループについて同じである必要があります。1つ以上のマスター・グループが異なるマスター定義サイトを持つ場合は、変更ベースのリカバリやデータベース全体のエクスポートまたはインポートは使用しないでください。その場合、かわりにオブジェクトレベルのエクスポートまたはインポートを使用します。

- 新しいマスター・サイトは、拡張プロセスの完了時には、マスター定義サイトのすべてのレプリケーション・グループを含んでいる必要があります。すなわち、新しいマスター・サイトにマスター定義サイトのマスター・グループのサブセットを追加することはできず、すべてのグループを追加する必要があります。

オブジェクトレベルのエクスポートまたはインポートの際は、インポートの前に拡張グループのDBA_REPCATLOGデータ・ディクショナリ・ビューの全要求がエラーなしに処理されたことを確認してください。

注意:
変更ベースのリカバリを使用するには、既存のマスター・サイトおよび新しいマスター・サイトを同じオペレーティング・システム上で実行する必要があります(ただし、オペレーティング・システムのリリースは同じでなくてもかまいません)。

ADD_PRIORITY_datatypeプロシージャ

このプロシージャは、優先グループにメンバーを追加します。このプロシージャは、マスター定義サイトからコールする必要があります。コールするプロシージャは、priority列のデータ型によって異なります。priority列の指定するすべての値について、このプロシージャを1回ずつコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.ADD_PRIORITY_datatype (
gname              IN   VARCHAR2,
pgroup             IN   VARCHAR2,
value              IN   datatype,
priority           IN   NUMBER);

datatypeは次のとおりです。

{ NUMBER
| VARCHAR2
| CHAR
| DATE
| RAW
| NCHAR
| NVARCHAR2 }

パラメータ

表18-8 ADD_PRIORITY_datatypeプロシージャのパラメータ

パラメータ

説明

gname

優先グループを作成するマスター・グループの名前です。

pgroup

優先グループの名前です。

value

優先グループ・メンバーの値です。この優先グループを使用する表に対応付けられたpriority列の値の1つになります。

priority

この値の優先順位です。数値が高いほど、優先順位が高くなります。

例外

表18-9 ADD_PRIORITY_datatypeプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

duplicatevalue

指定された値は、優先グループに存在しています。

duplicatepriority

指定された優先順位は、優先グループに存在しています。

missingrepgroup

指定されたマスター・グループは存在しません。

missingprioritygroup

指定された優先グループは存在しません。

typefailure

指定された値のデータ型は、この優先グループには不適切です。

notquiesced

指定されたマスター・グループは静止していません。

ADD_SITE_PRIORITY_SITEプロシージャ

このプロシージャは、サイト優先グループに新しいサイトを追加します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (
gname          IN   VARCHAR2,
name           IN   VARCHAR2,
site           IN   VARCHAR2,
priority       IN   NUMBER);

パラメータ

表18-10 ADD_SITE_PRIORITY_SITEプロシージャのパラメータ

パラメータ

説明

gname

グループにサイトを追加するマスター・グループの名前です。

name

メンバーを追加するサイト優先グループの名前です。

site

追加するサイトのグローバル・データベース名です。

priority

追加するサイトの優先順位レベルです。数値が高いほど、優先順位レベルが高くなります。

例外

表18-11 ADD_SITE_PRIORITY_SITEプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

missingpriority

指定されたサイト優先グループは存在しません。

duplicatepriority

指定された優先順位レベルは、グループの他のサイト用に存在しています。

duplicatevalue

指定されたサイトは、サイト優先グループに存在しています。

notquiesced

マスター・グループは静止していません。

ADD_conflicttype_RESOLUTIONプロシージャ

これらのプロシージャは、更新、削除または一意性競合を解消する方法を指定します。これらのプロシージャは、マスター定義サイトからコールする必要があります。コールするプロシージャは、ルーチンが解消する競合のタイプによって異なります。

表18-12 ADD_conflicttype_RESOLUTIONプロシージャ

競合のタイプ

プロシージャ名

update

ADD_UPDATE_RESOLUTION

uniqueness

ADD_UNIQUE_RESOLUTION

delete

ADD_DELETE_RESOLUTION

関連項目:
更新の競合解消メソッドの指定、一意性競合解消メソッドの選択、削除の競合解消メソッドの割当ての詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.ADD_UPDATE_RESOLUTION (
sname                  IN   VARCHAR2,
oname                  IN   VARCHAR2,
column_group           IN   VARCHAR2,
sequence_no            IN   NUMBER,
method                 IN   VARCHAR2,
parameter_column_name  IN   VARCHAR2
| DBMS_REPCAT.VARCHAR2S
| DBMS_UTILITY.LNAME_ARRAY,
priority_group         IN   VARCHAR2     := NULL,
function_name          IN   VARCHAR2     := NULL,
comment                IN   VARCHAR2     := NULL);

DBMS_REPCAT.ADD_DELETE_RESOLUTION (
sname                  IN   VARCHAR2,
oname                  IN   VARCHAR2,
sequence_no            IN   NUMBER,
parameter_column_name  IN   VARCHAR2 | DBMS_REPCAT.VARCHAR2S,
function_name          IN   VARCHAR2,
comment                IN   VARCHAR2     := NULL
method                 IN   VARCHAR2     := 'USER FUNCTION');

DBMS_REPCAT.ADD_UNIQUE_RESOLUTION(
sname                 IN   VARCHAR2,
oname                 IN   VARCHAR2,
constraint_name       IN   VARCHAR2,
sequence_no           IN   NUMBER,
method                IN   VARCHAR2,
parameter_column_name IN   VARCHAR2
| DBMS_REPCAT.VARCHAR2S
| DBMS_UTILITY.LNAME_ARRAY,
function_name         IN   VARCHAR2     := NULL,
comment               IN   VARCHAR2     := NULL);

パラメータ

表18-13 ADD_conflicttype_RESOLUTIONプロシージャのパラメータ

パラメータ

説明

sname

レプリケートされる表が含まれるスキーマの名前です。

oname

競合解消ルーチンを追加する表の名前です。表はネストした表の記憶表を利用できます。

column_group

競合解消ルーチンを追加する列グループの名前です。列グループは、更新の競合解消ルーチンのみに必要です。

constraint_name

競合解消ルーチンを追加する一意制約または一意索引の名前です。一意索引の名前が対応付けられた一意制約の名前と異なる場合は、一意索引の名前を使用します。制約名は、一意性競合解消ルーチンのみに必要です。

sequence_no

指定された競合解消メソッドを適用する順序です。

method

作成する競合解消ルーチンのタイプです。アドバンスト・レプリケーションで提供される標準のルーチンの名前を指定できます。また、独自のルーチンを記述した場合は、user functionを選択して、独自のメソッドの名前をfunction_nameパラメータとして指定します。

このリリースでサポートされている更新の競合のための標準メソッドは次のとおりです。

- minimum

- maximum

- latest timestamp

- earliest timestamp

- additive、average

- priority group

- site priority

- overwrite

- discard

このリリースでサポートされている一意性競合のための標準メソッドは、append site name、append sequenceおよびdiscardです。削除の競合については、組込み(Oracle提供)方法はありません。

parameter_column_name

競合の解消に使用する列の名前です。標準メソッドは、1つの列で操作されます。たとえば、列グループにlatest timestampメソッドを使用する場合は、タイムスタンプ値が含まれる列の名前を、パラメータとして渡す必要があります。user functionを使用する場合は、任意の数の列を使用して競合を解消できます。

更新の競合または一意性競合については、このパラメータは列名のカンマ区切りのリスト、またはDBMS_REPCAT.VARCHAR2SおよびDBMS_UTILITY.LNAME_ARRAYタイプのPL/SQL連想配列を受け付けます。30バイト以上の列名がある場合は、DBMS_UTILITY.LNAME_ARRAYを使用します。これは列オブジェクトの属性を指定した際に起こる場合があります。

削除の競合については、このパラメータは列名のカンマ区切りのリスト、またはDBMS_REPCAT.VARCHAR2SタイプのPL/SQL連想配列を受け付けます。

単一の値'*'の場合は、競合の解消に表(更新の競合の場合は列グループ)内のすべての列が使用されます。'*'を指定した場合、列はアルファベット順にファンクションへ渡されます。

このパラメータには、LOB列は指定できません。

関連項目: 列オブジェクトを使用する場合は、「使用上の注意」を参照してください。

priority_group

更新の競合解消メソッドのpriority groupまたはsite priorityを使用する場合は、作成した優先グループの名前を渡す必要があります。

詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。その他のメソッドを使用する場合は、このパラメータのデフォルト値NULLを使用できます。このパラメータは、更新の競合のみに適用されます。

function_name

user functionメソッドを選択した場合、または削除の競合解消ルーチンを追加する場合は、記述した競合解消ルーチンの名前を渡す必要があります。標準メソッドを使用する場合は、このパラメータのデフォルト値NULLを使用できます。

comment

このユーザー・コメントは、DBA_REPRESOLUTIONビューに追加されます。

例外

表18-14 ADD_conflicttype_RESOLUTIONプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは、行レベル・レプリケーションを使用する指定されたスキーマに表として存在しません。

missingschema

指定されたスキーマは存在しません。

missingcolumn

parameter_column_nameパラメータの一部として指定された列は存在しません。

missinggroup

指定された列グループは存在しません。

missingprioritygroup

指定された優先グループは、表に存在しません。

invalidmethod

指定された解決メソッドは認識されません。

invalidparameter

parameter_column_nameパラメータに指定された列数は無効です。(標準のルーチンでは、1つの列名のみが受け付けられます。)

missingfunction

指定されたユーザー・ファンクションは存在しません。

missingconstraint

一意性競合に指定された制約は存在しません。

notquiesced

指定された表が所属するレプリケーション・グループは静止していません。

duplicateresolution

指定された競合解消メソッドはすでに登録されています。

duplicatesequence

指定された順序番号は指定されたオブジェクトに割り当てられています。

invalidprioritygroup

指定された優先グループは存在しません。

paramtype

優先グループに割り当てられたタイプと異なります。

使用上の注意

列オブジェクトを使用する場合、parameter_column_nameパラメータに列オブジェクトの属性を指定できるかどうかは、競合解消メソッドが組込み(Oracle提供)かユーザー作成かによって異なります。

- 組込みの競合解消メソッドを使用する場合は、このパラメータにオブジェクトの属性を指定できます。たとえば、cust_addressという列オブジェクトにstreet_addressという属性がある場合、このパラメータにcust_address.street_addressを指定できます。

- 組込みの競合解消メソッドを使用する場合は、列オブジェクトのLOB属性、列オブジェクトのコレクションまたはコレクション属性、REF、および列オブジェクト全体といったタイプの列は、このパラメータには指定できません。

- ユーザー作成の競合解消メソッドを使用する場合は、列オブジェクト全体を指定する必要があります。列オブジェクトの属性は指定できません。たとえば、cust_addressという列オブジェクトにstreet_addressという属性が(複数の属性の1つとして)ある場合、このパラメータにcust_addressのみを指定できます。

ALTER_CATCHUP_PARAMETERSプロシージャ

このプロシージャはDBA_REPEXTENSIONSのデータ・ディクショナリ・ビューに保存されたパラメータの値を変更します。

- percentage_for_catchup_mdef

- cycle_seconds_mdef

- percentage_for_catchup_new

- cycle_seconds_new

これらのパラメータはもともと、ADD_NEW_MASTERSプロシージャで設定されたものです。これらのパラメータに指定する新しい値は、マスター・グループに新しいマスター・サイトを追加するプロセスの残りの手順において使用されます。この変更はそれが実行されるサイトのみで行われます。そのためすべてのサイトでパラメータを変更する場合は、マスター定義サイトを含む各マスター・サイトで変更を行う必要があります。

関連項目:

- 「ADD_NEW_MASTERSプロシージャ」

- マスター・グループへのマスター・サイトの追加の詳細は、「新しいマスター・サイトの追加」を参照してください。

構文

DBMS_REPCAT.ALTER_CATCHUP_PARAMETERS (
extension_id                  IN    RAW,
percentage_for_catchup_mdef   IN    BINARY_INTEGER  := NULL,
cycle_seconds_mdef            IN    BINARY_INTEGER  := NULL,
percentage_for_catchup_new    IN    BINARY_INTEGER  := NULL,
cycle_seconds_new             IN    BINARY_INTEGER  := NULL);

パラメータ

表18-15 ALTER_CATCHUP_PARAMETERSプロシージャのパラメータ

パラメータ

説明

extension_id

静止せずにマスター・データベースを追加するための、現在保留になっている要求の識別子です。extension_idは、DBA_REPSITES_NEWおよびDBA_REPEXTENSIONSデータ・ディクショナリ・ビューを問い合せて検索できます。

percentage_for_catchup_mdef

マスター定義サイトへの伝播に追いつくために使用する、伝播リソースのパーセンテージです。10の倍数で、かつ0以上100以下の数値にする必要があります。

cycle_seconds_mdef

このパラメータはpercentage_for_catchup_mdefがともに有効で、10以上90以下の値に設定されている場合に有効です。この場合、マスター定義サイトへの伝播は、拡張されていないレプリケーション・グループと拡張されているレプリケーション・グループの間で交互に切り替わり、1サイクルごとに各グループに1回データがプッシュされます。このパラメータはサイクルの長さを秒単位で示します。

percentage_for_catchup_new

新しいマスター・サイトへの伝播に追いつくために使用する、伝播リソースのパーセンテージです。10の倍数で、かつ0以上100以下の数値にする必要があります。

cycle_seconds_new

このパラメータはpercentage_for_catchup_newがともに有効で、10以上90以下の値に設定されている場合に有効です。この場合、新しいマスターへの伝播は、拡張されていないレプリケーション・グループと拡張されているレプリケーション・グループに対して、各サイクル中にプッシュが行われるたびに、交互に実行されます。このパラメータはサイクルの長さを秒単位で示します。

例外

表18-16 ALTER_CATCHUP_PARAMETERSプロシージャの例外

例外

説明

typefailure

パラメータの1つに指定されたパラメータ値が不適正です。

dbnotcompatible

機能がデータベースのバージョンと互換性がありません。すべてのデータベースには、9.2.0以上の互換性のレベルが必要です。

ALTER_MASTER_PROPAGATIONプロシージャ

このプロシージャは、指定されたマスター・サイトにある指定されたレプリケーション・グループの伝播方法を変更します。レプリケーション・グループは静止する必要があります。このプロシージャは、マスター定義サイトからコールする必要があります。マスターがdblink_listまたはdblink_tableに出現した場合、ALTER_MASTER_PROPAGATIONではそのデータベース・リンクが無視されます。伝播モードをマスターからマスターに変更できません。

構文

DBMS_REPCAT.ALTER_MASTER_PROPAGATION (
gname               IN   VARCHAR2,
master              IN   VARCHAR2,
{ dblink_list       IN   VARCHAR2,
| dblink_table      IN   DBMS_UTILITY.DBLINK_ARRAY,}
propagation_mode    IN   VARCHAR2 : ='ASYNCHRONOUS',
comment             IN   VARCHAR2 := '');

注意:
このプロシージャはオーバーロードされています。dblink_listパラメータとdblink_tableパラメータは、同時には指定できません。

パラメータ

表18-17 ALTER_MASTER_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

gname

伝播モードの変更先のレプリケーション・グループの名前です。

master

伝播モードを変更するマスター・サイトの名前です。

dblink_list

伝播方法を変更するデータベース・リンクの、カンマ区切りのリストです。値がNULLに設定されている場合、変更されているマスター・サイト以外のすべてのマスター・サイトが使用されます。

dblink_table

伝播を変更するデータベース・リンクの、1の位置から索引付けされているPL/SQL連想配列です。

propagation_mode

指定されたマスター・サイトで変更された内容を、データベース・リンクのリストで識別されるサイトへ伝播する方法を指定します。適切な値はsynchronousおよびasynchronousです。

comment

このコメントは、DBA_REPPROPビューに追加されます。

例外

表18-18 ALTER_MASTER_PROPAGATIONプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

notquiesced

起動サイトは静止していません。

typefailure

指定された伝播モードは認識されませんでした。

nonmaster

データベース・リンクのリストに、マスター・サイト以外のサイトが含まれています。

ALTER_MASTER_REPOBJECTプロシージャ

このプロシージャは、レプリケーション環境のオブジェクトを変更します。このプロシージャは、マスター定義サイトからコールする必要があります。

このプロシージャでは、次の条件のいずれかに該当する場合、オブジェクトのマスター・グループを静止させる必要があります。

- マルチマスター・レプリケーション環境の表を変更する場合。

- 単一のマスター・レプリケーション環境で、safe_table_changeパラメータがFALSEに設定された表を変更する場合。

このプロシージャを使用すると、マスター・グループを静止させることなく、表以外のオブジェクトを変更できます。

構文

DBMS_REPCAT.ALTER_MASTER_REPOBJECT (
sname               IN   VARCHAR2,
oname               IN   VARCHAR2,
type                IN   VARCHAR2,
ddl_text            IN   VARCHAR2,
comment             IN   VARCHAR2     := '',
retry               IN   BOOLEAN      := FALSE
safe_table_change   IN   BOOLEAN      := FALSE);

パラメータ

表18-19 ALTER_MASTER_REPOBJECTプロシージャのパラメータ

パラメータ

説明

sname

変更するオブジェクトが含まれるスキーマの名前です。

oname

変更するオブジェクトの名前です。オブジェクトには、ネストした表の記憶表は指定できません。

type

変更するオブジェクトのタイプです。サポートされているタイプは次のとおりです。

FUNCTION               SYNONYM
INDEX                  TABLE
INDEXTYPE              TRIGGER
OPERATOR               TYPE
PACKAGE                TYPE BODY
PACKAGE BODY           VIEW
PROCEDURE

ddl_text

オブジェクトの変更に使用するDDLテキストです。DDLは、適用の前に解析されることはありません。このため、変更されるオブジェクトについての適切なスキーマおよびオブジェクト名が、DDLテキストで提供されるようにする必要があります。

スキーマを指定せずにDDLが渡された場合、レプリケーション管理者のスキーマがデフォルトのスキーマになります。レプリケーション管理者のスキーマ以外のスキーマを使用する場合は、必ずスキーマを指定してください。

comment

値がNULLに設定されていない場合、このコメントはDBA_REPOBJECTビューのCOMMENTフィールドに追加されます。

retry

値がTRUEに設定されている場合、ALTER_MASTER_REPOBJECTでは、オブジェクト・ステータスがVALIDでないマスターでのみ、オブジェクトが変更されます。

safe_table_change

表の変更が安全である場合は、TRUEを指定します。表の変更が安全でない場合は、FALSEを指定します。

安全な変更は、単一のマスター・レプリケーション環境のマスター表に、その表を含むマスター・グループを静止させずに行うことができます。安全でない変更を行うには、マスター・グループを静止させる必要があります。

このパラメータは、単一のマスター・レプリケーション環境の表のみに指定します。このパラメータはマルチマスター・レプリケーション環境では、また指定したオブジェクトが表でない場合には無視されます。マルチマスター・レプリケーション環境では、マスター・グループを静止させて表のALTER_MASTER_REPOBJECTプロシージャを実行する必要があります。

安全な変更は次のとおりです。

- 記憶域情報および拡張情報の変更

- 既存の列の拡大。たとえばVARCHAR2(20)列をVARCHAR2(50)列にすること

- 非主キー制約の追加

- 非主キー制約の変更

- 非主キー制約の有効化と無効化

安全でない変更は次のとおりです。

- キーの列の追加または削除による主キーの変更

- 列の追加または削除

- 既存の列の縮小。たとえばVARCHAR2(50)列をVARCHAR2(20)列にすること

- 主キー制約の無効化

- 既存の列のデータ型の変更

- 既存の列の削除

変更が安全かどうかが明確でない場合は、ALTER_MASTER_REPOBJECTプロシージャの実行前にマスター・グループを静止させます。

例外

表18-20 ALTER_MASTER_REPOBJECTプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

notquiesced

対応付けられたレプリケーション・グループは中断されていません。

missingobject

snameおよびonameで識別されるオブジェクトは存在しません。

typefailure

指定されたタイプ・パラメータはサポートされていません。

ddlfailure

マスター定義サイトのDDLが失敗しました。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

ALTER_MVIEW_PROPAGATIONプロシージャ

このプロシージャはカレント・マテリアライズド・ビュー・サイトの、指定されたレプリケーション・グループの伝播方法を変更します。このプロシージャは、マテリアライズド・ビュー・サイトの遅延トランザクション・キューをプッシュし、マテリアライズド・ビューをロックし、トリガーおよびトリガーに対応付けられたパッケージを再生成します。このプロシージャは、マテリアライズド・ビュー・サイトからコールする必要があります。

構文

DBMS_REPCAT.ALTER_MVIEW_PROPAGATION (
gname                IN  VARCHAR2,
propagation_mode     IN  VARCHAR2,
comment              IN  VARCHAR2   := '',
gowner               IN  VARCHAR2   := 'PUBLIC');

パラメータ

表18-21 ALTER_MVIEW_PROPAGATIONプロシージャのパラメータ

パラメータ

説明

gname

伝播方法の変更先のレプリケーション・グループの名前です。

propagation_mode

カレント・マテリアライズド・ビュー・サイトからの変更が、対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに伝播される様式です。適切な値はsynchronousおよびasynchronousです。

comment

このコメントは、DBA_REPPROPビューに追加されます。

gowner

マテリアライズド・ビュー・グループの所有者です。

例外

表18-22 ALTER_MVIEW_PROPAGATIONプロシージャの例外

例外

説明

missingrepgroup

指定されたレプリケーション・グループは存在しません。

typefailure

伝播モードが正しく指定されませんでした。

nonmview

カレント・サイトは、指定されたレプリケーション・グループのマテリアライズド・ビュー・サイトではありません。

commfailure

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにコンタクトできません。

failaltermviewrop

マテリアライズド・ビュー・グループの伝播は、マテリアライズド・ビュー・サイトを共有するマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトが同一の、他のマテリアライズド・ビュー・グループが存在しない場合のみ変更できます。

ALTER_PRIORITYプロシージャ

このプロシージャは、指定された優先グループ・メンバーに対応付けられた優先順位レベルを変更します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.ALTER_PRIORITY (
gname            IN   VARCHAR2,
pgroup           IN   VARCHAR2,
old_priority     IN   NUMBER,
new_priority     IN   NUMBER);

パラメータ

表18-23 ALTER_PRIORITYプロシージャのパラメータ

パラメータ

説明

gname

優先グループの対応付けられたマスター・グループです。

pgroup

変更する優先順位が含まれる優先グループの名前です。

old_priority

優先グループ・メンバーの現行の優先順位レベルです。

new_priority

優先グループ・メンバーに割り当てる新しい優先順位レベルです。

例外

表18-24 ALTER_PRIORITYプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

duplicatepriority

新しい優先順位レベルは、優先グループに存在しています。

missingrepgroup

指定されたマスター・グループは存在しません。

missingvalue

DBMS_REPCAT.ADD_PRIORITY_datatypeへのコールで値が登録されませんでした。

missingprioritygroup

指定された優先グループは存在しません。

notquiesced

指定されたマスター・グループは静止していません。

ALTER_PRIORITY_datatypeプロシージャ

このプロシージャは、優先グループ・メンバーの値を変更します。このプロシージャは、マスター定義サイトからコールする必要があります。コールするプロシージャは、priority列のデータ型によって異なります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.ALTER_PRIORITY_datatype (
gname        IN   VARCHAR2,
pgroup       IN   VARCHAR2,
old_value    IN   datatype,
new_value    IN   datatype);

datatypeは次のとおりです。

{ NUMBER
| VARCHAR2
| CHAR
| DATE
| RAW
| NCHAR
| NVARCHAR2 }

パラメータ

表18-25 ALTER_PRIORITY_datatypeプロシージャのパラメータ

パラメータ

説明

gname

優先グループの対応付けられたマスター・グループです。

pgroup

変更する値が含まれる優先グループの名前です。

old_value

優先グループ・メンバーのカレント値です。

new_value

優先グループ・メンバーに割り当てる新しい値です。

例外

表18-26 ALTER_PRIORITY_datatypeプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

duplicatevalue

新しい値は、優先グループに存在しています。

missingrepgroup

指定されたマスター・グループは存在しません。

missingprioritygroup

指定された優先グループは存在しません。

missingvalue

古い値は存在しません。

paramtype

新しい値のデータ型は、この優先グループには不適切です。

typefailure

指定された値のデータ型は、この優先グループには不適切です。

notquiesced

指定されたマスター・グループは静止していません。

ALTER_SITE_PRIORITYプロシージャ

このプロシージャは、指定されたサイトに対応付けられた優先順位レベルを変更します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.ALTER_SITE_PRIORITY (
gname         IN   VARCHAR2,
name          IN   VARCHAR2,
old_priority  IN   NUMBER,
new_priority  IN   NUMBER);

パラメータ

表18-27 ALTER_SITE_PRIORITYプロシージャのパラメータ

パラメータ

説明

gname

サイト優先グループの対応付けられたマスター・グループです。

name

メンバーを変更するサイト優先グループの名前です。

old_priority

優先順位レベルを変更するサイトの、現行の優先順位レベルです。

new_priority

サイトの新しい優先順位レベルです。数値が高いほど、優先順位レベルが高くなります。

例外

表18-28 ALTER_SITE_PRIORITYプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

missingpriority

古い優先順位レベルは、どのグループ・メンバーにも対応付けられていません。

duplicatepriority

新しい優先順位レベルは、グループの他のサイト用に存在しています。

missingvalue

古い値は存在しません。

paramtype

新しい値のデータ型は、この優先グループには不適切です。

notquiesced

マスター・グループは静止していません。

ALTER_SITE_PRIORITY_SITEプロシージャ

このプロシージャは、指定された優先順位レベルに対応付けられたサイトを変更します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.ALTER_SITE_PRIORITY_SITE (
gname     IN   VARCHAR2,
name      IN   VARCHAR2,
old_site  IN   VARCHAR2,
new_site  IN   VARCHAR2);

パラメータ

表18-29 ALTER_SITE_PRIORITY_SITEプロシージャのパラメータ

パラメータ

説明

gname

サイト優先グループの対応付けられたマスター・グループです。

name

メンバーを変更するサイト優先グループの名前です。

old_site

優先順位レベルとの対応付けを解除するサイトの、カレント・グローバル・データベース名です。

new_site

カレント優先順位レベルと対応付ける、新しいグローバル・データベース名です。

例外

表18-30 ALTER_SITE_PRIORITY_SITEプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

missingpriority

指定されたサイト優先グループは存在しません。

missingvalue

古いサイトはグループ・メンバーではありません。

notquiesced

マスター・グループは静止していません。

CANCEL_STATISTICSプロシージャ

このプロシージャは、正常に実行された表の更新、一意性および削除の競合解消の統計の収集を中止します。

構文

DBMS_REPCAT.CANCEL_STATISTICS (
sname    IN   VARCHAR2,
oname    IN   VARCHAR2);

パラメータ

表18-31 CANCEL_STATISTICSプロシージャのパラメータ

パラメータ

説明

sname

表が置かれたスキーマの名前です。

oname

競合解消の統計を収集しない表の名前です。

例外

表18-32 CANCEL_STATISTICSプロシージャの例外

例外

説明

missingschema

指定されたスキーマは存在しません。

missingobject

指定された表は存在しません。

statnotreg

指定された表は現在、統計の収集用に登録されていません。

COMMENT_ON_COLUMN_GROUPプロシージャ

このプロシージャは、列グループのDBA_REPCOLUMN_GROUPビュー内のコメント・フィールドを更新します。このコメントは、DBMS_REPCAT.GENERATE_REPLICATION_SUPPORTへの次のコールまで、どのマスター・サイトでも追加されません。

構文

DBMS_REPCAT.COMMENT_ON_COLUMN_GROUP (
sname           IN   VARCHAR2,
oname           IN   VARCHAR2,
column_group    IN   VARCHAR2,
comment         IN   VARCHAR2);

パラメータ

表18-33 COMMENT_ON_COLUMN_GROUPプロシージャのパラメータ

パラメータ

説明

sname

オブジェクトが置かれたスキーマの名前です。

oname

列グループが対応付けられているレプリケート表の名前です。

column_group

列グループの名前です。

comment

DBA_REPCOLUMN_GROUPビューのGROUP_COMMENTフィールドに含める、更新されたコメントのテキストです。

例外

表18-34 COMMENT_ON_COLUMN_GROUPプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missinggroup

指定された列グループは存在しません。

missingobj

オブジェクトがありません。

COMMENT_ON_MVIEW_REPSITESプロシージャ

このプロシージャは、指定されたマテリアライズド・ビュー・グループのDBA_REPGROUPデータ・ディクショナリ・ビュー内のSCHEMA_COMMENTフィールドを更新します。グループ名は、ローカルでレプリケート・マテリアライズド・ビュー・グループとして登録する必要があります。このプロシージャは、マテリアライズド・ビュー・サイトで実行する必要があります。

構文

DBMS_REPCAT.COMMENT_ON_MVIEW_REPSITES (
gowner    IN   VARCHAR2,
gname     IN   VARCHAR2,
comment   IN   VARCHAR2);

パラメータ

表18-35 COMMENT_ON_MVIEW_REPSITESプロシージャのパラメータ

パラメータ

説明

gowner

マテリアライズド・ビュー・グループの所有者です。

gname

マテリアライズド・ビュー・グループの名前です。

comment

DBA_REPGROUPビューのSCHEMA_COMMENTフィールドに含める、更新されたコメントです。

例外

表18-36 COMMENT_ON_MVIEW_REPSITESプロシージャの例外

パラメータ

説明

missingrepgroup

マテリアライズド・ビュー・グループは存在しません。

nonmview

接続サイトはマテリアライズド・ビュー・サイトではありません。

COMMENT_ON_PRIORITY_GROUPプロシージャ

このプロシージャは、優先グループのDBA_REPPRIORITY_GROUPビュー内のコメント・フィールドを更新します。このコメントは、GENERATE_REPLICATION_SUPPORTへの次のコールまで、どのマスター・サイトでも追加されません。

構文

DBMS_REPCAT.COMMENT_ON_PRIORITY_GROUP (
gname       IN   VARCHAR2,
pgroup      IN   VARCHAR2,
comment     IN   VARCHAR2);

パラメータ

表18-37 COMMENT_ON_PRIORITY_GROUPプロシージャのパラメータ

パラメータ

説明

gname

マスター・グループの名前です。

pgroup

優先グループの名前です。

comment

DBA_REPPRIORITY_GROUPビューのPRIORITY_COMMENTフィールドに含める、更新されたコメントのテキストです。

例外

表18-38 COMMENT_ON_PRIORITY_GROUPプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

missingprioritygroup

指定された優先グループは存在しません。

COMMENT_ON_REPGROUPプロシージャ

このプロシージャは、マスター・グループのDBA_REPGROUPビュー内のコメント・フィールドを更新します。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.COMMENT_ON_REPGROUP (
gname     IN   VARCHAR2,
comment   IN   VARCHAR2);

パラメータ

表18-39 COMMENT_ON_REPGROUPプロシージャのパラメータ

パラメータ

説明

gname

コメントを付けるレプリケーション・グループの名前です。

comment

DBA_REPGROUPビューのSCHEMA_COMMENTフィールドに含める、更新されたコメントです。

例外

表18-40 COMMENT_ON_REPGROUPプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

COMMENT_ON_REPOBJECTプロシージャ

このプロシージャは、マスター・グループ内のレプリケート・オブジェクトのDBA_REPOBJECTビュー内のコメント・フィールドを更新します。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.COMMENT_ON_REPOBJECT (
sname    IN   VARCHAR2,
oname    IN   VARCHAR2,
type     IN   VARCHAR2,
comment  IN   VARCHAR2);

パラメータ

表18-41 COMMENT_ON_REPOBJECTプロシージャのパラメータ

パラメータ

説明

sname

オブジェクトが置かれたスキーマの名前です。

oname

コメントを付けるオブジェクトの名前です。オブジェクトには、ネストした表の記憶表は指定できません。

type

オブジェクトのタイプです。サポートされているタイプは次のとおりです。

FUNCTION              SYNONYM
INDEX                 TABLE
INDEXTYPE             TRIGGER
OPERATOR              TYPE
PACKAGE               TYPE BODY
PACKAGE BODY          VIEW
PROCEDURE

comment

DBA_REPOBJECTビューのOBJECT_COMMENTフィールドに含める、更新されたコメントのテキストです。

例外

表18-42 COMMENT_ON_REPOBJECTプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは存在しません。

typefailure

指定されたタイプ・パラメータはサポートされていません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

COMMENT_ON_REPSITESプロシージャ

レプリケーション・グループがマスター・グループの場合、このプロシージャは、マスターサイトのDBA_REPSITESビュー内のMASTER_COMMENTフィールドを更新します。レプリケーション・グループがマテリアライズド・ビュー・グループの場合、このプロシージャは、マテリアライズド・ビュー・サイトのDBA_REPGROUPビュー内のSCHEMA_COMMENTフィールドを更新します。

このプロシージャは、マスター・サイトでもマテリアライズド・ビュー・サイトでも実行できます。マテリアライズド・ビュー・サイトでこのプロシージャを実行する場合は、マテリアライズド・ビュー・グループの所有者がPUBLICである必要があります。

関連項目:
マテリアライズド・ビュー・グループの所有者がPUBLICでない場合にマテリアライズド・ビュー・サイトのDBA_REPGROUPビュー内のSCHEMA_COMMENTフィールドにコメントを配置する方法の詳細は、「COMMENT_ON_conflicttype_RESOLUTIONプロシージャ」を参照してください。

構文

DBMS_REPCAT.COMMENT_ON_REPSITES (
gname       IN   VARCHAR2,
[ master    IN   VARCHAR,]
comment     IN   VARCHAR2);

パラメータ

表18-43 COMMENT_ON_REPSITESプロシージャのパラメータ

パラメータ

説明

gname

レプリケーション・グループの名前です。1つのデータベースが複数のレプリケーション環境でマスター・サイトになっている場合、このパラメータによって混乱が回避されます。

master

コメントを付けるマスター・サイトの、完全修飾されたデータベース名です。マスター・サイトでこのプロシージャを実行する場合は、このパラメータが必要です。マテリアライズド・ビュー・サイトでコメントを更新するには、このパラメータを省略します。このパラメータはオプションです。

comment

適切なディクショナリ・ビューのコメント・フィールドに含める、更新されたコメントのテキストです。サイトがマスター・サイトの場合、DBA_REPSITESビュー内のMASTER_COMMENTフィールドを更新します。サイトがマテリアライズド・ビュー・サイトの場合、DBA_REPGROUPビュー内のSCHEMA_COMMENTフィールドを更新します。

例外

表18-44 COMMENT_ON_REPSITESプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

nonmaster

起動サイトはマスター・サイトではありません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

missingrepgroup

レプリケーション・グループは存在しません。

commfailure

1つ以上のマスター・サイトにアクセスできません。

corrupt

レプリケーション・カタログ・ビューに不整合があります。

COMMENT_ON_SITE_PRIORITYプロシージャ

このプロシージャは、サイト優先グループのDBA_REPPRIORITY_GROUPビュー内のコメント・フィールドを更新します。このプロシージャはCOMMENT_ON_COLUMN_GROUPプロシージャのラッパーで、便宜的に提供されるものです。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.COMMENT_ON_SITE_PRIORITY (
gname       IN   VARCHAR2,
name        IN   VARCHAR2,
comment     IN   VARCHAR2);

パラメータ

表18-45 COMMENT_ON_SITE_PRIORITYプロシージャのパラメータ

パラメータ

説明

gname

マスター・グループの名前です。

name

サイト優先グループの名前です。

comment

DBA_REPPRIORITY_GROUPビューのPRIORITY_COMMENTフィールドに含める、更新されたコメントのテキストです。

例外

表18-46 COMMENT_ON_SITE_PRIORITYプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

missingprioritygroup

指定された優先グループは存在しません。

COMMENT_ON_conflicttype_RESOLUTIONプロシージャ

このプロシージャは、競合解消ルーチンのDBA_REPRESOLUTIONビュー内のRESOLUTION_COMMENTフィールドを更新します。コールするプロシージャは、ルーチンが解消する競合のタイプによって異なります。これらのプロシージャは、マスター定義サイトからコールする必要があります。

表18-47 COMMENT_ON_conflicttype_RESOLUTIONプロシージャ

競合のタイプ

プロシージャ名

update

COMMENT_ON_UPDATE_RESOLUTION

uniqueness

COMMENT_ON_UNIQUE_RESOLUTION

delete

COMMENT_ON_DELETE_RESOLUTION

コメントは、GENERATE_REPLICATION_SUPPORTへの次のコールまで、どのマスター・サイトでも追加されません。

構文

DBMS_REPCAT.COMMENT_ON_UPDATE_RESOLUTION (
sname                 IN   VARCHAR2,
oname                 IN   VARCHAR2,
column_group          IN   VARCHAR2,
sequence_no           IN   NUMBER,
comment               IN   VARCHAR2);

DBMS_REPCAT.COMMENT_ON_UNIQUE_RESOLUTION (
sname                 IN   VARCHAR2,
oname                 IN   VARCHAR2,
constraint_name       IN   VARCHAR2,
sequence_no           IN   NUMBER,
comment               IN   VARCHAR2);

DBMS_REPCAT.COMMENT_ON_DELETE_RESOLUTION (
sname                 IN   VARCHAR2,
oname                 IN   VARCHAR2,
sequence_no           IN   NUMBER,
comment               IN   VARCHAR2);

パラメータ

表18-48 COMMENT_ON_conflicttype_RESOLUTIONプロシージャのパラメータ

パラメータ

説明

sname

スキーマの名前です。

oname

競合解消ルーチンが対応付けられているレプリケート表の名前です。

column_group

更新の競合解消ルーチンが対応付けられている列グループの名前です。

constraint_name

一意性競合解消ルーチンが対応付けられている一意制約の名前です。

sequence_no

競合解消プロシージャの順序番号です。

comment

DBA_REPRESOLUTIONビューのRESOLUTION_COMMENTフィールドに含める、更新されたコメントのテキストです。

例外

表18-49 COMMENT_ON_conflicttype_RESOLUTIONプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは存在しません。

missingresolution

指定された競合解消ルーチンは登録されていません。

COMPARE_OLD_VALUESプロシージャ

このプロシージャは、遅延トランザクションの伝播中に、更新および削除のために各マスター・サイトの古い列値をレプリケート表の非キー列と比較するかどうかを指定します。デフォルトでは、すべての列の古い値が比較されます。マスター定義サイトでDBMS_REPCAT.COMPARE_OLD_VALUESを呼び出すことにより、すべてのマスター・サイトおよびマテリアライズド・ビュー・サイトで、この動作を変更できます。

ユーザー定義型を使用する場合は、列オブジェクトのリーフ属性、または列オブジェクト全体を指定できます。たとえば、cust_addressという列オブジェクトにstreet_addressという属性がある場合、column_listパラメータに、またはcolumn_tableパラメータの一部として、cust_address.street_addressを指定するか、cust_addressのみを指定できます。

競合検出のための等価比較を実行する場合、オブジェクトは次のいずれかの条件に該当する場合のみ等価として扱われます。

- 両方のオブジェクトがアトミックNULLの場合(オブジェクト全体はNULL)

- オブジェクト内で、対応する属性すべてが等価な場合

これらの条件をふまえて、一方のオブジェクトがアトミックNULLで他方がそうでない場合、それらのオブジェクトは等価とは扱われません。等価比較を実行する際には、MAPメソッドおよびORDERメソッドは考慮されません。

構文

DBMS_REPCAT.COMPARE_OLD_VALUES(
sname           IN  VARCHAR2,
oname           IN  VARCHAR2,
{ column_list   IN  VARCHAR2,
| column_table  IN  DBMS_UTILITY.VARCHAR2S | DBMS_UTILITY.LNAME_ARRAY,}
operation       IN  VARCHAR2 := 'UPDATE',
compare         IN  BOOLEAN  := TRUE );

注意:
このプロシージャはオーバーロードされています。column_listパラメータとcolumn_tableパラメータは、同時には指定できません。

パラメータ

表18-50 COMPARE_OLD_VALUESプロシージャのパラメータ

パラメータ

説明

sname

表が置かれたスキーマの名前です。

oname

レプリケート表の名前。表はネストした表の記憶表を利用できます。

column_list

表の列のカンマ区切りのリストです。各エントリの間にはスペースを挿入しません。

column_table

リストのかわりに、DBMS_REPCAT.VARCHAR2SまたはDBMS_UTILITY.LNAME_ARRAYのPL/SQL連想配列を使用して列名を指定できます。最初の列名は1の位置、2番目の列名は2の位置と、順に配置します。

30バイト以上の列名がある場合は、DBMS_UTILITY.LNAME_ARRAYを使用します。これは列オブジェクトの属性を指定した際に起こる場合があります。

operation

可能な値は、update、delete、または更新と削除を意味するアスタリスク・ワイルドカード'*'です。

compare

値がTRUEに設定されている場合、指定された列の古い値は送信時に比較されます。値がFALSEに設定されている場合、指定された列の古い値は送信時に比較されません。指定されていない列や操作には影響がありません。表のmin_communicationがTRUEになると、マスター定義サイトで、指定された変更が有効になります。min_communication TRUEで、マスター・サイトやマテリアライズド・ビュー・サイトで次にレプリケーション・サポートが生成されると、変更が有効になります。

注意:
operationパラメータにより、行が削除または更新された際に非キー列の古い値を比較するかどうかを決定できます。古い値を比較しない場合、古い値は更新または削除を行った時点でのターゲット・サイドの列のカレント値とみなされます。
Oracleのデフォルトの動作を変更する前に、COMPARE_OLD_VALUESプロシージャを使用して削減されるデータ伝播の詳細を、『Oracle Databaseアドバンスト・レプリケーション』で参照してください。

例外

表18-51 COMPARE_OLD_VALUESプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは、行レベル・レプリケーションの情報が必要な指定されたスキーマ内の表として存在しません。

missingcolumn

少なくとも1つの列が、表に存在しません。

notquiesced

マスター・グループは静止していません。

typefailure

無効な操作が指定されました。

keysendcomp

指定された列は、表中のキー列です。

dbnotcompatible

機能がデータベースのバージョンと互換性がありません。この例外は一般的に、列オブジェクトの属性を比較しようとした際に発生します。この場合、データベースの互換性のレベルは、すべて9.2.0以上である必要があります。

CREATE_MASTER_REPGROUPプロシージャ

このプロシージャは、新しい空の静止したマスター・グループを作成します。

構文

DBMS_REPCAT.CREATE_MASTER_REPGROUP (
gname            IN   VARCHAR2,
group_comment    IN   VARCHAR2     := '',
master_comment   IN   VARCHAR2     := '',
qualifier        IN   VARCHAR2     := '');

パラメータ

表18-52 CREATE_MASTER_REPGROUPプロシージャのパラメータ

パラメータ

説明

gname

作成するマスター・グループの名前です。

group_comment

このコメントは、DBA_REPGROUPビューに追加されます。

master_comment

このコメントは、DBA_REPSITESビューに追加されます。

qualifier

マスター・グループの接続修飾子です。@記号を必ず使用してください。接続修飾子の詳細は、『Oracle Databaseアドバンスト・レプリケーション』および『Oracle Database管理者ガイド』を参照してください。

例外

表18-53 CREATE_MASTER_REPGROUPプロシージャの例外

例外

説明

duplicaterepgroup

マスター・グループは存在しています。

norepopt

アドバンスト・レプリケーション・オプションがインストールされていません。

missingrepgroup

マスター・グループの名前が指定されませんでした。

qualifiertoolong

接続修飾子が長すぎます。

CREATE_MASTER_REPOBJECTプロシージャ

このプロシージャは、オブジェクトをマスター・グループに追加してレプリケート・オブジェクトにします。このプロシージャはユーザー定義型のオブジェクト識別子および全レプリケーション・サイトのオブジェクト表を保存します。

クラスタ化表のレプリケーションがサポートされていますが、クラスタ化表の場合は、use_existing_objectパラメータをFALSEに設定できません。つまり、CREATE_MASTER_REPOBJECTプロシージャを実行する前に、マスター・グループに関係するすべてのマスター・サイトでクラスタ化表を作成する必要があります。ただし、これらの表に表データを入れる必要はありません。このため、クラスタ化表のcopy_rowsパラメータをTRUEに設定できます。

構文

DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
sname                IN   VARCHAR2,
oname                IN   VARCHAR2,
type                 IN   VARCHAR2,
use_existing_object  IN   BOOLEAN     := TRUE,
ddl_text             IN   VARCHAR2    := NULL,
comment              IN   VARCHAR2    := '',
retry                IN   BOOLEAN     := FALSE,
copy_rows            IN   BOOLEAN     := TRUE,
gname                IN   VARCHAR2    := '');

パラメータ

表18-54 CREATE_MASTER_REPOBJECTプロシージャのパラメータ

パラメータ

説明

sname

レプリケートするオブジェクトが置かれたスキーマの名前です。

oname

レプリケートするオブジェクトの名前です。ddl_textがNULLの場合、このオブジェクトは指定されたスキーマに存在しています。一意性を確実にするため、表の名前は最長で27バイト、パッケージの名前は24バイト以内にします。オブジェクトには、ネストした表の記憶表は指定できません。

type

レプリケートするオブジェクトのタイプです。サポートされているタイプは次のとおりです。

FUNCTION                SYNONYM
INDEX                   TABLE
INDEXTYPE               TRIGGER
OPERATOR                TYPE
PACKAGE                 TYPE BODY
PACKAGE BODY            VIEW
PROCEDURE

use_existing_object

カレント・マスター・サイトで、同じタイプで同じshapeのオブジェクトを再利用する場合は、TRUEを指定します。詳細は、表18-56を参照してください。

注意: クラスタ化表の場合、このパラメータはTRUEに設定する必要があります。

ddl_text

オブジェクトがマスター定義サイトに存在していない場合は、このオブジェクトの作成に必要なDDLテキストを渡す必要があります。PL/SQLパッケージ、パッケージ本体、プロシージャおよびファンクションには、セミコロン(；)が必要です。SQL文の最後はセミコロン(；)ではありません。DDLは、適用の前に解析されることはないため、DDLテキストには、作成されるオブジェクトについての適切なスキーマおよびオブジェクト名が含まれるようにする必要があります。

スキーマ(snameパラメータ)を指定せずにDDLが渡された場合、レプリケーション管理者のスキーマがデフォルトのスキーマになります。レプリケーション管理者のスキーマ以外のスキーマを使用する場合は、必ずスキーマを指定してください。

注意: ユーザー定義型やオブジェクト表の追加には、ddl_textパラメータを使用しないでください。かわりにまずオブジェクトを作成して、そのオブジェクトを追加します。

comment

このコメントは、DBA_REPOBJECTビューのOBJECT_COMMENTフィールドに追加されます。

retry

前に作成できなかったオブジェクトの作成を再実行する場合は、TRUEを指定します。エラーが一時的あるいは調整済の場合、または以前にリソースが不十分であった場合にはこれを使用します。TRUEを指定すると、オブジェクト・ステータスがVALIDでないマスター・サイトでのみ、オブジェクトが作成されます。

copy_rows

新しいレプリケート・オブジェクトの初期の内容を、マスター定義サイトのオブジェクトの内容と一致させる場合は、TRUEを指定します。詳細は、表18-56を参照してください。

gname

レプリケート・オブジェクトを作成するレプリケーション・グループの名前です。レプリケーション・グループ名が指定されない場合、スキーマ名がデフォルトのレプリケーション・グループ名として使用されます。その場合、プロシージャを正常に終了するためには、スキーマと同じ名前のレプリケーション・グループが存在している必要があります。

例外

表18-55 CREATE_MASTER_REPOBJECTプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

notquiesced

マスター・グループは静止していません。

duplicateobject

指定されたオブジェクトは、マスター・グループに存在しており、retryはFALSEです。名前が重複している場合も、この例外が発生します。

missingobject

snameおよびonameで識別されるオブジェクトは存在しません。また、適切なDDLが渡されていません。

typefailure

指定されたタイプのオブジェクトはレプリケートできません。

ddlfailure

マスター定義サイトのDDLが失敗しました。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

オブジェクト作成

表18-56 マスター・サイトでのオブジェクト作成

既存のオブジェクトの有無

COPY_ROWS

USE_EXISTING_OBJECTS

結果

有

TRUE

TRUE

オブジェクトが一致しない場合、duplicatedobjectメッセージが生成されます。表の場合は、マスター定義サイトのデータを使用します。

有

FALSE

TRUE

オブジェクトが一致しない場合、duplicatedobjectメッセージが生成されます。表の場合、データベース管理者は、内容を同一にする必要があります。

有

TRUE/FALSE

FALSE

duplicatedobjectメッセージが生成されます。

無

TRUE

TRUE/FALSE

オブジェクトが作成されます。マスター定義サイトのデータを使用して、表が設定されます。

無

FALSE

TRUE/FALSE

オブジェクトが作成されます。データベース管理者は、表を設定し、すべてのサイトで表の整合性を保つようにする必要があります。

CREATE_MVIEW_REPGROUPプロシージャ

このプロシージャは、ローカル・データベースに、新しい空のマテリアライズド・ビュー・グループを作成します。CREATE_MVIEW_REPGROUPではREGISTER_MIEW_REPGROUPが自動的にコールされますが、登録中にエラーが発生しても無視されます。

構文

DBMS_REPCAT.CREATE_MVIEW_REPGROUP (
gname              IN   VARCHAR2,
master             IN   VARCHAR2,
comment            IN   VARCHAR2     := '',
propagation_mode   IN   VARCHAR2     := 'ASYNCHRONOUS',
fname              IN   VARCHAR2     := NULL
gowner             IN   VARCHAR2     := 'PUBLIC');

パラメータ

表18-57 CREATE_MVIEW_REPGROUPプロシージャのパラメータ

パラメータ

説明

gname

レプリケーション・グループの名前です。このグループは、指定されたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに存在する必要があります。

master

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトとして使用する、レプリケーション環境のデータベースの完全修飾されたデータベース名です。必要な場合は接続修飾子も指定できます。接続修飾子の使用方法の詳細は、『Oracle Databaseアドバンスト・レプリケーション』および『Oracle Database管理者ガイド』を参照してください。

comment

このコメントは、DBA_REPGROUPビューに追加されます。

propagation_mode

レプリケーション・グループ内の、すべての更新可能なマテリアライズド・ビューのための伝播方法です。使用できる値はsynchronousおよびasynchronousです。

fname

このパラメータは内部で使用します。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

gowner

マテリアライズド・ビュー・グループの所有者です。

例外

表18-58 CREATE_MVIEW_REPGROUPプロシージャの例外

例外

説明

duplicaterepgroup

レプリケーション・グループは、起動サイトに存在しています。

nonmaster

データベースはマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトではありません。

commfailure

指定されたデータベースにはアクセスできません。

norepopt

アドバンスト・レプリケーション・オプションがインストールされていません。

typefailure

伝播モードが正しく指定されませんでした。

missingrepgroup

レプリケーション・グループはマスター・サイトに存在しません。

invalidqualifier

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに指定された接続修飾子は、レプリケーション・グループには使用できません。

alreadymastered

ローカル・サイトに、同じグループ名で、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトが異なる別のマテリアライズド・ビュー・グループがあります。

CREATE_MVIEW_REPOBJECTプロシージャ

このプロシージャはマテリアライズド・ビュー・グループにレプリケート・オブジェクトを追加します。

構文

DBMS_REPCAT.CREATE_MVIEW_REPOBJECT (
sname                   IN   VARCHAR2,
oname                   IN   VARCHAR2,
type                    IN   VARCHAR2,
ddl_text                IN   VARCHAR2  := '',
comment                 IN   VARCHAR2  := '',
gname                   IN   VARCHAR2  := '',
gen_objs_owner          IN   VARCHAR2  := '',
min_communication       IN   BOOLEAN   := TRUE,
generate_80_compatible  IN   BOOLEAN   := TRUE,
gowner                  IN   VARCHAR2  := 'PUBLIC');

パラメータ

表18-59 CREATE_MVIEW_REPOBJECTプロシージャのパラメータ

パラメータ

説明

sname

オブジェクトが置かれたスキーマの名前です。スキーマは、このマテリアライズド・ビューのベースとなるマスター表またはマスター・マテリアライズド・ビューを所有するスキーマと同じものである必要があります。

oname

レプリケート・マテリアライズド・ビュー・グループに追加するオブジェクトの名前です。

type

レプリケートするオブジェクトのタイプです。サポートされているタイプは次のとおりです。

FUNCTION               SNAPSHOT
INDEX                  SYNONYM
INDEXTYPE              TRIGGER
OPERATOR               TYPE
PACKAGE                TYPE BODY
PACKAGE BODY           VIEW
PROCEDURE

SNAPSHOTタイプのオブジェクトを使用するのは、マテリアライズド・ビューです。

ddl_text

タイプMATERIALIZED VIEWのオブジェクトの場合、オブジェクトを作成するために必要なDDLです。他のタイプの場合は、次のデフォルトを使用します。

'' (an empty string)

同じ名前のマテリアライズド・ビューが存在している場合、DDLは無視され、既存のマテリアライズド・ビューがレプリケート・オブジェクトとして登録されます。マテリアライズド・ビュー用のマスター表またはマスター・マテリアライズド・ビューが、このスキーマに指定されているマスターのレプリケーション・グループに存在しない場合は、missingobjectエラーが発生します。

スキーマを指定せずにDDLが渡された場合、レプリケーション管理者のスキーマがデフォルトのスキーマになります。レプリケーション管理者のスキーマ以外のスキーマを使用する場合は、必ずスキーマを指定してください。

オブジェクトがMATERIALIZED VIEWタイプでない場合は、マテリアライズド・ビュー・サイトはマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続してDDLテキストをプルダウンし、オブジェクトを作成します。オブジェクト型がTYPEまたはTYPE BODYの場合は、マテリアライズド・ビュー・サイトにおけるオブジェクトのオブジェクト識別子(OID)はマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにおけるOIDと同じになります。

comment

このコメントは、DBA_REPOBJECTビューのOBJECT_COMMENTフィールドに追加されます。

gname

オブジェクトを追加するレプリケート・マテリアライズド・ビュー・グループの名前です。グループ名が指定されない場合、スキーマ名がデフォルトのグループ名として使用されます。また、プロシージャを正常に終了するためには、スキーマと同じ名前のマテリアライズド・ビュー・グループが存在している必要があります。

gen_objs_owner

トランザクションの所有者として割り当てるユーザーの名前です。

min_communication

このパラメータは廃止されています。デフォルト値(TRUE)を使用してください。

generate_80_compatible

Oracle8i のデータベースとOracle 11g 以上のデータベース間の相互運用性はサポートされていないため、FALSEに設定します。

gowner

マテリアライズド・ビュー・グループの所有者です。

例外

表18-60 CREATE_MVIEW_REPOBJECTプロシージャの例外

例外

説明

nonmview

起動サイトはマテリアライズド・ビュー・サイトではありません。

nonmaster

マスターがマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトではなくなっています。

missingobject

指定されたオブジェクトは、マスターのレプリケーション・グループに存在しません。

duplicateobject

指定されたオブジェクトは、異なるshapeで存在しています。

typefailure

許可されないタイプです。

ddlfailure

DDLが失敗しました。

commfailure

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにアクセスできません。

missingschema

スキーマは、データベース・スキーマとして存在していません。

badmviewddl

DDLは実行されましたが、マテリアライズド・ビューが存在しません。

onlyonemview

マスター表のマテリアライズド・ビュー、またはマスター・マテリアライズド・ビューを、1つのみ作成できます。

badmviewname

マテリアライズド・ビューがマスター表またはマスター・マテリアライズド・ビューと異なります。

missingrepgroup

マスターのレプリケーション・グループは存在しません。

DEFINE_COLUMN_GROUPプロシージャ

このプロシージャは、空の列グループを作成します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DEFINE_COLUMN_GROUP (
sname            IN   VARCHAR2,
oname            IN   VARCHAR2,
column_group     IN   VARCHAR2,
comment          IN   VARCHAR2 := NULL);

パラメータ

表18-61 DEFINE_COLUMN_GROUPプロシージャのパラメータ

パラメータ

説明

sname

レプリケート表が置かれたスキーマの名前です。

oname

列グループを作成するレプリケート表の名前です。

column_group

作成する列グループの名前です。

comment

このユーザー・コメントは、DBA_REPCOLUMN_GROUPビューに表示されます。

例外

表18-62 DEFINE_COLUMN_GROUPプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定された表は存在しません。

duplicategroup

指定された列グループはこの表に存在しています。

notquiesced

指定された表が所属するレプリケーション・グループは静止していません。

DEFINE_PRIORITY_GROUPプロシージャ

このプロシージャは、マスター・グループの新しい優先グループを作成します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DEFINE_PRIORITY_GROUP (
gname         IN   VARCHAR2,
pgroup        IN   VARCHAR2,
datatype      IN   VARCHAR2,
fixed_length  IN   INTEGER := NULL,
comment       IN   VARCHAR2 := NULL);

パラメータ

表18-63 DEFINE_PRIORITY_GROUPプロシージャのパラメータ

パラメータ

説明

gname

優先グループを作成するマスター・グループの名前です。

pgroup

作成する優先グループの名前です。

datatype

優先グループ・メンバーのデータ型です。サポートされているデータ型は、CHAR、VARCHAR2、NUMBER、DATE、RAW、NCHARおよびNVARCHAR2です。

fixed_length

CHARデータ型の列の長さを指定する必要があります。他のすべてのデータ型では、デフォルトのNULLを使用できます。

comment

このユーザー・コメントは、DBA_REPPRIORITYビューに追加されます。

例外

表18-64 DEFINE_PRIORITY_GROUPプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

duplicatepriority group

指定された優先グループは、マスター・グループに存在しています。

typefailure

指定されたデータ型はサポートされていません。

notquiesced

マスター・グループは静止していません。

DEFINE_SITE_PRIORITYプロシージャ

このプロシージャは、マスター・グループの新しいサイト優先グループを作成します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DEFINE_SITE_PRIORITY (
gname        IN   VARCHAR2,
name         IN   VARCHAR2,
comment      IN   VARCHAR2 := NULL);

パラメータ

表18-65 DEFINE_SITE_PRIORITYプロシージャのパラメータ

パラメータ

説明

gname

サイト優先グループを作成するマスター・グループの名前です。

name

作成するサイト優先グループの名前です。

comment

このユーザー・コメントは、DBA_REPPRIORITYビューに追加されます。

例外

表18-66 DEFINE_SITE_PRIORITYプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

duplicate prioritygroup

指定されたサイト優先グループは、マスター・グループに存在しています。

notquiesced

マスター・グループは静止していません。

DO_DEFERRED_REPCAT_ADMINプロシージャ

このプロシージャは、カレント・マスター・サイトの指定されたマスター・グループ、またはすべてのマスター・サイトに対して、ローカルな遅延管理プロシージャを実行します。すべてのマスター・サイトに対する遅延管理プロシージャは、ジョブ・キューを利用して実行されます。

DO_DEFERRED_REPCAT_ADMINでは、DO_DEFERRED_REPCAT_ADMINをコールした接続ユーザーが発行した管理要求のみが実行されます。他のユーザーが発行した要求は無視されます。

構文

DBMS_REPCAT.DO_DEFERRED_REPCAT_ADMIN (
gname          IN   VARCHAR2,
all_sites      IN   BOOLEAN := FALSE);

パラメータ

表18-67 DO_DEFERRED_REPCAT_ADMINプロシージャのパラメータ

パラメータ

説明

gname

マスター・グループの名前です。

all_sites

値がTRUEの場合は、ジョブを使用して、各マスター・サイトでローカルな管理プロシージャが実行されます。

例外

表18-68 DO_DEFERRED_REPCAT_ADMINプロシージャの例外

例外

説明

nonmaster

起動サイトはマスター・サイトではありません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。all_sitesはTRUEに設定されています。

DROP_COLUMN_GROUPプロシージャ

このプロシージャは、列グループを削除します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DROP_COLUMN_GROUP (
sname        IN   VARCHAR2,
oname        IN   VARCHAR2,
column_group IN   VARCHAR2);

パラメータ

表18-69 DROP_COLUMN_GROUPプロシージャのパラメータ

パラメータ

説明

sname

レプリケート表が置かれたスキーマの名前です。

oname

列グループを削除するレプリケート表の名前です。

column_group

削除対象の列グループの名前です。

例外

表18-70 DROP_COLUMN_GROUPプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

referenced

指定された列グループは、競合の検出および解消に使用されています。

missingobject

指定された表は存在しません。

missinggroup

指定された列グループは存在しません。

notquiesced

表が所属するマスター・グループは静止していません。

DROP_GROUPED_COLUMNプロシージャ

このプロシージャは、列グループからメンバーを削除します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DROP_GROUPED_COLUMN (
sname                 IN   VARCHAR2,
oname                 IN   VARCHAR2,
column_group          IN   VARCHAR2,
list_of_column_names  IN   VARCHAR2 | DBMS_REPCAT.VARCHAR2S);

パラメータ

表18-71 DROP_GROUPED_COLUMNプロシージャのパラメータ

パラメータ

説明

sname

レプリケート表が置かれたスキーマの名前です。

oname

列グループが置かれたレプリケート表の名前です。表はネストした表の記憶表を利用できます。

column_group

メンバーを削除する列グループの名前です。

list_of_column_names

指定された列グループから削除する列の名前です。列名は、カンマ区切りのリストとPL/SQL連想配列のいずれでも指定できます。PL/SQL連想配列のタイプはDBMS_REPCAT.VARCHAR2Sにする必要があります。

列オブジェクトは指定できますが、列オブジェクトの属性は指定できません。

表がオブジェクトである場合、SYS_NC_OID$を指定して列グループにオブジェクト識別子列を追加できます。この列は各行オブジェクトのオブジェクト識別子を追跡します。

表がネストした表の記憶表である場合は、NESTED_TABLE_IDを指定して、ネストした表の各行の識別子を追跡する列を追加できます。

例外

表18-72 DROP_GROUPED_COLUMNプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定された表は存在しません。

notquiesced

表が所属するマスター・グループは静止していません。

DROP_MASTER_REPGROUPプロシージャ

このプロシージャは、カレント・サイトからマスター・グループを削除します。マスター・グループを、マスター定義サイトを含むすべてのマスター・サイトから削除するには、このプロシージャをマスター定義サイトでコールして、all_sitesをTRUEに設定します。

構文

DBMS_REPCAT.DROP_MASTER_REPGROUP (
gname             IN VARCHAR2,
drop_contents     IN BOOLEAN    := FALSE,
all_sites         IN BOOLEAN    := FALSE);

パラメータ

表18-73 DROP_MASTER_REPGROUPプロシージャのパラメータ

パラメータ

説明

gname

カレント・マスター・サイトから削除するマスター・グループの名前です。

drop_contents

デフォルトでは、マスター・サイトのレプリケーション・グループを削除しても、すべてのオブジェクトはデータベースに残ります。ただし、これらのオブジェクトはレプリケートされなくなります。すなわち、レプリケーション・グループ内のレプリケート・オブジェクトは、他のマスター・サイトとの間で変更をやり取りしなくなります。値をTRUEに設定すると、マスター・グループ内のレプリケート・オブジェクトが、対応付けられたスキーマから削除されます。

all_sites

値がTRUEに設定され、起動サイトがマスター定義サイトの場合、このプロシージャにより要求がすべてのマスターに同期的にマルチキャストされます。この場合、マスター定義サイトではプロシージャが即座に実行されますが、他のマスター・サイトでは実行が遅れることがあります。

例外

表18-74 DROP_MASTER_REPGROUPプロシージャの例外

例外

説明

nonmaster

起動サイトはマスター・サイトではありません。

nonmasterdef

起動サイトはマスター定義サイトではありません。all_sitesはTRUEに設定されています。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。all_sitesはTRUEに設定されています。

fullqueue

遅延リモート・プロシージャ・コール(RPC)キューには、マスター・グループへのエントリがあります。

masternotremoved

マスターはマスター定義サイトを認識しません。all_sitesはTRUEに設定されています。

DROP_MASTER_REPOBJECTプロシージャ

このプロシージャは、マスター・グループからレプリケート・オブジェクトを削除します。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.DROP_MASTER_REPOBJECT (
sname          IN   VARCHAR2,
oname          IN   VARCHAR2,
type           IN   VARCHAR2,
drop_objects   IN   BOOLEAN     := FALSE);

パラメータ

表18-75 DROP_MASTER_REPOBJECTプロシージャのパラメータ

パラメータ

説明

sname

オブジェクトが置かれたスキーマの名前です。

oname

マスター・グループから削除するオブジェクトの名前です。オブジェクトには、ネストした表の記憶表は指定できません。

type

削除対象のオブジェクトのタイプです。サポートされているタイプは次のとおりです。

FUNCTION               SYNONYM
INDEX                  TABLE
INDEXTYPE              TRIGGER
OPERATOR               TYPE
PACKAGE                TYPE BODY
PACKAGE BODY           VIEW
PROCEDURE

drop_objects

デフォルトでは、オブジェクトはスキーマには残りますが、マスター・グループからは削除されます。すなわち、オブジェクトに対する変更が、他のマスター・サイトやマテリアライズド・ビュー・サイトにレプリケートされなくなります。レプリケーション環境からオブジェクトを完全に削除するには、このパラメータをTRUEに設定します。パラメータをTRUEに設定すると、オブジェクトは各マスター・サイトのデータベースから削除されます。

例外

表18-76 DROP_MASTER_REPOBJECTプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは存在しません。

typefailure

指定されたタイプ・パラメータはサポートされていません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

DROP_MVIEW_REPGROUPプロシージャ

このプロシージャは、レプリケーション環境からマテリアライズド・ビュー・サイトを削除します。DROP_MVIEW_REPGROUPは、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで自動的にUNREGISTER_MVIEW_REPGROUPをコールしてマテリアライズド・ビューの登録を解除しますが、登録解除の際に起こったエラーはすべて無視します。DROP_MVIEW_REPGROUPが正常に終了しなかった場合は、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに接続してUNREGISTER_MVIEW_REPGROUPを実行します。

構文

DBMS_REPCAT.DROP_MVIEW_REPGROUP (
gname                 IN   VARCHAR2,
drop_contents         IN   BOOLEAN   := FALSE,
gowner                IN   VARCHAR2  := 'PUBLIC');

パラメータ

表18-77 DROP_MVIEW_REPGROUPプロシージャのパラメータ

パラメータ

説明

gname

現行のマテリアライズド・ビュー・サイトから削除するレプリケーション・グループの名前です。トリガーやパッケージなど、レプリケーションのサポート用に生成されたすべてのオブジェクトが削除されます。

drop_contents

デフォルトでは、マテリアライズド・ビュー・サイトのレプリケーション・グループを削除しても、すべてのオブジェクトは対応付けられたスキーマに残ります。ただし、これらのオブジェクトはレプリケートされなくなります。値をTRUEに設定すると、レプリケーション・グループ内のレプリケート・オブジェクトが、対応付けられたスキーマから削除されます。

gowner

マテリアライズド・ビュー・グループの所有者です。

例外

表18-78 DROP_MVIEW_REPGROUPプロシージャの例外

例外

説明

nonmview

起動サイトはマテリアライズド・ビュー・サイトではありません。

missingrepgroup

指定されたレプリケーション・グループは存在しません。

DROP_MVIEW_REPOBJECTプロシージャ

このプロシージャは、マテリアライズド・ビュー・サイトからレプリケート・オブジェクトを削除します。

構文

DBMS_REPCAT.DROP_MVIEW_REPOBJECT (
sname          IN   VARCHAR2,
oname          IN   VARCHAR2,
type           IN   VARCHAR2,
drop_objects   IN   BOOLEAN  := FALSE);

パラメータ

表18-79 DROP_MVIEW_REPOBJECTプロシージャのパラメータ

パラメータ

説明

sname

オブジェクトが置かれたスキーマの名前です。

oname

レプリケーション・グループから削除するオブジェクトの名前です。

type

削除対象のオブジェクトのタイプです。サポートされているタイプは次のとおりです。

FUNCTION                SNAPSHOT
INDEX                   SYNONYM
INDEXTYPE               TRIGGER
OPERATOR                TYPE
PACKAGE                 TYPE BODY
PACKAGE BODY            VIEW
PROCEDURE

マテリアライズド・ビューを削除するには、SNAPSHOTを使用します。

drop_objects

デフォルトでは、オブジェクトは対応付けられたスキーマには残りますが、対応付けられたレプリケーション・グループからは削除されます。カレント・マテリアライズド・ビュー・サイトのスキーマからオブジェクトを完全に削除するには、このパラメータをTRUEに設定します。パラメータをTRUEに設定すると、オブジェクトはマテリアライズド・ビュー・サイトのデータベースから削除されます。

例外

表18-80 DROP_MVIEW_REPOBJECTプロシージャの例外

例外

説明

nonmview

起動サイトはマテリアライズド・ビュー・サイトではありません。

missingobject

指定されたオブジェクトは存在しません。

typefailure

指定されたタイプ・パラメータはサポートされていません。

DROP_PRIORITYプロシージャ

このプロシージャは、優先順位レベルに基づいて、優先グループのメンバーを削除します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DROP_PRIORITY(
gname          IN   VARCHAR2,
pgroup         IN   VARCHAR2,
priority_num   IN   NUMBER);

パラメータ

表18-81 DROP_PRIORITYプロシージャのパラメータ

パラメータ

説明

gname

優先グループの対応付けられたマスター・グループです。

pgroup

削除対象のメンバーが含まれる優先グループの名前です。

priority_num

グループから削除する優先グループ・メンバーの優先順位レベルです。

例外

表18-82 DROP_PRIORITYプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

missingprioritygroup

指定された優先グループは存在しません。

notquiesced

マスター・グループは静止していません。

DROP_PRIORITY_GROUPプロシージャ

このプロシージャは、指定されたマスター・グループの優先グループを削除します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DROP_PRIORITY_GROUP (
gname     IN   VARCHAR2,
pgroup    IN   VARCHAR2);

パラメータ

表18-83 DROP_PRIORITY_GROUPプロシージャのパラメータ

パラメータ

説明

gname

優先グループの対応付けられたマスター・グループです。

pgroup

削除対象の優先グループの名前です。

例外

表18-84 DROP_PRIORITY_GROUPプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

referenced

指定された優先グループは、競合解消に使用されています。

notquiesced

指定されたマスター・グループは静止していません。

DROP_PRIORITY_datatypeプロシージャ

このプロシージャは、値に基づいて、優先グループのメンバーを削除します。このプロシージャは、マスター定義サイトからコールする必要があります。コールするプロシージャは、priority列のデータ型によって異なります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DROP_PRIORITY_datatype (
gname    IN   VARCHAR2,
pgroup   IN   VARCHAR2,
value    IN   datatype);

datatypeは次のとおりです。

{ NUMBER
| VARCHAR2
| CHAR
| DATE
| RAW
| NCHAR
| NVARCHAR2 }

パラメータ

表18-85 DROP_PRIORITY_datatypeプロシージャのパラメータ

パラメータ

説明

gname

優先グループの対応付けられたマスター・グループです。

pgroup

削除対象のメンバーが含まれる優先グループの名前です。

value

グループから削除する優先グループ・メンバーの値です。

例外

表18-86 DROP_PRIORITY_datatypeプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

missingprioritygroup

指定された優先グループは存在しません。

paramtype, typefailure

値のデータ型は、この優先グループには不適切です。

notquiesced

指定されたマスター・グループは静止していません。

DROP_SITE_PRIORITYプロシージャ

このプロシージャは、指定されたマスター・グループのサイト優先グループを削除します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DROP_SITE_PRIORITY (
gname      IN   VARCHAR2,
name       IN   VARCHAR2);

パラメータ

表18-87 DROP_SITE_PRIORITYプロシージャのパラメータ

パラメータ

説明

gname

サイト優先グループの対応付けられたマスター・グループです。

name

削除対象のサイト優先グループの名前です。

例外

表18-88 DROP_SITE_PRIORITYプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

referenced

指定されたサイト優先グループは、競合解消に使用されています。

notquiesced

指定されたマスター・グループは静止していません。

DROP_SITE_PRIORITY_SITEプロシージャ

このプロシージャは、指定された名前のサイトをサイト優先グループから削除します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.DROP_SITE_PRIORITY_SITE (
gname      IN   VARCHAR2,
name       IN   VARCHAR2,
site       IN   VARCHAR2);

パラメータ

表18-89 DROP_SITE_PRIORITY_SITEプロシージャのパラメータ

パラメータ

説明

gname

サイト優先グループの対応付けられたマスター・グループです。

name

メンバーを削除するサイト優先グループの名前です。

site

グループから削除するサイトのグローバル・データベース名です。

例外

表18-90 DROP_SITE_PRIORITY_SITEプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingrepgroup

指定されたマスター・グループは存在しません。

missingpriority

指定されたサイト優先グループは存在しません。

notquiesced

指定されたマスター・グループは静止していません。

DROP_conflicttype_RESOLUTIONプロシージャ

このプロシージャは、更新、削除または一意性競合解消ルーチンを削除します。これらのプロシージャは、マスター定義サイトからコールする必要があります。コールするプロシージャは、ルーチンが解消する競合のタイプによって異なります。

競合解消ルーチン

表18-91は、各競合解消ルーチンのプロシージャ名を示しています。

表18-91 競合解消ルーチン

ルーチン

プロシージャ名

update

DROP_UPDATE_RESOLUTION

uniqueness

DROP_UNIQUE_RESOLUTION

delete

DROP_DELETE_RESOLUTION

構文

DBMS_REPCAT.DROP_UPDATE_RESOLUTION (
sname              IN   VARCHAR2,
oname              IN   VARCHAR2,
column_group       IN   VARCHAR2,
sequence_no        IN   NUMBER);

DBMS_REPCAT.DROP_DELETE_RESOLUTION (
sname              IN   VARCHAR2,
oname              IN   VARCHAR2,
sequence_no        IN   NUMBER);

DBMS_REPCAT.DROP_UNIQUE_RESOLUTION (
sname              IN   VARCHAR2,
oname              IN   VARCHAR2,
constraint_name    IN   VARCHAR2,
sequence_no        IN   NUMBER);

パラメータ

表18-92 DROP_conflicttype_RESOLUTIONプロシージャのパラメータ

パラメータ

説明

sname

表が置かれたスキーマの名前です。

oname

競合解消ルーチンを削除する表の名前です。

column_group

更新の競合解消ルーチンを削除する列グループの名前です。

constraint_name

一意性競合解消ルーチンを削除する一意制約の名前です。

sequence_no

削除対象の競合解消メソッドに割り当てられた順序番号です。この番号でルーチンが識別されます。

例外

表18-93 DROP_conflicttype_RESOLUTIONプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトが指定されたスキーマ内の表として存在しないか、または指定された順序番号の競合解消ルーチンが登録されていません。

notquiesced

マスター・グループは静止していません。

EXECUTE_DDLプロシージャ

このプロシージャは、いくつかの、またはすべてのマスター・サイトで実行されるDDLを渡します。このプロシージャは、マスター定義サイトからのみコールできます。

構文

DBMS_REPCAT.EXECUTE_DDL (
gname           IN   VARCHAR2,
{ master_list   IN   VARCHAR2     := NULL,
| master_table  IN   DBMS_UTILITY.DBLINK_ARRAY,}
DDL_TEXT        IN   VARCHAR2);

注意:
このプロシージャはオーバーロードされています。master_listパラメータとmaster_tableパラメータは、同時には指定できません。

パラメータ

表18-94 EXECUTE_DDLプロシージャのパラメータ

パラメータ

説明

gname

マスター・グループの名前です。

master_list

渡されたDDLを実行するマスター・サイトの、カンマ区切りのリストです。各サイト名の間に空白は入れないでください。デフォルトのNULLの場合、マスター定義サイトを含むすべてのサイトでDDLが実行されます。

master_table

渡されたDDLを実行するマスター・サイトをリストした表です。最初のマスターは1の位置、2番目のマスターは2の位置と、順に配置します。

ddl_text

指定された各マスター・サイトで実行するDDLです。スキーマを指定せずにDDLが渡された場合、レプリケーション管理者のスキーマがデフォルトのスキーマになります。レプリケーション管理者のスキーマ以外のスキーマを使用する場合は、必ずスキーマを指定してください。

例外

表18-95 EXECUTE_DDLプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

nonmaster

少なくとも1つのサイトが、マスター・サイトではありません。

ddlfailure

マスター定義サイトのDDLが失敗しました。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

GENERATE_MVIEW_SUPPORTプロシージャ

このプロシージャは、トリガーをアクティブにして、更新可能なマテリアライズド・ビューのレプリケーション、またはプロシージャ・レプリケーションのサポートに必要なパッケージを生成します。このプロシージャは、マテリアライズド・ビュー・サイトからコールする必要があります。

注意:
CREATE_MVIEW_REPOBJECTは自動的に、更新可能なマテリアライズド・ビューにマテリアライズド・ビュー・サポートを生成します。

構文

DBMS_REPCAT.GENERATE_MVIEW_SUPPORT (
sname                    IN VARCHAR2,
oname                    IN VARCHAR2,
type                     IN VARCHAR2,
gen_objs_owner           IN VARCHAR2 := '',
min_communication        IN BOOLEAN  := TRUE,
generate_80_compatible   IN BOOLEAN  := TRUE);

パラメータ

表18-96 GENERATE_MVIEW_SUPPORTプロシージャのパラメータ

パラメータ

説明

sname

オブジェクトが置かれたスキーマの名前です。

oname

サポートを生成するオブジェクトの名前です。

type

オブジェクトのタイプです。サポートされているタイプは、MATERIALIZED VIEW、PACKAGEおよびPACKAGE BODYです。

gen_objs_owner

PACKAGEタイプまたはPACKAGE BODYタイプのオブジェクトの場合、オブジェクトが作成されるスキーマです。値がNULLの場合、オブジェクトはSNAMEに作成されます。

min_communication

値がTRUEの場合、UPDATE文で列が変更されるときにかぎり、更新トリガーで列の新しい値が送られます。列がキー列の場合、または変更された列グループ内の列の場合は、更新トリガーで列の古い値が送信されます。

generate_80_compatible

Oracle8i のデータベースとOracle 11g 以上のデータベース間の相互運用性はサポートされていないため、FALSEに設定します。

例外

表18-97 GENERATE_MVIEW_SUPPORTプロシージャの例外

例外

説明

nonmview

起動サイトはマテリアライズド・ビュー・サイトではありません。

missingobject

指定されたオブジェクトは、行または列レベル・レプリケーションの情報が必要なレプリケート・スキーマ内のマテリアライズド・ビューとして存在しないか、またはラッパーの生成が必要なパッケージ(本体)として存在しません。

typefailure

指定されたタイプ・パラメータはサポートされていません。

missingschema

指定された生成オブジェクトの所有者は存在しません。

missingremoteobject

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのオブジェクトは、まだレプリケーション・サポートを生成していません。

commfailure

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにアクセスできません。

GENERATE_REPLICATION_SUPPORTプロシージャ

このプロシージャは、指定されたオブジェクトのレプリケーションのサポートに必要なトリガーおよびパッケージを生成します。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname                     IN    VARCHAR2,
oname                     IN    VARCHAR2,
type                      IN    VARCHAR2,
package_prefix            IN    VARCHAR2   := NULL,
procedure_prefix          IN    VARCHAR2   := NULL,
distributed               IN    BOOLEAN    := TRUE,
gen_objs_owner            IN    VARCHAR2   := NULL,
min_communication         IN    BOOLEAN    := TRUE,
generate_80_compatible    IN    BOOLEAN    := TRUE);

パラメータ

表18-98 GENERATE_REPLICATION_SUPPORTプロシージャのパラメータ

パラメータ

説明

sname

オブジェクトが置かれたスキーマの名前です。

oname

レプリケーション・サポートを生成するオブジェクトの名前です。

type

オブジェクトのタイプです。サポートされているタイプは、TABLE、PACKAGEおよびPACKAGE BODYです。

package_prefix

PACKAGEタイプまたはPACKAGE BODYタイプのオブジェクトの場合は、生成されたラッパー・パッケージの名前にこの値が付加されます。デフォルトはDEFER_です。

procedure_prefix

PACKAGEタイプまたはPACKAGE BODYタイプのオブジェクトの場合は、生成されたラッパー・プロシージャの名前にこの値が付加されます。デフォルトでは接頭辞が付加されません。

distributed

このパラメータは、必ずTRUEに設定します。

gen_objs_owner

PACKAGEタイプまたはPACKAGE BODYタイプのオブジェクトの場合、オブジェクトが作成されるスキーマです。値がNULLの場合、オブジェクトはsnameに作成されます。

min_communication

このパラメータは廃止されています。デフォルト値(TRUE)を使用してください。

generate_80_compatible

Oracle8i のデータベースとOracle 11g 以上のデータベース間の相互運用性はサポートされていないため、FALSEに設定します。

例外

表18-99 GENERATE_REPLICATION_SUPPORTプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは、行レベル・レプリケーションの情報が必要な指定されたスキーマ内の表として存在しないか、またはラッパーの生成が必要なパッケージ(本体)として存在しません。

typefailure

指定されたタイプ・パラメータはサポートされていません。

notquiesced

レプリケーション・グループは静止していません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

missingschema

スキーマが存在しません。

duplicateobject

オブジェクトは存在しています。

MAKE_COLUMN_GROUPプロシージャ

このプロシージャは、1つ以上のメンバーを持つ新しい列グループを作成します。このプロシージャは、マスター定義サイトからコールする必要があります。

関連項目:
競合解消メソッドの詳細は、第6章「競合解消の構成」および『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT.MAKE_COLUMN_GROUP (
sname                 IN   VARCHAR2,
oname                 IN   VARCHAR2,
column_group          IN   VARCHAR2,
list_of_column_names  IN   VARCHAR2 | DBMS_REPCAT.VARCHAR2S);

パラメータ

表18-100 MAKE_COLUMN_GROUPプロシージャのパラメータ

パラメータ

説明

sname

レプリケート表が置かれたスキーマの名前です。

oname

新しい列グループを作成するレプリケート表の名前です。表はネストした表の記憶表を利用できます。

column_group

作成する列グループに割り当てる名前です。

list_of_column_names

グループ化する列の名前です。列名は、カンマ区切りのリストとPL/SQL連想配列のいずれでも指定できます。PL/SQL連想配列のタイプはDBMS_REPCAT.VARCHAR2Sにする必要があります。表のすべての列を含む列グループを作成するには、単一の値'*'を使用します。

列オブジェクトは指定できますが、列オブジェクトの属性は指定できません。

表がオブジェクト表の場合、SYS_NC_OID$を指定して列グループにオブジェクト識別子列を追加できます。この列は各行オブジェクトのオブジェクト識別子を追跡します。

表がネストした表の記憶表である場合は、NESTED_TABLE_IDを指定して、ネストした表の各行の識別子を追跡する列を追加できます。

例外

表18-101 MAKE_COLUMN_GROUPプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

duplicategroup

指定された列グループはこの表に存在しています。

missingobject

指定された表は存在しません。

missingcolumn

指定された列は、指定された表に存在しません。

duplicatecolumn

指定された列は、すでに他の列グループのメンバーになっています。

notquiesced

マスター・グループは静止していません。

PREPARE_INSTANTIATED_MASTERプロシージャ

このプロシージャは、他の準備された新しいマスター・サイトおよび既存のマスター・サイトから起動マスター・サイトへの遅延トランザクションの伝播を有効にします。このプロシージャはまた、起動マスター・サイトから他の準備された新しいマスター・サイトおよび既存のマスター・サイトへの遅延トランザクションの伝播も有効にします。

データベース全体のエクスポートやインポートまたは変更ベースのリカバリを実行した場合は、新しいマスター・サイトにはマスター定義サイトの遅延トランザクション・キューにあった遅延トランザクションがすべて含まれます。これらの遅延トランザクションは新しいマスター・サイトには存在できないため、このプロシージャではデータベース全体のエクスポートやインポートまたは変更ベースのリカバリが使用された場合、遅延トランザクション・キューおよびエラー・キューのすべてのトランザクションを削除します。

オブジェクトレベルのエクスポートまたはインポートの際は、このプロシージャを実行する前に、拡張グループのDBA_REPCATLOGデータ・ディクショナリ・ビューのすべての要求がエラーなしに処理されたことを確認してください。

注意:

- 新しいマスター・サイトのインスタンス化(エクスポートやインポートまたは変更ベースのリカバリ)が完了するまで、このプロシージャをコールしないでください。

- このプロシージャの実行が正常に戻されるまで、データ操作言語(DML)文を新しいマスター・サイトの拡張マスター・グループのオブジェクトに直接使用しないでください。DML文はレプリケートされない場合があります。

- このプロシージャの実行が正常に戻されるまで、遅延トランザクションの作成にDBMS_DEFERパッケージは使用しないでください。これらの遅延トランザクションはレプリケートされない場合があります。

注意:
変更ベースのリカバリを使用するには、既存のマスター・サイトおよび新しいマスター・サイトを同じオペレーティング・システム上で実行する必要があります(ただし、オペレーティング・システムのリリースは同じでなくてもかまいません)。

構文

DBMS_REPCAT.PREPARE_INSTANTIATED_MASTER (
extension_id             IN       RAW);

パラメータ

表18-102 PREPARE_INSTANTIATED_MASTERプロシージャのパラメータ

パラメータ

説明

extension_id

静止せずにマスター・グループにマスター・データベースを追加するための、現在保留になっている要求の識別子です。extension_idは、DBA_REPSITES_NEWおよびDBA_REPEXTENSIONSデータ・ディクショナリ・ビューを問い合せて検索できます。

例外

表18-103 PREPARE_INSTANTIATED_MASTERプロシージャの例外

例外

説明

typefailure

パラメータの1つに指定されたパラメータ値が不適正です。

dbnotcompatible

機能がデータベースのバージョンと互換性がありません。すべてのデータベースには、9.2.0以上の互換性のレベルが必要です。

PURGE_MASTER_LOGプロシージャ

このプロシージャは、指定されたID番号、ソースまたはマスター・グループに対応付けられた、DBA_REPCATLOGビュー内のローカル・メッセージを削除します。

特定のソースから管理要求をすべてパージするには、idパラメータにNULLを指定します。全ソースから管理要求をすべてパージするには、idパラメータとsourceパラメータの両方にNULLを指定します。

構文

DBMS_REPCAT.PURGE_MASTER_LOG (
id      IN   BINARY_INTEGER,
source  IN   VARCHAR2,
gname   IN   VARCHAR2);

パラメータ

表18-104 PURGE_MASTER_LOGプロシージャのパラメータ

パラメータ

説明

id

DBA_REPCATLOGビューに表示される要求のID番号です。

source

要求が発行されたマスター・サイトです。

gname

要求の対象であるマスター・グループの名前です。

例外

表18-105 PURGE_MASTER_LOGプロシージャの例外

例外

説明

nonmaster

gnameがNULLでなく、起動サイトがマスター・サイトではありません。

PURGE_STATISTICSプロシージャ

このプロシージャは、DBA_REPRESOLUTION_STATISTICSビューから情報を削除します。

構文

DBMS_REPCAT.PURGE_STATISTICS (
sname      IN   VARCHAR2,
oname      IN   VARCHAR2,
start_date IN   DATE,
end_date   IN   DATE);

パラメータ

表18-106 PURGE_STATISTICSプロシージャのパラメータ

パラメータ

説明

sname

レプリケート表が置かれたスキーマの名前です。

oname

競合解消の統計をパージする表の名前です。

start_date/end_date

統計をパージする日付の範囲です。start_dateがNULLの場合は、end_dateまでのすべての統計がパージされます。end_dateがNULLの場合は、start_date以後のすべての統計がパージされます。

例外

表18-107 PURGE_STATISTICSプロシージャの例外

例外

説明

missingschema

指定されたスキーマは存在しません。

missingobject

指定された表は存在しません。

statnotreg

統計の収集に表が登録されていません。

REFRESH_MVIEW_REPGROUPプロシージャ

このプロシージャは、マテリアライズド・ビュー・グループを、対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトからの最新データでリフレッシュします。

構文

DBMS_REPCAT.REFRESH_MVIEW_REPGROUP (
gname                  IN   VARCHAR2,
drop_missing_contents  IN   BOOLEAN    := FALSE,
refresh_mviews         IN   BOOLEAN    := FALSE,
refresh_other_objects  IN   BOOLEAN    := FALSE,
gowner                 IN   VARCHAR2   := 'PUBLIC');

パラメータ

表18-108 REFRESH_MVIEW_REPGROUPプロシージャのパラメータ

パラメータ

説明

gname

レプリケーション・グループの名前です。

drop_missing_contents

オブジェクトはマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのレプリケーション・グループから削除されても、マテリアライズド・ビュー・サイトのスキーマからは自動的に削除はされません。これは単に、レプリケートされなくなります。すなわち、オブジェクトに加えられた変更が、対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに送信されなくなります。マテリアライズド・ビューは、対応付けられたマスター表またはマスター・マテリアライズド・ビューからリフレッシュし続けることができます。ただし、更新可能なマテリアライズド・ビューに加えられた変更は失われます。オブジェクトをレプリケーション・グループから削除する際は、このパラメータをTRUEに設定すると、スキーマから完全に削除できます。

refresh_mviews

値をTRUEに設定すると、レプリケーション・グループ内のマテリアライズド・ビューの内容がリフレッシュされます。

refresh_other_objects

この値をTRUEに設定すると、レプリケーション・グループ内の非マテリアライズド・ビュー・オブジェクトの内容がリフレッシュされます。非マテリアライズド・ビュー・オブジェクトには、次のようなものがあります。

- 表

- ビュー

- 索引

- PL/SQLパッケージおよびパッケージ本体

- PL/SQLプロシージャおよびファンクション

- トリガー

- シノニム

gowner

マテリアライズド・ビュー・グループの所有者です。

例外

表18-109 REFRESH_MVIEW_REPGROUPプロシージャの例外

例外

説明

nonmview

起動サイトはマテリアライズド・ビュー・サイトではありません。

nonmaster

マスターがマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトではなくなっています。

commfailure

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにアクセスできません。

missingrepgroup

レプリケーション・グループの名前が指定されていません。

REGISTER_MVIEW_REPGROUPプロシージャ

このプロシージャはDBA_REGISTERED_MVIEW_GROUPSでのマテリアライズド・ビュー・グループの挿入または変更を行って、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでのマテリアライズド・ビューの管理を容易にします。

構文

DBMS_REPCAT.REGISTER_MVIEW_REPGROUP (
gname            IN   VARCHAR2,
mviewsite        IN   VARCHAR2,
comment          IN   VARCHAR2  := NULL,
rep_type         IN   NUMBER    := reg_unknown,
fname            IN   VARCHAR2  := NULL,
gowner           IN   VARCHAR2  := 'PUBLIC');

パラメータ

表18-110 REGISTER_MVIEW_REPGROUPプロシージャのパラメータ

パラメータ

説明

gname

登録するマテリアライズド・ビュー・グループの名前です。

mviewsite

マテリアライズド・ビュー・サイトのグローバル名です。

comment

マテリアライズド・ビュー・サイトのコメント、または既存のコメントの更新です。

rep_type

マテリアライズド・ビュー・グループのバージョンです。割り当てることができる有効な定数を次に示します。

- dbms_repcat.reg_unknown(デフォルト)

- dbms_repcat.reg_v7_group

- dbms_repcat.reg_v8_group

fname

このパラメータは内部で使用します。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

gowner

マテリアライズド・ビュー・グループの所有者です。

例外

表18-111 REGISTER_MVIEW_REPGROUPプロシージャの例外

例外

説明

failregmviewrepgroup

マテリアライズド・ビュー・グループの登録に失敗しました。

missingrepgroup

レプリケーション・グループの名前が指定されていません。

nullsitename

マテリアライズド・ビュー・サイトが指定されていません。

nonmaster

プロシージャはマテリアライズド・ビューのマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで実行する必要があります。

duplicaterepgroup

レプリケーション・グループは存在しています。

REGISTER_STATISTICSプロシージャ

このプロシージャは、正常に実行された、表の更新、一意性および削除の競合解消の情報を収集します。

構文

DBMS_REPCAT.REGISTER_STATISTICS (
sname IN   VARCHAR2,
oname IN   VARCHAR2);

パラメータ

表18-112 REGISTER_STATISTICSプロシージャのパラメータ

パラメータ

説明

sname

表が置かれたスキーマの名前です。

oname

競合解消の統計を収集する表の名前です。

例外

表18-113 REGISTER_STATISTICSプロシージャの例外

例外

説明

missingschema

指定されたスキーマは存在しません。

missingobject

指定された表は存在しません。

RELOCATE_MASTERDEFプロシージャ

このプロシージャは、マスター定義サイトをレプリケーション環境の他のマスター・サイトに変更します。

RELOCATE_MASTERDEFをコールするときに、古いマスター定義サイトまたは新しいマスター定義サイトが使用可能である必要はありません。計画済の再構成において、notify_mastersをTRUE、include_old_masterdefをTRUEに設定して、RELOCATE_MASTERDEFをコールします。

構文

DBMS_REPCAT.RELOCATE_MASTERDEF (
gname                  IN   VARCHAR2,
old_masterdef          IN   VARCHAR2,
new_masterdef          IN   VARCHAR2,
notify_masters         IN   BOOLEAN    := TRUE,
include_old_masterdef  IN   BOOLEAN    := TRUE,
require_flavor_change  IN   BOOLEAN    := FALSE);

パラメータ

表18-114 RELOCATE_MASTERDEFプロシージャのパラメータ

パラメータ

説明

gname

マスター定義を再配置するレプリケーション・グループの名前です。

old_masterdef

現行のマスター定義サイトの、完全修飾されたデータベース名です。

new_masterdef

新しいマスター定義サイトにする既存のマスター・サイトの、完全修飾されたデータベース名です。

notify_masters

TRUEの場合、すべてのマスター(include_old_masterdefがTRUEの場合はold_masterdefも含まれる)に、変更が同期的にマルチキャストされます。いずれかのマスターで変更が適用されなかった場合は、すべてのマスターでその変更がロールバックされます。

マスター定義サイトのみに障害が発生している場合は、notify_mastersをTRUE、include_old_masterdefをFALSEに設定して、RELOCATE_MASTERDEFをコールします。複数のマスター・サイトとマスター定義サイトで障害が発生した場合は、それぞれの操作マスターで、管理者がnotify_mastersをFALSEに設定してRELOCATE_MASTERDEFをコールします。

include_old_masterdef

notify_mastersがTRUEで、include_old_masterdefもTRUEの場合は、古いマスター定義サイトにも変更が通知されます。

require_flavor_change

このパラメータは内部で使用します。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

例外

表18-115 RELOCATE_MASTERDEFプロシージャの例外

例外

説明

nonmaster

new_masterdefまたは起動サイトがマスター・サイトではありません。

nonmasterdef

old_masterdefはマスター定義サイトではありません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。notify_mastersはTRUEに設定されています。

REMOVE_MASTER_DATABASESプロシージャ

このプロシージャは、レプリケーション環境から1つ以上のマスター・データベースを削除します。このプロシージャは、残りのマスター・サイトで、トリガーとそれらに対応付けられたパッケージを再生成します。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.REMOVE_MASTER_DATABASES (
gname           IN   VARCHAR2,
master_list     IN   VARCHAR2 |
master_table    IN   DBMS_UTILITY.DBLINK_ARRAY);

注意:
このプロシージャはオーバーロードされています。master_listパラメータとmaster_tableパラメータは、同時には指定できません。

パラメータ

表18-116 REMOVE_MASTER_DATABASESプロシージャのパラメータ

パラメータ

説明

gname

レプリケーション環境に対応付けられたレプリケーション・グループの名前です。1つのマスター・データベースが複数のレプリケーション環境で使用されている場合、このパラメータによって混乱が避けられます。

master_list

レプリケーション環境から削除する完全修飾されたマスター・データベース名の、カンマ区切りのリストです。リスト内の名前の間にはスペースを挿入しません。

master_table

リストのかわりに、DBMS_UTILITY.DBLINK_ARRAYタイプのPL/SQL連想配列でデータベース名を指定できます。

例外

表18-117 REMOVE_MASTER_DATABASESプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

nonmaster

指定されたデータベースのうち少なくとも1つのデータベースが、マスター・サイトではありません。

reconfigerror

指定されたデータベースの1つが、マスター定義サイトです。

commfailure

残りのマスター・サイトのうち、少なくとも1つのマスター・サイトにアクセスできません。

RENAME_SHADOW_COLUMN_GROUPプロシージャ

このプロシージャは、レプリケート表のシャドウ列グループの名前を変更して、名前付きの列グループにします。このプロシージャを実行するためにレプリケート表のマスター・グループを静止させる必要はありません。

構文

DBMS_REPCAT.RENAME_SHADOW_COLUMN_GROUP (
sname                IN VARCHAR2,
oname                IN VARCHAR2,
new_col_group_name   IN VARCHAR2)

パラメータ

表18-118 RENAME_SHADOW_COLUMN_GROUPプロシージャのパラメータ

パラメータ

説明

sname

レプリケート表が置かれたスキーマの名前です。

oname

レプリケート表の名前。

new_col_group_name

新しい列グループの名前です。現在シャドウ・グループにある列は、指定した名前の列グループに配置されます。

例外

表18-119 RENAME_SHADOW_COLUMN_GROUPプロシージャの例外

例外

説明

missmview

指定されたスキーマは存在しません。

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは存在しません。

duplicategroup

作成を指定された列グループは存在します。

REPCAT_IMPORT_CHECKプロシージャ

このプロシージャを実行すると、レプリケート・オブジェクト、またはAdvanced Replicationで使用されたオブジェクトのエクスポートまたはインポート後に、マスター・グループのオブジェクトが適切なオブジェクト識別子およびステータス値を持つようになります。

構文

DBMS_REPCAT.REPCAT_IMPORT_CHECK (
gname      IN   VARCHAR2,
master     IN   BOOLEAN,
gowner     IN   VARCHAR2  := 'PUBLIC');

パラメータ

表18-120 REPCAT_IMPORT_CHECKプロシージャのパラメータ

パラメータ

説明

gname

マスター・グループの名前です。両方のパラメータを省略した場合、カレント・サイトで、すべてのマスター・グループがチェックされます。

master

マスター・サイトをチェックする場合はこれをTRUEに、マテリアライズド・ビュー・サイトをチェックする場合はFALSEに設定します。

gowner

マスター・グループの所有者です。

例外

表18-121 REPCAT_IMPORT_CHECKプロシージャの例外

例外

説明

nonmaster

masterはTRUEに設定されています。データベースはレプリケーション・グループのマスター・サイトでないか、または望まれるデータベースではありません。

nonmview

masterはFALSEに設定されています。データベースはレプリケーション・グループのマテリアライズド・ビュー・サイトではありません。

missingobject

レプリケーション・グループ内の有効なレプリケート・オブジェクトが存在しません。

missingrepgroup

指定したレプリケート・レプリケーション・グループは存在しません。

missingschema

指定されたスキーマは存在しません。

RESUME_MASTER_ACTIVITYプロシージャ

このプロシージャは、レプリケーション環境を静止させた後で、通常のレプリケーション・アクティビティを再開します。

構文

DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname       IN  VARCHAR2,
override    IN  BOOLEAN := FALSE);

パラメータ

表18-122 RESUME_MASTER_ACTIVITYプロシージャのパラメータ

パラメータ

説明

gname

マスター・グループの名前です。

override

値がTRUEの場合は、保留になっている管理要求が無視され、各マスターで通常のレプリケーション・アクティビティがリストアされます。これは緊急の場合のみ使用します。

値がFALSEの場合は、各マスターで通常のレプリケーション・アクティビティがリストアされます。ただし、そのマスターでgnameに対する管理要求が保留にされていない場合にかぎられます。

例外

表18-123 RESUME_MASTER_ACTIVITYプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

notquiesced

マスター・グループが静止中でないか、または静止していません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

notallgenerated

レプリケーション・アクティビティを再開する前にレプリケーション・サポートが生成されました。

RESUME_PROPAGATION_TO_MDEFプロシージャ

新しいマスター・サイトを静止させずにマスター・グループに追加するプロセスにおいて、このプロシージャは、エクスポートが終了し、マスター・サイトに存在する拡張および影響を受けないレプリケーション・グループのマスター定義サイトへの伝播が可能になったことを示します。このプロシージャは、新しいマスター・サイトをマスター・グループに追加するために必要なエクスポートが完了した後に実行します。

関連項目:
マスター・グループへのマスター・サイトの追加の詳細は、「新しいマスター・サイトの追加」を参照してください。

構文

DBMS_REPCAT.RESUME_PROPAGATION_TO_MDEF (
extension_id    IN    RAW);

パラメータ

表18-124 RESUME_PROPAGATION_TO_MDEFプロシージャのパラメータ

パラメータ

説明

extension_id

静止せずにマスター・グループにマスター・データベースを追加するための、現在保留になっている要求の識別子です。extension_idは、DBA_REPSITES_NEWおよびDBA_REPEXTENSIONSデータ・ディクショナリ・ビューを問い合せて検索できます。

例外

表18-125 RESUME_PROPAGATION_TO_MDEFプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

extstinapp

拡張ステータスが不適切です。このプロシージャを実行する際、拡張ステータスはEXPORTINGである必要があります。拡張ステータスをチェックするには、DBA_REPEXTENSIONSのデータ・ディクショナリ・ビューを問い合せます。

dbnotcompatible

機能がデータベースのバージョンと互換性がありません。すべてのデータベースには、9.2.0以上の互換性のレベルが必要です。

SEND_OLD_VALUESプロシージャ

レプリケート表の各非キー列についての遅延トランザクションの伝播中に、表中の行が更新または削除される際、古い列値を送るというオプションがあります。min_communicationがTRUEに設定されている場合、デフォルトでは次のようになります。

- 削除された行については、すべての列の古い値を送ります。

- 更新された行については、キー列の古い値および列グループ内の修正された列を送ります。

マスター定義サイトでDBMS_REPCAT.SEND_OLD_VALUESを呼び出すことにより、すべてのマスター・サイトおよびマテリアライズド・ビュー・サイトで、この動作を変更できます。次にすべてのマスター・サイトおよび各マテリアライズド・ビュー・サイトで、レプリケーション・サポートを生成します。

ユーザー定義型を使用する場合は、列オブジェクトのリーフ属性、または列オブジェクト全体を指定できます。たとえば、cust_addressという列オブジェクトにstreet_addressという属性がある場合、column_listパラメータに、またはcolumn_tableパラメータの一部として、cust_address.street_addressを指定するか、cust_addressのみを指定できます。

構文

DBMS_REPCAT.SEND_OLD_VALUES(
sname           IN  VARCHAR2,
oname           IN  VARCHAR2,
{ column_list   IN  VARCHAR2,
| column_table  IN  DBMS_UTILITY.VARCHAR2S | DBMS_UTILITY.LNAME_ARRAY,}
operation       IN  VARCHAR2 := 'UPDATE',
send            IN  BOOLEAN  := TRUE );

注意:
このプロシージャはオーバーロードされています。column_listパラメータとcolumn_tableパラメータは、同時には指定できません。

パラメータ

表18-126 SEND_OLD_VALUESプロシージャのパラメータ

パラメータ

説明

sname

表が置かれたスキーマの名前です。

oname

レプリケート表の名前。表はネストした表の記憶表を利用できます。

column_list

表の列のカンマ区切りのリストです。各エントリの間にはスペースを挿入しません。

column_table

リストのかわりに、DBMS_REPCAT.VARCHAR2SまたはDBMS_UTILITY.LNAME_ARRAYのPL/SQL連想配列を使用して列名を指定できます。最初の列名は1の位置、2番目の列名は2の位置と、順に配置します。

30バイト以上の列名がある場合は、DBMS_UTILITY.LNAME_ARRAYを使用します。これは列オブジェクトの属性を指定した際に起こる場合があります。

operation

可能な値は、update、delete、または更新と削除を意味するアスタリスク・ワイルドカード'*'です。

send

値がTRUEの場合は、指定された列の古い値が送られます。値がFALSEの場合は、指定された列の古い値が送られません。指定されていない列や操作には影響がありません。

表のmin_communicationがTRUEになると、マスター定義サイトで、指定された変更が有効になります。min_communication TRUEで、マスター・サイトやマテリアライズド・ビュー・サイトで次にレプリケーション・サポートが生成されると、変更が有効になります。

注意:
operationパラメータにより、行が削除または更新された際に非キー列の古い値を送信するかどうかを指定できます。古い値を送信しない場合、古い値のかわりにNULLが送信され、更新または削除が適用されるときに古い値とターゲット・サイドの列の現在の値が等しいとみなされます。
Oracleのデフォルトの動作を変更する前に、SEND_OLD_VALUESプロシージャを使用して削減されるデータ伝播の詳細を、『Oracle Databaseアドバンスト・レプリケーション』で参照してください。

例外

表18-127 SEND_OLD_VALUESプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは、行レベル・レプリケーションの情報が必要な指定されたスキーマ内の表として存在しません。

missingcolumn

少なくとも1つの列が、表に存在しません。

notquiesced

マスター・グループは静止していません。

typefailure

無効な操作が指定されました。

keysendcomp

指定された列は、表中のキー列です。

dbnotcompatible

機能がデータベースのバージョンと互換性がありません。この例外は一般的に、列オブジェクトの属性を送ろうとした際に発生します。この場合、データベースの互換性のレベルは、すべて9.2.0以上である必要があります。

SET_COLUMNSプロシージャ

このプロシージャを使用すると、主キーのかわりに代替列または列グループを使用して、行レベル・レプリケーションを使用する際に比較する表中の列を決定できます。このプロシージャは、マスター定義サイトからコールする必要があります。

列オブジェクトを使用する際、列オブジェクトの属性が主キーまたは主キーの一部として使用できる場合は、その属性を代替キー列の一部にできます。たとえば、cust_addressという列オブジェクトにstreet_addressというVARCHAR2属性がある場合、column_listパラメータに、またはcolumn_tableパラメータの一部として、cust_address.street_addressを指定できます。ただし、列オブジェクトcust_address全体は指定できません

ネストした表の列の記憶表については、このプロシージャはNESTED_TABLE_IDを代替キー列として受け入れます。

オブジェクト表を使用する際は、代替キー列は指定できません。オブジェクト表のOIDがシステム生成の場合は、オブジェクト表のOID列がオブジェクト表のキーとして使用されます。オブジェクト表のOIDがユーザー定義の場合は、オブジェクト表の主キーがキーとして使用されます。

次のタイプの列は、代替キー列として指定できません。

- LOBまたは列オブジェクトのLOB属性

- コレクションまたは列オブジェクトのコレクション属性

- REF

- 列オブジェクト全体

関連項目:
主キー列の制限事項の詳細は、『Oracle Database SQL言語リファレンス』のconstraint_clauseに関する説明を参照してください。

構文

DBMS_REPCAT.SET_COLUMNS (
sname           IN    VARCHAR2,
oname           IN    VARCHAR2,
{ column_list   IN    VARCHAR2
| column_table  IN    DBMS_UTILITY.NAME_ARRAY | DBMS_UTILITY.LNAME_ARRAY } );

注意:
このプロシージャはオーバーロードされています。column_listパラメータとcolumn_tableパラメータは、同時には指定できません。

パラメータ

表18-128 SET_COLUMNSプロシージャのパラメータ

パラメータ

説明

sname

表が置かれたスキーマの名前です。

oname

表の名前です。

column_list

主キーとして使用する表内の列の、カンマ区切りのリストです。各エントリの間にはスペースを挿入しません。

column_table

リストのかわりに、DBMS_UTILITY.NAME_ARRAYまたはDBMS_UTILITY.LNAME_ARRAYのPL/SQL連想配列を使用して列名を指定できます。最初の列名は1の位置、2番目の列名は2の位置と、順に配置します。

30バイト以上の列名がある場合は、DBMS_UTILITY.LNAME_ARRAYを使用します。これは列オブジェクトの属性を指定した際に起こる場合があります。

例外

表18-129 SET_COLUMNSプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

missingobject

指定されたオブジェクトは、行レベル・レプリケーションの情報が必要な指定されたスキーマ内の表として存在しません。

missingcolumn

少なくとも1つの列が、表に存在しません。

notquiesced

レプリケーション・グループが静止中でないか、または静止していません。

SPECIFY_NEW_MASTERSプロシージャ

このプロシージャは、既存のレプリケーション・グループに追加したいマスター・サイトを、グループを静止させずに指定します。このプロシージャは、指定されたマスター・グループのマスター定義サイトで実行する必要があります。

必要な場合は、このプロシージャはマスター・グループに新しいマスター・サイトを追加するプロセスを追跡するextension_idを作成します。このextension_idは、プロセスの様々な段階で実行する他のプロシージャで使用します。extension_idは、DBA_REPSITES_NEWデータ・ディクショナリ・ビューおよびDBA_REPEXTENSIONSデータ・ディクショナリ・ビューを問い合せて検索できます。

このプロシージャは、指定されたレプリケーション・グループのDBA_REPSITES_NEWデータ・ディクショナリ・ビューに新しいマスター・サイトを追加します。このプロシージャは指定されたレプリケーション・グループに何度でも実行できます。2度以上実行する場合、指定されたレプリケーション・グループのローカルなDBA_REPSITES_NEWデータ・ディクショナリ・ビューのマスターは、master_listパラメータまたはmaster_tableパラメータで指定されたマスターに置換されます。

このプロシージャは、ADD_NEW_MASTERSプロシージャを実行する前に実行する必要があります。ADD_NEW_MASTERSプロシージャを実行するまで、マスター・グループに新しいマスター・サイトは追加されません。

関連項目:

- 「ADD_NEW_MASTERSプロシージャ」

- マスター・グループへのマスター・サイトの追加の詳細は、「新しいマスター・サイトの追加」を参照してください。

構文

DBMS_REPCAT.SPECIFY_NEW_MASTERS (
gname           IN   VARCHAR2,
{ master_list   IN   VARCHAR2
| master_table  IN   DBMS_UTILITY.DBLINK_ARRAY});

注意:
このプロシージャはオーバーロードされています。master_listパラメータとmaster_tableパラメータは、同時には指定できません。

パラメータ

表18-130 SPECIFY_NEW_MASTERSプロシージャのパラメータ

パラメータ

説明

gname

新しいマスター・サイトを追加するマスター・グループの名前です。

master_list

マスター・グループに追加する新しいマスター・サイトの、カンマ区切りのリストです。既存のマスター・サイトは含めず、新しいマスター・サイトのみをリストします。各サイト名の間に空白は入れないでください。

master_listがNULLの場合、指定されたレプリケーション・グループのマスター・サイトはすべてDBA_REPSITES_NEWデータ・ディクショナリ・ビューから削除されます。マスター・グループが拡張されていないことを示すには、NULLを指定します。

master_table

マスター・グループに追加する新しいマスター・サイトをリストした表です。表には既存のマスター・サイトは含めず、新しいマスター・サイトのみをリストします。最初のマスター・サイトは1の位置、2番目のマスターは2の位置と、順に配置します。

表が空の場合は、指定されたレプリケーション・グループのマスター・サイトはすべてDBA_REPSITES_NEWデータ・ディクショナリ・ビューから削除されます。マスター・グループが拡張されていないことを示すには、空の表を使用します。

例外

表18-131 SPECIFY_NEW_MASTERSプロシージャの例外

例外

説明

duplicaterepgroup

追加しようとしているマスター・サイトは、すでにマスター・グループの一部となっています。

nonmasterdef

起動サイトはマスター定義サイトではありません。

propmodenotallowed

同期伝播モードはこの操作では使用できません。使用できるのは非同期伝播モードのみです。

extstinapp

ステータス付きの拡張要求は使用できません。マスター・グループにextension_idはないか、またはextension_idステータスはREADYである必要があります。各extension_idのステータスは、DBA_REPEXTENSIONSデータ・ディクショナリ・ビューのマスター・サイトで表示できます。

dbnotcompatible

機能がデータベースのバージョンと互換性がありません。すべてのデータベースには、9.2.0以上の互換性のレベルが必要です。

notsamecq

マスター・グループが同じ接続修飾子を持っていません。

STREAMS_MIGRATIONプロシージャ

Advanced Replication環境をStreams環境に移行する移行スクリプトを生成します。具体的には、このプロシージャでは、特定のレプリケーション・グループに対するStreams環境を設定するスクリプトが生成されます。生成されたスクリプトはカスタマイズが可能であり、各マスター・サイトでこのスクリプトを実行して移行できます。

関連項目:
Advanced ReplicationからStreamsへの移行の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

構文

DBMS_REPCAT.STREAMS_MIGRATION (
gnames              IN   DBMS_UTILITY.NAME_ARRAY,
file_location       IN   VARCHAR2,
filename            IN   VARCHAR2);

パラメータ

表18-132 STREAMS_MIGRATIONプロシージャのパラメータ

パラメータ

説明

gnames

Streamsに移行するレプリケーション・グループのリストです。リスト表示されたすべてのレプリケーション・グループには、同じマスター・サイトが含まれている必要があります。レプリケーション・グループに異なるマスターが含まれていると、エラーが発生します。

file_location

移行スクリプトのディレクトリ位置です。指定する位置は、PL/SQLにアクセスできるディレクトリ・オブジェクトである必要があります。SQL文CREATE DIRECTORYを使用して、ディレクトリ・オブジェクトを作成できます。

関連項目: CREATE DIRECTORY文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

filename

移行スクリプトの名前です。

SUSPEND_MASTER_ACTIVITYプロシージャ

このプロシージャは、マスター・グループのレプリケーション・アクティビティを中断します。このプロシージャを使用して、マスター・グループを静止させます。このプロシージャは、マスター定義サイトからコールする必要があります。

構文

DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (
gname   IN   VARCHAR2);

パラメータ

表18-133 SUSPEND_MASTER_ACTIVITYプロシージャのパラメータ

パラメータ

説明

gname

アクティビティを中断するマスター・グループの名前です。

例外

表18-134 SUSPEND_MASTER_ACTIVITYプロシージャの例外

例外

説明

nonmasterdef

起動サイトはマスター定義サイトではありません。

notnormal

マスター・グループで通常の操作が行われていません。

commfailure

少なくとも1つのマスター・サイトにアクセスできません。

SWITCH_MVIEW_MASTERプロシージャ

このプロシージャは、マテリアライズド・ビュー・グループのマスター・サイトを他のマスター・サイトに変更します。このプロシージャは、影響を受けるマテリアライズド・ビューの完全なリフレッシュを行い、必要に応じてトリガーおよびその対応付けられたパッケージを再生成します。このプロシージャでは、マスター・サイトの変更前に、キューが古いマスター・サイトにプッシュされることはありません。

注意:
他のマテリアライズド・ビュー(レベル2以上)に基づくマテリアライズド・ビューのマスターを切り替えることはできません。このようなマテリアライズド・ビューのベースを別のマスターにするには、マテリアライズド・ビューを削除して再作成する必要があります。

関連項目:
「GENERATE_MVIEW_SUPPORTプロシージャ」

構文

DBMS_REPCAT.SWITCH_MVIEW_MASTER (
gname         IN   VARCHAR2,
master        IN   VARCHAR2,
gowner        IN   VARCHAR2  := 'PUBLIC');

パラメータ

表18-135 SWITCH_MVIEW_MASTERプロシージャのパラメータ

パラメータ

説明

gname

マスター・サイトを変更するマテリアライズド・ビュー・グループの名前です。

master

マテリアライズド・ビュー・グループに使用する新しいマスター・サイトの、完全修飾されたデータベース名です。

gowner

マテリアライズド・ビュー・グループの所有者です。

例外

表18-136 SWITCH_MVIEW_MASTERプロシージャの例外

例外

説明

nonmview

起動サイトはマテリアライズド・ビュー・サイトではありません。

nonmaster

データベースはマスター・サイトではありません。

commfailure

指定されたデータベースにはアクセスできません。

missingrepgroup

マテリアライズド・ビュー・グループは存在しません。

qrytoolong

マテリアライズド・ビュー定義問合せが32KBを超えています。

alreadymastered

ローカル・サイトに、同じグループ名で、古いマスター・サイトをマスターに持つ別のマテリアライズド・ビュー・グループがあります。

UNDO_ADD_NEW_MASTERS_REQUESTプロシージャ

このプロシージャは、指定されたextension_idについて、SPECIFY_NEW_MASTERSプロシージャおよびADD_NEW_MASTERSプロシージャによるすべての変更を元に戻します。

このプロシージャは1つのマスター・サイト(マスター定義サイトの場合もある)で実行され、そのマスター・サイトのみに影響を与えます。このプロシージャを、要求の影響を受けた1つのマスター・サイトで実行するには、その要求の影響を受けた、新規および既存のマスター・サイトすべてで実行する必要があります。DBA_REPSITES_NEWデータ・ディクショナリ・ビューを問い合せると、extension_idの影響を受けた新しいマスター・サイトを調べることができます。このデータ・ディクショナリ・ビューには、レプリケーション・グループ名もリストされており、このプロシージャはレプリケーション・グループ内の既存のマスター・サイトすべてで実行する必要があります。

注意:
このプロシージャは、通常はコールしません。このプロシージャは、1つ以上のマスター・サイトで、新しいマスターを静止なしで追加する操作が行えない場合にのみ使用します。このプロシージャは、SPECIFY_NEW_MASTERSプロシージャおよびADD_NEW_MASTERSプロシージャの実行後で、RESUME_PROPAGATION_TO_MDEFプロシージャおよびPREPARE_INSTANTIATED_MASTERプロシージャの実行前に実行してください。
特定のextension_idにRESUME_PROPAGATION_TO_MDEFまたはPREPARE_INSTANTIATED_MASTERを実行した後に、このプロシージャを実行しないでください。

関連項目:

- 「SPECIFY_NEW_MASTERSプロシージャ」

- 「ADD_NEW_MASTERSプロシージャ」

- 「RESUME_PROPAGATION_TO_MDEFプロシージャ」

- 「PREPARE_INSTANTIATED_MASTERプロシージャ」

構文

DBMS_REPCAT.UNDO_ADD_NEW_MASTERS_REQUEST (
extension_id   IN  RAW,
drop_contents  IN  BOOLEAN := TRUE);

パラメータ

表18-137 UNDO_ADD_NEW_MASTERS_REQUESTプロシージャのパラメータ

パラメータ

説明

extension_id

静止せずにマスター・グループにマスター・データベースを追加するための、現在保留になっている要求の識別子です。extension_idは、DBA_REPSITES_NEWおよびDBA_REPEXTENSIONSデータ・ディクショナリ・ビューを問い合せて検索できます。

drop_contents

ローカル・サイトで拡張されている新しいレプリケーション・グループ内のオブジェクトの目次を削除するには、デフォルトのTRUEを指定します。目次を保存するには、FALSEを指定します。

例外

表18-138 UNDO_ADD_NEW_MASTERS_REQUESTプロシージャの例外

例外

説明

dbnotcompatible

機能がデータベースのバージョンと互換性がありません。すべてのデータベースには、9.2.0以上の互換性のレベルが必要です。

typefail

指定されたパラメータ値は不適正です。

UNREGISTER_MVIEW_REPGROUPプロシージャ

このプロシージャはDBA_REGISTERED_MVIEW_GROUPSからのマテリアライズド・ビュー・グループの削除を行って、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトでのマテリアライズド・ビューの管理を容易にします。このプロシージャは、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで実行します。

構文

DBMS_REPCAT.UNREGISTER_MVIEW_REPGROUP (
gname      IN   VARCHAR2,
mviewsite  IN   VARCHAR2,
gowner     IN   VARCHAR2  := 'PUBLIC');

パラメータ

表18-139 UNREGISTER_MVIEW_REPGROUPプロシージャのパラメータ

パラメータ

説明

gname

登録解除するマテリアライズド・ビュー・グループの名前です。

mviewsite

マテリアライズド・ビュー・サイトのグローバル名です。

gowner

マテリアライズド・ビュー・グループの所有者です。

VALIDATEファンクション

このファンクションは、マルチマスター・レプリケーション環境のキー条件が正確であるかどうかを確認します。

構文

DBMS_REPCAT.VALIDATE (
gname               IN  VARCHAR2,
check_genflags      IN  BOOLEAN := FALSE,
check_valid_objs    IN  BOOLEAN := FALSE,
check_links_sched   IN  BOOLEAN := FALSE,
check_links         IN  BOOLEAN := FALSE,
error_table         OUT DBMS_REPCAT.VALIDATE_ERR_TABLE)
RETURN BINARY_INTEGER;

DBMS_REPCAT.VALIDATE (
gname               IN  VARCHAR2,
check_genflags      IN  BOOLEAN := FALSE,
check_valid_objs    IN  BOOLEAN := FALSE,
check_links_sched   IN  BOOLEAN := FALSE,
check_links         IN  BOOLEAN := FALSE,
error_msg_table     OUT DBMS_UTILITY.UNCL_ARRAY,
error_num_table     OUT DBMS_UTILITY.NUMBER_ARRAY )
RETURN BINARY_INTEGER;

注意:
このファンクションはオーバーロードされています。VALIDATEの戻り値は、検出されたエラーの数です。このファンクションのOUTパラメータでは、検出されたエラーが戻されます。「構文」に示す最初のインタフェース・ファンクションで、error_tableは、レコードの配列で構成されます。それぞれのレコードには、VARCHAR2とNUMBERがあります。文字列フィールドにはエラー・メッセージが、数値フィールドにはOracleエラー番号が入ります。
「構文」に示す2番目のインタフェース・ファンクションも同様ですが、OUT配列が2つあります。VARCHAR2配列にはエラー・メッセージが、NUMBER配列にはエラー番号が入ります。

パラメータ

表18-140 VALIDATEファンクションのパラメータ

パラメータ

説明

gname

確認するマスター・グループの名前です。

check_genflags

グループ内のすべてのオブジェクトが生成されたかどうかが確認されます。この処理は、マスター定義サイトでのみ行われます。

check_valid_objs

グループ内のオブジェクトの基になるオブジェクトが有効であるかどうかが確認されます。この処理は、マスター定義サイトでのみ行われます。マスター定義サイトでの処理が他のすべてのサイトに波及し、基になるオブジェクトが有効であるかどうかがチェックされます。オブジェクトの有効性は、接続ユーザーのスキーマ内で確認されます。

check_links_sched

リンクがスケジュールされているかどうかが確認されます。この処理は各マスター・サイトで実行されます。

check_links

レプリケーションが正しく行われるように、接続ユーザー(repadmin)およびプロパゲータに正しいリンクが設定されているかどうかが確認されます。リンクがデータベースに存在し、アクセス可能であるかどうかがチェックされます。この処理は各マスター・サイトで実行されます。

error_table

検出されたエラーの総数およびメッセージが戻されます。

error_msg_table

検出されたすべてのエラーのメッセージが戻されます。

error_num_table

検出されたエラーの総数が戻されます。

例外

表18-141 VALIDATEファンクションの例外

例外

説明

missingdblink

データベース・リンクがレプリケーション・プロパゲータのスキーマに存在しないか、またはスケジュールされていません。データベース・リンクが確実にデータベースに存在し、アクセス可能で、その実行がスケジュールされるようにしてください。

dblinkmismatch

ローカル・ノードのデータベース・リンク名が、リンクがアクセスするデータベースのグローバル名と一致しません。GLOBAL_NAMES初期化パラメータがTRUEに設定され、リンク名がグローバル名と一致するようにしてください。

dblinkuidmismatch

ローカル・ノードのレプリケーション管理ユーザーのユーザー名と、データベース・リンクに対応するノードのユーザー名が異なります。Advanced Replicationでは、これらのユーザーの名前が同じことを前提としています。ローカル・ノードのレプリケーション管理ユーザーのユーザーIDと、データベース・リンクに対応するノードのユーザーIDを同じにしてください。

objectnotgenerated

オブジェクトが他のマスター・サイトで生成されていないか、生成がまだ終了していません。マスター定義サイトのオブジェクトに対するGENERATE_REPLICATION_SUPPORTおよびDO_DEFERRED_REPCAT_ADMINのコールで、確実にオブジェクトが生成されるようにしてください。

使用上の注意

VALIDATEの戻り値は、検出されたエラーの数です。このファンクションのOUTパラメータでは、検出されたエラーが戻されます。最初のインタフェース・ファンクションerror_tableは、レコードの配列で構成されます。それぞれのレコードには、VARCHAR2とNUMBERがあります。文字列フィールドにはエラー・メッセージが、数値フィールドにはOracleエラー番号が入ります。

2番目のインタフェースは最初のインタフェースに似ていますが、OUT配列が2つあります。VARCHAR2配列にはエラー・メッセージが、NUMBER配列にはエラー番号が入ります。

WAIT_MASTER_LOGプロシージャ

このプロシージャは、マスター・サイトに非同期で伝播された変更が適用されたかどうかを判別します。

構文

DBMS_REPCAT.WAIT_MASTER_LOG (
gname          IN    VARCHAR2,
record_count   IN    NATURAL,
timeout        IN    NATURAL,
true_count     OUT   NATURAL);

パラメータ

表18-142 WAIT_MASTER_LOGプロシージャのパラメータ

パラメータ

説明

gname

マスター・グループの名前です。

record_count

完了していないアクティビティの数がこのしきい値と同じか、このしきい値より少なくなると、プロシージャが終了します。

timeout

プロシージャが終了するまで待つ最大秒数です。

true_count
(out parameter)

完了していないアクティビティの数が戻されます。

例外

表18-143 WAIT_MASTER_LOGプロシージャの例外

例外

説明

nonmaster

起動サイトはマスター・サイトではありません。

19 DBMS_REPCAT_INSTANTIATE

DBMS_REPCAT_INSTANTIATEパッケージによって、デプロイメント・テンプレートがインスタンス化されます。

この章には、次の項が含まれます。

- DBMS_REPCAT_INSTANTIATEサブプログラムの概要

DBMS_REPCAT_INSTANTIATEサブプログラムの概要

表19-1 DBMS_REPCAT_INSTANTIATEパッケージのサブプログラム

サブプログラム

説明

DROP_SITE_INSTANTIATION Procedure

DBA_REPCAT_TEMPLATE_SITESビューからターゲット・サイトを削除するパブリック・プロシージャです。

INSTANTIATE_OFFLINE Function

オフラインでリモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー環境を構築する際に使用するスクリプトを、マスター・サイトに生成するパブリック・ファンクションです。

INSTANTIATE_ONLINE Function

オンラインでリモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー環境を構築する際に使用するスクリプトを、マスター・サイトに生成するパブリック・ファンクションです。

DROP_SITE_INSTANTIATIONプロシージャ

このプロシージャは、ターゲット・サイトでテンプレートのインスタンス化を削除します。このプロシージャは、マスター・サイトで関連するすべてのメタデータを削除し、指定されたサイトでのマテリアライズド・ビューのリフレッシュを使用禁止にします。このプロシージャは、最初にテンプレートをインスタンス化したユーザーとして実行する必要があります。テンプレートをインスタンス化したユーザーを確認するには、ALL_REPCAT_TEMPLATE_SITESビューで問合せを行います。

構文

DBMS_REPCAT_INSTANTIATE.DROP_SITE_INSTANTIATION(
refresh_template_name  IN   VARCHAR2,
site_name              IN   VARCHAR2);

パラメータ

表19-2 DROP_SITE_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のデプロイメント・テンプレートの名前です。

site_name

指定されたテンプレートのインスタンス化を削除するマスター・サイトの位置です。

INSTANTIATE_OFFLINEファンクション

このファンクションは、オフラインでリモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー環境を構築する際に使用するファイルを、マスター・サイトに生成します。生成されたファイルは、オフライン・インスタンシエーション・ファイルで、マスター・サイトに長時間接続できないリモート・マテリアライズド・ビュー・サイトで使用します。

リモート・マテリアライズド・ビュー・サイトがラップトップの場合、このプロシージャを使用すると便利です。Oracle Enterprise ManagerのAdvanced Replicationインタフェースのパッケージ・インタフェースを使用して、生成されたファイルやデータを1つのファイルにパッケージ化すると、FTPサイトに転送したり、CD-ROMやフロッピィ・ディスクなどにロードできます。ファイルは、DBMS_FILE_TRANSFERパッケージを使用して転送することもできます。

このファンクションで生成されたスクリプトは、USER_REPCAT_TEMP_OUTPUT一時ビューに格納され、デプロイメント・テンプレートの配布時に、Oracle Enterprise ManagerのAdvanced ReplicationインタフェースなどのOracleツール製品で使用します。このファンクションで戻される数値は、USER_REPCAT_TEMP_OUTPUTビューから適切な情報を取り出す際に使用します。

このパブリック・ファンクションを実行するユーザーは、指定されたサイトのインスタンス化されたテンプレートの登録ユーザーになります。

注意:
このファンクションは、デプロイメント・テンプレートのオフライン・インスタンシエーションに使用します。
このファンクションを、DBMS_OFFLINE_OGパッケージのプロシージャ(マスター表のオフライン・インスタンシエーションの実行に使用)と混同しないでください。これらのプロシージャの使用方法の詳細は、このパッケージのドキュメントを参照してください。

関連項目:

- 「デプロイメント・テンプレートをパッケージ化してインスタンス化」

- 『Oracle Databaseアドバンスト・レプリケーション』

- Oracle Enterprise ManagerのAdvanced Replicationインタフェースのオンライン・ヘルプ

構文

DBMS_REPCAT_INSTANTIATE.INSTANTIATE_OFFLINE(
refresh_template_name   IN   VARCHAR2,
site_name               IN   VARCHAR2,
runtime_parm_id         IN   NUMBER    := -1e-130,
next_date               IN   DATE      := SYSDATE,
interval                IN   VARCHAR2  := 'SYSDATE + 1',
use_default_gowner      IN   BOOLEAN   := TRUE)
return NUMBER;

パラメータ

表19-3 INSTANTIATE_OFFLINEファンクションのパラメータ

パラメータ

説明

refresh_template_name

インスタンス化されるデプロイメント・テンプレートの名前です。

site_name

デプロイメント・テンプレートをインスタンス化しているリモート・サイトの名前です。

runtime_parm_id

INSERT_RUNTIME_PARMSプロシージャを使用してランタイム・パラメータ値を定義した場合は、ランタイム・パラメータの作成時に使用したIDを指定します(IDは、GET_RUNTIME_PARM_IDファンクションで取得済です)。

next_date

リフレッシュ・グループの作成時に使用する、次のリフレッシュ日の値です。

interval

リフレッシュ・グループの作成時に使用する、リフレッシュ間隔です。

use_default_gowner

値がTRUEの場合、作成されたマテリアライズド・ビュー・グループはデフォルトのユーザーPUBLICが所有します。値がFALSEの場合、作成されたマテリアライズド・ビュー・グループはインスタンス化を実行するユーザーが所有します。

例外

表19-4 INSTANTIATE_OFFLINEファンクションの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

dupl_template_site

デプロイメント・テンプレートは、このマテリアライズド・ビュー・サイトでインスタンス化されています。デプロイメント・テンプレートは、各マテリアライズド・ビュー・サイトにつき1回のみインスタンス化できます。

not_authorized

このユーザーは、デプロイメント・テンプレートのインスタンス化を認証されていません。

戻り値

表19-5 INSTANTIATE_OFFLINEファンクションの戻り値

戻り値

説明

<システム生成番号>

USER_REPCAT_TEMP_OUTPUTビューから選択して、生成されたインスタンス化スクリプトを取得するときの、output_idに対するシステム生成番号を示します。

INSTANTIATE_ONLINEファンクション

このファンクションは、オンラインでリモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー環境を構築する際に使用するスクリプトを、マスター・サイトに生成します。生成されたスクリプトは、マスター・サイトに長時間接続できるリモート・マテリアライズド・ビュー・サイトで使用します。新しいマテリアライズド・ビューに設定されるデータの量によっては、リモート・マテリアライズド・ビュー・サイトでのインスタンス化処理に時間がかかります。

このファンクションで生成されたスクリプトは、USER_REPCAT_TEMP_OUTPUT一時ビューに格納され、デプロイメント・テンプレートの配布時に、Oracle Enterprise ManagerのAdvanced ReplicationインタフェースなどのOracleツール製品で使用します。このファンクションで戻される数値は、USER_REPCAT_TEMP_OUTPUTビューから適切な情報を取り出す際に使用します。

このパブリック・ファンクションを実行するユーザーは、指定されたサイトのインスタンス化されたテンプレートの登録ユーザーになります。

関連項目:

- 「デプロイメント・テンプレートをパッケージ化してインスタンス化」

- 『Oracle Databaseアドバンスト・レプリケーション』

- Oracle Enterprise ManagerのAdvanced Replicationインタフェースのオンライン・ヘルプ

構文

DBMS_REPCAT_INSTANTIATE.INSTANTIATE_ONLINE(
refresh_template_name   IN   VARCHAR2,
site_name               IN   VARCHAR2,
runtime_parm_id         IN   NUMBER    := -1e-130,
next_date               IN   DATE      := SYSDATE,
interval                IN   VARCHAR2  := 'SYSDATE + 1',
use_default_gowner      IN   BOOLEAN   := TRUE)
return NUMBER;

パラメータ

表19-6 INSTANTIATE_ONLINEファンクションのパラメータ

パラメータ

説明

refresh_template_name

インスタンス化されるデプロイメント・テンプレートの名前です。

site_name

デプロイメント・テンプレートをインスタンス化しているリモート・サイトの名前です。

runtime_parm_id

INSERT_RUNTIME_PARMSプロシージャを使用してランタイム・パラメータ値を定義した場合は、ランタイム・パラメータの作成時に使用したIDを指定します(IDは、GET_RUNTIME_PARM_IDファンクションで取得済です)。

next_date

リフレッシュ・グループの作成時に使用する、次のリフレッシュ日の値を指定します。

interval

リフレッシュ・グループの作成時に使用する、リフレッシュ間隔を指定します。

use_default_gowner

値がTRUEの場合、作成されたマテリアライズド・ビュー・グループはデフォルトのユーザーPUBLICが所有します。値がFALSEの場合、作成されたマテリアライズド・ビュー・グループはインスタンス化を実行するユーザーが所有します。

例外

表19-7 INSTANTIATE_ONLINEファンクションの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

dupl_template_site

デプロイメント・テンプレートは、このマテリアライズド・ビュー・サイトでインスタンス化されています。デプロイメント・テンプレートは、各マテリアライズド・ビュー・サイトにつき1回のみインスタンス化できます。

not_authorized

このユーザーは、デプロイメント・テンプレートのインスタンス化を認証されていません。

戻り値

表19-8 INSTANTIATE_ONLINEファンクションの戻り値

戻り値

説明

<システム生成番号>

USER_REPCAT_TEMP_OUTPUTビューから選択して、生成されたインスタンス化スクリプトを取得するときの、output_idに対するシステム生成番号を示します。

20 DBMS_REPCAT_ADMIN

DBMS_REPCAT_ADMINは、対称型レプリケーション機能で必要となる権限を持つユーザーの作成を可能にします。

この章には、次の項が含まれます。

- DBMS_REPCAT_ADMINサブプログラムの概要

DBMS_REPCAT_ADMINサブプログラムの概要

表20-1 DBMS_REPCAT_ADMINパッケージのサブプログラム

サブプログラム

説明

「GRANT_ADMIN_ANY_SCHEMAプロシージャ」

レプリケーション管理者に、カレント・サイトでのレプリケーション・グループの管理に必要な権限を付与します。

「GRANT_ADMIN_SCHEMAプロシージャ」

レプリケーション管理者に、カレント・サイトでのスキーマの管理に必要な権限を付与します。

「REGISTER_USER_REPGROUPプロシージャ」

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで、リモート・サイトに対するプロキシ・マテリアライズド・ビュー管理者または受信者権限を割り当てます。

「REVOKE_ADMIN_ANY_SCHEMAプロシージャ」

GRANT_ADMIN_ANY_SCHEMAプロシージャでレプリケーション管理者に付与された権限やロールを取り消します。

「REVOKE_ADMIN_SCHEMAプロシージャ」

GRANT_ADMIN_SCHEMAプロシージャでレプリケーション管理者に付与された権限やロールを取り消します。

「UNREGISTER_USER_REPGROUPプロシージャ」

REGISTER_USER_REPGROUPプロシージャでプロキシ・マテリアライズド・ビュー管理者または受信者に付与された権限やロールを取り消します。

GRANT_ADMIN_ANY_SCHEMAプロシージャ

このプロシージャは、レプリケーション管理者に、カレント・サイトでのレプリケーション・グループの管理に必要な権限を付与します。

構文

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
username  IN   VARCHAR2);

パラメータ

表20-2 GRANT_ADMIN_ANY_SCHEMAプロシージャのパラメータ

パラメータ

説明

username

カレント・サイトでのレプリケーション・グループの管理に必要な権限とロールを付与する、レプリケーション管理者の名前です。

例外

表20-3 GRANT_ADMIN_ANY_SCHEMAプロシージャの例外

例外

説明

ORA-01917

指定されたユーザーは存在しません。

GRANT_ADMIN_SCHEMAプロシージャ

このプロシージャは、レプリケーション管理者に、カレント・サイトでのスキーマの管理に必要な権限を付与します。レプリケーション・グループが複数のスキーマにまたがらない場合は、このプロシージャを使用すると便利です。

このプロシージャによって付与される権限は、GRANT_ADMIN_ANY_SCHEMAによって付与される権限より制限されています。ただし、GRANT_ADMIN_SCHEMAによって権限を付与されたレプリケーション管理者は、他のレプリケーション管理者が所有するレプリケーション・グループに対して特定の管理アクティビティを実行できます。たとえば、GRANT_ADMIN_SCHEMAによって権限を付与されたレプリケーション管理者は、他のレプリケーション管理者が所有するレプリケーション・グループおよびレプリケーション・オブジェクトを削除できます。

注意:
各ユーザーを別々のレプリケート・グループに制限する場合は、DBMS_REPCATパッケージの上にラッパー・パッケージを書き込み、その新しいパッケージに対してEXECUTE権限を付与できますが、各ユーザーのDBMS_REPCATパッケージに対してではありません。新しいパッケージでは、セキュリティ・チェックが実行されます。たとえば、新しいパッケージでは、hrでhr_rgレプリケーション・グループは管理できても、他のレプリケーション・グループは管理できないことになっており、hrで管理できるのはhrスキーマ内のオブジェクトのみになっています。セキュリティ・チェックで問題がなかった場合は、新しいパッケージによってDBMS_REPCATパッケージ内のサブプログラムがコールされます。セキュリティ・チェックで問題があった場合は、新しいパッケージによって障害のログが記録され、コミットされて、例外が発生します。

関連項目:
「GRANT_ADMIN_ANY_SCHEMAプロシージャ」

構文

DBMS_REPCAT_ADMIN.GRANT_ADMIN_SCHEMA (
username IN VARCHAR2);

パラメータ

表20-4 GRANT_ADMIN_SCHEMAプロシージャのパラメータ

パラメータ

説明

username

レプリケーション管理者の名前です。このユーザーには、カレント・サイトのレプリケーション・マスター・グループ内での、同じ名前のスキーマの管理に必要な権限とロールが付与されます。

例外

表20-5 GRANT_ADMIN_SCHEMAプロシージャの例外

例外

説明

ORA-01917

指定されたユーザーは存在しません。

REGISTER_USER_REPGROUPプロシージャ

このプロシージャは、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで、リモート・サイトに対するプロキシ・マテリアライズド・ビュー管理者または受信者権限を割り当てます。このプロシージャは、プロキシ・マテリアライズド・ビュー管理者または受信者に、必要な権限のみを付与します。GRANT_ADMIN_SCHEMAプロシージャやGRANT_ADMIN_ANY_SCHEMAプロシージャで付与される強力な権限は、このプロシージャでは付与されません。

関連項目:
トラステッド・セキュリティ・モデルとアントラステッド・セキュリティ・モデルの詳細は、付録A「セキュリティ・オプション」を参照してください。

構文

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username         IN   VARCHAR2,
privilege_type   IN   VARCHAR2,
{list_of_gnames  IN   VARCHAR2 |
table_of_gnames  IN   DBMS_UTILITY.NAME_ARRAY)};

注意:
このプロシージャはオーバーロードされています。list_of_gnamesパラメータとtable_of_gnamesパラメータは、同時には指定できません。

パラメータ

表20-6 REGISTER_USER_REPGROUPプロシージャのパラメータ

パラメータ

説明

username

プロキシ・マテリアライズド・ビュー管理者または受信者の権限を付与するユーザーの名前です。

privilege_type

割り当てる権限のタイプを指定します。privilege_typeの定義には、次の値を使用します。

- 受信者の権限を取り消す場合は、receiverを使用します。

- プロキシ・マテリアライズド・ビュー管理者の権限を取り消す場合は、proxy_snapadminを使用します。

list_of_gnames

ユーザーに付与した受信者権限の適用対象にするレプリケーション・グループの、カンマ区切りのリストです。リスト内のエントリの間には空白を挿入しません。list_of_gnamesをNULLに設定すると、このプロシージャのコール時にはまだ確認されていないレプリケーション・グループを含め、すべてのレプリケーション・グループが受信者権限の適用対象になります。list_of_gnamesをNULLに設定するには、名前表記法を使用する必要があります。リスト内に無効なレプリケーション・グループがあると、リスト全体の登録が失敗します。

table_of_gnames

ユーザーに付与した受信者権限の適用対象にするレプリケーション・グループの、PL/SQL連想配列です。PL/SQL連想配列のタイプはDBMS_UTILITY.NAME_ARRAYにする必要があります。この表は1ベースです(1の位置から始まり、1ずつ増加します)。 ユーザーをすべてのレプリケーション・グループに登録するには、NULLを使用します。表内に無効なレプリケーション・グループがあると、表全体の登録が失敗します。

例外

表20-7 REGISTER_USER_REPGROUPプロシージャの例外

例外

説明

nonmaster

指定されたレプリケーション・グループが存在しないか、または起動データベースがマスター・サイトあるいはマスター・マテリアライズド・ビュー・サイトではありません。

ORA-01917

指定されたユーザーは存在しません。

typefailure

指定された権限のタイプは正しくありません。

REVOKE_ADMIN_ANY_SCHEMAプロシージャ

このプロシージャは、GRANT_ADMIN_ANY_SCHEMAでレプリケーション管理者に付与された権限やロールを取り消します。

注意:
GRANT_ADMIN_ANY_SCHEMA以外で付与されたものと同一の権限やロールも取り消されます。

構文

DBMS_REPCAT_ADMIN.REVOKE_ADMIN_ANY_SCHEMA (
username IN VARCHAR2);

パラメータ

表20-8 REVOKE_ADMIN_ANY_SCHEMAプロシージャのパラメータ

パラメータ

説明

username

権限を取り消すレプリケーション管理者の名前です。

例外

表20-9 REVOKE_ADMIN_ANY_SCHEMAプロシージャの例外

例外

説明

ORA-01917

指定されたユーザーは存在しません。

REVOKE_ADMIN_SCHEMAプロシージャ

このプロシージャは、GRANT_ADMIN_SCHEMAでレプリケーション管理者に付与された権限やロールを取り消します。

注意:
GRANT_ADMIN_SCHEMA以外で付与されたものと同一の権限やロールも取り消されます。

構文

DBMS_REPCAT_ADMIN.REVOKE_ADMIN_SCHEMA (
username IN VARCHAR2);

パラメータ

表20-10 REVOKE_ADMIN_SCHEMAプロシージャのパラメータ

パラメータ

説明

username

権限を取り消すレプリケーション管理者の名前です。

例外

表20-11 REVOKE_ADMIN_SCHEMAプロシージャの例外

例外

説明

ORA-01917

指定されたユーザーは存在しません。

UNREGISTER_USER_REPGROUPプロシージャ

このプロシージャは、REGISTER_USER_REPGROUPプロシージャでプロキシ・マテリアライズド・ビュー管理者または受信者に付与された権限やロールを取り消します。

構文

DBMS_REPCAT_ADMIN.UNREGISTER_USER_REPGROUP (
username         IN   VARCHAR2,
privilege_type   IN   VARCHAR2,
{list_of_gnames  IN   VARCHAR2 |
table_of_gnames  IN   DBMS_UTILITY.NAME_ARRAY)};

注意:
このプロシージャはオーバーロードされています。list_of_gnamesパラメータとtable_of_gnamesパラメータは、同時には指定できません。

パラメータ

表20-12 UNREGISTER_USER_REPGROUPプロシージャのパラメータ

パラメータ

説明

username

登録を取り消すユーザーの名前です。

privilege_type

取り消す権限のタイプを指定します。privilege_typeの定義には、次の値を使用します。

- 受信者の権限を取り消す場合は、receiverを使用します。

- プロキシ・マテリアライズド・ビュー管理者の権限を取り消す場合は、proxy_snapadminを使用します。

list_of_gnames

ユーザーに付与した受信者権限の非適用対象にするレプリケーション・グループの、カンマ区切りのリストです。リスト内のエントリの間には空白を挿入しません。list_of_gnamesをNULLに設定すると、すべてのレプリケーション・グループに対するユーザーの登録が取り消されます。list_of_gnamesをNULLに設定するには、名前表記法を使用する必要があります。リスト内に無効なレプリケーション・グループがあると、リスト全体の登録解除が失敗します。

table_of_gnames

ユーザーに付与した受信者権限の非適用対象にするレプリケーション・グループの、PL/SQL連想配列です。PL/SQL連想配列のタイプはDBMS_UTILITY.NAME_ARRAYにする必要があります。この表は1ベースです(1の位置から始まり、1ずつ増加します)。 すべてのレプリケーション・グループに対するユーザーの登録を取り消すには、NULLを使用します。表内に無効なレプリケーション・グループがあると、表全体の登録解除が失敗します。

例外

表20-13 UNREGISTER_USER_REPGROUPプロシージャの例外

例外

説明

nonmaster

指定されたレプリケーション・グループが存在しないか、または起動データベースがマスター・サイトあるいはマスター・マテリアライズド・ビュー・サイトではありません。

ORA-01917

指定されたユーザーは存在しません。

typefailure

指定された権限のタイプは正しくありません。

21 DBMS_REPCAT_RGT

DBMS_REPCAT_RGTは、リフレッシュ・グループのテンプレートの管理および定義を制御します。

この章には、次の項が含まれます。

- DBMS_REPCAT_RGTサブプログラムの概要

DBMS_REPCAT_RGTサブプログラムの概要

表21-1 DBMS_REPCAT_RGTパッケージのサブプログラム

サブプログラム

説明

「ALTER_REFRESH_TEMPLATEプロシージャ」

データベース管理者が既存のデプロイメント・テンプレートを変更します。

「ALTER_TEMPLATE_OBJECTプロシージャ」

指定されたデプロイメント・テンプレートに追加されたオブジェクトを変更します。

「ALTER_TEMPLATE_PARMプロシージャ」

データベース管理者が指定されたデプロイメント・テンプレートのパラメータを変更します。

「ALTER_USER_AUTHORIZATIONプロシージャ」

DBA_REPCAT_USER_AUTHORIZATIONSビューの内容を変更します。

「ALTER_USER_PARM_VALUEプロシージャ」

特定のユーザーに対して定義されている既存のパラメータ値を変更します。

「COMPARE_TEMPLATESファンクション」

データベース管理者が2つのデプロイメント・テンプレートの内容を比較します。

「COPY_TEMPLATEファンクション」

データベース管理者がデプロイメント・テンプレートをコピーします。

「CREATE_OBJECT_FROM_EXISTINGファンクション」

既存のデータベース・オブジェクトからテンプレート・オブジェクト定義を作成し、ターゲット・デプロイメント・テンプレートに追加します。

「CREATE_REFRESH_TEMPLATEファンクション」

データベース管理者がテンプレート名、プライベートまたはパブリックのステータスおよびターゲット・リフレッシュ・グループの定義を行うことができる、デプロイメント・テンプレートを作成します。

「CREATE_TEMPLATE_OBJECTファンクション」

オブジェクト定義をターゲットのデプロイメント・テンプレート・コンテナに追加します。

「CREATE_TEMPLATE_PARMファンクション」

指定されたデプロイメント・テンプレートのパラメータを作成して、リモート・マテリアライズド・ビュー・サイトでカスタム・データ・セットを作成します。

「CREATE_USER_AUTHORIZATIONファンクション」

特定のユーザーに対して、プライベート・デプロイメント・テンプレートのインスタンス化を認証します。

「CREATE_USER_PARM_VALUEファンクション」

特定のユーザーに対して、デプロイメント・テンプレートのパラメータ値を事前定義します。

「DELETE_RUNTIME_PARMSプロシージャ」

INSERT_RUNTIME_PARMSプロシージャを使用して定義したランタイム・パラメータ値を削除します。

「DROP_ALL_OBJECTSプロシージャ」

データベース管理者が、すべてのオブジェクトまたは特定のオブジェクト型を、デプロイメント・テンプレートから削除します。

「DROP_ALL_TEMPLATE_PARMSプロシージャ」

データベース管理者が指定されたデプロイメント・テンプレートのテンプレート・パラメータを削除します。

「DROP_ALL_TEMPLATE_SITESプロシージャ」

DBA_REPCAT_TEMPLATE_SITESビューからすべてのエントリを削除します。

「DROP_ALL_TEMPLATESプロシージャ」

プロシージャがコールされたサイトで、すべてのデプロイメント・テンプレートを削除します。

「DROP_ALL_USER_AUTHORIZATIONSプロシージャ」

データベース管理者が、指定されたデプロイメント・テンプレートに対して与えられた、すべてのユーザー認証を削除します。

「DROP_ALL_USER_PARM_VALUESプロシージャ」

指定されたデプロイメント・テンプレートのユーザー・パラメータ値を削除します。

「DROP_REFRESH_TEMPLATEプロシージャ」

デプロイメント・テンプレートを削除します。

「DROP_SITE_INSTANTIATIONプロシージャ」

DBA_REPCAT_TEMPLATE_SITESビューからターゲット・サイトを削除します。

「DROP_TEMPLATE_OBJECTプロシージャ」

指定されたデプロイメント・テンプレートからテンプレート・オブジェクトを削除します。

「DROP_TEMPLATE_PARMプロシージャ」

DBA_REPCAT_TEMPLATE_PARMSビューから既存のテンプレート・パラメータを削除します。

DROP_USER_AUTHORIZATIONプロシージャ

DBA_REPCAT_USER_AUTHORIZATIONSビューからユーザー認証エントリを削除します。

「DROP_USER_PARM_VALUEプロシージャ」

特定のデプロイメント・テンプレートに対して事前定義されたユーザー・パラメータ値を削除します。

「GET_RUNTIME_PARM_IDファンクション」

ランタイム・パラメータ値を定義する際に使用するIDを取得します。

「INSERT_RUNTIME_PARMSプロシージャ」

テンプレートのインスタンス化の前に、ランタイム・パラメータ値を定義します。

「INSTANTIATE_OFFLINEファンクション」

オフラインでリモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー環境を構築する際に使用するスクリプトを、マスター・サイトに生成します。

「INSTANTIATE_ONLINEファンクション」

オンラインでリモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー環境を構築する際に使用するスクリプトを、マスター・サイトに生成します。

「LOCK_TEMPLATE_EXCLUSIVEプロシージャ」

デプロイメント・テンプレートが更新または変更されている間、ユーザーによるテンプレートの読取りやインスタンス化を行わないようにします。

「LOCK_TEMPLATE_SHAREDプロシージャ」

指定されたデプロイメント・テンプレートを読取り専用にします。

ALTER_REFRESH_TEMPLATEプロシージャ

このプロシージャを実行すると、データベース管理者が既存のデプロイメント・テンプレートを変更できます。変更作業には、新しいデプロイメント・テンプレート名、新しいリフレッシュ・グループまたは新しい所有者の定義、およびパブリックまたはプライベートへのステータス変更などがあります。

構文

DBMS_REPCAT_RGT.ALTER_REFRESH_TEMPLATE (
refresh_template_name      IN   VARCHAR2,
new_owner                  IN   VARCHAR2 := '-',
new_refresh_group_name     IN   VARCHAR2 := '-',
new_refresh_template_name  IN   VARCHAR2 := '-',
new_template_comment       IN   VARCHAR2 := '-',
new_public_template        IN   VARCHAR2 := '-',
new_last_modified          IN   DATE := to_date('1', 'J'),
new_modified_by            IN   NUMBER := -1e-130);

パラメータ

表21-2 ALTER_REFRESH_TEMPLATEプロシージャのパラメータ

パラメータ

説明

refresh_template_name

変更されるデプロイメント・テンプレートの名前です。

new_owner

デプロイメント・テンプレートの新しい所有者の名前です。現行の所有者を維持する場合は、値を指定しないでください。

new_refresh_group_name

必要な場合は、このパラメータを使用して、テンプレート・オブジェクトを追加する新しいリフレッシュ・グループの名前を指定します。現行のリフレッシュ・グループを維持する場合は、値を指定しないでください。

new_refresh_template_name

新しいデプロイメント・テンプレート名を指定するには、このパラメータを使用します。現行のデプロイメント・テンプレート名を維持する場合は、値を指定しないでください。

new_template_comment

新しいデプロイメント・テンプレート・コメントです。現行のテンプレート・コメントを維持する場合は、値を指定しないでください。

new_public_template

デプロイメント・テンプレートがパブリックであるかプライベートであるかを指定します。受け付けられる値は、Y(パブリック)およびN(プライベート)です。 カレント値を維持する場合は、値を指定しないでください。

new_last_modified

このデプロイメント・テンプレートが最後に変更された日付です。値を指定しない場合は、現行の日付が自動的に使用されます。

new_modified_by

このデプロイメント・テンプレートを最後に変更したユーザーの名前です。値を指定しない場合は、現行のユーザー名が自動的に使用されます。

例外

表21-3 ALTER_REFRESH_TEMPLATEプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

bad_public_template

public_templateパラメータが正しく指定されませんでした。public_templateパラメータは、パブリック・テンプレートの場合はY、プライベート・テンプレートの場合はNを指定します。

dupl_refresh_template

指定された名前のテンプレートは、存在しています。ALL_REPCAT_REFRESH_TEMPLATESビューを確認してください。

ALTER_TEMPLATE_OBJECTプロシージャ

このプロシージャは、指定されたデプロイメント・テンプレートに追加されたオブジェクトを変更します。一般的な変更処理は、オブジェクトDDLの変更および他のデプロイメント・テンプレートへのオブジェクトの再割当てです。

デプロイメント・テンプレートに加えられた変更は、デプロイメント・テンプレートをインスタンス化する新しいサイトのみに反映されます。テンプレートをすでにインスタンス化したリモート・サイトで変更を適用するには、デプロイメント・テンプレートを再びインスタンス化する必要があります。

構文

DBMS_REPCAT_RGT.ALTER_TEMPLATE_OBJECT (
refresh_template_name       IN   VARCHAR2,
object_name                 IN   VARCHAR2,
object_type                 IN   VARCHAR2,
new_refresh_template_name   IN   VARCHAR2 := '-',
new_object_name             IN   VARCHAR2 := '-',
new_object_type             IN   VARCHAR2 := '-',
new_ddl_text                IN   CLOB     := '-',
new_master_rollback_seg     IN   VARCHAR2 := '-',
new_flavor_id               IN   NUMBER   := -1e-130);

パラメータ

表21-4 ALTER_TEMPLATE_OBJECTプロシージャのパラメータ

パラメータ

説明

refresh_template_name

変更するオブジェクトが含まれるデプロイメント・テンプレート名です。

object_name

変更するテンプレート・オブジェクトの名前です。

object_type

変更するオブジェクトのタイプです。

new_refresh_template_name

このオブジェクトの再割当てを行う新しいデプロイメント・テンプレートの名前です。現行のデプロイメント・テンプレートへのオブジェクトの割当てを維持する場合は、値を指定しないでください。

new_object_name

テンプレート・オブジェクトの新しい名前です。現行のオブジェクト名を維持する場合は、値を指定しないでください。

new_object_type

このパラメータを指定すると、オブジェクト型が変更されます。次のオブジェクト型を指定できます。

MATERIALIZED VIEW   PROCEDURE
INDEX               FUNCTION
TABLE               PACKAGE
VIEW                PACKAGE BODY
SYNONYM             TRIGGER
SEQUENCE            DATABASE LINK

new_ddl_text

指定されたオブジェクトの新しいオブジェクトDDLです。現行のオブジェクトDDLを維持する場合は、新しいDDLテキストを指定しないでください。

new_master_rollback_seg

指定されたオブジェクトの新しいマスター・ロールバック・セグメントです。現行のロールバック・セグメントを維持する場合は、値を指定しないでください。

new_flavor_id

このパラメータは内部で使用します。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

例外

表21-5 ALTER_TEMPLATE_OBJECTプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_flavor_id

この例外が発生した場合は、Oracleサポート・サービスまでお問い合せください。

bad_object_type

オブジェクト型が正しく指定されませんでした。有効なオブジェクト型は、表21-4を参照してください。

miss_template_object

指定されたテンプレート・オブジェクト名が無効か、または存在しません。

dupl_template_object

new_refresh_template_nameパラメータで指定された新しいテンプレート名は、存在しています。

使用上の注意

ALTER_TEMPLATE_OBJECTプロシージャではCLOBが利用されているため、ALTER_TEMPLATE_OBJECTプロシージャを実行するときは、DBMS_LOBパッケージを使用する必要があります。次の例は、ALTER_TEMPLATE_OBJECTプロシージャでDBMS_LOBパッケージを使用する方法を示します。

DECLARE
tempstring VARCHAR2(100);
templob CLOB;
BEGIN
DBMS_LOB.CREATETEMPORARY(templob, TRUE, DBMS_LOB.SESSION);
tempstring := 'CREATE MATERIALIZED VIEW mview_sales AS SELECT *
FROM sales WHERE salesperson = :salesid and region_id = :region';
DBMS_LOB.WRITE(templob, length(tempstring), 1, tempstring);
DBMS_REPCAT_RGT.ALTER_TEMPLATE_OBJECT(
refresh_template_name => 'rgt_personnel',
object_name => 'MVIEW_SALES',
object_type => 'MATERIALIZED VIEW',
new_ddl_text => templob);
DBMS_LOB.FREETEMPORARY(templob);
END;
/

ALTER_TEMPLATE_PARMプロシージャ

このプロシージャを実行すると、データベース管理者が、指定されたデプロイメント・テンプレートのパラメータを変更できます。変更作業には、パラメータの名前の変更や、デフォルト値およびプロンプト文字列の再定義などがあります。

構文

DBMS_REPCAT_RGT.ALTER_TEMPLATE_PARM (
refresh_template_name       IN   VARCHAR2,
parameter_name              IN   VARCHAR2,
new_refresh_template_name   IN   VARCHAR2 := '-',
new_parameter_name          IN   VARCHAR2 := '-',
new_default_parm_value      IN   CLOB := NULL,
new_prompt_string           IN   VARCHAR2 := '-',
new_user_override           IN   VARCHAR2 := '-');

パラメータ

表21-6 ALTER_TEMPLATE_PARMプロシージャのパラメータ

パラメータ

説明

refresh_template_name

変更するパラメータを持つデプロイメント・テンプレートの名前です。

parameter_name

変更するパラメータの名前です。

new_refresh_template_name

指定されたパラメータが新しく割り当てられるデプロイメント・テンプレートの名前です(あるテンプレートから他のテンプレートにパラメータを移動するときに便利です)。現行のテンプレートへの割当てを維持する場合は、値を指定しないでください。

new_parameter_name

テンプレート・パラメータの新しい名前です。現行のパラメータ名を維持する場合は、値を指定しないでください。

new_default_parm_value

指定されたパラメータの新しいデフォルト値です。現行のデフォルト値を維持する場合は、値を指定しないでください。

new_prompt_string

指定されたパラメータの新しいプロンプト・テキストです。現行のプロンプト文字列を維持する場合は、値を指定しないでください。

new_user_override

インスタンス化処理で確認メッセージが表示された場合、ユーザーがデフォルト値を上書きできるかどうかを決定します。このパラメータにユーザー・パラメータ値が定義されていないと、確認メッセージが表示されます。ユーザーがデフォルト値を上書きする場合はYに、上書きできないようにする場合はNに設定します。

例外

表21-7 ALTER_TEMPLATE_PARMプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_template_parm

指定されたテンプレート・パラメータが無効か、または存在しません。

dupl_template_parm

new_refresh_template_nameとnew_parameter_nameの組合せは、存在しています。

使用上の注意

ALTER_TEMPLATE_PARMプロシージャではCLOBが利用されているため、ALTER_TEMPLATE_PARMプロシージャを実行するときは、DBMS_LOBパッケージを使用する必要があります。次の例は、ALTER_TEMPLATE_PARMプロシージャでDBMS_LOBパッケージを使用する方法を示します。

DECLARE
tempstring VARCHAR2(100);
templob CLOB;
BEGIN
DBMS_LOB.CREATETEMPORARY(templob, TRUE, DBMS_LOB.SESSION);
tempstring := 'REGION 20';
DBMS_LOB.WRITE(templob, length(tempstring), 1, tempstring);
DBMS_REPCAT_RGT.ALTER_TEMPLATE_PARM(
refresh_template_name => 'rgt_personnel',
parameter_name => 'region',
new_default_parm_value => templob);
DBMS_LOB.FREETEMPORARY(templob);
END;
/

ALTER_USER_AUTHORIZATIONプロシージャ

このプロシージャは、DBA_REPCAT_USER_AUTHORIZATIONSビューの内容を変更します。具体的には、ユーザーまたはデプロイメント・テンプレートの認証の割当てを変更できます。このプロシージャは、たとえばある従業員の職場が変更になり、他のデプロイメント・テンプレートのマテリアライズド・ビュー環境を必要とする場合などに役立ちます。データベース管理者が単にこの従業員に新しいデプロイメント・テンプレートを割り当てることによって、このユーザーにターゲット・テンプレートのインスタンス化が認証されます。

構文

DBMS_REPCAT_RGT.ALTER_USER_AUTHORIZATION (
user_name                   IN   VARCHAR2,
refresh_template_name       IN   VARCHAR2,
new_user_name               IN   VARCHAR2 := '-',
new_refresh_template_name   IN   VARCHAR2 := '-');

パラメータ

表21-8 ALTER_USER_AUTHORIZATIONプロシージャのパラメータ

パラメータ

説明

user_name

認証の変更が行われるユーザーの名前です。

refresh_template_name

指定されたユーザーに現在割り当てられているデプロイメント・テンプレートの名前です。

new_user_name

このテンプレートの認証のための新しいユーザーを定義するには、このパラメータを使用します。カレント・ユーザーを維持する場合は、値を指定しないでください。

new_refresh_template_name

指定されたユーザー(既存のユーザーまたは新しいユーザー)が、インスタンス化する許可を持つデプロイメント・テンプレートです。カレント・デプロイメント・テンプレートを維持する場合は、値を指定しないでください。

例外

表21-9 ALTER_USER_AUTHORIZATIONプロシージャの例外

例外

説明

miss_user_authorization

指定されたuser_name値とrefresh_template_name値の組合せは、DBA_REPCAT_USER_AUTHORIZATIONSビューに存在しません。

miss_user

new_user_nameパラメータまたはuser_nameパラメータに指定されたユーザー名が無効か、または存在しません。

miss_refresh_template

new_refresh_templateパラメータに指定されたデプロイメント・テンプレートが無効か、または存在しません。

dupl_user_authorization

指定されたユーザー名およびデプロイメント・テンプレート名用の行が存在しています。ALL_REPCAT_USER_AUTHORIZATIONSビューを確認してください。

ALTER_USER_PARM_VALUEプロシージャ

このプロシージャは、指定されたユーザーに定義されている既存のパラメータ値を変更します。マテリアライズド・ビュー環境で割当て表が使用されている場合に、このプロシージャを使用すると便利です。ユーザー・パラメータ値を変更すると、リモート・マテリアライズド・ビュー・サイトのデータ・セットを簡単かつ安全に変更できます。

関連項目:
割当て表の使用方法の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

構文

DBMS_REPCAT_RGT.ALTER_USER_PARM_VALUE(
refresh_template_name         IN   VARCHAR2,
parameter_name                IN   VARCHAR2,
user_name                     IN   VARCHAR2,
new_refresh_template_name     IN   VARCHAR2 := '-',
new_parameter_name            IN   VARCHAR2 := '-',
new_user_name                 IN   VARCHAR2 := '-',
new_parm_value                IN   CLOB := NULL);

パラメータ

表21-10 ALTER_USER_PARM_VALUEプロシージャのパラメータ

パラメータ

説明

refresh_template_name

変更するユーザー・パラメータ値を持つデプロイメント・テンプレートの名前です。

parameter_name

変更するパラメータの名前です。

user_name

パラメータ値が変更されるユーザーの名前です。

new_refresh_template_name

指定されたユーザー・パラメータ値が新しく割り当てられるデプロイメント・テンプレートの名前です(他のテンプレートに対してユーザーを認証するときに便利です)。現行のテンプレートへの割当てを維持する場合は、値を指定しないでください。

new_parameter_name

新しいテンプレート・パラメータの名前です。既存のパラメータに定義されたユーザー値を維持する場合は、値を指定しないでください。

new_user_name

このパラメータ値を割り当てる新しいユーザー名です。カレント・ユーザーへ割り当てられたパラメータ値を維持する場合は、値を指定しないでください。

new_parm_value

指定されたユーザー・パラメータの新しいパラメータ値です。現行のパラメータ値を維持する場合は、値を指定しないでください。

例外

表21-11 ALTER_USER_PARM_VALUEプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_template_parm

指定されたテンプレート・パラメータが無効か、または存在しません。

miss_user

user_nameパラメータまたはnew_user_nameパラメータに指定されたユーザー名が無効か、または存在しません。

miss_user_parm_values

指定されたユーザー・パラメータ値は存在しません。

dupl_user_parm_values

指定された新しいユーザー・パラメータは存在しています。

使用上の注意

ALTER_USER_PARM_VALUEプロシージャではCLOBが利用されているため、ALTER_USER_PARM_VALUEプロシージャを実行するときは、DBMS_LOBパッケージを使用する必要があります。次の例は、ALTER_USER_PARM_VALUEプロシージャでDBMS_LOBパッケージを使用する方法を示します。

DECLARE
tempstring VARCHAR2(100);
templob CLOB;
BEGIN
DBMS_LOB.CREATETEMPORARY(templob, TRUE, DBMS_LOB.SESSION);
tempstring := 'REGION 20';
DBMS_LOB.WRITE(templob, length(tempstring), 1, tempstring);
DBMS_REPCAT_RGT.ALTER_USER_PARM_VALUE(
refresh_template_name => 'rgt_personnel',
parameter_name => 'region',
user_name => 'BOB',
new_parm_value => templob);
DBMS_LOB.FREETEMPORARY(templob);
END;
/

COMPARE_TEMPLATESファンクション

このファンクションを実行すると、データベース管理者が2つのデプロイメント・テンプレートの内容を比較できます。2つのデプロイメント・テンプレートの内容の相違点は、USER_REPCAT_TEMP_OUTPUT一時ビューに格納されます。

COMPARE_TEMPLATESファンクションでは、USER_REPCAT_TEMP_OUTPUT一時ビューの問合せの際にWHERE句で指定する数値が戻されます。たとえば、COMPARE_TEMPLATESプロシージャで10が戻された場合は、次のSELECT文を実行して、指定された2つのテンプレートのすべての相違点を確認します(2つのテンプレートの内容が同一の場合は、SELECT文で行が戻されません)。

SELECT TEXT FROM USER_REPCAT_TEMP_OUTPUT
WHERE OUTPUT_ID =  10 ORDER BY LINE;

接続が解除されるか、またはロールバックが実行されると、USER_REPCAT_TEMP_OUTPUT一時ビューの内容が失われます。

構文

DBMS_REPCAT_RGT.COMPARE_TEMPLATES (
source_template_name    IN   VARCHAR2,
compare_template_name   IN   VARCHAR2)
RETURN NUMBER;

パラメータ

表21-12 COMPARE_TEMPLATESファンクションのパラメータ

パラメータ

説明

source_template_name

比較する最初のデプロイメント・テンプレートの名前です。

compare_template_name

比較する2番目のデプロイメント・テンプレートの名前です。

例外

表21-13 COMPARE_TEMPLATESファンクションの例外

例外

説明

miss_refresh_template

比較するデプロイメント・テンプレート名が無効か、または存在しません。

戻り値

表21-14 COMPARE_TEMPLATESファンクションの戻り値

戻り値

説明

<システム生成番号>

USER_REPCAT_TEMP_OUTPUT一時ビューから選択して、比較するテンプレート間の違いを表示するときに、output_id値に戻される番号を示します。

COPY_TEMPLATEファンクション

このファンクションを使用すると、デプロイメント・テンプレートをコピーでき、新しいデプロイメント・テンプレートが既存のデプロイメント・テンプレートに含まれるオブジェクトの多くを使用する場合に役立ちます。このファンクションは、デプロイメント・テンプレート、テンプレート・オブジェクト、テンプレート・パラメータおよびユーザー・パラメータ値をコピーします。DBAは、任意でこのファンクションにこのテンプレートに対するユーザー認証をコピーさせることができます。このファンクションで戻される数値は、デプロイメント・テンプレートの管理用に、Oracle内部で使用します。

注意:
DBA_REPCAT_TEMPLATE_SITESビュー内の値はコピーされません。

このファンクションを使用すると、データベース管理者がデプロイメント・テンプレートを他のマスター・サイトにコピーできます。この機能は、デプロイメント・テンプレートの配布や、複数のサイトでのネットワーク負荷の分割に役立ちます。

構文

DBMS_REPCAT_RGT.COPY_TEMPLATE (
old_refresh_template_name     IN   VARCHAR2,
new_refresh_template_name     IN   VARCHAR2,
copy_user_authorizations      IN   VARCHAR2,
dblink                        IN   VARCHAR2 := NULL)
RETURN NUMBER;

パラメータ

表21-15 COPY_TEMPLATEファンクションのパラメータ

パラメータ

説明

old_refresh_template_name

コピーされるデプロイメント・テンプレートの名前です。

new_refresh_template_name

新しいデプロイメント・テンプレートの名前です。

copy_user_authorizations

元のテンプレートに対する認証を、新しいデプロイメント・テンプレートにコピーするかどうかを指定します。このパラメータに受け付けられる値は、Y、NおよびNULLです。

注意: すべてのユーザーが、ターゲット・データベースに存在する必要があります。

dblink

デプロイメント・テンプレートのコピー元を定義します(デプロイメント・テンプレートを他のマスター・サイトに配布するときに便利です)。コピー元を指定しない場合、デプロイメント・テンプレートはローカル・マスター・サイトからコピーされます。

例外

表21-16 COPY_TEMPLATEファンクションの例外

例外

説明

miss_refresh_template

コピーするデプロイメント・テンプレート名が無効か、または存在しません。

dupl_refresh_template

指定された新しいリフレッシュ・テンプレートの名前は、存在しています。

bad_copy_auth

copy_user_authorizationパラメータに指定された値は無効です。受け付けられる値は、Y、NおよびNULLです。

戻り値

表21-17 COPY_TEMPLATEファンクションの戻り値

戻り値

説明

<システム生成番号>

Oracle内部で使用されるシステム生成番号です。

CREATE_OBJECT_FROM_EXISTINGファンクション

このファンクションは、既存のデータベース・オブジェクトからテンプレート・オブジェクト定義を作成して、ターゲット・デプロイメント・テンプレートに追加します。ターゲット・デプロイメント・テンプレートがリモート・マテリアライズド・ビュー・サイトでインスタンス化されるときに、元のデータベース・オブジェクトを作成したDDLが実行されます。既存のトリガーやプロシージャをテンプレートに追加する場合、このファンクションを使用すると便利です。このファンクションで戻される数値は、デプロイメント・テンプレートの管理用に、Oracle内部で使用します。

構文

DBMS_REPCAT_RGT.CREATE_OBJECT_FROM_EXISTING(
refresh_template_name  IN   VARCHAR2,
object_name            IN   VARCHAR2,
sname                  IN   VARCHAR2,
oname                  IN   VARCHAR2,
otype                  IN   VARCHAR2)
RETURN NUMBER;

パラメータ

表21-18 CREATE_OBJECT_FROM_EXISTINGファンクションのパラメータ

パラメータ

説明

refresh_template_name

このオブジェクトが追加されるデプロイメント・テンプレートの名前です。

object_name

オプションで、デプロイメント・テンプレートに追加する既存のオブジェクトの、新しい名前を指定します(既存のオブジェクトに新しい名前を定義できます)。

sname

作成するテンプレート・オブジェクトの基になるオブジェクトを含むスキーマです。

oname

作成するテンプレート・オブジェクトの基になるオブジェクトの名前です。

otype

テンプレートに追加するデータベース・オブジェクトのタイプ(PROCEDURE、TRIGGERなど)です。次のオブジェクト型を指定できます(DATABASE LINK、MATERIALIZED VIEWおよびMATERIALIZED VIEWは、このファンクションに有効なオブジェクト型ではありません)。

SEQUENCE               PROCEDURE
INDEX                  FUNCTION
TABLE                  PACKAGE
VIEW                   PACKAGE BODY
SYNONYM                TRIGGER

例外

表21-19 CREATE_OBJECT_FROM_EXISTINGファンクションの例外

例外

説明

miss_refresh_template

指定されたリフレッシュ・テンプレート名が無効か、または存在しません。既存のデプロイメント・テンプレートを確認するには、DBA_REPCAT_REFRESH_TEMPLATESビューの問合せを行います。

bad_object_type

オブジェクト型が正しく指定されませんでした。

dupl_template_object

指定されたデプロイメント・テンプレートには、同名で同タイプのオブジェクトがすでに追加されています。

objectmissing

指定されたオブジェクトは存在しません。

戻り値

表21-20 CREATE_OBJECT_FROM_EXISTINGファンクションの戻り値

戻り値

説明

<システム生成番号>

Oracle内部で使用されるシステム生成番号です。

CREATE_REFRESH_TEMPLATEファンクション

このファンクションは、テンプレート名、プライベートまたはパブリックのステータスおよびターゲット・リフレッシュ・グループの定義を行う、デプロイメント・テンプレートを作成します。テンプレート・オブジェクト、ユーザー認証またはテンプレート・パラメータを作成するたびに、このファンクションで作成されるデプロイメント・テンプレートを参照します。このファンクションは、DBA_REPCAT_REFRESH_TEMPLATESビューに行を追加します。このファンクションで戻される数値は、デプロイメント・テンプレートの管理用に、Oracle内部で使用します。

構文

DBMS_REPCAT_RGT.CREATE_REFRESH_TEMPLATE (
owner                  IN   VARCHAR2,
refresh_group_name     IN   VARCHAR2,
refresh_template_name  IN   VARCHAR2,
template_comment       IN   VARCHAR2 := NULL,
public_template        IN   VARCHAR2 := NULL,
last_modified          IN   DATE := SYSDATE,
modified_by            IN   VARCHAR2 := USER,
creation_date          IN   DATE := SYSDATE,
created_by             IN   VARCHAR2 := USER)
RETURN NUMBER;

パラメータ

表21-21 CREATE_REFRESH_TEMPLATEファンクションのパラメータ

パラメータ

説明

owner

このパラメータで、デプロイメント・テンプレートの所有者のユーザー名を指定します。所有者を指定しない場合、テンプレートを作成したユーザーの名前が自動的に使用されます。

refresh_group_name

このテンプレートのインスタンス化するときに作成される、リフレッシュ・グループの名前です。このテンプレートで作成されるすべてのオブジェクトは、指定されたリフレッシュ・グループに割り当てられます。

refresh_template_name

作成するデプロイメント・テンプレートの名前です。このデプロイメント・テンプレートを使用するすべてのアクティビティで、この名前が参照されます。

template_comment

このパラメータで定義されるユーザー・コメントは、DBA_REPCAT_REFRESH_TEMPLATESビューにリストされます。

public_template

デプロイメント・テンプレートがパブリックであるかプライベートであるかを指定します。受け付けられる値は、Y(パブリック)およびN(プライベート)です。

last_modified

このデプロイメント・テンプレートが最後に変更された日付です。値を指定しない場合は、現行の日付が自動的に使用されます。

modified_by

このデプロイメント・テンプレートを最後に変更したユーザーの名前です。値を指定しない場合は、現行のユーザー名が自動的に使用されます。

creation_date

このデプロイメント・テンプレートが作成された日付です。値を指定しない場合は、現行の日付が自動的に使用されます。

created_by

このデプロイメント・テンプレートを作成したユーザーの名前です。値を指定しない場合は、現行のユーザー名が自動的に使用されます。

例外

表21-22 CREATE_REFRESH_TEMPLATEファンクションの例外

例外

説明

dupl_refresh_template

指定された名前のテンプレートは、存在しています。既存のテンプレートについては、ALL_REPCAT_REFRESH_TEMPLATESビューを確認してください。

bad_public_template

public_templateパラメータが正しく指定されませんでした。public_templateパラメータは、パブリック・テンプレートの場合はY、プライベート・テンプレートの場合はNを指定します。

戻り値

表21-23 CREATE_REFRESH_TEMPLATEファンクションの戻り値

戻り値

説明

<system-generated number>

Oracle内部で使用されるシステム生成番号です。

CREATE_TEMPLATE_OBJECTファンクション

このファンクションは、オブジェクト定義をターゲットのデプロイメント・テンプレート・コンテナに追加します。ターゲット・デプロイメント・テンプレートがリモート・マテリアライズド・ビュー・サイトでインスタンス化されるときに、指定されたオブジェクトDDLが実行されます。マテリアライズド・ビュー以外にも、このファンクションを使用して、表、プロシージャおよび他のオブジェクトをテンプレートに追加できます。このファンクションで戻される数値は、デプロイメント・テンプレートの管理用に、Oracle内部で使用します。

構文

DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT (
refresh_template_name  IN   VARCHAR2,
object_name            IN   VARCHAR2,
object_type            IN   VARCHAR2,
ddl_text               IN   CLOB,
master_rollback_seg    IN   VARCHAR2 := NULL,
flavor_id              IN   NUMBER := -1e-130)
RETURN NUMBER;

パラメータ

表21-24 CREATE_TEMPLATE_OBJECTファンクションのパラメータ

パラメータ

説明

refresh_template_name

このオブジェクトが追加されるデプロイメント・テンプレートの名前です。

object_name

作成するテンプレート・オブジェクトの名前です。

object_type

テンプレートに追加するデータベース・オブジェクトのタイプ(MATERIALIZED VIEW、TRIGGER、PROCEDUREなど)です。次のオブジェクト型を指定できます。

MATERIALIZED VIEW     PROCEDURE
INDEX                 FUNCTION
TABLE                 PACKAGE
VIEW                  PACKAGE BODY
SYNONYM               TRIGGER
SEQUENCE              DATABASE LINK

ddl_text

テンプレートに追加するオブジェクトを作成するDDLです。DDLは、必ずセミコロンで終了するようにします。テンプレート・オブジェクト用にテンプレート・パラメータを作成する場合は、コロン(:)を使用できます。詳細は、第4章「デプロイメント・テンプレートの作成」を参照してください。

CREATE MATERIALIZED VIEW文でマテリアライズド・ビューを追加する場合は、マテリアライズド・ビュー問合せでマスター表の所有者のスキーマ名を指定してください。

master_rollback_seg

定義されたオブジェクトDDLをリモート・マテリアライズド・ビュー・サイトで実行する際に使用する、ロールバック・セグメントの名前を指定します。

flavor_id

このパラメータは内部で使用します。

注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。

例外

表21-25 CREATE_TEMPLATE_OBJECTファンクションの例外

例外

説明

miss_refresh_template

指定されたリフレッシュ・テンプレート名が無効か、または存在しません。既存のデプロイメント・テンプレートを確認するには、DBA_REPCAT_REFRESH_TEMPLATESビューの問合せを行います。

bad_object_type

オブジェクト型が正しく指定されませんでした。有効なオブジェクト型は、表21-24を参照してください。

dupl_template_object

指定されたデプロイメント・テンプレートには、同名で同タイプのオブジェクトがすでに追加されています。

戻り値

表21-26 CREATE_TEMPLATE_OBJECTファンクションの戻り値

戻り値

説明

<システム生成番号>

Oracle内部で使用されるシステム生成番号です。

使用上の注意

CREATE_TEMPLATE_OBJECTではCLOBが利用されているため、CREATE_TEMPLATE_OBJECTファンクションを実行するときは、DBMS_LOBパッケージを使用する必要があります。次の例は、CREATE_TEMPLATE_OBJECTファンクションでDBMS_LOBパッケージを使用する方法を示します。

DECLARE
tempstring VARCHAR2(100);
templob CLOB;
a NUMBER;
BEGIN
DBMS_LOB.CREATETEMPORARY(templob, TRUE, DBMS_LOB.SESSION);
tempstring := 'CREATE MATERIALIZED VIEW mview_sales AS SELECT *
FROM sales WHERE salesperson = :salesid';
DBMS_LOB.WRITE(templob, length(tempstring), 1, tempstring);
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT(
refresh_template_name => 'rgt_personnel',
object_name => 'mview_sales',
object_type => 'MATERIALIZED VIEW',
ddl_text => templob,
master_rollback_seg => 'RBS');
DBMS_LOB.FREETEMPORARY(templob);
END;
/

CREATE_TEMPLATE_PARMファンクション

このファンクションを実行すると、指定されたデプロイメント・テンプレートのパラメータが作成され、リモート・マテリアライズド・ビュー・サイトでカスタム・データ・セットを作成できます。このファンクションは、データベース管理者が、テンプレート・オブジェクトを追加する前にテンプレート変数のセットを定義する場合のみに必要です。CREATE_TEMPLATE_OBJECTファンクションを使用してオブジェクトがテンプレートに追加されると、オブジェクトDDLのすべての変数が自動的にDBA_REPCAT_TEMPLATE_PARMSビューに追加されます。

データベース管理者は、通常、ALTER_TEMPLATE_PARMプロシージャを使用して、デフォルトのパラメータ値またはプロンプト文字列(あるいはその両方)を変更します(詳細は、「ALTER_TEMPLATE_PARMプロシージャ」を参照してください)。このファンクションで戻される数値は、デプロイメント・テンプレートの管理用に、Oracle内部で使用します。

構文

DBMS_REPCAT_RGT.CREATE_TEMPLATE_PARM (
refresh_template_name  IN   VARCHAR2,
parameter_name         IN   VARCHAR2,
default_parm_value     IN   CLOB := NULL,
prompt_string          IN   VARCHAR2 := NULL,
user_override          IN   VARCHAR2 := NULL)
RETURN NUMBER;

パラメータ

表21-27 CREATE_TEMPLATE_PARMファンクションのパラメータ

パラメータ

説明

refresh_template_name

パラメータを作成するデプロイメント・テンプレートの名前です。

parameter_name

作成するパラメータの名前です。

default_parm_value

パラメータのデフォルト値は、このパラメータで定義します。ユーザー・パラメータ値やランタイム・パラメータ値がない場合、インスタンス化処理でこのデフォルト値が使用されます。

prompt_string

インスタンス化処理で、このテンプレート・パラメータに表示されるプロンプト・テキストです。

user_override

インスタンス化処理で確認メッセージが表示された場合、ユーザーがデフォルト値を上書きできるかどうかを決定します。このパラメータにユーザー・パラメータ値が定義されていないと、確認メッセージが表示されます。ユーザーがデフォルト値を上書きする場合はYに、上書きできないようにする場合はNに設定します。

例外

表21-28 CREATE_TEMPLATE_PARMファンクションの例外

例外

説明

miss_refresh_template

指定されたリフレッシュ・テンプレート名が無効か、または存在しません。

dupl_template_parm

指定されたデプロイメント・テンプレートには、同名のパラメータがすでに定義されています。

戻り値

表21-29 CREATE_TEMPLATE_PARMファンクションの戻り値

戻り値

説明

<システム生成番号>

Oracle内部で使用されるシステム生成番号です。

使用上の注意

CREATE_TEMPLATE_PARMファンクションではCLOBが利用されているため、CREATE_TEMPLATE_PARMファンクションを実行するときは、DBMS_LOBパッケージを使用する必要があります。次の例は、CREATE_TEMPLATE_PARMファンクションでDBMS_LOBパッケージを使用する方法を示します。

DECLARE
tempstring VARCHAR2(100);
templob CLOB;
a NUMBER;
BEGIN
DBMS_LOB.CREATETEMPORARY(templob, TRUE, DBMS_LOB.SESSION);
tempstring := 'REGION 20';
DBMS_LOB.WRITE(templob, length(tempstring), 1, tempstring);
a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_PARM(
refresh_template_name => 'rgt_personnel',
parameter_name => 'region',
default_parm_value => templob,
prompt_string => 'Enter your region ID:',
user_override => 'Y');
DBMS_LOB.FREETEMPORARY(templob);
END;
/

CREATE_USER_AUTHORIZATIONファンクション

このファンクションは、特定のユーザーに対して、プライベート・デプロイメント・テンプレートのインスタンス化を認証します。プライベート・デプロイメント・テンプレートの使用を認証されていないユーザーは、プライベート・テンプレートをインスタンス化できません。このファンクションは、DBA_REPCAT_USER_AUTHORIZATIONSビューに行を追加します。

ユーザーを認証する前に、デプロイメント・テンプレートをインスタンス化するマスター・サイトに、そのユーザーが存在するかどうかを確認します。このファンクションで戻される数値は、デプロイメント・テンプレートの管理用に、Oracle内部で使用します。

構文

DBMS_REPCAT_RGT.CREATE_USER_AUTHORIZATION (
user_name               IN   VARCHAR2,
refresh_template_name   IN   VARCHAR2)
RETURN NUMBER;

パラメータ

表21-30 CREATE_USER_AUTHORIZATIONファンクションのパラメータ

パラメータ

説明

user_name

指定されたテンプレートをインスタンス化することを認証されるユーザーの名前です。複数のユーザーを設定するときは、各ユーザー名をカンマで区切ります('john, mike, bob'など)。

refresh_template_name

指定されたユーザーにインスタンス化する許可を与えるテンプレートの名前です。

例外

表21-31 CREATE_USER_AUTHORIZATIONファンクションの例外

例外

説明

miss_user

指定されたユーザー名が無効か、または存在しません。

miss_refresh_template

指定されたリフレッシュ・テンプレート名が無効か、または存在しません。

dupl_user_authorization

指定されたユーザーおよびデプロイメント・テンプレートに対しては、すでに認証が作成されています。テンプレートの認証については、ALL_REPCAT_USER_AUTHORIZATIONSビューを確認してください。

戻り値

表21-32 CREATE_USER_AUTHORIZATIONファンクションの戻り値

戻り値

説明

<システム生成番号>

Oracle内部で使用されるシステム生成番号です。

CREATE_USER_PARM_VALUEファンクション

このファンクションは、特定のユーザーに対して、デプロイメント・テンプレートのパラメータ値を事前定義します。たとえば、ユーザー33456に対して、領域パラメータをwestに事前定義する場合、このファンクションを使用します。

このファンクションで指定された値は、テンプレート・パラメータに指定されたデフォルト値に優先します。このファンクションで戻される数値は、デプロイメント・テンプレートの管理用に、Oracle内部で使用します。

構文

DBMS_REPCAT_RGT.CREATE_USER_PARM_VALUE (
refresh_template_name    IN   VARCHAR2,
parameter_name           IN   VARCHAR2,
user_name                IN   VARCHAR2,
parm_value               IN   CLOB := NULL)
RETURN NUMBER;

パラメータ

表21-33 CREATE_USER_PARM_VALUEファンクションのパラメータ

パラメータ

説明

refresh_template_name

ユーザー・パラメータ値を作成するパラメータを含むデプロイメント・テンプレートの名前を指定します。

parameter_name

ユーザー・パラメータ値を定義するテンプレート・パラメータの名前です。

user_name

ユーザー・パラメータ値を事前定義する対象のユーザーの名前を指定します。

parm_value

指定されたユーザーが開始したインスタンス化処理で使用する、事前定義パラメータ値です。

例外

表21-34 CREATE_USER_PARM_VALUEファンクションの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

dupl_user_parm_values

指定されたユーザー、パラメータおよびデプロイメント・テンプレートのパラメータ値は、すでに定義されています。既存のユーザー・パラメータ値を確認するには、DBA_REPCAT_USER_PARM_VALUESビューの問合せを行います。

miss_template_parm

指定されたデプロイメント・テンプレート・パラメータ名が無効か、または存在しません。

miss_user

指定されたユーザー名が無効か、または存在しません。

戻り値

表21-35 CREATE_USER_PARM_VALUEファンクションの戻り値

戻り値

説明

<システム生成番号>

Oracle内部で使用されるシステム生成番号です。

使用上の注意

CREATE_USER_PARM_VALUEファンクションではCLOBが利用されているため、このファンクションを実行するときは、DBMS_LOBパッケージを使用する必要があります。次の例は、CREATE_USER_PARM_VALUEファンクションでDBMS_LOBパッケージを使用する方法を示します。

DECLARE
tempstring VARCHAR2(100);
templob CLOB;
a NUMBER;
BEGIN
DBMS_LOB.CREATETEMPORARY(templob, TRUE, DBMS_LOB.SESSION);
tempstring := 'REGION 20';
DBMS_LOB.WRITE(templob, length(tempstring), 1, tempstring);
a := DBMS_REPCAT_RGT.CREATE_USER_PARM_VALUE(
refresh_template_name => 'rgt_personnel',
parameter_name => 'region',
user_name => 'BOB',
user_parm_value => templob);
DBMS_LOB.FREETEMPORARY(templob);
END;
/

DELETE_RUNTIME_PARMSプロシージャ

INSERT_RUNTIME_PARMSプロシージャを使用して定義したランタイム・パラメータ値を削除するには、デプロイメント・テンプレートをインスタンス化する前に、このプロシージャを実行します。

構文

DBMS_REPCAT_RGT.DELETE_RUNTIME_PARMS(
runtime_parm_id    IN   NUMBER,
parameter_name     IN   VARCHAR2);

パラメータ

表21-36 DELETE_RUNTIME_PARMSプロシージャのパラメータ

パラメータ

説明

runtime_parm_id

以前にランタイム・パラメータ値を代入したIDを指定します。この値は、GET_RUNTIME_PARM_IDファンクションで取得済です。

parameter_name

削除対象のパラメータ値の名前を指定します。デプロイメント・テンプレート・パラメータを確認するには、DBA_REPCAT_TEMPLATE_PARMSビューの問合せを行います。

例外

表21-37 DELETE_RUNTIME_PARMSプロシージャの例外

例外

説明

miss_template_parm

指定されたデプロイメント・テンプレート・パラメータ名が無効か、または存在しません。

DROP_ALL_OBJECTSプロシージャ

このプロシージャを実行すると、データベース管理者が、すべてのオブジェクトまたは特定のオブジェクト型を、デプロイメント・テンプレートから削除できます。

注意:

このプロシージャを実行すると、元に戻せません。実行するときは十分注意してください。

構文

DBMS_REPCAT_RGT.DROP_ALL_OBJECTS (
refresh_template_name   IN   VARCHAR2,
object_type             IN   VARCHAR2 := NULL);

パラメータ

表21-38 DROP_ALL_OBJECTSプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のオブジェクトを持つデプロイメント・テンプレートの名前です。

object_type

値をNULLに設定すると、テンプレート内のすべてのオブジェクトが削除されます。オブジェクト型を指定すると、そのタイプのオブジェクトのみが削除されます。次のオブジェクト型を指定できます。

MATERIALIZED VIEW      PROCEDURE
INDEX                  FUNCTION
TABLE                  PACKAGE
VIEW                   PACKAGE BODY
SYNONYM                TRIGGER
SEQUENCE               DATABASE LINK

例外

表21-39 DROP_ALL_OBJECTSプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

bad_object_type

オブジェクト型が正しく指定されませんでした。有効なオブジェクト型は、表21-38を参照してください。

DROP_ALL_TEMPLATE_PARMSプロシージャ

このプロシージャを使用すると、指定されたデプロイメント・テンプレートのテンプレート・パラメータを削除できます。このプロシージャを使用して、テンプレート・オブジェクトが参照しないすべてのパラメータを削除するか、パラメータを参照するすべてのオブジェクトを、パラメータそのものとともにテンプレートから削除できます。

注意:

このプロシージャを実行すると、元に戻せません。実行するときは十分注意してください。

構文

DBMS_REPCAT_RGT.DROP_ALL_TEMPLATE_PARMS (
refresh_template_name   IN   VARCHAR2,
drop_objects            IN   VARCHAR2 := N);

パラメータ

表21-40 DROP_ALL_TEMPLATE_PARMSプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のパラメータおよびオブジェクトがあるデプロイメント・テンプレートの名前です。

drop_objects

値を指定しない場合のデフォルトはNになり、テンプレート・オブジェクトが参照しないすべてのパラメータが削除されます。

Yを指定した場合は、テンプレート・パラメータを参照するすべてのオブジェクト、およびテンプレート・パラメータそのものが削除されます。オブジェクトはデータベースからではなく、テンプレートから削除されます。

例外

表21-41 DROP_ALL_TEMPLATE_PARMSプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

DROP_ALL_TEMPLATE_SITESプロシージャ

このプロシージャは、特定のデプロイメント・テンプレートをインスタンス化したサイトの記録が保存されるDBA_REPCAT_TEMPLATE_SITESビューから、すべてのエントリを削除します。

注意:
このプロシージャを実行すると、元に戻せません。実行するときは十分注意してください。

構文

DBMS_REPCAT_RGT.DROP_ALL_TEMPLATE_SITES (
refresh_template_name   IN   VARCHAR2);

パラメータ

表21-42 DROP_ALL_TEMPLATE_SITESプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のサイトを持つデプロイメント・テンプレートの名前です。

例外

表21-43 DROP_ALL_TEMPLATE_SITESプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

DROP_ALL_TEMPLATESプロシージャ

このプロシージャは、プロシージャがコールされたサイトで、すべてのデプロイメント・テンプレートを削除します。

注意:

このプロシージャを実行すると、元に戻せません。実行するときは十分注意してください。

構文

DBMS_REPCAT_RGT.DROP_ALL_TEMPLATES;

パラメータ

なし

DROP_ALL_USER_AUTHORIZATIONSプロシージャ

このプロシージャを実行すると、データベース管理者が、指定されたデプロイメント・テンプレートに対して与えられたすべてのユーザー認証を削除できます。このプロシージャを実行すると、DBA_REPCAT_USER_AUTHORIZATIONSビューから行が削除されます。

このプロシージャは、プライベート・テンプレートがパブリック・テンプレートに変換され、ユーザー認証が必要なくなった後で実装されることもあります。

構文

DBMS_REPCAT_RGT.DROP_ALL_USER_AUTHORIZATIONS (
refresh_template_name   IN   VARCHAR2);

パラメータ

表21-44 DROP_ALL_USER_AUTHORIZATIONSプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のユーザー認証を含むデプロイメント・テンプレートの名前です。

例外

表21-45 DROP_ALL_USER_AUTHORIZATIONSプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

DROP_ALL_USER_PARM_VALUESプロシージャ

このプロシージャは、指定されたデプロイメント・テンプレートのユーザー・パラメータ値を削除します。このプロシージャを使用すると、削除対象のユーザー・パラメータ値のセットを簡単に定義できます。

次の表に、定義するパラメータとその結果を示します。

パラメータ

パラメータを定義した結果

refresh_template_name

指定されたデプロイメント・テンプレートの、すべてのユーザー・パラメータが削除されます。

refresh_template_nameおよびuser_name

指定されたデプロイメント・テンプレートの、すべての指定されたユーザー・パラメータが削除されます。

refresh_template_nameおよびparameter_name

指定されたデプロイメント・テンプレート・パラメータの、すべてのユーザー・パラメータ値が削除されます。

refresh_template_name、parameter_nameおよびuser_name

指定されたデプロイメント・テンプレート・パラメータの、指定されたユーザーの値が削除されます(drop_user_parmの処理に相当します)。

構文

DBMS_REPCAT_RGT.DROP_ALL_USER_PARM_VALUES (
refresh_template_name   IN   VARCHAR2,
user_name               IN   VARCHAR2,
parameter_name          IN   VARCHAR2);

パラメータ

表21-46 DROP_ALL_USER_PARM_VALUESプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のパラメータ値を持つデプロイメント・テンプレートの名前です。

user_name

パラメータ値が削除されるユーザーの名前です。

parameter_name

削除対象の値を持つテンプレート・パラメータです。

例外

表21-47 DROP_ALL_USER_PARM_VALUESプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_user

指定されたユーザー名が無効か、または存在しません。

miss_user_parm_values

デプロイメント・テンプレート、ユーザーおよびパラメータの組合せは、DBA_REPCAT_USER_PARM_VALUESビューに存在しません。

DROP_REFRESH_TEMPLATEプロシージャ

このプロシージャは、デプロイメント・テンプレートを削除します。このプロシージャでデプロイメント・テンプレートを削除すると、すべての関連するテンプレート・パラメータ、ユーザー認証、テンプレート・オブジェクトおよびユーザー・パラメータも削除されます(ただし、テンプレート・サイトは削除されません)。

構文

DBMS_REPCAT_RGT.DROP_REFRESH_TEMPLATE (
refresh_template_name  IN   VARCHAR2);

パラメータ

表21-48 DROP_REFRESH_TEMPLATEプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のデプロイメント・テンプレートの名前です。

例外

表21-49 DROP_REFRESH_TEMPLATEプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。デプロイメント・テンプレートを確認するには、DBA_REPCAT_REFRESH_TEMPLATESビューの問合せを行います。

DROP_SITE_INSTANTIATIONプロシージャ

このプロシージャは、ターゲット・サイトでテンプレートのインスタンス化を削除します。このプロシージャは、マスター・サイトで関連するすべてのメタデータを削除し、指定されたサイトでのマテリアライズド・ビューのリフレッシュを使用禁止にします。

構文

DBMS_REPCAT_RGT.DROP_SITE_INSTANTIATION (
refresh_template_name  IN   VARCHAR2,
user_name              IN   VARCHAR2,
site_name              IN   VARCHAR2);

パラメータ

表21-50 DROP_SITE_INSTANTIATIONプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のサイトを含むテンプレートの名前です。

user_name

リモート・マテリアライズド・ビュー・サイトでテンプレートを最初にインスタンス化したユーザーの名前です。テンプレートをインスタンス化したユーザーを確認するには、ALL_REPCAT_TEMPLATE_SITESビューの問合せを行います。詳細は、「ALL_REPCAT_TEMPLATE_SITESビュー」を参照してください。

site_name

削除対象のテンプレート・サイトです。

例外

表21-51 DROP_SITE_INSTANTIATIONプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_user

指定されたユーザー名は存在しません。

miss_template_site

ユーザーおよびサイト用に、デプロイメント・テンプレートがインスタンス化されていません。

DROP_TEMPLATE_OBJECTプロシージャ

このプロシージャは、指定されたデプロイメント・テンプレートからテンプレート・オブジェクトを削除します。たとえば、データベース管理者が古いマテリアライズド・ビューをデプロイメント・テンプレートから削除するときに、このプロシージャを使用できます。デプロイメント・テンプレートに加えられた変更は、デプロイメント・テンプレートをインスタンス化する新しいサイトに反映されます。テンプレートをすでにインスタンス化したリモート・サイトで変更を適用するには、デプロイメント・テンプレートを再びインスタンス化する必要があります。

構文

DBMS_REPCAT_RGT.DROP_TEMPLATE_OBJECT (
refresh_template_name  IN   VARCHAR2,
object_name            IN   VARCHAR2,
object_type            IN   VARCHAR2);

パラメータ

表21-52 CREATE_TEMPLATE_OBJECTプロシージャのパラメータ

パラメータ

説明

refresh_template_name

オブジェクトが削除されるデプロイメント・テンプレートの名前です。

object_name

削除対象のテンプレート・オブジェクトの名前です。

object_type

削除対象のオブジェクトのタイプです。次のオブジェクト型を指定できます。

MATERIALIZED VIEW       PROCEDURE
INDEX                   FUNCTION
TABLE                   PACKAGE
VIEW                    PACKAGE BODY
SYNONYM                 TRIGGER
SEQUENCE                DATABASE LINK

例外

表21-53 DROP_TEMPLATE_OBJECTプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_template_object

指定されたテンプレート・オブジェクトが無効か、または存在しません。デプロイメント・テンプレート・オブジェクトを確認するには、DBA_REPCAT_TEMPLATE_OBJECTSビューの問合せを行います。

DROP_TEMPLATE_PARMプロシージャ

このプロシージャは、DBA_REPCAT_TEMPLATE_PARMSビューから既存のテンプレート・パラメータを削除します。テンプレート・オブジェクトを削除して、特定のパラメータが不要になった場合、このプロシージャを使用すると便利です。

構文

DBMS_REPCAT_RGT.DROP_TEMPLATE_PARM (
refresh_template_name  IN   VARCHAR2,
parameter_name         IN   VARCHAR2);

パラメータ

表21-54 DROP_TEMPLATE_PARMプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のパラメータを持つデプロイメント・テンプレート名です。

parameter_name

削除対象のパラメータの名前です。

例外

表21-55 DROP_TEMPLATE_PARMプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_template_parm

指定されたパラメータ名が無効か、または存在しません。テンプレート・パラメータを確認するには、DBA_REPCAT_TEMPLATE_PARMSビューの問合せを行います。

DROP_USER_AUTHORIZATIONプロシージャ

このプロシージャは、DBA_REPCAT_USER_AUTHORIZATIONSビューからユーザー認証エントリを削除します。ユーザーのテンプレート認証を削除するときに、このプロシージャを使用します。認証が削除されたユーザーは、ターゲット・デプロイメント・テンプレートをインスタンス化できなくなります。

関連項目:
「DROP_ALL_USER_AUTHORIZATIONSプロシージャ」

構文

DBMS_REPCAT_RGT.DROP_USER_AUTHORIZATION (
refresh_template_name   IN   VARCHAR2,
user_name               IN   VARCHAR2);

パラメータ

表21-56 DROP_USER_AUTHORIZATIONプロシージャのパラメータ

パラメータ

説明

refresh_template_name

ユーザー認証が削除されるデプロイメント・テンプレートの名前です。

user_name

認証が削除されるユーザーの名前です。

例外

表21-57 DROP_USER_AUTHORIZATIONプロシージャの例外

例外

説明

miss_user

指定されたユーザー名が無効か、または存在しません。

miss_user_authorization

指定されたユーザーとデプロイメント・テンプレートの組合せは存在しません。ユーザーやデプロイメント・テンプレートに対する認証を確認するには、DBA_REPCAT_USER_AUTHORIZATIONSビューの問合せを行います。

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

DROP_USER_PARM_VALUEプロシージャ

このプロシージャは、特定のデプロイメント・テンプレートに対して事前定義されたユーザー・パラメータ値を削除します。このプロシージャは、ユーザーのテンプレート認可が削除された後で実行されることがよくあります。

構文

DBMS_REPCAT_RGT.DROP_USER_PARM_VALUE (
refresh_template_name    IN   VARCHAR2,
parameter_name           IN   VARCHAR2,
user_name                IN   VARCHAR2);

パラメータ

表21-58 DROP_USER_PARM_VALUEプロシージャのパラメータ

パラメータ

説明

refresh_template_name

削除対象のパラメータ値を持つデプロイメント・テンプレート名です。

parameter_name

削除対象の事前定義値を持つパラメータの名前です。

user_name

パラメータ値が削除されるユーザーの名前です。

例外

表21-59 DROP_USER_PARM_VALUEプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_user

指定されたユーザー名が無効か、または存在しません。

miss_user_parm_values

デプロイメント・テンプレート、ユーザーおよびパラメータの組合せは、DBA_REPCAT_USER_PARM_VALUESビューに存在しません。

GET_RUNTIME_PARM_IDファンクション

このファンクションは、ランタイム・パラメータ値を定義する際に使用するIDを取得します。すべてのランタイム・パラメータ値はこのIDに割り当てられ、インスタンス化処理にも使用されます。

構文

DBMS_REPCAT_RGT.GET_RUNTIME_PARM_ID
RETURN NUMBER;

パラメータ

なし

戻り値

表21-60 GET_RUNTIME_PARM_IDファンクションの戻り値

戻り値

対応するデータ型

<システム生成番号>

ランタイム・パラメータ値はシステム生成番号に割り当てられ、インスタンス化処理でも使用されます。

INSERT_RUNTIME_PARMSプロシージャ

このプロシージャは、テンプレートのインスタンス化の前に、ランタイム・パラメータ値を定義します。ユーザー・パラメータ値が定義されていない場合で、デフォルトのパラメータ値を使用しないとき、このプロシージャでパラメータ値を定義します。

このプロシージャを使用する前に、必ずGET_RUNTIME_PARM_IDファンクションを実行して、ランタイム・パラメータを挿入する際に使用するパラメータIDを取得します。このIDは、ランタイム・パラメータ値の定義およびデプロイメント・テンプレートのインスタンス化に使用します。

構文

DBMS_REPCAT_RGT.INSERT_RUNTIME_PARMS (
runtime_parm_id    IN   NUMBER,
parameter_name     IN   VARCHAR2,
parameter_value    IN   CLOB);

パラメータ

表21-61 INSERT_RUNTIME_PARMSプロシージャのパラメータ

パラメータ

説明

runtime_parm_id

GET_RUNTIME_PARM_IDファンクションで取得したIDです。このIDは、デプロイメント・テンプレートをインスタンス化する際にも使用します。1つのデプロイメント・テンプレートのすべてのパラメータ値には、必ず同じIDを使用してください。

parameter_name

ランタイム・パラメータ値を定義するテンプレート・パラメータの名前です。テンプレート・パラメータを確認するには、DBA_REPCAT_TEMPLATE_PARMSビューの問合せを行います。

parameter_value

デプロイメント・テンプレートのインスタンス化処理で使用する、ランタイム・パラメータ値です。

例外

表21-62 INSERT_RUNTIME_PARMSプロシージャの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_user

指定されたユーザー名が無効か、または存在しません。

miss_user_parm_values

デプロイメント・テンプレート、ユーザーおよびパラメータの組合せは、DBA_REPCAT_USER_PARM_VALUESビューに存在しません。

使用上の注意

このプロシージャではCLOBが利用されているため、INSERT_RUNTIME_PARMSプロシージャを実行するときは、DBMS_LOBパッケージを使用する必要があります。次の例は、INSERT_RUNTIME_PARMSプロシージャでDBMS_LOBパッケージを使用する方法を示します。

DECLARE
tempstring VARCHAR2(100);
templob CLOB;
BEGIN
DBMS_LOB.CREATETEMPORARY(templob, TRUE, DBMS_LOB.SESSION);
tempstring := 'REGION 20';
DBMS_LOB.WRITE(templob, length(tempstring), 1, tempstring);
DBMS_REPCAT_RGT.INSERT_RUNTIME_PARMS(
runtime_parm_id => 20,
parameter_name => 'region',
parameter_value => templob);
DBMS_LOB.FREETEMPORARY(templob);
END;
/

INSTANTIATE_OFFLINEファンクション

このファンクションは、マテリアライズド・ビュー・サイトがマスターから切断されているときに(つまりマテリアライズド・ビュー・サイトがオフラインのときに)、リモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー環境を構築する際に使用するスクリプトを、マスター・サイトに生成します。生成されたスクリプトは、マスター・サイトに長時間接続できないリモート・マテリアライズド・ビュー・サイトで使用します。新しいマテリアライズド・ビューに設定されるデータの量によっては、リモート・マテリアライズド・ビュー・サイトでのインスタンス化処理に時間がかかる場合があります。このファンクションは、各ユーザーのインスタンス化に対して個別に実行する必要があります。

このファンクションで生成されたスクリプトは、USER_REPCAT_TEMP_OUTPUT一時ビューに格納され、デプロイメント・テンプレートの配布時に、Oracle Enterprise ManagerのAdvanced ReplicationインタフェースなどのOracleツール製品で使用します。このファンクションで戻される数値は、USER_REPCAT_TEMP_OUTPUT一時ビューから適切な情報を取り出す際に使用します。

注意:
このファンクションは、デプロイメント・テンプレートのオフライン・インスタンシエーションに使用します。また、このファンクションは、他のユーザーのためにインスタンス化を行うレプリケーション管理者が使用します。独自のインスタンス化を行うユーザーは、パブリックのINSTANTIATE_OFFLINEファンクションを使用します。詳細は、「INSTANTIATE_OFFLINEファンクション」を参照してください。
このファンクションを、DBMS_OFFLINE_OGパッケージのプロシージャ(マスター表のオフライン・インスタンシエーションの実行に使用)と混同しないでください。これらのプロシージャの使用方法の詳細は、このパッケージのドキュメントを参照してください。

構文

DBMS_REPCAT_RGT.INSTANTIATE_OFFLINE(
refresh_template_name   IN   VARCHAR2,
site_name               IN   VARCHAR2,
user_name               IN   VARCHAR2  := NULL,
runtime_parm_id         IN   NUMBER    := -1e-130,
next_date               IN   DATE      := SYSDATE,
interval                IN   VARCHAR2  := 'SYSDATE + 1',
use_default_gowner      IN   BOOLEAN   := TRUE)
RETURN NUMBER;

パラメータ

表21-63 INSTANTIATE_OFFLINEファンクションのパラメータ

パラメータ

説明

refresh_template_name

インスタンス化されるデプロイメント・テンプレートの名前です。

site_name

デプロイメント・テンプレートをインスタンス化している、リモート・サイトの名前です。

user_name

デプロイメント・テンプレートをインスタンス化中の認証ユーザーの名前です。

runtime_parm_id

INSERT_RUNTIME_PARMSプロシージャを使用してランタイム・パラメータ値を定義した場合は、ランタイム・パラメータの作成時に使用したIDを指定します(IDは、GET_RUNTIME_PARM_IDファンクションで取得済です)。

next_date

リフレッシュ・グループの作成時に使用する、次のリフレッシュ日の値を指定します。

interval

リフレッシュ・グループの作成時に使用する、リフレッシュ間隔を指定します。

use_default_gowner

値がTRUEの場合、作成されたマテリアライズド・ビュー・グループはデフォルトのユーザーPUBLICが所有します。値がFALSEの場合、作成されたマテリアライズド・ビュー・グループはインスタンス化を実行するユーザーが所有します。

例外

表21-64 INSTANTIATE_OFFLINEファンクションの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_user

認証ユーザーの名前が無効か、または存在しません。指定されたユーザーがDBA_REPCAT_USER_AUTHORIZATIONSビューにリストされているかどうかを確認してください。このビューにリストされていないユーザーは、ターゲット・デプロイメント・テンプレートのインスタンス化を認証されていません。

戻り値

表21-65 INSTANTIATE_OFFLINEファンクションの戻り値

戻り値

説明

<システム生成番号>

USER_REPCAT_TEMP_OUTPUT一時ビューから選択して、生成されたインスタンス化スクリプトを取得するときの、output_idに対するシステム生成番号を示します。

INSTANTIATE_ONLINEファンクション

このファンクションは、マテリアライズド・ビュー・サイトがマスターに接続されているときに(つまりマテリアライズド・ビュー・サイトがオンラインのときに)、リモート・マテリアライズド・ビュー・サイトにマテリアライズド・ビュー環境を構築する際に使用するスクリプトを、マスター・サイトに生成します。生成されたスクリプトは、マスター・サイトに長時間接続できるリモート・マテリアライズド・ビュー・サイトで使用します。新しいマテリアライズド・ビューに設定されるデータの量によっては、リモート・マテリアライズド・ビュー・サイトでのインスタンス化処理に時間がかかります。このファンクションは、各ユーザーのインスタンス化に対して個別に実行する必要があります。

このファンクションで生成されたスクリプトは、USER_REPCAT_TEMP_OUTPUT一時ビューに格納され、デプロイメント・テンプレートの配布時に、Oracle Enterprise ManagerのAdvanced ReplicationインタフェースなどのOracleツール製品で使用します。このファンクションで戻される数値は、USER_REPCAT_TEMP_OUTPUT一時ビューから適切な情報を取り出す際に使用します。

注意:
このファンクションは、他のユーザーのためにインスタンス化を行うレプリケーション管理者が使用します。独自のインスタンス化を行うユーザーは、「INSTANTIATE_OFFLINEファンクション」で説明した、パブリックのINSTANTIATE_OFFLINEファンクションを使用します。

構文

DBMS_REPCAT_RGT.INSTANTIATE_ONLINE(
refresh_template_name   IN   VARCHAR2,
site_name               IN   VARCHAR2  := NULL,
user_name               IN   VARCHAR2  := NULL,
runtime_parm_id         IN   NUMBER    := -1e-130,
next_date               IN   DATE      := SYSDATE,
interval                IN   VARCHAR2  := 'SYSDATE + 1',
use_default_gowner      IN   BOOLEAN   := TRUE)
RETURN NUMBER;

パラメータ

表21-66 INSTANTIATE_ONLINEファンクションのパラメータ

パラメータ

説明

refresh_template_name

インスタンス化されるデプロイメント・テンプレートの名前です。

site_name

デプロイメント・テンプレートをインスタンス化している、リモート・サイトの名前です。

user_name

デプロイメント・テンプレートをインスタンス化中の認証ユーザーの名前です。

runtime_parm_id

INSERT_RUNTIME_PARMSプロシージャを使用してランタイム・パラメータ値を定義した場合は、ランタイム・パラメータの作成時に使用したIDを指定します(IDは、GET_RUNTIME_PARM_IDファンクションで取得済です)。

next_date

リフレッシュ・グループの作成時に使用する、次のリフレッシュ日の値を指定します。

interval

リフレッシュ・グループの作成時に使用する、リフレッシュ間隔を指定します。

use_default_gowner

値がTRUEの場合、作成されたマテリアライズド・ビュー・グループはデフォルトのユーザーPUBLICが所有します。値がFALSEの場合、作成されたマテリアライズド・ビュー・グループはインスタンス化を実行するユーザーが所有します。

例外

表21-67 INSTANTIATE_ONLINEファンクションの例外

例外

説明

miss_refresh_template

指定されたデプロイメント・テンプレート名が無効か、または存在しません。

miss_user

認証ユーザーの名前が無効か、または存在しません。指定されたユーザーがDBA_REPCAT_USER_AUTHORIZATIONSビューにリストされているかどうかを確認してください。このビューにリストされていないユーザーは、ターゲット・デプロイメント・テンプレートのインスタンス化を認証されていません。

bad_parms

一部のテンプレート・パラメータが、定義されたユーザー・パラメータ値またはテンプレートのデフォルト値(あるいはその両方)で設定されませんでした。事前定義された値の数がテンプレート・パラメータの数と一致しなかったか、または事前定義された値がターゲット・パラメータでは無効(タイプの不一致)でした。

戻り値

表21-68 INSTANTIATE_ONLINEファンクションの戻り値

戻り値

説明

<システム生成番号>

USER_REPCAT_TEMP_OUTPUT一時ビューから選択して、生成されたインスタンス化スクリプトを取得するときの、output_idに対するシステム生成番号を示します。

LOCK_TEMPLATE_EXCLUSIVEプロシージャ

LOCK_TEMPLATE_EXCLUSIVEプロシージャを使用して、デプロイメント・テンプレートの更新または変更が行われている間は、テンプレートの読取りやインスタンス化ができないようにします。

ROLLBACKまたはCOMMITが実行されると、ロックが解除されます。

注意:
デプロイメント・テンプレートに変更を加える前に、このプロシージャを実行する必要があります。

構文

DBMS_REPCAT_RGT.LOCK_TEMPLATE_EXCLUSIVE();

パラメータ

なし

LOCK_TEMPLATE_SHAREDプロシージャ

LOCK_TEMPLATE_SHAREDプロシージャは、指定したデプロイメント・テンプレートを「読取り専用」にする際に使用します。このプロシージャは、テンプレートをインスタンス化する前にコールする必要があります。これは、デプロイメント・テンプレートがインスタンス化されている間はこのテンプレートを変更できないようにするためです。

ROLLBACKまたはCOMMITが実行されると、ロックが解除されます。

構文

DBMS_REPCAT_RGT.LOCK_TEMPLATE_SHARED();

パラメータ

なし

22 DBMS_REPUTIL

DBMS_REPUTILには、表レプリケーション用のシャドウ表、トリガーおよびパッケージを生成するサブプログラムや、スタンドアロン・プロシージャの起動およびパッケージ化されたプロシージャの起動をレプリケートするラッパーを生成するためのサブプログラムが含まれています。このパッケージを参照するのは、生成されたコードのみです。

この章には、次の項が含まれます。

- DBMS_REPUTILサブプログラムの概要

DBMS_REPUTILサブプログラムの概要

表22-1 DBMS_REPUTILパッケージのサブプログラム

サブプログラム

説明

「REPLICATION_OFFプロシージャ」

レプリケーション環境内の他のサイトに変更内容をレプリケートせずに表を変更するか、またはプロシージャ・レプリケーションを使用する際に行レベル・レプリケーションを使用禁止にします。

「REPLICATION_ONプロシージャ」

レプリケーションが一時的に中断された後で、変更内容のレプリケーションを再び有効にします。

「REPLICATION_IS_ONファンクション」

レプリケーションが実行されているかどうかを判定します。

FROM_REMOTEファンクション

内部レプリケーション・パッケージ内のプロシージャの開始でTRUEを、これらのプロシージャの終了でFALSEを戻します。

「GLOBAL_NAMEファンクション」

ローカル・データベースのグローバル・データベース名を確認します(戻り値がグローバル名です)。

「MAKE_INTERNAL_PKGプロシージャ」

内部パッケージとレプリケーション・カタログ内の表を同期させます。

注意: Oracleサポート・サービスから指示された場合を除き、このプロシージャを実行しないでください。

「SYNC_UP_REPプロシージャ」

内部トリガーとレプリケーション・カタログ内の表またはマテリアライズド・ビューを同期させます。

注意: Oracleサポート・サービスから指示された場合を除き、このプロシージャを実行しないでください。

REPLICATION_OFFプロシージャ

このプロシージャでは、レプリケーション環境内の他のサイトに対する変更をレプリケートせずに表を変更できます。またプロシージャ・レプリケーションを使用する際、行レベルのレプリケーションを使用禁止にします。通常は、このフラグを設定する前に、レプリケーション環境内のすべてのマスター・グループに対するレプリケーション・アクティビティを停止します。

構文

DBMS_REPUTIL.REPLICATION_OFF();

パラメータ

なし

REPLICATION_ONプロシージャ

このプロシージャは、レプリケーションが一時的に中断された後で、変更内容のレプリケーションを再び有効にします。

構文

DBMS_REPUTIL.REPLICATION_ON();

パラメータ

なし

REPLICATION_IS_ONファンクション

このファンクションは、レプリケーションが実行されているかどうかを判定します。戻り値がTRUEの場合は、生成されたレプリケーション・トリガーが有効になっています。FALSEの場合は、レプリケーション・グループのカレント・サイトで、レプリケーションが使用禁止になっています。

このファンクションの戻り値は、DBMS_REPUTILパッケージのREPLICATION_ONプロシージャまたはREPLICATION_OFFプロシージャのコールで設定されます。

構文

DBMS_REPUTIL.REPLICATION_IS_ON()
return BOOLEAN;

パラメータ

なし

FROM_REMOTEファンクション

このファンクションは、内部レプリケーション・パッケージ内のプロシージャの開始でTRUEを、これらのプロシージャの終了でFALSEを戻します。内部パッケージによる更新の結果として発生するトリガーがある場合は、このファンクションをチェックする必要があります。

構文

DBMS_REPUTIL.FROM_REMOTE()
return BOOLEAN;

パラメータ

なし

GLOBAL_NAMEファンクション

このファンクションは、ローカル・データベースのグローバル・データベース名を判定します(戻り値がグローバル名です)。

構文

DBMS_REPUTIL.GLOBAL_NAME()
return VARCHAR2;

パラメータ

なし

MAKE_INTERNAL_PKGプロシージャ

このプロシージャは、内部パッケージの有無を、レプリケーション・カタログ内の表またはマテリアライズド・ビューと同期させます。表にレプリケーション・サポートがある場合は、このプロシージャを実行して内部パッケージを作成します。レプリケーション・サポートがない場合、このプロシージャは関連する内部パッケージを破棄します。このプロシージャは、ネストした表の記憶表は受け付けません。

注意:
Oracleサポート・サービスから指示された場合を除き、このプロシージャを実行しないでください。

構文

DBMS_REPUTIL.MAKE_INTERNAL_PKG (
canon_sname    IN   VARCHAR2,
canon_oname    IN   VARCHAR2);

パラメータ

表22-2 MAKE_INTERNAL_PKGプロシージャのパラメータ

パラメータ

説明

canon_sname

同期する表が含まれるスキーマです。

このパラメータ値は、正確に定義する必要があります。オブジェクトと同じ大文字と小文字の区別を使用し、二重引用符では囲みません。

canon_oname

同期する表の名前です。

このパラメータ値は、正確に定義する必要があります。オブジェクトと同じ大文字と小文字の区別を使用し、二重引用符では囲みません。

SYNC_UP_REPプロシージャ

このプロシージャは、内部トリガーの有無を、レプリケーション・カタログ内の表またはマテリアライズド・ビューと同期させます。表またはマテリアライズド・ビューにレプリケーション・サポートがある場合は、このプロシージャを実行して内部レプリケーション・トリガーを作成します。レプリケーション・サポートがない場合、このプロシージャは関連する内部トリガーを破棄します。このプロシージャは、ネストした表の記憶表は受け付けません。

注意:
Oracleサポート・サービスから指示された場合を除き、このプロシージャを実行しないでください。

構文

DBMS_REPUTIL.SYNC_UP_REP (
canon_sname    IN   VARCHAR2,
canon_oname    IN   VARCHAR2);

パラメータ

表22-3 SYNC_UP_REPプロシージャのパラメータ

パラメータ

説明

canon_sname

同期する表またはマテリアライズド・ビューが含まれるスキーマです。

このパラメータ値は、正確に定義する必要があります。オブジェクトと同じ大文字と小文字の区別を使用し、二重引用符では囲みません。

canon_oname

同期する表またはマテリアライズド・ビューの名前です。

このパラメータ値は、正確に定義する必要があります。オブジェクトと同じ大文字と小文字の区別を使用し、二重引用符では囲みません。

第IV部

レプリケーション・データ・ディクショナリ・リファレンス

第IV部では、レプリケーション環境の情報を提供するデータ・ディクショナリ・ビューについて説明します。

第IV部は次の章で構成されています。

- 第23章「レプリケーション・カタログ・ビュー」

- 第24章「レプリケーション動的パフォーマンス・ビュー」

- 第25章「マテリアライズド・ビューとリフレッシュ・グループ・ビュー」

- 第26章「遅延トランザクション・ビュー」

23 レプリケーション・カタログ・ビュー

レプリケーション機能をサイトにインストールすると、同じサイトにレプリケーション・カタログが自動的にインストールされます。このレプリケーション・カタログには、表とビューが含まれています。

この章には、次の項が含まれます。

- レプリケーション・カタログ・ビューの概要

注意:
レプリケーション・カタログの表は直接変更しないでください。変更が必要な場合は、DBMS_REPCATパッケージに用意されているプロシージャを使用してください。

関連項目:
第10章「レプリケーション環境の監視」

レプリケーション・カタログ・ビューの概要

多くのデータ・ディクショナリ表には、対応するビューが3種類あります。

- ALL_ビューには、カレント・ユーザーのスキーマの情報など、カレント・ユーザーからアクセス可能な情報がすべて表示されます。ユーザーが他のスキーマのオブジェクトにアクセスする権限またはロールを付与されている場合には、それらのオブジェクトの情報も表示されます。

- DBA_ビューには、データベース全体の関連情報がすべて表示されます。DBA_ビューは、管理者のみを対象としています。このビューには、SELECT ANY TABLE権限を持つユーザーのみがアクセスできます。この権限は、Oracleの初期インストール時にデータベース管理者(DBA)のロールに割り当てられます。

- USER_ビューには、カレント・ユーザーのスキーマの情報がすべて表示されます。これらのビューの問合せを行うために特別な権限は必要ありません。

1つのデータ・ディクショナリ表に対応するALL_、DBA_およびUSER_ビューの列は、通常ほぼ同一です。このため、詳細は、ALL_ビューの項でまとめて説明します。DBA_ビューとUSER_ビューの詳細は説明しませんが、相違点は示しています。

図23-1に示すように、レプリケーション・カタログ・ビューは、レプリケートされるオブジェクトのタイプ、レプリケート先、レプリケーションの実行中にエラーが発生していないかどうかなどを判定するためにマスター・サイトやマテリアライズド・ビュー・サイトで使用されます。表23-1には、すべてのレプリケーション・カタログ・ビューを示します。

図23-1 レプリケーション・カタログ・ビューとレプリケート・オブジェクト

表23-1 レプリケーション・カタログ・ビュー

ALL_ビュー

DBA_ビュー

USER_ビュー

なし

DBA_REGISTERED_MVIEW_GROUPS

なし

ALL_REPCAT_REFRESH_TEMPLATES

DBA_REPCAT_REFRESH_TEMPLATES

USER_REPCAT_REFRESH_TEMPLATES

ALL_REPCAT_TEMPLATE_OBJECTS

DBA_REPCAT_TEMPLATE_OBJECTS

USER_REPCAT_TEMPLATE_OBJECTS

ALL_REPCAT_TEMPLATE_PARMS

DBA_REPCAT_TEMPLATE_PARMS

USER_REPCAT_TEMPLATE_PARMS

ALL_REPCAT_TEMPLATE_SITES

DBA_REPCAT_TEMPLATE_SITES

USER_REPCAT_TEMPLATE_SITES

ALL_REPCAT_USER_AUTHORIZATIONS

DBA_REPCAT_USER_AUTHORIZATIONS

USER_REPCAT_USER_AUTHORIZATION

ALL_REPCAT_USER_PARM_VALUES

DBA_REPCAT_USER_PARM_VALUES

USER_REPCAT_USER_PARM_VALUES

ALL_REPCATLOG

DBA_REPCATLOG

USER_REPCATLOG

ALL_REPCOLUMN

DBA_REPCOLUMN

USER_REPCOLUMN

ALL_REPCOLUMN_GROUP

DBA_REPCOLUMN_GROUP

USER_REPCOLUMN_GROUP

ALL_REPCONFLICT

DBA_REPCONFLICT

USER_REPCONFLICT

ALL_REPDDL

DBA_REPDDL

USER_REPDDL

なし

DBA_REPEXTENSIONS

なし

ALL_REPGENOBJECTS

DBA_REPGENOBJECTS

USER_REPGENOBJECTS

ALL_REPGROUP

DBA_REPGROUP

USER_REPGROUP

ALL_REPGROUP_PRIVILEGES

DBA_REPGROUP_PRIVILEGES

USER_REPGROUP_PRIVILEGES

ALL_REPGROUPED_COLUMN

DBA_REPGROUPED_COLUMN

USER_REPGROUPED_COLUMN

ALL_REPKEY_COLUMNS

DBA_REPKEY_COLUMNS

USER_REPKEY_COLUMNS

ALL_REPOBJECT

DBA_REPOBJECT

USER_REPOBJECT

ALL_REPPARAMETER_COLUMN

DBA_REPPARAMETER_COLUMN

USER_REPPARAMETER_COLUMN

ALL_REPPRIORITY

DBA_REPPRIORITY

USER_REPPRIORITY

ALL_REPPRIORITY_GROUP

DBA_REPPRIORITY_GROUP

USER_REPPRIORITY_GROUP

ALL_REPPROP

DBA_REPPROP

USER_REPPROP

ALL_REPRESOL_STATS_CONTROL

DBA_REPRESOL_STATS_CONTROL

USER_REPRESOL_STATS_CONTROL

ALL_REPRESOLUTION

DBA_REPRESOLUTION

USER_REPRESOLUTION

ALL_REPRESOLUTION_METHOD

DBA_REPRESOLUTION_METHOD

USER_REPRESOLUTION_METHOD

ALL_REPRESOLUTION_STATISTICS

DBA_REPRESOLUTION_STATISTICS

USER_REPRESOLUTION_STATISTICS

ALL_REPSITES

DBA_REPSITES

USER_REPSITES

なし

DBA_REPSITES_NEW

なし

DBA_REGISTERED_MVIEW_GROUPS

DBA_REGISTERED_MVIEW_GROUPSには、マスター・サイトまたはマテリアライズド・ビュー・サイトのすべての登録済マテリアライズド・ビュー・グループがリストされます。

列

データ型

NULL

説明

NAME

VARCHAR2(30)

-

マテリアライズド・ビューのレプリケーション・グループの名前。

MVIEW_SITE

VARCHAR2(128)

-

マテリアライズド・ビューのレプリケーション・グループのサイト。

GROUP_COMMENT

VARCHAR2(80)

-

マテリアライズド・ビューのレプリケーション・グループの説明。

VERSION

VARCHAR2(8)

-

マテリアライズド・ビューのレプリケーション・グループのOracleバージョン。
注意: Oracle9i データベース以上のマテリアライズド・ビュー・グループにはOracle8と表示されます。

FNAME

VARCHAR2(30)

-

マテリアライズド・ビュー・グループの固有の名前。

OWNER

VARCHAR2(30)

-

マテリアライズド・ビューのレプリケーション・グループの所有者。

ALL_REPCAT_REFRESH_TEMPLATES

カレント・ユーザーからアクセス可能な、各デプロイメント・テンプレートに関するグローバル情報が示されます。テンプレート名、テンプレートの所有者、テンプレート・オブジェクトが属するリフレッシュ・グループ、テンプレートの種類(プライベートまたはパブリック)などの情報があります。

DBAは、テンプレートのコンテナにマテリアライズド・ビュー定義を追加するときに、該当するREFRESH_TEMPLATE_NAMEを参照します。特定のテンプレートに追加されたマテリアライズド・ビューは、REFRESH_GROUP_NAMEで指定されたリフレッシュ・グループに追加されます。

パブリックとして作成されたデプロイメント・テンプレートは、マスター・サイトへの接続を許可されているユーザーであれば、どのユーザーも使用できます。一方、プライベートとして作成されたデプロイメント・テンプレートは、ALL_REPCAT_USER_AUTHORIZATIONSビューにリストされるユーザーのみが使用できます。

関連するビュー:

- DBA_REPCAT_REFRESH_TEMPLATESには、データベース内のすべてのデプロイメント・テンプレートが示されます。

- USER_REPCAT_REFRESH_TEMPLATESには、カレント・ユーザーが所有しているすべてのデプロイメント・テンプレートが示されます。

列

データ型

NULL

説明

REFRESH_TEMPLATE_NAME

VARCHAR2(30)

-

デプロイメント・テンプレートの名前。

OWNER

VARCHAR2(30)

-

デプロイメント・テンプレートの所有者。

REFRESH_GROUP_NAME

VARCHAR2(30)

-

インスタンス化処理中にテンプレート・オブジェクトが追加されるリフレッシュ・グループの名前。

TEMPLATE_COMMENT

VARCHAR2(2000)

-

ユーザーが入力するコメント。

PUBLIC_TEMPLATE

VARCHAR2(1)

-

Yの場合、デプロイメント・テンプレートはパブリックです。
Nの場合、デプロイメント・テンプレートはプライベートです。

ALL_REPCAT_TEMPLATE_OBJECTS

カレント・ユーザーからアクセス可能な、各デプロイメント・テンプレートの各オブジェクト定義が示されます。REFRESH_TEMPLATE_NAMEにターゲット・テンプレートを指定すると、各オブジェクトがテンプレートに追加されます。

DDL_TEXTには、テンプレートをパラメータ化するための変数を含めることができます。変数を作成するには、変数名の先頭にコロン(:)を入力します(:regionなど)。テンプレートでパラメータを使用すると、テンプレートのインスタンス化処理を柔軟に行うことができます(マテリアライズド・ビュー・サイト固有のデータ・セットを定義する場合など)。

オブジェクトがテンプレートに追加されると、指定されたDDLが検索されます。定義済パラメータが検索されると、それらのパラメータは、自動的にALL_REPCAT_TEMPLATE_PARMSビューに追加されます。

関連するビュー:

- DBA_REPCAT_TEMPLATE_OBJECTSには、データベース内のすべてのデプロイメント・テンプレートのオブジェクト定義が示されます。

- USER_REPCAT_TEMPLATE_OBJECTSには、カレント・ユーザーが所有する各デプロイメント・テンプレートのオブジェクト定義が示されます。

列

データ型

NULL

説明

REFRESH_TEMPLATE_NAME

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートの名前。

OBJECT_NAME

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートのオブジェクト名。

OBJECT_TYPE

VARCHAR2(17)

-

デプロイメント・テンプレートのオブジェクト型。

FUNCTION           MATERIALIZED VIEW
INDEX              SYNONYM
INDEXTYPE          TABLE
OPERATOR           TRIGGER
PACKAGE            TYPE
PACKAGE BODY       TYPE BODY
PROCEDURE          VIEW

DDL_NUM

NUMBER

NOT NULL

複数のDDL文を使用してオブジェクトを作成する場合に、DDL_TEXT列に格納されているDDL文の実行順序を示します。

DDL_TEXT

CLOB(4000)

-

デプロイメント・テンプレートのオブジェクトを作成するために実行されるDDL。

MASTER_ROLLBACK_SEGMENT

VARCHAR2(30)

-

デプロイメント・テンプレートのオブジェクトをインスタンス化するときに使用されるロールバック・セグメントの名前。

DERIVED_FROM_SNAME

VARCHAR2(30)

-

テンプレート・オブジェクトの基になったオブジェクトを含むスキーマが表示されます(該当する値がある場合)。

DERIVED_FROM_ONAME

VARCHAR2(30)

-

テンプレート・オブジェクトの基になったオブジェクトの名前が表示されます(該当する値がある場合)。

FLAVOR_ID

NUMBER

-

デプロイメント・テンプレートのオブジェクトの固有ID。

DDL_TEXT列はCLOBとして定義されているため、ALL_REPCAT_TEMPLATE_OBJECTSビューに対して単純にSELECT文を実行するとエラーが戻されます。オブジェクトDDLを参照する必要がない場合は、次のSELECT文を使用してください(DDL_TEXTパラメータは除外してください)。

SELECT REFRESH_TEMPLATE_NAME, OBJECT_NAME, OBJECT_TYPE, MASTER_ROLLBACK_SEG,
FLAVOR_ID FROM DBA_REPCAT_TEMPLATE_OBJECTS;

次に、カーソルとDBMS_LOBパッケージを使用し、ALL_REPCAT_TEMPLATE_OBJECTSビューの内容をすべて表示するためのスクリプトを示します。DDL_TEXT列など、ALL_REPCAT_TEMPLATE_OBJECTSビューの内容をすべて表示するには、次のスクリプトを使用します。

SET SERVEROUTPUT ON

DECLARE
CURSOR mycursor IS
SELECT REFRESH_TEMPLATE_NAME, OBJECT_NAME, OBJECT_TYPE, DDL_TEXT,
MASTER_ROLLBACK_SEG, FLAVOR_ID
FROM DBA_REPCAT_TEMPLATE_OBJECTS;
tempstring VARCHAR2(1000);
len NUMBER;
BEGIN
FOR myrec IN mycursor LOOP
len := DBMS_LOB.GETLENGTH(myrec.ddl_text);
DBMS_LOB.READ(myrec.ddl_text, len, 1, tempstring);
DBMS_OUTPUT.PUT_LINE(myrec.refresh_template_name||' '||
myrec.object_name||' '||myrec.object_type||' '||tempstring||' '||
myrec.master_rollback_seg||' '||myrec.flavor_id);
END LOOP;
END;
/

関連項目:
カーソル使用の詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。DBMS_LOBパッケージとLOBの一般的な使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ALL_REPCAT_TEMPLATE_PARMS

カレント・ユーザーからアクセス可能な、すべてのテンプレートのオブジェクトDDLで定義されたパラメータが含まれます。オブジェクトがテンプレートに追加されると、DDLに変数があるかどうかが検査されます。パラメータが見つかると、自動的にこのビューに追加されます。

このビューでは、デフォルトのパラメータ値およびプロンプト文字列も定義できます。これらの値を定義すると、インスタンス化処理でテンプレートが使用しやすくなります。

関連項目:
ALL_REPCAT_TEMPLATE_OBJECTS

関連するビュー:

- DBA_REPCAT_TEMPLATE_PARMSには、データベース内のすべてのデプロイメント・テンプレートのテンプレート・パラメータが示されます。

- USER_REPCAT_TEMPLATE_PARMSには、カレント・ユーザーが所有するすべてのデプロイメント・テンプレートのテンプレート・パラメータが示されます。

列

データ型

NULL

説明

REFRESH_TEMPLATE_NAME

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートの名前。

OWNER

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートの所有者。

REFRESH_GROUP_NAME

VARCHAR2(30)

NOT NULL

インスタンス化処理中にテンプレート・オブジェクトが追加されるリフレッシュ・グループの名前。

TEMPLATE_COMMENTS

VARCHAR2(2000)

-

ユーザーが入力するコメント。

PUBLIC_TEMPLATE

VARCHAR2(1)

-

Yの場合、デプロイメント・テンプレートはパブリックです。
Nの場合、デプロイメント・テンプレートはプライベートです。

PARAMETER_NAME

VARCHAR2(30)

NOT NULL

パラメータ名。

DEFAULT_PARM_VALUE

CLOB(4000)

-

デフォルトのパラメータ値。

PROMPT_STRING

VARCHAR2(2000)

-

パラメータのプロンプト文字列。

USER_OVERRIDE

VARCHAR2(1)

-

Yの場合、ユーザーによるデフォルトのパラメータ値の上書きが可能です。
Nの場合、ユーザーによるデフォルトのパラメータ値の上書きが不可能です。

DEFAULT_PARM_VALUE列はCLOBとして定義されているため、ALL_REPCAT_TEMPLATE_PARMSビューに対して単純にSELECT文を実行するとエラーが戻されます。デフォルトのパラメータ値を参照する必要がない場合は、次のSELECT文を使用してください(DEFAULT_PARM_VALUEは除外してください)。

SELECT REFRESH_TEMPLATE_NAME, OWNER, REFRESH_GROUP_NAME, TEMPLATE_COMMENT,
PUBLIC_TEMPLATE, PARAMETER_NAME, PROMPT_STRING, USER_OVERRIDE
FROM DBA_REPCAT_TEMPLATE_PARMS;

次に、カーソルとDBMS_LOBパッケージを使用し、ALL_REPCAT_TEMPLATE_PARMSビューの内容をすべて表示するためのスクリプトを示します。DEFAULT_PARM_VALUE列など、ALL_REPCAT_TEMPLATE_PARMSビューの内容をすべて表示するには、次のスクリプトを使用します。

SET SERVEROUTPUT ON

DECLARE
CURSOR mycursor IS
SELECT REFRESH_TEMPLATE_NAME, OWNER, REFRESH_GROUP_NAME,
TEMPLATE_COMMENT, PUBLIC_TEMPLATE, PARAMETER_NAME, DEFAULT_PARM_VALUE,
PROMPT_STRING, USER_OVERRIDE
FROM DBA_REPCAT_TEMPLATE_PARMS;
tempstring VARCHAR2(1000);
len NUMBER;
BEGIN
FOR myrec IN mycursor LOOP
len := DBMS_LOB.GETLENGTH(myrec.default_parm_value);
DBMS_LOB.READ(myrec.default_parm_value, len, 1, tempstring);
DBMS_OUTPUT.PUT_LINE(myrec.refresh_template_name||' '||
myrec.owner||' '||myrec.refresh_group_name||' '||
myrec.template_comment||' '||myrec.public_template||' '||
myrec.parameter_name||' '||tempstring||' '||myrec.prompt_string||' '||
myrec.user_override);
END LOOP;
END;
/

関連項目:
カーソル使用の詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。DBMS_LOBパッケージとLOBの一般的な使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ALL_REPCAT_TEMPLATE_SITES

エンタープライズ・ネットワークにおける、テンプレートのインスタンス化のカレント・ステータス情報が示されます。カレント・ユーザーからアクセス可能な、デプロイメント・テンプレートのインスタンス化サイトの情報も含まれます。具体的には、DBAは、特定のサイトで実行されるテンプレートのインストールや削除を監視できます。

関連するビュー:

- DBA_REPCAT_TEMPLATE_SITESには、データベース内のすべてのテンプレートのリモート・インスタンス化サイトがすべて示されます。

- USER_REPCAT_TEMPLATE_SITESには、カレント・ユーザーが所有するすべてのテンプレートのリモート・インスタンス化サイトが示されます。

列

データ型

NULL

説明

REFRESH_TEMPLATE_NAME

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートの名前。

REFRESH_GROUP_NAME

VARCHAR2(30)

-

インスタンス化処理中にテンプレート・オブジェクトが追加されるリフレッシュ・グループの名前。

TEMPLATE_OWNER

VARCHAR2(30)

-

デプロイメント・テンプレートの所有者とみなされるユーザーの名前。

USER_NAME

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートをインスタンス化したユーザーの名前。

SITE_NAME

VARCHAR2(128)

-

デプロイメント・テンプレートのターゲット・マテリアライズド・ビュー・サイト。

REPAPI_SITE_NAME

VARCHAR2(128)

-

この列は、Oracleの将来のリリースで使用される予定です。

STATUS

VARCHAR2(10)

-

ターゲット・マテリアライズド・ビュー・サイトにおけるデプロイメント・テンプレートのステータスが表示されます。
0 =インストールされていません。

1 =インストールされています。

-1 =インストールされていますがエラーが発生しています。

INSTANTIATION_DATE

DATE

-

テンプレートがインスタンス化された日付が表示されます。テンプレートがまだインスタンス化されていない場合、このフィールドはNULLになります。

ALL_REPCAT_USER_AUTHORIZATIONS

カレント・ユーザーからアクセス可能なプライベート・デプロイメント・テンプレートに対する認証ユーザーが表示されます。このビューにリストされたユーザーは、指定されたテンプレートをインスタンス化できます。このビューに表示されないユーザーはデプロイメント・テンプレートをインスタンス化できません。

関連するビュー:

- DBA_REPCAT_USER_AUTHORIZATIONSには、データベース内のすべてのプライベート・デプロイメント・テンプレートに対する認証ユーザーがリストされています。

- USER_REPCAT_USER_AUTHORIZATIONには、カレント・ユーザーが所有するプライベート・デプロイメント・テンプレートに対する認証ユーザーがリストされています。

列

データ型

NULL

説明

REFRESH_TEMPLATE_NAME

VARCHAR2(30)

NOT NULL

ユーザーがインスタンス化を認証されたデプロイメント・テンプレートの名前。

OWNER

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートの所有者の名前。

REFRESH_GROUP_NAME

VARCHAR2(30)

NOT NULL

インスタンス化処理中にテンプレート・オブジェクトが追加されるリフレッシュ・グループの名前。

TEMPLATE_COMMENT

VARCHAR2(2000)

-

ユーザーが入力するコメント。

PUBLIC_TEMPLATE

VARCHAR2(1)

-

Yの場合、デプロイメント・テンプレートはパブリックです。
Nの場合、デプロイメント・テンプレートはプライベートです。

USER_NAME

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートのインスタンス化を認証されたユーザーの名前。

ALL_REPCAT_USER_PARM_VALUES

カレント・ユーザーからアクセス可能なすべてのデプロイメント・テンプレートのテンプレート・パラメータが示されます。DBAには、テンプレートを配布してインスタンス化する前に、ユーザー・パラメータの表を作成するオプションの機能があります。指定されたユーザーがテンプレートをインスタンス化する場合は、そのユーザー用にALL_REPCAT_USER_PARM_VALUESビューに格納された値が自動的に使用されます。

関連するビュー:

- DBA_REPCAT_USER_PARM_VALUESには、データベース内のすべてのデプロイメント・テンプレートのテンプレート・パラメータが示されます。

- USER_REPCAT_USER_PARM_VALUESには、カレント・ユーザーが所有するすべてのデプロイメント・テンプレートのテンプレート・パラメータが示されます。

列

データ型

NULL

説明

REFRESH_TEMPLATE_NAME

VARCHAR2(30)

NOT NULL

ユーザー・パラメータ値が定義されたデプロイメント・テンプレートの名前。

OWNER

VARCHAR2(30)

NOT NULL

デプロイメント・テンプレートの所有者の名前。

REFRESH_GROUP_NAME

VARCHAR2(30)

NOT NULL

インスタンス化処理中にテンプレート・オブジェクトが追加されるリフレッシュ・グループの名前。

TEMPATE_COMMENT

VARCHAR2(2000)

-

ユーザーが入力するコメント。

PUBLIC_TEMPLATE

VARCHAR2(1)

-

Yの場合、デプロイメント・テンプレートはパブリックです。
Nの場合、デプロイメント・テンプレートはプライベートです。

PARAMETER_NAME

VARCHAR2(30)

NOT NULL

ユーザー・パラメータ値が定義されたパラメータの名前。

DEFAULT_PARM_VALUE

CLOB(4000)

-

パラメータのデフォルト値。

PROMPT_STRING

VARCHAR2(2000)

-

パラメータのプロンプト文字列。

PARM_VALUE

CLOB(4000)

-

指定されたユーザーに対して定義されたパラメータ値。

USER_NAME

VARCHAR2(30)

NOT NULL

指定されたパラメータ値が定義されたユーザーの名前。

DEFAULT_PARM_VALUE列およびPARM_VALUE列はCLOBデータ型として定義されているため、ALL_REPCAT_USER_PARM_VALUESビューに対して単純にSELECT文を実行するとエラーが戻されます。デフォルトのパラメータ値やユーザーのパラメータ値を参照する必要がない場合は、次のSELECT文を使用してください(DEFAULT_PARM_VALUEおよびPARM_VALUEは除外してください)。

SELECT REFRESH_TEMPLATE_NAME, OWNER, REFRESH_GROUP_NAME, TEMPLATE_COMMENT,
PUBLIC_TEMPLATE, PARAMETER_NAME, PROMPT_STRING, USER_NAME
FROM DBA_REPCAT_USER_PARM_VALUES;

次に、カーソルとDBMS_LOBパッケージを使用し、ALL_REPCAT_USER_PARM_VALUESビューの内容をすべて表示するためのスクリプトを示します。DEFAULT_PARM_VALUE列やPARM_VALUE列など、ALL_REPCAT_TEMPLATE_PARMSビューの内容をすべて表示するには、次のスクリプトを使用します。

SET SERVEROUTPUT ON

DECLARE
CURSOR mycursor IS
SELECT REFRESH_TEMPLATE_NAME, OWNER, REFRESH_GROUP_NAME,
TEMPLATE_COMMENT, PUBLIC_TEMPLATE, PARAMETER_NAME, DEFAULT_PARM_VALUE,
PROMPT_STRING, PARM_VALUE, USER_NAME
FROM DBA_REPCAT_USER_PARM_VALUES;
tempstring VARCHAR2(1000);
tempstring2 varchar2(1000);
len NUMBER;
BEGIN
FOR myrec IN mycursor LOOP
len := DBMS_LOB.GETLENGTH(myrec.default_parm_value);
DBMS_LOB.READ(myrec.default_parm_value, len, 1, tempstring);
DBMS_OUTPUT.PUT_LINE(myrec.refresh_template_name||' '||
myrec.owner||' '||myrec.refresh_group_name||' '||
myrec.template_comment||' '||myrec.public_template||' '||
myrec.parameter_name||' '||tempstring||' '||myrec.prompt_string||' '||
tempstring2||' '||myrec.user_name);
END LOOP;
END;
/

関連項目:
カーソル使用の詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。DBMS_LOBパッケージとLOBの一般的な使用方法の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。

ALL_REPCATLOG

各マスター・サイトで生成された非同期管理要求およびエラー・メッセージの暫定的なステータスの情報が示されます。要求の処理中に生成されたすべてのエラー・メッセージは、その要求を作成したマスター・サイトのALL_REPCATLOGビューに転送されます。エラーが発生せずに管理要求が正常に完了した場合は、この要求に関するすべてのトレースは、ALL_REPCATLOGビューから削除されます。このビューに含まれる管理要求およびエラー・メッセージは、カレント・ユーザーからアクセス可能です。

関連するビュー:

- DBA_REPCATLOGには、データベース内のすべての非同期管理要求およびエラー・メッセージのステータスが示されます。

- USER_REPCATLOGには、カレント・ユーザーが所有するすべての非同期管理要求およびエラー・メッセージのステータスが示されます。

列

データ型

NULL

説明

ID

NUMBER

-

順序番号。ID列とSOURCE列の値により、1つの管理要求に関連するすべてのログ・レコード(全マスター・サイトを含む)が識別されます。

SOURCE

VARCHAR2(128)

-

要求が作成された場所。

USERID

VARCHAR2(30)

-

要求を作成したユーザー名。

TIMESTAMP

DATE

-

要求が作成された時刻。

ROLE

VARCHAR2(9)

-

サイトがマスター定義サイト(masterdef)か、マスター・サイト(master)かを示します。

MASTER

VARCHAR2(128)

-

ROLE列が'masterdef'のときにリモート・タスクを実行する場合、どのマスター・サイトがタスクを実行するかを示します。

SNAME

VARCHAR2(30)

-

レプリケート・オブジェクトのスキーマ名(該当する名前がある場合)。

REQUEST

VARCHAR2(29)

-

実行されたDBMS_REPCAT管理プロシージャの名前。

ONAME

VARCHAR2(30)

-

レプリケート・オブジェクトの名前(該当する名前がある場合)。

TYPE

VARCHAR2(12)

-

レプリケート・オブジェクトのタイプ。

FUNCTION           MATERIALIZED VIEW
INDEX              SYNONYM
INDEXTYPE          TABLE
OPERATOR           TRIGGER
PACKAGE            TYPE
PACKAGE BODY       TYPE BODY
PROCEDURE          VIEW

STATUS

VARCHAR2(14)

-

管理要求のステータス。ステータスには、READY、DO_CALLBACK、AWAIT_CALLBACKまたはERRORがあります。

MESSAGE

VARCHAR2(200)

-

戻されたエラー・メッセージ。

ERRNUM

NUMBER

-

メッセージのOracleエラー番号。

GNAME

VARCHAR2(30)

-

レプリケーション・グループの名前。

ALL_REPCOLUMN

カレント・ユーザーからアクセス可能な表の、レプリケートされた列が表示されます。

表に列オブジェクトが含まれる場合、このビューには、型のプレースホルダと、型属性ごとに1行の情報が表示されます。表にネストした表が含まれる場合、このビューには、ネストした表の記憶表が独立した表として表示されます。表がオブジェクト表の場合、このビューには、非表示のオブジェクト識別子列が表示されます。

関連するビュー:

- DBA_REPCOLUMNには、データベース内のすべての表の、レプリケートされた列が示されます。

- USER_REPCOLUMNには、カレント・ユーザーが所有するすべての表の、レプリケートされた列が示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

オブジェクトの所有者の名前。

ONAME

VARCHAR2(30)

NOT NULL

オブジェクトの名前。

TYPE

VARCHAR2(8)

-

オブジェクトのタイプ。値は、MATERIALIZED VIEWまたはTABLEのいずれかです。

CNAME

VARCHAR2(4000)

-

レプリケートされた列の名前。

ID

NUMBER

-

レプリケートされた列のID番号。

POS

NUMBER

-

レプリケートされた列の順序。

COMPARE_OLD_ON_DELETE

VARCHAR2(1)

-

レプリケートされた情報の削除時に、列の古い値と比較するかどうかを示します。

COMPARE_OLD_ON_UPDATE

VARCHAR2(1)

-

レプリケートされた情報の更新時に、列の古い値と比較するかどうかを示します。

SEND_OLD_ON_DELETE

VARCHAR2(1)

-

レプリケートされた情報の削除時に、列の古い値を送信するかどうかを示します。

SEND_OLD_ON_UPDATE

VARCHAR2(1)

-

レプリケートされた情報の更新時に、列の古い値を送信するかどうかを示します。

CTYPE

VARCHAR2(30)

-

列のタイプが表示されます。ユーザー定義型の場合は、ユーザー定義型名が表示されます。

CTYPE_TOID

RAW(16)

-

ユーザー定義型の場合は、その型のオブジェクト識別子(OID)が表示されます。それ以外の場合、このフィールドはNULLになります。

CTYPE_OWNER

VARCHAR2(30)

-

ユーザー定義型の場合は、ユーザー定義型の所有者が表示されます。それ以外の場合、このフィールドはNULLになります。

CTYPE_HASHCODE

VARCHAR2(34)

-

ユーザー定義型の場合は、その型のハッシュコードが表示されます。それ以外の場合、このフィールドはNULLになります。

CTYPE_MOD

VARCHAR2(3)

-

REF列の場合は、REFが表示されます。それ以外の場合、このフィールドはNULLになります。

DATA_LENGTH

VARCHAR2(40)

-

列の長さがバイト単位で表示されます。

DATA_PRECISION

VARCHAR2(40)

-

列の精度が表示されます。NUMBER列の場合は10進数で表示され、FLOAT列の場合は2進数で表示されます。

DATA_SCALE

VARCHAR2(40)

-

小数点以下の位の桁数が表示されます。

NULLABLE

VARCHAR2(1)

-

列にNULL値を指定できるどうかを示します。

CHARACTER_SET_NAME

VARCHAR2(44)

-

列で使用されるキャラクタ・セットの名前が表示されます(該当する値がある場合)。

TOP

VARCHAR2(30)

-

列オブジェクト内の属性に対する最上位列が表示されます。たとえば、oe.customers表では、cust_addressが列オブジェクトで、その属性の1つがstreet_addressです。cust_addressは、street_address属性に対するTOP列になります。
組込みのデータ型の場合、このフィールドはNULLになります。

CHAR_LENGTH

NUMBER

-

列の長さが文字単位で表示されます。この値は、次のデータ型に対してのみ適用されます。

- CHAR

- VARCHAR2

- NCHAR

- NVARCHAR2

CHAR_USED

VARCHAR2(1)

-

Bは、列の長さセマンティクスとしてBYTEが使用されていることを示します。Cは、列の長さセマンティクスとしてCHARが使用されていることを示します。NULLは、データ型が次のいずれでもないことを示します。

- CHAR

- VARCHAR2

- NCHAR

- NVARCHAR2

ALL_REPCOLUMN_GROUP

カレント・ユーザーからアクセス可能な各レプリケート表の列グループが示されます。

関連するビュー:

- DBA_REPCOLUMN_GROUPには、データベース内のすべての表の列グループが示されます。

- USER_REPCOLUMN_GROUPには、カレント・ユーザーが所有するすべての表の列グループが示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート表を含むスキーマの名前。

ONAME

VARCHAR2(30)

NOT NULL

レプリケート表の名前。

GROUP_NAME

VARCHAR2(30)

NOT NULL

列グループの名前。

GROUP_COMMENT

VARCHAR2(80)

-

ユーザーが入力するコメント。

注意:
USER_REPCOLUMN_GROUPビューには、SNAME列が示されません。

ALL_REPCONFLICT

競合解消メソッドが定義されていて、カレント・ユーザーからアクセス可能な各表の名前と、その方法で解消される競合のタイプが含まれます。

関連するビュー:

- DBA_REPCONFLICTには、競合解消メソッドが定義されているデータベース内のすべての表に対する競合解消メソッドが示されます。

- USER_REPCONFLICTには、競合解消メソッドが定義されている、カレント・ユーザーが所有するすべての表に対する競合解消メソッドが示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート表を含むスキーマの名前。

ONAME

VARCHAR2(30)

NOT NULL

競合解消メソッドが定義された表の名前。

CONFLICT_TYPE

VARCHAR2(10)

-

競合解消メソッドを適用する競合のタイプ。削除の競合、一意性競合、更新の競合のいずれかです。

REFERENCE_NAME

VARCHAR2(30)

NOT NULL

方法を適用するオブジェクト。削除の競合では表の名前です。一意性競合では制約の名前です。更新の競合では列グループの名前です。

注意:
USER_REPCONFLICTビューには、SNAME列が示されません。

ALL_REPDDL

カレント・ユーザーからアクセス可能な各レプリケーション・オブジェクトのDDLが示されます。

関連するビュー:

- DBA_REPDDLには、データベース内の各レプリケート・オブジェクトのDDLが示されます。

- USER_REPDDLには、カレント・ユーザーが所有する各レプリケート・オブジェクトのDDLが示されます。

列

データ型

NULL

説明

LOG_ID

NUMBER

-

ALL_REPCATLOGレコードのID番号。

SOURCE

VARCHAR2(128)

-

要求の作成元データベースの名前。

ROLE

VARCHAR2(1)

-

Yの場合、データベースは要求に対するマスター定義サイト(masterdef)です。
Nの場合、データベースはマスター・サイトです。

MASTER

VARCHAR2(128)

-

この要求を処理するデータベースの名前。

LINE

NUMBER(38)

-

1つの要求に含まれるレコードの順序。

TEXT

VARCHAR2(2000)

-

引数またはDDLテキストの一部分。

DDL_NUM

NUMBER(38)

-

複数のDDL文を使用する場合に、TEXT列に格納されているDDL文の実行順序を示します。

ALL_REPGENOBJECTS

カレント・ユーザーからアクセス可能で、レプリケーションのサポート用に生成されたオブジェクトが示されます。

関連するビュー:

- DBA_REPGENOBJECTSには、レプリケーションのサポート用に生成された、データベース内の各オブジェクトが示されます。

- USER_REPGENOBJECTSには、レプリケーションのサポート用に生成された、カレント・ユーザーが所有する各オブジェクトが示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

-

レプリケート・スキーマの名前。

ONAME

VARCHAR2(30)

-

生成されたオブジェクトの名前。

TYPE

VARCHAR2(12)

-

生成されたオブジェクトのタイプ。値は、PACKAGE、PACKAGE BODY、TRIGGERまたはINTERNAL PACKAGEのいずれかです。

BASE_SNAME

VARCHAR2(30)

-

ベースとなるオブジェクトの所有者。

BASE_ONAME

VARCHAR2(30)

-

このオブジェクトを生成する原因となったオブジェクト。

BASE_TYPE

VARCHAR2(12)

-

ベースとなるオブジェクトのタイプ。

PACKAGE_PREFIX

VARCHAR2(30)

-

パッケージ・ラッパーの接頭辞。

PROCEDURE_PREFIX

VARCHAR2(30)

-

パッケージ・ラッパーのプロシージャ接頭辞。

DISTRIBUTED

VARCHAR2(1)

-

この列は廃止されています。

REASON

VARCHAR2(30)

-

オブジェクトの生成理由。

ALL_REPGROUP

カレント・ユーザーからアクセス可能なレプリケーション・グループがすべて示されます。各レプリケーション・グループのメンバーは、ALL_REPOBJECTビューにリストされます。

関連するビュー:

- DBA_REPGROUPには、レプリケーションの対象となる、データベース内のレプリケーション・グループが示されます。

- USER_REPGROUPには、レプリケートの対象となる、カレント・ユーザーが所有するレプリケーション・グループがすべて示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート・スキーマの名前。この列は廃止されています。

MASTER

VARCHAR2(1)

-

Yの場合、カレント・サイトはマスター・サイトです。
Nの場合、カレント・サイトはマテリアライズド・ビュー・サイトです。

STATUS

VARCHAR2(9)

-

マスター・サイトに対してのみ使用されます。ステータスは、normal、quiescing、quiescedのいずれかです。

SCHEMA_COMMENT

VARCHAR2(80)

-

ユーザーが入力するコメント。

GNAME

VARCHAR2(30)

NOT NULL

レプリケーション・グループの名前。

FNAME

VARCHAR2(30)

-

固有の名前。

RPC_PROCESSING_DISABLED

VARCHAR2(1)

-

Nの場合、このサイトでの遅延リモート・プロシージャ・コール(RPC)の受信や適用が可能です。
Yの場合、このサイトでの遅延リモート・プロシージャ・コール(RPC)の受信や適用が不可能です。

OWNER

VARCHAR2(30)

NOT NULL

レプリケーション・グループの所有者。

ALL_REPGROUP_PRIVILEGES

レプリケーション・グループ内で権限を登録されているユーザーの情報が示されます。カレント・ユーザーからアクセス可能なレプリケーション・グループのみが表示されます。

関連するビュー:

- DBA_REPGROUP_PRIVILEGESには、データベース内のすべてのレプリケーション・グループ内で権限を登録されているユーザーの情報が示されます。

- USER_REPGROUP_PRIVILEGESには、カレント・ユーザーが所有するレプリケーション・グループ内で権限を登録されているユーザーの情報が示されます。

列

データ型

NULL

説明

USERNAME

VARCHAR2(30)

NOT NULL

ユーザーの名前が表示されます。

GNAME

VARCHAR2(30)

-

レプリケーション・グループの名前が表示されます。

CREATED

DATE

NOT NULL

レプリケーション・グループの登録日が表示されます。

RECEIVER

VARCHAR2(1)

-

ユーザーが受信者としての権限を持っているかどうかを示します。

PROXY_SNAPADMIN

VARCHAR2(1)

-

ユーザーがproxy_snapadmin権限を持っているかどうかを示します。

OWNER

VARCHAR2(30)

-

レプリケーション・グループの所有者。

ALL_REPGROUPED_COLUMN

カレント・ユーザーからアクセス可能な各表の列グループを構成する、すべての列が示されます。

関連するビュー:

- DBA_REPGROUPED_COLUMNには、データベース内の各表の列グループを構成する、すべての列が示されます。

- USER_REPGROUPED_COLUMNには、カレント・ユーザーが所有する各表の列グループを構成する、すべての列が示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート表を含むスキーマの名前。

ONAME

VARCHAR2(30)

NOT NULL

レプリケート表の名前。

GROUP_NAME

VARCHAR2(30)

NOT NULL

列グループの名前。

COLUMN_NAME

VARCHAR2(30)

NOT NULL

列グループに含まれる列の名前。

注意:
USER_REPGROUPED_COLUMNビューには、SNAME列が示されません。

ALL_REPKEY_COLUMNS

カレント・ユーザーからアクセス可能な各表の1つ以上のレプリケーション・キー列が示されます。

レプリケーション・キー列は、主キーのかわりの代替列または列グループで、行レベル・レプリケーションを使用した場合に、比較する表中の列を決定するのに使用されます。レプリケーション・キー列は、DBMS_REPCATパッケージのSET_COLUMNSプロシージャを使用して設定できます。

次のタイプの列は、レプリケーション・キー列にすることはできません。

- LOBまたは列オブジェクトのLOB属性

- コレクションまたは列オブジェクトのコレクション属性

- REF

- 列オブジェクト全体

関連項目:
「SET_COLUMNSプロシージャ」

関連するビュー:

- DBA_REPKEY_COLUMNSには、データベース内の各表の1つ以上のレプリケーション・キー列が示されます。

- USER_REPKEY_COLUMNSには、カレント・ユーザーが所有する各表の1つ以上のレプリケーション・キー列が示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート表の所有者。

ONAME

VARCHAR2(30)

NOT NULL

レプリケート表の名前。

COL

VARCHAR2(4000)

-

表内の1つ以上のレプリケーション・キー列。

ALL_REPOBJECT

カレント・ユーザーからアクセス可能な各レプリケーション・グループ内のオブジェクトの情報が示されます。オブジェクトは、1つのレプリケーション・グループのみに属します。レプリケーション・グループは、複数のスキーマにまたがることができます。

関連するビュー:

- DBA_REPOBJECTには、データベースの各レプリケーション・グループ内のオブジェクトの情報が示されます。

- USER_REPOBJECTには、カレント・ユーザーが所有する各レプリケーション・グループ内のオブジェクトの情報が示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

-

レプリケート・オブジェクトを含むスキーマの名前。

ONAME

VARCHAR2(30)

-

レプリケート・オブジェクトの名前。

TYPE

VARCHAR2(16)

-

レプリケート・オブジェクトのタイプ。

FUNCTION           MATERIALIZED VIEW
INDEX              SYNONYM
INDEXTYPE          TABLE
OPERATOR           TRIGGER
PACKAGE            TYPE
PACKAGE BODY       TYPE BODY
PROCEDURE          VIEW

STATUS

VARCHAR2(10)

-

CREATEは、ユーザーまたはOracleによって生成されたDDLが、ローカル・データベースに対して適用され、オブジェクトがローカルに作成されることを示します。ローカル・レプリカが存在する場合、Oracleは、そのレプリカをマスター定義と比較して、両者に整合性があることを確認します(COMPARE)。オブジェクトの作成または比較が正常に実行されると、ステータスがVALIDに更新されます。正常に実行されなかった場合、ステータスはERRORになります。オブジェクトを削除すると、ALL_REPOBJECTビューから行が削除される前にステータスがDROPPEDに更新されます。

GENERATION_STATUS

VARCHAR2(9)

-

オブジェクトでレプリケーション・パッケージを生成する必要があるかどうかを示します。

ID

NUMBER

-

ローカル・データベース・オブジェクトの識別子(該当する値がある場合)。

OBJECT_COMMENT

VARCHAR2(80)

-

ユーザーが入力するコメント。

GNAME

VARCHAR2(30)

-

オブジェクトが属するレプリケーション・グループの名前。

MIN_COMMUNICATION

VARCHAR2(1)

-

Yの場合は、最小限の通信によって更新されます。
Nの場合は、更新用の新旧データがすべて送信されます。

REPLICATION_TRIGGER_EXISTS

VARCHAR2(1)

-

Yの場合、内部レプリケーション・トリガーが存在します。
Nの場合、内部レプリケーション・トリガーは存在しません。

INTERNAL_PACKAGE_EXISTS

VARCHAR2(1)

-

Yの場合、内部パッケージが存在します。
Nの場合、内部パッケージは存在しません。

GROUP_OWNER

VARCHAR2(30)

-

レプリケーション・グループの所有者。

NESTED_TABLE

VARCHAR2(1)

-

Yの場合、レプリケート・オブジェクトはネストした表の記憶表です。
Nの場合、レプリケート・オブジェクトは記憶表ではありません。

ALL_REPPARAMETER_COLUMN

ALL_REPPARAMETER_COLUMNビューには、ALL_REPRESOLUTIONビューに示される情報と、カレント・ユーザーからアクセス可能な各レプリケート表の競合解消に使用される列の情報が示されます。これらの列の値は、list_of_column_namesの引数として、DBMS_REPCATパッケージのADD_conflicttype_RESOLUTIONプロシージャに渡されます。

関連するビュー:

- DBA_REPPARAMETER_COLUMNには、データベース内の各レプリケート表の競合解消に使用される列の情報が示されます。

- USER_REPPARAMETER_COLUMNには、カレント・ユーザーが所有する各レプリケート表の競合解消に使用される列の情報が示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート表を含むスキーマの名前。

ONAME

VARCHAR2(30)

NOT NULL

レプリケート表の名前。

CONFLICT_TYPE

VARCHAR2(10)

-

競合解消メソッドを適用する競合のタイプ。削除の競合、一意性競合、更新の競合のいずれかです。

REFERENCE_NAME

VARCHAR2(30)

NOT NULL

方法を適用するオブジェクト。削除の競合では表の名前です。一意性競合では制約の名前です。更新の競合では列グループの名前です。

SEQUENCE_NO

NUMBER

NOT NULL

競合解消メソッドを適用する順序。1は、最初に適用されることを示します。

METHOD_NAME

VARCHAR2(80)

NOT NULL

Oracleによって提供される競合解消メソッドの名前。ユーザー指定の方法を使用する場合、この値は'user function'になります。

FUNCTION_NAME

VARCHAR2(92)

NOT NULL

競合解消メソッドが'user function'の場合は、ユーザーが入力した競合解消メソッドの名前になります。

PRIORITY_GROUP

VARCHAR2(30)

-

競合解消メソッドが'priority group'の場合は、優先グループの名前になります。

PARAMETER_TABLE_NAME

VARCHAR2(30)

NOT NULL

パラメータ列が属する表の名前が表示されます。

PARAMETER_COLUMN_NAME

VARCHAR2(4000)

-

競合解消メソッドでINパラメータとして使用される列の名前。

PARAMETER_SEQUENCE_NO

NUMBER

NOT NULL

INパラメータとして使用される列の順序。

注意:
USER_REPPARAMETER_COLUMNビューには、SNAME列が示されません。

ALL_REPPRIORITY

カレント・ユーザーからアクセス可能な各優先グループの各メンバーの値および優先順位レベルが示されます。優先グループには、レプリケーション・グループ内で一意の名前を付ける必要があります。また、指定された優先グループ内のそれぞれの優先順位レベルと値は、そのグループ内で一意であることが必要です。

関連するビュー:

- DBA_REPPRIORITYには、データベース内の各優先グループの各メンバーの値および優先順位レベルが示されます。

- USER_REPPRIORITYには、カレント・ユーザーが所有する各優先グループの各メンバーの値および優先順位レベルが示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート・スキーマの名前。この列は廃止されています。

PRIORITY_GROUP

VARCHAR2(30)

NOT NULL

優先グループまたはサイト優先グループの名前。

PRIORITY

NUMBER

NOT NULL

メンバーの優先順位レベル。最も大きい数値は、優先順位レベルが最も高いことを示します。

DATA_TYPE

VARCHAR2(9)

-

優先グループの値のデータ型。

FIXED_DATA_LENGTH

NUMBER(38)

-

CHARデータ型の値の最大長。

CHAR_VALUE

CHAR(255)

-

優先グループのメンバーの値(DATA_TYPE = CHARの場合)。

VARCHAR2_VALUE

VARCHAR2(4000)

-

優先グループのメンバーの値(DATA_TYPE = VARCHAR2の場合)。

NUMBER_VALUE

NUMBER

-

優先グループのメンバーの値(DATA_TYPE = NUMBERの場合)。

DATE_VALUE

DATE

-

優先グループのメンバーの値(DATA_TYPE = DATEの場合)。

RAW_VALUE

RAW(2000)

-

優先グループのメンバーの値(DATA_TYPE = RAWの場合)。

GNAME

VARCHAR2(30)

NOT NULL

レプリケーション・グループの名前。

NCHAR_VALUE

NCHAR(500)

-

優先グループのメンバーの値(DATA_TYPE = NCHARの場合)。

NVARCHAR2_VALUE

VARCHAR2(1000)

-

優先グループのメンバーの値(DATA_TYPE = NVARCHAR2の場合)。

LARGE_CHAR_VALUE

CHAR(2000)

-

優先グループのメンバーの値(255文字以上の空白埋込み文字列の場合)。

注意:
USER_REPPRIORITYビューには、SNAME列およびGNAME列が示されません。

ALL_REPPRIORITY_GROUP

カレント・ユーザーからアクセス可能な各レプリケーション・グループに定義された、優先グループまたはサイト優先グループが示されます。

関連するビュー:

- DBA_REPPRIORITY_GROUPには、データベース内の各レプリケーション・グループに定義された、優先グループまたはサイト優先グループが示されます。

- USER_REPPRIORITY_GROUPには、カレント・ユーザーが所有する各レプリケーション・グループに定義された、優先グループまたはサイト優先グループが示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート・スキーマの名前。この列は廃止されています。

PRIORITY_GROUP

VARCHAR2(30)

NOT NULL

優先グループまたはサイト優先グループの名前。

DATA_TYPE

VARCHAR2(9)

-

優先グループの各値のデータ型。

FIXED_DATA_LENGTH

NUMBER(38)

-

CHARデータ型の値の最大長。

PRIORITY_COMMENT

VARCHAR2(80)

-

ユーザーが入力するコメント。

GNAME

VARCHAR2(30)

NOT NULL

レプリケーション・グループの名前。

注意:
USER_REPPRIORITYビューには、SNAME列およびGNAME列が示されません。

ALL_REPPROP

各レプリケート・オブジェクトに対する操作を、他のマスター・サイトにある同じオブジェクトに伝播する手法が示されます。操作の伝播は、ストアド・プロシージャやプロシージャ・ラップ・プログラムをコールしたり、表を直接操作することによって実行します。このビューに示されるのは、カレント・ユーザーからアクセス可能なオブジェクトです。

関連するビュー:

- DBA_REPPROPには、各レプリケート・オブジェクトに対する操作を、他のマスター・サイトにある同じオブジェクトに伝播する手法が示されます。このビューに示されるのは、データベース内のすべてのオブジェクトです。

- USER_REPPROPには、各レプリケート・オブジェクトに対する操作を、他のマスター・サイトにある同じオブジェクトに伝播する手法が示されます。このビューに示されるのは、カレント・ユーザーが所有するオブジェクトです。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート・オブジェクトを含むスキーマの名前。

ONAME

VARCHAR2(30)

NOT NULL

レプリケート・オブジェクトの名前。

TYPE

VARCHAR2(16)

-

レプリケートされているオブジェクトのタイプ。

FUNCTION           PROCEDURE
INDEXTYPE          MATERIALIZED VIEW
OPERATOR           TABLE
PACKAGE            TYPE
PACKAGE BODY       TYPE BODY

DBLINK

VARCHAR2(128)

NOT NULL

マスター・サイトのデータベースの完全修飾名。このデータベースに対して、変更が伝播されます。

HOW

VARCHAR2(13)

-

伝播の実行方法。ローカル・マスター・サイトの場合は'none'です。それ以外のサイトの場合は'synchronous'または'asynchronous'です。

PROPAGATE_COMMENT

VARCHAR2(80)

-

ユーザーが入力するコメント。

ALL_REPRESOL_STATS_CONTROL

カレント・ユーザーからアクセス可能なすべてのレプリケート表に対する、競合解消の統計収集が示されます。

関連するビュー:

- DBA_REPRESOL_STATS_CONTROLには、データベース内のすべてのレプリケート表に対する、競合解消の統計収集が示されます。

- USER_REPRESOL_STATS_CONTROLには、カレント・ユーザーが所有するすべてのレプリケート表に対する、競合解消の統計収集が示されます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

表の所有者。

ONAME

VARCHAR2(30)

NOT NULL

表の名前。

CREATED

DATE

NOT NULL

統計収集の開始を示すタイムスタンプ。

STATUS

VARCHAR2(9)

-

統計収集のステータス。ACTIVEまたはCANCELLEDになります。

STATUS_UPDATE_DATE

DATE

NOT NULL

前回のステータス更新日を示すタイムスタンプ。

PURGED_DATE

DATE

-

前回の統計データのパージ日を示すタイムスタンプ。

LAST_PURGE_START_DATE

DATE

-

前回の統計情報のパージ期間の開始日。

LAST_PURGE_END_DATE

DATE

-

前回の統計情報のパージ期間の終了日。

注意:
USER_REPRESOL_STATS_CONTROLビューには、SNAME列が示されません。

ALL_REPRESOLUTION

カレント・ユーザーからアクセス可能な各レプリケート表での更新、一意性または削除の競合の解消に使用する方法が示されます。この場合の表は、指定されたスキーマに対する行レベル・レプリケーションによってレプリケートされています。

関連するビュー:

- DBA_REPRESOLUTIONには、データベース内の各レプリケート表での更新、一意性または削除の競合の解消に使用する方法が示されます。この場合の表は、指定されたスキーマに対する行レベル・レプリケーションによってレプリケートされています。

- USER_REPRESOLUTIONには、カレント・ユーザーが所有する各レプリケート表での更新、一意性または削除の競合の解消に使用する方法が示されます。この場合の表は、行レベル・レプリケーションによってレプリケートされています。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート・スキーマの名前。

ONAME

VARCHAR2(30)

NOT NULL

レプリケート表の名前。

CONFLICT_TYPE

VARCHAR2(10)

-

競合解消メソッドを適用する競合のタイプ。削除の競合、一意性競合、更新の競合のいずれかです。

REFERENCE_NAME

VARCHAR2(30)

NOT NULL

方法を適用するオブジェクト。削除の競合では表の名前です。一意性競合では制約の名前です。更新の競合では列グループの名前です。

SEQUENCE_NO

NUMBER

NOT NULL

競合解消メソッドを適用する順序。1は、最初に適用されることを示します。

METHOD_NAME

VARCHAR2(80)

NOT NULL

Oracleによって提供される競合解消メソッドの名前。ユーザー指定の方法を使用する場合、この値は'user function'になります。

FUNCTION_NAME

VARCHAR2(92)

NOT NULL

競合解消メソッドが'user function'の場合は、ユーザーが入力した競合解消メソッドの名前になります。

PRIORITY_GROUP

VARCHAR2(30)

-

競合解消メソッドが'priority group'の場合は、優先グループの名前になります。

RESOLUTION_COMMENT

VARCHAR2(80)

-

ユーザーが入力するコメント。

注意:
USER_REPRESOLUTIONビューには、SNAME列が示されません。

ALL_REPRESOLUTION_METHOD

データベース内で使用可能な競合解消メソッドがすべてリストされます。まず、このビューには、Advanced Replicationが提供する標準の方法がリストされます。新しいユーザー・ファンクションを作成してデータベース内のオブジェクト用の競合解消メソッドとして追加すると、そのファンクションがこのビューに追加されます。

関連するビュー:

- DBA_REPRESOLUTION_METHODには、データベース内で使用可能な競合解消メソッドがすべてリストされます。

- USER_REPRESOLUTION_METHODには、データベース内で使用可能な競合解消メソッドがすべてリストされます。

列

データ型

NULL

説明

CONFLICT_TYPE

VARCHAR2(10)

-

解決メソッドを適用する競合のタイプ。更新の競合、一意性競合、更新の競合のいずれかです。

METHOD_NAME

VARCHAR2(80)

NOT NULL

Oracleが提供する競合解消メソッドの名前。またはユーザーが入力した方法の名前。

ALL_REPRESOLUTION_STATISTICS

カレント・ユーザーからアクセス可能なすべてのレプリケート表に対して、正常に実行された更新、一意性または削除の競合解消の情報がリストされます。これらの統計情報は、DBMS_REPCAT.REGISTER_STATISTICSプロシージャをコールした場合にかぎり、表に対して収集されます。

関連するビュー:

- DBA_REPRESOLUTION_STATISTICSには、データベース内のすべてのレプリケート表に対して、正常に実行された更新、一意性または削除の競合解消の情報がリストされます。

- USER_REPRESOLUTION_STATISTICSには、カレント・ユーザーが所有するすべてのレプリケート表に対して、正常に実行された更新、一意性または削除の競合解消の情報がリストされます。

列

データ型

NULL

説明

SNAME

VARCHAR2(30)

NOT NULL

レプリケート・スキーマの名前。

ONAME

VARCHAR2(30)

NOT NULL

レプリケート表の名前。

CONFLICT_TYPE

VARCHAR2(10)

-

正常に解消された競合のタイプ。削除の競合、一意性競合、更新の競合のいずれかです。

REFERENCE_NAME

VARCHAR2(30)

NOT NULL

競合解消メソッドを適用するオブジェクト。削除の競合では表の名前です。一意性競合では制約の名前です。更新の競合では列グループの名前です。

METHOD_NAME

VARCHAR2(80)

NOT NULL

Oracleによって提供される競合解消メソッドの名前。ユーザー指定の方法を使用する場合、この値は'user function'になります。

FUNCTION_NAME

VARCHAR2(92)

-

競合解消メソッドが'user function'の場合は、ユーザーが入力した競合解消メソッドの名前になります。

PRIORITY_GROUP

VARCHAR2(30)

-

競合解消メソッドが'priority group'の場合は、優先グループの名前になります。

RESOLVED_DATE

DATE

NOT NULL

この行の競合が解消された日付。

PRIMARY_KEY_VALUE

VARCHAR2(2000)

NOT NULL

行の主キーの連結表現。

注意:
USER_REPRESOLUTION_STATISTICSビューには、SNAME列が示されません。

ALL_REPSITES

カレント・ユーザーからアクセス可能な各レプリケーション・グループのメンバーがリストされます。

関連するビュー:

- DBA_REPSITESには、データベース内の各レプリケーション・グループのメンバーがリストされます。

- USER_REPSITESには、カレント・ユーザーが所有する各レプリケーション・グループのメンバーがリストされます。

列

データ型

NULL

説明

GNAME

VARCHAR2(30)

NOT NULL

レプリケーション・グループの名前。

DBLINK

VARCHAR2(128)

NOT NULL

このレプリケーション・グループのマスター・サイトへのデータベース・リンク。

MASTERDEF

VARCHAR2(1)

-

マスター定義サイトとして指定するDBLINKを示します。

SNAPMASTER

VARCHAR2(1)

-

リフレッシュ時に使用するDBLINKを示します。マテリアライズド・ビュー・サイトの場合に使用されます。

MASTER_COMMENT

VARCHAR2(80)

-

ユーザーが入力するコメント。

MASTER

VARCHAR2(1)

-

Yの場合、サイトはレプリケート・グループのマスター・サイトです。
Nの場合、サイトはレプリケート・グループのマスター・サイトではありません。

GROUP_OWNER

VARCHAR2(30)

NOT NULL

レプリケーション・グループの所有者。

DBA_REPSITESビューには、次の列も含まれます。

列

データ型

NULL

説明

PROP_UPDATES

NUMBER

-

伝播方法のエンコーディング(マスター・サイトの場合)。

MY_DBLINK

VARCHAR2(1)

-

インポート後、問題を検出するために使用されます。Yの場合、DBLINKがグローバル名です。

DBA_REPCAT_REFRESH_TEMPLATES

このビューには、データベース内の各デプロイメント・テンプレートに関するグローバル情報が示されます。テンプレート名、テンプレートの所有者、テンプレート・オブジェクトが属するリフレッシュ・グループ、テンプレートの種類(プライベートまたはパブリック)などの情報があります。

このビューの列は、ALL_REPCAT_REFRESH_TEMPLATESの列と同じです。このビューおよびその列の詳細は、「ALL_REPCAT_REFRESH_TEMPLATES」を参照してください。

DBA_REPCAT_TEMPLATE_OBJECTS

DBA_REPCAT_TEMPLATE_OBJECTSビューには、データベース内のすべてのデプロイメント・テンプレートの各オブジェクト定義が示されます。REFRESH_TEMPLATE_NAMEにターゲット・テンプレートを指定すると、各オブジェクトがテンプレートに追加されます。

このビューの列は、ALL_REPCAT_TEMPLATE_OBJECTSの列と同じです。このビューおよびその列の詳細は、「ALL_REPCAT_TEMPLATE_OBJECTS」を参照してください。

DBA_REPCAT_TEMPLATE_PARMS

データベース内のすべてのテンプレートのオブジェクトDDLで定義されたパラメータは、DBA_REPCAT_TEMPLATE_PARMS表に格納されます。オブジェクトがテンプレートに追加されると、DDLに変数があるかどうかが検査されます。パラメータが見つかると、自動的にこのビューに追加されます。

このビューの列は、ALL_REPCAT_TEMPLATE_PARMSの列と同じです。このビューおよびその列の詳細は、「ALL_REPCAT_TEMPLATE_PARMS」を参照してください。

DBA_REPCAT_TEMPLATE_SITES

DBA_REPCAT_TEMPLATE_SITESビューは、エンタープライズ・ネットワークのすべてのサイトにおける、テンプレートのインスタンス化のカレント・ステータス情報をDBAに提供します。このビューには、データベース内のすべてのデプロイメント・テンプレートのインスタンス化サイトの情報が示されます。具体的には、DBAは、特定のサイトで実行されるテンプレートのインストールや削除を監視できます。このビューの列は、ALL_REPCAT_TEMPLATE_SITESの列と同じです。

DBA_REPCAT_USER_AUTHORIZATIONS

The DBA_REPCAT_USER_AUTHORIZATIONSビューには、プライベート用に指定された、データベース内のすべてのテンプレートに対する認証ユーザーがリストされます。このビューにリストされたユーザーは、指定されたテンプレートをインスタンス化できます。このビューにリストされないユーザーはテンプレートをインスタンス化できません。このビューの列は、ALL_REPCAT_USER_AUTHORIZATIONSの列と同じです。

DBA_REPCAT_USER_PARM_VALUES

DBA_REPCAT_USER_PARM_VALUESビューには、データベース内のすべてのデプロイメント・テンプレートのテンプレート・パラメータが示されます。DBAには、テンプレートを配布してインスタンス化する前に、ユーザー・パラメータの表を作成するオプションの機能があります。指定されたユーザーがテンプレートをインスタンス化する場合は、そのユーザー用にDBA_REPCAT_USER_PARM_VALUES表に格納された値が自動的に使用されます。

このビューの列は、ALL_REPCAT_USER_PARM_VALUESの列と同じです。このビューおよびその列の詳細は、「ALL_REPCAT_USER_PARM_VALUES」を参照してください。

DBA_REPCATLOG

各マスター・サイトのDBA_REPCATLOGビューには、非同期管理要求および生成されたエラー・メッセージの暫定的なステータスの情報が示されます。要求の処理中に生成されたすべてのエラー・メッセージは、その要求を作成したマスター・サイトのDBA_REPCATLOGビューに転送されます。エラーが発生せずに管理要求が正常に完了した場合は、この要求に関するすべてのトレースは、DBA_REPCATLOGビューから削除されます。このビューの列は、ALL_REPCATLOGの列と同じです。

DBA_REPCOLUMN

DBA_REPCOLUMNビューには、データベース内のすべての表のレプリケートされた列がリストされます。このビューの列は、ALL_REPCOLUMNの列と同じです。

DBA_REPCOLUMN_GROUP

DBA_REPCOLUMN_GROUPビューには、データベース内の各レプリケート表の列グループがリストされます。このビューの列は、ALL_REPCOLUMN_GROUPの列と同じです。

DBA_REPCONFLICT

DBA_REPCONFLICTビューには、競合解消メソッドが定義されている、データベース内の各表の名前と、競合解消メソッドを適用する競合のタイプが表示されます。このビューの列は、ALL_REPCONFLICTの列と同じです。

DBA_REPDDL

DBA_REPDDLには、データベース内の各レプリケーション・オブジェクトのDDLが示されます。このビューの列は、ALL_REPDDLの列と同じです。

DBA_REPEXTENSIONS

DBA_REPEXTENSIONSビューには、マスター・グループを静止させずに、マスター・グループに新しいマスター・サイトを追加しようとしているカレント操作の情報が示されます。

関連項目:
レプリケーション環境に新しいマスター・サイトを追加するプロシージャの詳細は、「マスター・グループを静止することなく、新しいマスター・サイトを追加」を参照してください。

列

データ型

NULL

説明

EXTENSION_ID

RAW(16)

NOT NULL

静止せずにマスター・グループにマスター・データベースを追加する、カレントの保留要求の識別子。

REQUEST

VARCHAR2(15)

-

拡張要求タイプ。現在可能な値は、ADD_NEW_MASTERSのみであり、この値は、静止せずにマスター・グループに新しいマスター・サイトを追加する要求を示します。

MASTERDEF

VARCHAR2(128)

-

マスター・サイトが追加されるマスター・グループのマスター定義サイトのグローバル名。

EXPORT_REQUIRED

VARCHAR2(3)

-

YESは、データベース全体または表レベルのエクスポート/インポートを使用して、1つ以上の新しいマスター・サイトが追加されることを示します。
NOは、変更ベースのリカバリを使用して、すべての新しいマスター・サイトが追加されることを示します。

REPCATLOG_ID

NUMBER

-

レプリケーション拡張に関連するレプリケーション・カタログ・レコードの識別子。マスター定義サイトは、このレコード上で待機します。この値は、マスター定義サイトでのみ有効です。

EXTENSION_STATUS

VARCHAR2(13)

-

各レプリケーション拡張のステータス。この値は、マスター定義サイトでのみ有効です。
可能な値は次のとおりです。

READY: 拡張要求が作成され、準備が完了しています。

STOPPING: マスター・グループへの新しいマスター・サイトの追加が完了しました。マスター定義サイトは、既存のマスター・サイトから新しいマスター・サイトおよびマスター定義サイト自体への伝播を停止しようとしています。

EXPORTING: 既存のマスター・サイトから新しいマスター・サイトおよびマスター定義サイトへの遅延トランザクションの伝播が停止しました。マスター定義サイトは、エクスポートの完了を待機しています。

INSTANTIATING: DBMS_REPCAT.RESUME_PROPAGATION_TO_MDEFプロシージャが実行されています(エクスポートが使用された場合)。マスター定義サイトは、新しいマスター・サイトがインスタンス化されるのを待機しています。

ERROR: 拡張要求の実行時にエラーが発生しました。

FLASHBACK_SCN

NUMBER

-

新しいマスター・サイトを追加するときに、エクスポートまたは変更ベースのリカバリで使用する必要があるシステム変更番号(SCN)。新しいマスター・サイトは、リストされたSCNと整合性がある必要があります。

BREAK_TRANS_TO_MASTERDEF

VARCHAR2(3)

-

この値は、EXPORT_REQUIREDがTRUEの場合のみ有効です。
BREAK_TRANS_TO_MASTERDEFがTRUEの場合、既存のマスター・サイトは、マスター・サイトが追加されていないレプリケーション・グループのために、マスター定義サイトへの遅延トランザクションの伝播を継続できます。マスター・サイトが追加されているレプリケーション・グループの遅延トランザクションは、エクスポートが完了するまで伝播できません。

BREAK_TRANS_TO_MASTERDEFがFALSEの場合、既存のマスター・サイトは、遅延トランザクションをマスター定義サイトにまったく伝播できません。

BREAK_TRANS_TO_NEW_MASTERS

VARCHAR2(3)

-

BREAK_TRANS_TO_NEW_MASTERSがTRUEの場合、既存のマスター・サイトは、マスター・サイトが追加されていないレプリケーション・グループのために、新しいマスター・サイトへの遅延トランザクションの伝播を継続できます。
BREAK_TRANS_TO_NEW_MASTERSがFALSEの場合、遅延トランザクション・キューの新しいマスターへの伝播は無効になります。

PERCENTAGE_FOR_CATCHUP_MDEF

NUMBER

-

この値はBREAK_TRANS_TO_MASTERDEFがTRUEの場合のみ有効です。
マスター定義サイトへの伝播に追いつくために使用する、伝播リソースのパーセンテージです。

CYCLE_SECONDS_MDEF

NUMBER

-

この値は、PERCENTAGE_FOR_CATCHUP_MDEFが有効であり、かつその値が10以上90以下の値に設定されている場合に有効です。この場合、マスター定義サイトへの伝播は、拡張されていないレプリケーション・グループと拡張されているレプリケーション・グループの間で交互に切り替わり、1サイクルごとに各グループに1回データがプッシュされます。この値は、1サイクルの長さを秒単位で示します。

PERCENTAGE_FOR_CATCHUP_NEW

NUMBER

-

この値はBREAK_TRANS_TO_NEW_MASTERSがTRUEの場合のみ有効です。
新しいマスター・サイトへの伝播に追いつくために使用する、伝播リソースのパーセンテージです。

CYCLE_SECONDS_NEW

NUMBER

-

この値は、PERCENTAGE_FOR_CATCHUP_NEWが有効であり、かつその値が10以上90以下の値に設定されている場合に有効です。この場合、新しいマスターへの伝播は、拡張されていないレプリケーション・グループと拡張されているレプリケーション・グループに対して、各サイクル中にプッシュが行われるたびに、交互に実行されます。この値は、1サイクルの長さを秒単位で示します。

DBA_REPGENOBJECTS

DBA_REPGENOBJECTSビューには、レプリケーションのサポート用に生成された、データベース内の各オブジェクトが示されます。このビューの列は、ALL_REPGENOBJECTSの列と同じです。

DBA_REPGROUP

DBA_REPGROUPには、データベース内のすべてのレプリケーション・グループが示されます。各レプリケーション・グループのメンバーは、DBA_REPOBJECTビューにリストされます。DBA_REPGROUPビューの列は、ALL_REPGROUPの列と同じです。

DBA_REPGROUP_PRIVILEGES

DBA_REPGROUP_PRIVILEGESビューには、レプリケーション・グループ内で権限を登録されているユーザーの情報が示されます。データベース内のすべてのリフレッシュ・グループが表示されます。このビューの列は、ALL_REPGROUP_PRIVILEGESの列と同じです。

DBA_REPGROUPED_COLUMN

DBA_REPGROUPED_COLUMNビューには、データベース内の各表の列グループを構成する、すべての列が示されます。このビューの列は、ALL_REPGROUPED_COLUMNの列と同じです。

DBA_REPKEY_COLUMNS

DBA_REPKEY_COLUMNSビューには、データベース内の各表の1つ以上のレプリケーション・キー列が示されます。このビューの列は、ALL_REPKEY_COLUMNSの列と同じです。

DBA_REPOBJECT

DBA_REPOBJECTビューには、データベースの各レプリケーション・グループ内のオブジェクトの情報が示されます。オブジェクトは、1つのレプリケーション・グループのみに属します。レプリケーション・グループは、複数のスキーマにまたがることができます。このビューの列は、ALL_REPOBJECTの列と同じです。

DBA_REPPARAMETER_COLUMN

DBA_REPPARAMETER_COLUMNビューには、DBA_REPRESOLUTIONビューに示される情報と、データベース内の各レプリケート表の競合解消に使用される列の情報が示されます。これらの列の値は、list_of_column_namesの引数として、DBMS_REPCATパッケージのADD_conflicttype_RESOLUTIONプロシージャに渡されます。このビューの列は、ALL_REPPARAMETER_COLUMNの列と同じです。

DBA_REPPRIORITY

DBA_REPPRIORITYビューには、データベース内の各優先グループの各メンバーの値および優先順位レベルが示されます。優先グループには、レプリケーション・グループ内で一意の名前を付ける必要があります。また、指定された優先グループ内のそれぞれの優先順位レベルと値は、そのグループ内で一意であることが必要です。このビューの列は、ALL_REPPRIORITYの列と同じです。

DBA_REPPRIORITY_GROUP

DBA_REPPRIORITY_GROUPビューには、データベース内の各レプリケーション・グループに定義された、優先グループまたはサイト優先グループが示されます。このビューの列は、ALL_REPPRIORITY_GROUPの列と同じです。

DBA_REPPROP

DBA_REPPROPビューには、各レプリケート・オブジェクトに対する操作を、他のマスター・サイトにある同じオブジェクトに伝播する手法が示されます。操作の伝播は、ストアド・プロシージャやプロシージャ・ラップ・プログラムをコールしたり、表を直接操作することによって実行します。このビューに示されるのは、データベース内のすべてのオブジェクトです。このビューの列は、ALL_REPPROPの列と同じです。

DBA_REPRESOL_STATS_CONTROL

DBA_REPRESOL_STATS_CONTROLビューには、データベース内のすべてのレプリケート表に対する、競合解消の統計収集が示されます。このビューの列は、ALL_REPRESOL_STATS_CONTROLの列と同じです。

DBA_REPRESOLUTION

DBA_REPRESOLUTIONビューには、データベース内の各レプリケート表での更新、一意性または削除の競合の解消に使用する方法が示されます。この場合の表は、指定されたスキーマに対する行レベル・レプリケーションによってレプリケートされています。このビューの列は、ALL_REPRESOLUTIONの列と同じです。

DBA_REPRESOLUTION_METHOD

DBA_REPRESOLUTION_METHODビューには、データベース内で使用可能な競合解消メソッドがすべてリストされます。まず、このビューには、アドバンスト・レプリケーション機能で提供する標準の方法がリストされます。新しいユーザー・ファンクションを作成してデータベース内のオブジェクト用の競合解消メソッドとして追加すると、そのファンクションがこのビューに追加されます。このビューの列は、ALL_REPRESOLUTION_METHODの列と同じです。

DBA_REPRESOLUTION_STATISTICS

DBA_REPRESOLUTION_STATISTICSビューには、データベース内のすべてのレプリケート表に対して、正常に実行された更新、一意性または削除の競合解消の情報がリストされます。これらの統計情報は、DBMS_REPCAT.REGISTER_STATISTICSプロシージャをコールした場合にかぎり、表に対して収集されます。DBA_REPRESOLUTION_STATISTICSビューの列は、ALL_REPRESOLUTION_STATISTICSの列と同じです。

DBA_REPSITES

DBA_REPSITESビューには、データベース内の各レプリケーション・グループのメンバーがリストされます。

このビューには、ALL_REPSITESビューとUSER_REPSITESビューには含まれていない次の追加の列が含まれています。

列

データ型

NULL

説明

PROP_UPDATES

NUMBER

-

伝播方法のエンコーディング(マスター・サイトの場合)。

MY_DBLINK

VARCHAR2(1)

-

インポート後、問題を検出するために使用されます。Yの場合、このdblinkがグローバル名になります。

このビューの列は、これらの追加の列を除き、ALL_REPSITESの列と同じです。

DBA_REPSITES_NEW

DBA_REPSITES_NEWビューには、レプリケーション環境への追加を計画している新しいレプリケーション・サイトがリストされます。

関連項目:
レプリケーション環境に新しいマスター・サイトを追加するプロシージャの詳細は、「マスター・グループを静止することなく、新しいマスター・サイトを追加」を参照してください。

列

データ型

NULL

説明

EXTENSION_ID

RAW(16)

NOT NULL

静止せずにマスター・グループにマスター・データベースを追加する、カレントの保留要求の識別子。

GOWNER

VARCHAR2(30)

NOT NULL

マスター・グループを所有するユーザーの名前。

GNAME

VARCHAR2(30)

NOT NULL

マスター・グループの名前。

DBLINK

VARCHAR2(128)

NOT NULL

新しいマスター・サイトのデータベース・リンク。

FULL_INSTANTIATION

VARCHAR2(1)

-

Yは、データベース全体のエクスポート/インポートまたは変更ベースのリカバリを使用して、DBLINKの新しいデータベースが追加されることを示します。
Nは、オブジェクトレベルのエクスポート/インポートを使用して、DBLINKの新しいデータベースが追加されることを示します。

MASTER_STATUS

VARCHAR2(13)

-

新しいマスター・サイトのインスタンス化ステータス。この値は、マスター定義サイトでのみ有効です。
可能な値は次のとおりです。

READY: 新しいマスター・サイトの準備が完了しています。

INSTANTIATING: 新しいマスター・サイトのインスタンス化処理が実行されています。

INSTANTIATED: 新しいマスター・サイトのインスタンス化が完了し、レプリケーション・アクティビティが準備されています。つまり、DBMS_REPCAT.PREPARE_INSTANTIATED_MASTERプロシージャが実行されています。

PREPARED: 新しいマスター・サイトから準備が完了している他のマスター、既存のマスターおよびマスター定義サイトへの遅延トランザクションの伝播が使用可能になりました。これで、新しいマスター・サイトがレプリケーション環境に参加する準備が完了しました。

USER_REPCAT_REFRESH_TEMPLATES

このビューには、カレント・ユーザーが所有する各デプロイメント・テンプレートに関するグローバル情報が含まれます。テンプレート名、テンプレートの所有者、テンプレート・オブジェクトが属するリフレッシュ・グループ、テンプレートの種類(プライベートまたはパブリック)などの情報があります。

このビューの列は、ALL_REPCAT_REFRESH_TEMPLATESの列と同じです。このビューおよびその列の詳細は、「ALL_REPCAT_REFRESH_TEMPLATES」を参照してください。

USER_REPCAT_TEMPLATE_OBJECTS

USER_REPCAT_TEMPLATE_OBJECTSビューには、カレント・ユーザーが所有する各デプロイメント・テンプレートの各オブジェクト定義が示されます。REFRESH_TEMPLATE_NAMEにターゲット・テンプレートを指定すると、各オブジェクトがテンプレートに追加されます。

このビューの列は、ALL_REPCAT_TEMPLATE_OBJECTSの列と同じです。このビューおよびその列の詳細は、「ALL_REPCAT_TEMPLATE_OBJECTS」を参照してください。

USER_REPCAT_TEMPLATE_PARMS

カレント・ユーザーが所有するすべてのテンプレートのオブジェクトDDLで定義されたパラメータは、USER_REPCAT_TEMPLATE_PARMS表に格納されます。オブジェクトがテンプレートに追加されると、DDLに変数があるかどうかが検査され、パラメータが見つかると自動的にこのビューに追加されます。

このビューの列は、ALL_REPCAT_TEMPLATE_PARMSの列と同じです。このビューおよびその列の詳細は、「ALL_REPCAT_TEMPLATE_PARMS」を参照してください。

USER_REPCAT_TEMPLATE_SITES

USER_REPCAT_TEMPLATE_SITESビューは、エンタープライズ・ネットワークのサイトにおける、テンプレートのインスタンス化のカレント・ステータス情報をユーザーに提供します。カレント・ユーザーが所有しているデプロイメント・テンプレートのインスタンス化サイトの情報も示されます。具体的には、ユーザーは、特定のサイトで実行されるテンプレートのインストールや削除を監視できます。このビューの列は、ALL_REPCAT_TEMPLATE_SITESの列と同じです。

USER_REPCAT_USER_AUTHORIZATION

USER_REPCAT_USER_AUTHORIZATIONビューには、プライベート用に指定された、カレント・ユーザーが所有するすべてのテンプレートに対する認証ユーザーがリストされます。このビューにリストされたユーザーは、指定されたテンプレートをインスタンス化できます。このビューにリストされないユーザーはテンプレートをインスタンス化できません。このビューの列は、ALL_REPCAT_USER_AUTHORIZATIONSの列と同じです。

USER_REPCAT_USER_PARM_VALUES

USER_REPCAT_USER_PARM_VALUESビューには、カレント・ユーザーが所有するすべてのデプロイメント・テンプレートのテンプレート・パラメータが示されます。DBAには、テンプレートを配布してインスタンス化する前に、ユーザー・パラメータの表を作成するオプションの機能があります。指定されたユーザーがテンプレートをインスタンス化する場合は、そのユーザー用にUSER_REPCAT_USER_PARM_VALUESビューに格納された値が自動的に使用されます。

このビューの列は、ALL_REPCAT_USER_PARM_VALUESの列と同じです。このビューおよびその列の詳細は、「ALL_REPCAT_USER_PARM_VALUES」を参照してください。

USER_REPCATLOG

各マスター・サイトのUSER_REPCATLOGビューには、非同期管理要求および生成されたエラー・メッセージの暫定的なステータスの情報が示されます。要求の処理中に生成されたすべてのエラー・メッセージは、その要求を作成したマスター・サイトのUSER_REPCATLOGビューに転送されます。エラーが発生せずに管理要求が正常に完了した場合は、この要求に関するすべてのトレースは、USER_REPCATLOGビューから削除されます。

このビューに含まれる非同期管理要求およびエラー・メッセージは、カレント・ユーザーが所有しています。このビューの列は、ALL_REPCATLOGの列と同じです。

USER_REPCOLUMN

USER_REPCOLUMNビューには、カレント・ユーザーが所有するすべての表のレプリケートされた列がリストされます。このビューの列は、ALL_REPCOLUMNの列と同じです。

USER_REPCOLUMN_GROUP

USER_REPCOLUMN_GROUPビューには、カレント・ユーザーが所有する各レプリケート表の列グループがリストされます。このビューの列は、ALL_REPCOLUMN_GROUPの列と同じです。

注意:
USER_REPCOLUMN_GROUPビューには、SNAME列が示されません。この列は、ALL_REPCOLUMN_GROUPビューおよびDBA_REPCOLUMN_GROUPビューに示されます。

USER_REPCONFLICT

USER_REPCONFLICTビューには、競合解消メソッドが定義されている、カレント・ユーザーが所有する各表の名前と、その方法で解消される競合のタイプが表示されます。このビューの列は、ALL_REPCONFLICTの列と同じです。

注意:
USER_REPCONFLICTビューには、SNAME列が示されません。この列は、ALL_REPCONFLICTビューおよびDBA_REPCONFLICTビューに示されます。

USER_REPDDL

USER_REPDDLには、カレント・ユーザーが所有する各レプリケーション・オブジェクトのDDLが示されます。このビューの列は、ALL_REPDDLの列と同じです。

USER_REPGENOBJECTS

USER_REPGENOBJECTSビューには、レプリケーションのサポート用に生成された、カレント・ユーザーが所有する各オブジェクトが示されます。このビューの列は、ALL_REPGENOBJECTSの列と同じです。

USER_REPGROUP

USER_REPGROUPビューには、カレント・ユーザーが所有するすべてのレプリケーション・グループが示されます。各レプリケーション・グループのメンバーは、USER_REPOBJECTビューにリストされます。USER_REPGROUPビューの列は、ALL_REPGROUPの列と同じです。

USER_REPGROUP_PRIVILEGES

USER_REPGROUP_PRIVILEGESビューには、レプリケーション・グループ内で権限を登録されているユーザーの情報が示されます。カレント・ユーザーが所有しているレプリケーション・グループのみが表示されます。このビューの列は、ALL_REPGROUP_PRIVILEGESの列と同じです。

USER_REPGROUPED_COLUMN

USER_REPGROUPED_COLUMNビューには、各表の列グループを構成する、すべての列がリストされます。このビューの列は、ALL_REPGROUPED_COLUMNの列と同じです。

注意:
USER_REPGROUPED_COLUMNビューには、SNAME列が示されません。この列は、ALL_REPGROUPED_COLUMNビューおよびDBA_REPGROUPED_COLUMNビューに示されます。

USER_REPKEY_COLUMNS

USER_REPKEY_COLUMNSビューには、カレント・ユーザーが所有する各表の1つ以上のレプリケーション・キー列が示されます。このビューの列は、ALL_REPKEY_COLUMNSの列と同じです。

USER_REPOBJECT

USER_REPOBJECTビューには、カレント・ユーザーが所有する各レプリケーション・グループ内のオブジェクトの情報が示されます。オブジェクトは、1つのレプリケーション・グループのみに属します。レプリケーション・グループは、複数のスキーマにまたがることができます。このビューの列は、ALL_REPOBJECTの列と同じです。

USER_REPPARAMETER_COLUMN

USER_REPPARAMETER_COLUMNビューには、USER_REPRESOLUTIONビューに示される情報と、カレント・ユーザーが所有する各レプリケート表の競合解消に使用される列の情報が示されます。これらの列の値は、list_of_column_namesの引数として、DBMS_REPCATパッケージのADD_conflicttype_RESOLUTIONプロシージャに渡されます。このビューの列は、ALL_REPPARAMETER_COLUMNの列と同じです。

注意:
USER_REPPARAMETER_COLUMNビューには、SNAME列が示されません。この列は、ALL_REPPARAMETER_COLUMNビューおよびDBA_REPPARAMETER_COLUMNビューに示されます。

USER_REPPRIORITY

USER_REPPRIORITYビューには、カレント・ユーザーが所有する各優先グループの各メンバーの値および優先順位レベルが示されます。優先グループには、レプリケーション・グループ内で一意の名前を付ける必要があります。また、指定された優先グループ内のそれぞれの優先順位レベルと値は、そのグループ内で一意であることが必要です。このビューの列は、ALL_REPPRIORITYの列と同じです。

注意:
USER_REPPRIORITYビューには、SNAME列が示されません。この列は、ALL_REPPRIORITYビューおよびDBA_REPPRIORITYビューに示されます。

USER_REPPRIORITY_GROUP

USER_REPPRIORITY_GROUPビューには、カレント・ユーザーが所有する各レプリケーション・グループに定義された、優先グループまたはサイト優先グループが示されます。このビューの列は、ALL_REPPRIORITY_GROUPの列と同じです。

USER_REPPROP

USER_REPPROPビューには、各レプリケート・オブジェクトに対する操作を、他のマスター・サイトにある同じオブジェクトに伝播する手法が示されます。操作の伝播は、ストアド・プロシージャやプロシージャ・ラップ・プログラムをコールしたり、表を直接操作することによって実行します。このビューに示されるのは、カレント・ユーザーが所有するオブジェクトです。このビューの列は、ALL_REPPROPの列と同じです。

USER_REPRESOL_STATS_CONTROL

USER_REPRESOL_STATS_CONTROLビューには、カレント・ユーザーが所有するすべてのレプリケート表に対する、競合解消の統計収集が示されます。このビューの列は、ALL_REPRESOL_STATS_CONTROLの列と同じです。

注意:
USER_REPRESOL_STATS_CONTROLビューには、SNAME列が示されません。この列は、ALL_REPRESOL_STATS_CONTROLビューおよびDBA_REPRESOL_STATS_CONTROLビューに示されます。

USER_REPRESOLUTION

USER_REPRESOLUTIONビューには、現在のユーザーに所有されるデータベース内の各表での更新、一意性または削除の競合の解消に使用する方法が示されます。この場合の表は、指定されたスキーマに対する行レベル・レプリケーションによってレプリケートされています。このビューの列は、ALL_REPRESOLUTIONの列と同じです。

注意:
USER_REPREPRESOLUTIONビューには、SNAME列が示されません。この列は、ALL_REPREPRESOLUTIONビューおよびDBA_REPREPRESOLUTIONビューに示されます。

USER_REPRESOLUTION_METHOD

USER_REPRESOLUTION_METHODビューには、データベース内で使用可能な競合解消メソッドがすべてリストされます。まず、このビューには、アドバンスト・レプリケーション機能で提供する標準の方法がリストされます。新しいユーザー・ファンクションを作成してデータベース内のオブジェクト用の競合解消メソッドとして追加すると、そのファンクションがこのビューに追加されます。このビューの列は、ALL_REPRESOLUTION_METHODの列と同じです。

USER_REPRESOLUTION_STATISTICS

USER_REPRESOLUTION_STATISTICSビューには、カレント・ユーザーが所有するすべてのレプリケート表に対して、正常に実行された更新、一意性または削除の競合解消の情報がリストされます。これらの統計情報は、DBMS_REPCAT.REGISTER_STATISTICSプロシージャをコールした場合にかぎり、表に対して収集されます。USER_REPRESOLUTION_STATISTICSビューの列は、ALL_REPRESOLUTION_STATISTICSの列と同じです。

注意:
USER_REPRESOLUTION_STATISTICSビューには、SNAME列が示されません。この列は、ALL_REPRESOLUTION_STATISTICSビューおよびDBA_REPRESOLUTION_STATISTICSビューに示されます。

USER_REPSITES

USER_REPSITESビューには、カレント・ユーザーが所有する各レプリケーション・グループのメンバーがリストされます。このビューの列は、ALL_REPSITESの列と同じです。

24 レプリケーション動的パフォーマンス・ビュー

この章では、すべてのOracleインストールに含まれているV$ビューと呼ばれる動的パフォーマンス・ビューについて説明します。このビューは、マスター・サイトおよびマテリアライズド・ビュー・サイトが、現在リフレッシュ中のマテリアライズド・ビューの情報や遅延トランザクション・キューに関する統計情報などを決定する際に使用します。

この章には、次の項が含まれます。

- V$MVREFRESH

- V$REPLPROP

- V$REPLQUEUE

関連項目:
第10章「レプリケーション環境の監視」

V$MVREFRESH

現在リフレッシュ中のマテリアライズド・ビューの情報が含まれます。

列

データ型

説明

SID

NUMBER

セッションの識別子。

SERIAL#

NUMBER

セッションのオブジェクトの識別に使用される、セッションのシリアル番号。セッションが終了して別のセッションが同じセッションIDで開始した場合、セッション・レベルのコマンドが正しいセッション・オブジェクトに適用されることを保証します。

CURRMVOWNER

VARCHAR2(31)

現在リフレッシュ中のマテリアライズド・ビューの所有者。マテリアライズド・ビューはこのユーザーのスキーマに常駐します。

CURRMVNAME

VARCHAR2(31)

現在リフレッシュ中のマテリアライズド・ビューの名前。

V$REPLPROP

現在レプリケーション・サイトで進行中のパラレル伝播の情報が含まれます。このビューは、現在伝播中のトランザクション、各トランザクションで伝播される通話数、およびパラレル伝播のプロセスまたはコーディネータ・プロセスのカレント・アクティビティの決定に使用します。

注意:
このビューには、カレント・サイトで遅延トランザクションがパラレル伝播を使用してプッシュされているときにのみデータが含まれます。パラレル伝播を使用してプッシュを行うには、parallelismパラメータをDBMS_DEFER_SYS.PUSHファンクションで1以上に設定する必要があります。この設定を行わないと、プッシュはシリアル伝播を使用して行われ、プッシュ中にこのビューにはデータは表示されません。

列

データ型

説明

SID

NUMBER

セッションの識別子。

SERIAL#

NUMBER

セッションのシリアル番号。セッションのオブジェクトの識別に使用されます。セッションが終了して別のセッションが同じセッションIDで開始した場合、セッション・レベルのコマンドが正しいセッション・オブジェクトに適用されることを保証します。

NAME

VARCHAR2(71)

Replication Parallel Prop Slave nはプロセスがアクティブで、待機中、遅延トランザクションのプッシュ中、メタデータのパージ中、またはエラー・トランザクションの作成中のいずれかであることを示します。
Replication Parallel Prop Coordinatorはコーディネータ・プロセスがアクティブで、待機中、スリープ中、またはプロセスの操作実行をスケジュール中のいずれかであることを示します。

Replication Parallel Prop Coordinatorは遅延トランザクション・キューからトランザクションを読み取り、Replication Parallel Prop Slavesに割り当てます。その後プロセスがトランザクションを接続先サイトに伝播します。プロセスがプッシュ・セッションでトランザクションをプッシュする場合、プロセスはプッシュするトランザクションがなくなっても、プッシュ・セッションが完了するまでアクティブ状態を続けます。

DBLINK

VARCHAR2(128)

このレプリケーション・セッションの伝播先のデータベース・リンク。

STATE

VARCHAR2(12)

WAITはスレーブ・プロセスまたはコーディネータ・プロセスがイベント(メッセージ)待ち状態であることを示します。
SLEEPはコーディネータ・プロセスが、delay_secondsの設定時間の間はスリープ状態であることを示します。delay_secondsはDBMS_DEFER_SYSパッケージのSCHEDULE_PUSHプロシージャで設定します。

PUSHはスレーブ・プロセスが、遅延トランザクション・キューのトランザクションをリモート・サイトにプッシュ中であることを示します。

PURGEはスレーブ・プロセスが、リモート・サイトから正常に適用されたトランザクションに関連するメタデータをパージ中であることを示します。

CREATE ERRORはスレーブ・プロセスがエラー・トランザクションを作成中であることを示します。この場合、エラーまたは競合はスレーブ・プロセスが遅延トランザクションをリモート・サイトにプッシュする際に発生したものです。

SCHEDULE TXNはコーディネータ・プロセスが、トランザクションの適用順序を決定中であり、かつトランザクションを実行するスレーブ・プロセスを割当て中であることを示します。

XID

VARCHAR2(22)

セッションがスレーブ・セッションの場合は、スレーブが現在伝播中のトランザクションのトランザクションIDを示します。

SEQUENCE

NUMBER

プロセスがスレーブ・プロセスの場合、現在の操作で伝播される通話があればその順序番号。各トランザクションは1つ以上の通話を処理する必要があり、SEQUENCEの値は0(ゼロ)から始まって各通話が処理されるごとに増加します。つまりSEQUENCEの値は、各トランザクションで現在処理中の通話を示しています。この値はスレーブ・プロセスがトランザクション内の全通話を処理するまで増加し続けます。

V$REPLQUEUE

レプリケーションの遅延トランザクション・キューに関する統計が含まれます。現行データベース・インスタンスの開始からすべての値が保存されます。

列

データ型

説明

TXNS_ENQUEUED

NUMBER

遅延トランザクション・キューにエンキューされているトランザクションの数。

CALLS_ENQUEUED

NUMBER

遅延トランザクション・キューにエンキューされる通話の数。

TXNS_PURGED

NUMBER

遅延トランザクション・キューからパージされるトランザクションの数。

LAST_ENQUEUE_TIME

DATE

最後のトランザクションが遅延トランザクション・キューにエンキューされた日付。インスタンスの開始以降、遅延トランザクション・キューにトランザクションが1つもエンキューされていない場合は、この値はNULLになります。

LAST_PURGE_TIME

DATE

最後のトランザクションが遅延トランザクション・キューからパージされた日付。インスタンスの開始以降、遅延トランザクション・キューからトランザクションが1つもパージされていない場合は、この値はNULLになります。

25 マテリアライズド・ビューとリフレッシュ・グループ・ビュー

この章では、マテリアライズド・ビューおよびマテリアライズド・ビューのリフレッシュ・グループの情報を提供するデータ・ディクショナリ・ビューをリストします。

ALL_ビュー

DBA_ビュー

USER_ビュー

ALL_BASE_TABLE_MVIEWS

DBA_BASE_TABLE_MVIEWS

USER_BASE_TABLE_MVIEWS

なし

DBA_MVIEW_LOG_FILTER_COLS

なし

ALL_MVIEW_LOGS

DBA_MVIEW_LOGS

USER_MVIEW_LOGS

ALL_MVIEW_REFRESH_TIMES

DBA_MVIEW_REFRESH_TIMES

USER_MVIEW_REFRESH_TIMES

ALL_MVIEWS

DBA_MVIEWS

USER_MVIEWS

なし

DBA_RCHILD

なし

ALL_REFRESH

DBA_REFRESH

USER_REFRESH

ALL_REFRESH_CHILDREN

DBA_REFRESH_CHILDREN

USER_REFRESH_CHILDREN

ALL_REGISTERED_MVIEWS

DBA_REGISTERED_MVIEWS

USER_REGISTERED_MVIEWS

なし

DBA_RGROUP

なし

関連項目:

- これらのビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

- これらのビューの一部を使用する問合せの例については、第10章「レプリケーション環境の監視」を参照してください。

26 遅延トランザクション・ビュー

Oracleには、遅延トランザクションを管理するためのビューがいくつか用意されています。これらのビューは、トランザクションの接続先、トランザクションを構成する遅延コール、トランザクションの処理中に発生するエラーなど、遅延トランザクションに関する情報を提供します。

この章には、次の項が含まれます。

- DEFCALL

- DEFCALLDEST

- DEFDEFAULTDEST

- DEFERRCOUNT

- DEFERROR

- DEFLOB

- DEFPROPAGATOR

- DEFSCHEDULE

- DEFTRAN

- DEFTRANDEST

注意:
表を直接変更しないでください。変更が必要な場合は、DBMS_DEFERおよびDBMS_DEFER_SYSパッケージに用意されているプロシージャを使用してください。

関連項目:
第10章「レプリケーション環境の監視」

DEFCALL

すべての遅延リモート・プロシージャ・コールが記録されます。

非同期レプリケーションを使用してキューに配置されたコールについては、3つ以上連続するNULLを含む列オブジェクトおよびオブジェクト表にはNULL圧縮が使用されます。そのため、このビューには列オブジェクトの属性やオブジェクト表の列が合計より少なく表示される場合があります。たとえばNULL圧縮のため、8つの属性を持つ列オブジェクトに5つの属性しか表示されない場合があります。

NULL圧縮はエラー・トランザクションには適用されません。

列

データ型

NULL

説明

CALLNO

NUMBER

-

トランザクション処理中のコールの一意なID。

DEFERRED_TRAN_ID

VARCHAR2(30)

-

対応付けられたトランザクションの一意なID。

SCHEMANAME

VARCHAR2(30)

-

遅延コールのスキーマ名。

PACKAGENAME

VARCHAR2(30)

-

遅延コールのパッケージ名。レプリケート表では、表名を示す場合があります。

PROCNAME

VARCHAR2(30)

-

遅延コールのプロシージャ名。レプリケート表では、操作名を示す場合があります。

ARGCOUNT

NUMBER

-

遅延コールの引数の数。

DEFCALLDEST

各遅延リモート・プロシージャ・コールの接続先がリストされます。

列

データ型

NULL

説明

CALLNO

NUMBER

NOT NULL

トランザクション処理中のコールの一意なID。

DEFERRED_TRAN_ID

VARCHAR2(30)

NOT NULL

DEFTRANビューのDEFERRED_TRAN_ID列に対応しています。各遅延トランザクションには、1つ以上の遅延コールが含まれます。

DBLINK

VARCHAR2(128)

NOT NULL

接続先データベースの完全修飾名。

DEFDEFAULTDEST

Advanced Replicationを使用せず、遅延トランザクションの接続先や、トランザクション処理中のコールを指定しない場合、OracleはDEFDEFAULTDESTビューを使用して、リモート・プロシージャ・コールを遅らせるための接続先データベースを判別します。

列

データ型

NULL

説明

DBLINK

VARCHAR2(128)

NOT NULL

トランザクションのレプリケート先の、完全修飾されたデータベース名。

DEFERRCOUNT

接続先に対するエラー・トランザクションの情報が含まれます。

列

データ型

NULL

説明

ERRCOUNT

NUMBER

-

接続先でエラー原因となった既存のトランザクションの数。

DESTINATION

VARCHAR2(128)

-

接続先を指定するためのデータベース・リンク。

DEFERROR

適用できなかった各トランザクションのIDが含まれます。このIDを使用して、このトランザクションに対応付けられたキューに入れられたコールを指定できます。これらのコールは、DEFCALLビューに格納されています。DBMS_DEFER_QUERYパッケージのプロシージャを使用して、DEFCALLビューにリストされているプロシージャに対する引数を指定できます。

列

データ型

NULL

説明

DEFERRED_TRAN_ID

VARCHAR2(22)

NOT NULL

エラー原因となっているトランザクションのID。

ORIGIN_TRAN_DB

VARCHAR2(128)

-

遅延トランザクションを作成したデータベース。

ORIGIN_TRAN_ID

VARCHAR2(22)

-

トランザクションの元のID。

CALLNO

NUMBER

-

DEFERRED_TRAN_IDのコールの一意なID。

DESTINATION

VARCHAR2(128)

-

接続先を指定するためのデータベース・リンク。

START_TIME

DATE

-

元のトランザクションがエンキューされた時刻。

ERROR_NUMBER

NUMBER

-

Oracleエラー番号。

ERROR_MSG

VARCHAR2(2000)

-

エラー・メッセージのテキスト。

RECEIVER

VARCHAR2(30)

-

遅延トランザクションの元の受信者。

DEFLOB

遅延リモート・プロシージャ・コール(RPC)へのLOBパラメータが含まれます。

列

データ型

NULL

説明

ID

RAW(16)

NOT NULL

LOBパラメータの識別子。

DEFERRED_TRAN_ID

VARCHAR2(22)

-

このLOBパラメータを使用した遅延リモート・プロシージャ・コール(RPC)のトランザクションID。

BLOB_COL

BLOB(4000)

-

LOBパラメータ(バイナリ)。

CLOB_COL

CLOB(4000)

-

LOBパラメータ(キャラクタ)。

NCLOB_COL

NCLOB(4000)

-

LOBパラメータ(各国語キャラクタ)。

DEFPROPAGATOR

ローカルなプロパゲータの情報が含まれます。

列

データ型

NULL

説明

USERNAME

VARCHAR2(30)

NOT NULL

プロパゲータのユーザー名。

USERID

NUMBER

NOT NULL

プロパゲータのユーザーID。

STATUS

VARCHAR2(7)

-

プロパゲータのステータス。

CREATED

DATE

NOT NULL

プロパゲータが登録された時刻。

DEFSCHEDULE

次にスケジュールされているジョブの実行時刻に関する情報、および伝播統計が含まれます。伝播統計は、カレント・サイトからDBLINK列で指定されたサイトへの遅延トランザクションの伝播に関するものです。

リモート・サイトの伝播統計を消去して最初から始めるには、DBMS_DEFER_SYSパッケージのCLEAR_PROP_STATISTICSプロシージャを使用します。

注意:
このビューの統計は、データベース・リンクでパラレル伝播を使用した場合のみ移入されます。パラレル伝播を使用するには、DBMS_DEFER_SYSパッケージのSCHEDULE_PUSHプロシージャを実行する際に、parallelismパラメータを1以上に設定します。

関連項目:

- パラレル伝播の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

- 「SCHEDULE_PUSHプロシージャ」

- 「CLEAR_PROP_STATISTICSプロシージャ」

列

データ型

NULL

説明

DBLINK

VARCHAR2(128)

NOT NULL

遅延リモート・プロシージャ・コールを定期的に実行するマスター・サイトへの完全修飾パス名。

JOB

NUMBER

-

DBMS_DEFER_SYS.SCHEDULE_PUSHをコールして作成したジョブに割り当てられる番号。ジョブの実行内容を判別するには、USER_JOBSビューのWHAT列に問い合せます。

INTERVAL

VARCHAR2(200)

-

次回遅延トランザクション・キューをプッシュする時刻を計算するためのファンクション。

NEXT_DATE

DATE

-

次回のジョブ実行日。

LAST_DATE

DATE

-

前回キューがプッシュされた日付、または前回この送信先に対してリモート・プロシージャ・コールのプッシュを試みた日付。

DISABLED

CHAR(1)

-

Yの場合、接続先への伝播は無効です。
Nの場合、接続先への伝播は有効です。

LAST_TXN_COUNT

NUMBER

-

前回の実行でプッシュしたトランザクションの数。

LAST_ERROR_NUMBER

NUMBER

-

前回のプッシュでのOracleエラー番号。

LAST_ERROR_MESSAGE

VARCHAR2(2000)

-

前回のプッシュでのエラー・メッセージ。

CATCHUP

RAW(16)

NOT NULL

マスター・グループを静止せずに追加される新しいマスター・サイトに対応付けられた拡張識別子。マスター・サイトに拡張識別子がない場合、この値は00になります。

TOTAL_TXN_COUNT

NUMBER

-

正常終了したトランザクションとエラー・トランザクションの合計数。

AVG_THROUGHPUT

NUMBER

-

パラレル伝播を使用して1秒間に伝播されるトランザクションの平均数。トランザクションには、正常に適用されたトランザクションとリモート・サイトで作成されたエラー・トランザクションの両方が含まれます。伝播コーディネータがアクティブでなかった(スリープ状態だった)間の経過時間も、計算に含まれます。

AVG_LATENCY

NUMBER

-

トランザクションがリモート・サイトで正常に適用された場合、カレント・サイトでのトランザクションの最初のコールからリモート・サイトでトランザクションが適用されたという確認までの平均秒数。最初のコールはトランザクションがコミットされた時点ではなく、ユーザーが最初にデータ操作言語(DML)に変更を加えた時点から開始されます。
トランザクションがエラー・トランザクションの場合、カレント・サイトでのトランザクションの最初のコールからリモート・サイトでエラー・トランザクションがコミットされたという確認までの平均秒数。

TOTAL_BYTES_SENT

NUMBER

-

レプリケート・データおよびメタデータを含む、送信されたバイトの合計数。

TOTAL_BYTES_RECEIVED

NUMBER

-

伝播の確認メッセージで受信されたバイトの合計数。

TOTAL_ROUND_TRIPS

NUMBER

-

データをレプリケートする際に完了した、ネットワークのラウンドトリップの合計数。ラウンドトリップとは、連続して受信される1つ以上のメッセージが後に続く、連続して送信される1つ以上のメッセージです。つまり、サイトAがサイトBに20のメッセージを送り、次にサイトBがサイトAに1つのメッセージを送ると、それで1つのラウンドトリップになります。

TOTAL_ADMIN_COUNT

NUMBER

-

受信サイトで適用されたトランザクション情報のメンテナンスのため送信された管理要求の合計数。受信サイトは、DBLINK列で指定されたサイトになります。この特別な管理はパラレル伝播でのみ必要です。

TOTAL_ERROR_COUNT

NUMBER

-

リモート・エラーが作成された、競合解消不可能な競合の合計数。

TOTAL_SLEEP_TIME

NUMBER

-

伝播コーディネータがアクティブでなかった(スリープ状態だった)合計秒数。伝播コーディネータがスリープ状態になる時間の長さは、DBMS_DEFER_SYS.PUSHファンクションのdelay_secondsパラメータを使用して制御します。

DISABLED_INTERNALLY_SET

VARCHAR2(1)

-

この値はDISABLEDがYの場合のみ使用できます。
DISABLED_INTERNALLY_SETがYの場合は、伝播の同期についてはOracle内部で、マスター・グループを静止せずに新しいマスター・サイトを追加する際は接続先への伝播が使用禁止に設定されています。伝播はのちに自動的に使用可能になります。

DISABLED_INTERNALLY_SETがNの場合、伝播は内部で使用禁止にはされていません。

DEFTRAN

カレント・サイトで遅延トランザクション・キューにある遅延トランザクションをすべて記録します。

列

データ型

NULL

説明

DEFERRED_TRAN_ID

VARCHAR2(30)

-

コールをエンキューしたトランザクションID。

DELIVERY_ORDER

NUMBER

-

キュー内の遅延トランザクションの順序を決定する識別子。識別子は、元のトランザクションのSCNから派生しています。

DESTINATION_LIST

VARCHAR2(1)

-

Rの場合、接続先はALL_REPSITESビューによって決定されます。
Dの場合、接続先はDEFDEFAULTDESTビュー、あるいはTRANSACTIONプロシージャまたはCALLプロシージャのNODE_LIST引数によって決定されます。

START_TIME

DATE

-

元のトランザクションがエンキューされた時刻。

DEFTRANDEST

カレント・サイトで遅延トランザクション・キューにある各遅延トランザクションの接続先をリストします。

列

データ型

NULL

説明

DEFERRED_TRAN_ID

VARCHAR2(30)

NOT NULL

指定されたデータベース・リンクにレプリケートするトランザクションのID。

DELIVERY_ORDER

NUMBER

-

キュー内の遅延トランザクションの順序を決定する識別子。識別子は、元のトランザクションのSCNから派生しています。

DBLINK

VARCHAR2(128)

NOT NULL

接続先データベースの完全修飾名。

第V部

付録

第V部は次の付録で構成されています。

- 付録A「セキュリティ・オプション」

- 付録B「ユーザー定義の競合解消メソッド」

A セキュリティ・オプション

この付録では、マルチマスター・レプリケーションおよびマテリアライズド・ビュー・レプリケーション環境のセキュリティ・オプションについて説明します。

この付録では、次の項目を説明します。

- マルチマスター・レプリケーションのセキュリティ設定

- マテリアライズド・ビュー・レプリケーションのセキュリティ設定

マルチマスター・レプリケーションのセキュリティ設定

ほとんどの場合、マルチマスター・レプリケーションのセキュリティを構成するには、Oracle Enterprise ManagerのAdvanced Replicationインタフェースの構成ウィザードを使用するのが最も簡単です。ただし、レプリケーション・マネージメントAPIを使用してこれらの設定を行うことが必要な場合もあります。

レプリケーション環境を構成するには、データベース管理者がDBA権限で接続して、必要な権限をレプリケーション管理者に付与する必要があります。

最初に、各マスター・サイトで、レプリケーション環境を構成およびメンテナンスする権限と、レプリケートされた変更を伝播および適用する権限を持つユーザー・アカウントを設定します。また、各マスター・サイトでユーザー用のリンクを定義する必要があります。

レプリケーション環境のユーザーのカテゴリとして、レプリケート・オブジェクトにアクセスするエンド・ユーザーに加え、次の3つの特別なカテゴリがあります。

- レプリケーション環境の構成およびメンテナンスを行う、レプリケーション管理者

- 遅延トランザクションを伝播する、プロパゲータ

- これらのトランザクションを適用する、リモート・サイトの受信者

通常は、1人のユーザーが管理者、プロパゲータおよび受信者の役割を果たします。ただし、機能ごとに別々のユーザーを設定することも可能です。1人のグローバル・レプリケーション管理者のみを設定できれば、レプリケーション・グループが複数のスキーマにまたがっていない場合は、異なるスキーマごとに別々のレプリケーション管理者を設定できます。ただし、各データベースに登録できるプロパゲータは1人です。

表A-1に、これらの特別なアカウントに割り当てる必要がある権限を示します。これらのユーザーに必要な権限のほとんどは、レプリケーション・マネージメントAPIへのコールを通じて付与されます。また、特定の権限(データベースへの接続およびデータベース・オブジェクトの管理に必要な権限など)は、直接付与する必要があります。

トラステッド・セキュリティとアントラステッド・セキュリティの比較

ユーザーのカテゴリの他に、セキュリティ・モデルとしてトラステッドとアントラステッドのどちらを実装するかを決定する必要があります。トラステッド・セキュリティ・モデルでは、受信者がすべてのローカル・マスター・グループにアクセスできます。受信者は、リモート・サイトのプロパゲータにかわってローカル・マスター・サイトでデータベース・アクティビティを実行するので、プロパゲータにも、受信者のサイトのすべてのマスター・グループへのアクセス権限があります。1人の受信者をすべての受信トランザクションに使用することに注意してください。

たとえば、図A-1のようなシナリオを考えてみます。マスター・サイトBには、マスター・グループAおよびCのみしかなくても、トラステッド・セキュリティ・モデルが使用されたため、プロパゲータはマスター・サイトのマスター・グループA、B、CおよびDに対するアクセス権限があります。これはデータベース管理の柔軟性を大いに高めますが、リモート・データベース管理のモビリティにより、リモート・サイトの悪意のあるユーザーがマスター・サイトのデータを表示したり破損させたりすることが増えます。

使用するセキュリティ・モデルに関係なく、Oracleでは、オブジェクトがレプリケーション環境に追加されるとき、またはレプリケーション環境から削除されるときに、オブジェクトに適切な権限が自動的に付与されます。

図A-1 トラステッド・セキュリティ: マルチマスター・レプリケーション

アントラステッド・セキュリティでは、特定のマスター・グループの使用に必要な権限のみが受信者に割り当てられます。したがって、プロパゲータは、受信者側のローカルなマスター・グループのうち、特定のグループのみにアクセスできます。図A-2にアントラステッド・セキュリティ・モデルを示します。マスター・サイトBには、マスター・グループAとCのみが含まれるため、マスター・サイトAの受信者はマスター・グループAとCに対する権限のみが付与されています。このため、プロパゲータからマスター・サイトAへのアクセスは制限されます。

図A-2 アントラステッド・セキュリティ: マルチマスター・レプリケーション

一般にマスター・サイトは信頼できるとみなされるので、トラステッド・セキュリティ・モデルが使用されます。ただし、リモート・マスター・サイトが信頼できない場合は、アントラステッド・モデルを使用して、受信者に割り当てる権限を制限できます。サイトが信頼できないとみなされるのは、たとえばコンサルティング会社が複数の顧客の仕事を担当する場合などです。表A-1の受信者の項目に示す適切なAPIコールを使用して、ユーザーごとに適切な権限を割り当てます。

表A-1 必要なユーザー・アカウント

ユーザー

権限

グローバル・レプリケーション管理者

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA

スキーマレベルのレプリケーション管理者

DBMS_REPCAT_ADMIN.GRANT_ADMIN_SCHEMA

プロパゲータ

DBMS_DEFER_SYS.REGISTER_PROPAGATOR

受信者

詳細は、「REGISTER_USER_REPGROUPプロシージャ」を参照してください。

トラステッド:

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP
privilege => 'receiver'
list_of_gnames => NULL,
...

アントラステッド:

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP
privilege => 'receiver'
list_of_gnames => 'mastergroupname',
...

これらのアカウントを作成し、適切な権限を割り当てた後、各サイト間でユーザー名とパスワードを含む次のプライベート・データベース・リンクを作成します。

- ローカルのレプリケーション管理者からリモートのレプリケーション管理者へのリンク

- ローカルのプロパゲータからリモートの受信者へのリンク

1つのユーザー・アカウントがレプリケーション管理者、プロパゲータおよび受信者として機能するように指定した場合は、N(N-1)個のリンクを作成する必要があります。Nはレプリケーション環境内のマスター・サイトの数です。

これらのリンクを作成した後、各ロケーションでDBMS_DEFER_SYS.SCHEDULE_PUSHおよびDBMS_DEFER_SYS.SCHEDULE_PURGEをコールして、遅延トランザクション・キューを各リモート・ロケーションに伝播する頻度、およびこのキューをパージする頻度を定義する必要があります。DBMS_DEFER_SYS.SCHEDULE_PUSHは、各サイトで、1つのリモート・ロケーションに対し1回ずつ、複数回コールする必要があります。

hq.example.comとsales.example.com間のマルチマスター・レプリケーションを設定するためのスクリプトの例を次に示します。

/*--- Create global replication administrator at HQ ---*/
CONNECT system@hq.example.com
ACCEPT password PROMPT 'Enter password for user: ' HIDE
CREATE USER repadmin IDENTIFIED BY &password;
EXECUTE DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(username => 'repadmin');

/*--- Create global replication administrator at Sales ---*/
CONNECT system@sales.example.com
CREATE USER repadmin IDENTIFIED BY &password;
EXECUTE DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA(username => 'repadmin');

/*--- Create single user to act as both propagator and receiver at HQ ---*/
CONNECT system@hq.example.com
CREATE USER prop_rec IDENTIFIED BY &password;
/*--- Grant privileges necessary to act as propagator ---*/
EXECUTE DBMS_DEFER_SYS.REGISTER_PROPAGATOR(username => 'prop_rec');
/*--- Grant privileges necessary to act as receiver ---*/
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP(
username => 'prop_rec',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/

/*--- Create single user to act as both propagator and receiver at Sales ---*/
CONNECT system@sales.example.com
CREATE USER prop_rec IDENTIFIED BY &password;
/*--- Grant privileges necessary to act as propagator ---*/execute
EXECUTE DBMS_DEFER_SYS.REGISTER_PROPAGATOR(username => 'prop_rec');
/*--- Grant privileges necessary to act as receiver ---*/
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP(
username => 'prop_rec',
privilege_type => 'receiver',
list_of_gnames => NULL);
END;
/

/*--- Create public link from HQ to Sales with necessary USING clause ---*/
CONNECT system@hq.example.com
CREATE PUBLIC DATABASE LINK sales.example.com USING 'sales.example.com';

/*--- Create private repadmin to repadmin link ---*/
CONNECT repadmin@hq.example.com
CREATE DATABASE LINK sales.example.com CONNECT TO repadmin
IDENTIFIED BY &password;

/*--- Schedule replication from HQ to Sales ---*/
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH(
destination => 'sales.example.com',
interval => 'sysdate + 1/24',
next_date => sysdate,
stop_on_error => FALSE,
parallelism => 1);
END;
/

/*--- Schedule purge of def tran queue at HQ ---*/
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE(
next_date => sysdate,
interval => 'sysdate + 1',
delay_seconds => 0,
rollback_segment => '');
END;
/

/*--- Create link from propagator to receiver for scheduled push ---*/
CONNECT prop_rec/prop_rec@hq.example.com
CREATE DATABASE LINK sales.example.com CONNECT TO prop_rec
IDENTIFIED BY &password;

/*--- Create public link from Sales to HQ with necessary USING clause ---*/
CONNECT system@sales.example.com
CREATE PUBLIC DATABASE LINK hq.example.com USING 'hq.example.com';

/*--- Create private repadmin to repadmin link ---*/
CONNECT repadmin@sales.example.com
CREATE DATABASE LINK hq.example.com CONNECT TO repadmin IDENTIFIED BY &password;

/*--- Schedule replication from Sales to HQ ---*/
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH(
destination => 'hq.example.com',
interval => 'sysdate + 1/24',
next_date => sysdate,
stop_on_error => FALSE,
parallelism => 1);
END;
/

/*--- Schedule purge of def tran queue at Sales ---*/
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE(
next_date => sysdate,
interval => 'sysdate + 1',
delay_seconds => 0,
rollback_segment =>'');
END;
/

/*--- Create link from propagator to receiver for scheduled push ---*/
CONNECT prop_rec/prop_rec@sales.example.com
CREATE DATABASE LINK hq.example.com connect TO prop_rec IDENTIFIED BY &password;

マテリアライズド・ビュー・レプリケーションのセキュリティ設定

ほとんどの場合、マテリアライズド・ビュー・レプリケーションのセキュリティを構成するには、Oracle Enterprise ManagerのAdvanced Replicationインタフェースの構成ウィザードを使用するのが最も簡単です。ただし、一部の特別な状況では、レプリケーション・マネージメントAPIを使用してこれらの設定を行う必要がある場合があります。レプリケーション環境を構成するには、データベース管理者がDBA権限で接続して、必要な権限をレプリケーション管理者に付与する必要があります。

最初に、各マテリアライズド・ビュー・サイトで、レプリケーション環境を構成およびメンテナンスする権限と、レプリケートされた変更を伝播する権限を持つユーザー・アカウントを設定します。また、これらのユーザー用に、対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトへのリンクを定義する必要があります。対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトで追加のユーザーを作成するか、ユーザーへ追加の権限を割り当てることが必要な場合もあります。

マテリアライズド・ビュー・サイトのユーザーのカテゴリとして、レプリケート・オブジェクトにアクセスするエンド・ユーザーに加え、次の3つの特別なカテゴリがあります。

- レプリケーション環境の構成およびメンテナンスを行う、レプリケーション管理者

- 遅延トランザクションを伝播する、プロパゲータ

- 対応付けられたマスター表またはマスター・マテリアライズド・ビューからマテリアライズド・ビューへ変更をプルダウンする、リフレッシャ。

通常は、これらの機能を1人のユーザーが実行します。ただし、これらの機能をそれぞれ別のユーザーが実行する場合もあります。たとえば、マテリアライズド・ビューは、マテリアライズド・ビュー・サイトの管理者が作成して、他のエンド・ユーザーがリフレッシュします。

表A-2に、マテリアライズド・ビュー・サイトの作成とメンテナンスに必要な権限を示します。

表A-2 マテリアライズド・ビュー・サイトに必要なユーザー・アカウント

ユーザー

権限

マテリアライズド・ビュー・サイト・レプリケーション管理者

DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA

プロパゲータ

DBMS_DEFER_SYS.REGISTER_PROPAGATOR

リフレッシャ

CREATE ANY MATERIALIZED VIEW ALTER ANY MATERIALIZED VIEW

マテリアライズド・ビュー・サイトに適切なユーザーを作成するのみでなく、関連付けられているマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにも追加のユーザーを作成する必要があります。表A-3に、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのユーザーが新しいマテリアライズド・ビュー・サイトをサポートするために必要な権限を示します。

トラステッド・セキュリティとアントラステッド・セキュリティの比較

マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのユーザーのカテゴリの他に、セキュリティ・モデルとしてトラステッドとアントラステッドのどちらを実装するのかを決定する必要があります。トラステッド・セキュリティ・モデルでは、受信者およびプロキシ・マテリアライズド・ビュー管理者がすべてのローカル・レプリケーション・グループにアクセスできます。受信者およびプロキシ・マテリアライズド・ビュー管理者は、プロパゲータおよびマテリアライズド・ビュー管理者のかわりにローカル・マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのデータベース・アクティビティをリモート・マテリアライズド・ビュー・サイトで実行します。このため、リモート・マテリアライズド・ビュー・サイトのプロパゲータおよびマテリアライズド・ビュー管理者もまた、マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトのすべてのレプリケーション・グループにアクセスできます。1人の受信者をすべての受信トランザクションに使用することに注意してください。

たとえば、図A-3のようなシナリオを考えてみます。マテリアライズド・ビュー・サイトにはマテリアライズド・ビュー・グループAおよびC(マスター・サイトのマスター・グループAおよびCの基づく)のみしかなくても、トラステッド・セキュリティ・モデルが使用されたため、プロパゲータおよびマテリアライズド・ビューの管理者はマスター・サイトのマスター・グループA、B、CおよびDに対するアクセス権限があります。これはデータベース管理の柔軟性を大いに高めますが、DBAはこれらのリモート・サイトのいずれにおいても管理機能を実行でき、これらの変更をマスター・サイトに伝播させることができるため、リモート・サイトの悪意のあるユーザーがマスター・サイトのデータを表示したり破損させたりすることが増えます。

使用するセキュリティ・モデルに関係なく、Oracleでは、オブジェクトがレプリケーション環境に追加されるとき、またはレプリケーション環境から削除されるときに、オブジェクトに適切な権限が自動的に付与されます。

図A-3 トラステッド・セキュリティ: マテリアライズド・ビュー・レプリケーション

アントラステッド・セキュリティでは、特定のレプリケーション・グループの使用に必要な権限のみがプロキシ・マテリアライズド・ビュー管理者と受信者に付与されます。したがって、プロパゲータとマテリアライズド・ビュー管理者は、マスター・サイトのこれらの特定のレプリケーション・グループのみにアクセスできます。図A-4に、マテリアライズド・ビュー・レプリケーションのアントラステッド・セキュリティ・モデルを示します。マテリアライズド・ビュー・サイトにはマテリアライズド・ビュー・グループAとCが含まれるので、マスター・グループAとCのみへのアクセスが必要です。アントラステッド・セキュリティを使用すると、マテリアライズド・ビュー・サイトのプロパゲータまたはマテリアライズド・ビュー管理者は、マスター・サイトのマスター・グループBとDにアクセスできません。

図A-4 アントラステッド・セキュリティ: マテリアライズド・ビュー・レプリケーション

通常、マテリアライズド・ビュー・サイトはセキュリティ違反を受けやすいため、アントラステッド・セキュリティ・モデルが使用されます。マテリアライズド・ビュー・サイトでトラステッド・セキュリティ・モデルの使用を必要とする理由はほとんどなく、マテリアライズド・ビュー・サイトでアントラステッド・セキュリティ・モデルを使用することをお薦めします。

トラステッド・セキュリティ・モデルを使用する理由として1つ考えられるのは、マテリアライズド・ビュー・サイトがあらゆる観点(セキュリティ、常時ネットワーク接続、リソース)からマスター・サイトと判断される場合で、データをサブセット化する必要があるためにマテリアライズド・ビューになっている場合です。マルチマスター構成では、行サブセット化と列サブセット化はサポートされていません。

表A-3のプロキシ・マテリアライズド・ビュー管理者と受信者の項目に示す適切なAPIコールを使用して、各ユーザーに適切な権限を割り当てます。

表A-3 マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトの必須ユーザー・アカウント

ユーザー

権限

プロキシ・マテリアライズド・ビュー・サイト管理者

詳細は、「REGISTER_USER_REPGROUPプロシージャ」を参照してください。

トラステッド:

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP
privilege => 'proxy_snapadmin'
list_of_gnames => NULL,
...

アントラステッド:

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP
privilege => 'proxy_snapadmin'
list_of_gnames => 'mastergroupname',
...

受信者

詳細は、「REGISTER_USER_REPGROUPプロシージャ」を参照してください。

Trusted:
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP
privilege => 'receiver'
list_of_gnames => NULL,
...

アントラステッド:

DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP
privilege => 'receiver'
list_of_gnames => 'mastergroupname',
...

プロキシ・リフレッシャ

トラステッド:

CREATE SESSION およびSELECT ANY TABLEを付与

アントラステッド:

必要なマスター表またはマスター・マテリアライズド・ビューおよびマテリアライズド・ビュー・ログにCREATE SESSION およびSELECTを付与

マテリアライズド・ビュー、および対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトにアカウントを作成した後、次に示すプライベート・データベース・リンクを作成します。このリンクは、ユーザー名およびパスワードを含んだ、マテリアライズド・ビュー・サイトからマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトへのリンクです。

- マテリアライズド・ビュー・レプリケーション管理者からプロキシ・マテリアライズド・ビュー・レプリケーション管理者へのリンク

- プロパゲータから受信者へのリンク

- リフレッシャからプロキシ・リフレッシャへのリンク

- マテリアライズド・ビュー所有者からマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトへのリフレッシュ用リンク

1つのユーザー・アカウントがマテリアライズド・ビュー管理者、プロパゲータおよびリフレッシャとして機能するように指定した場合は、これらの機能に対し、1つのマテリアライズド・ビュー・サイトごとにリンクを1つ作成する必要があります。マスター・サイトまたはマスター・マテリアライズド・ビュー・サイトからマテリアライズド・ビューへのリンクは必要ありません。

これらのリンクを作成した後、マテリアライズド・ビュー・サイトでDBMS_DEFER_SYS.SCHEDULE_PUSHおよびDBMS_DEFER_SYS.SCHEDULE_PURGEをコールして、遅延トランザクション・キューを対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトに伝播する頻度、およびこのキューをパージする頻度を定義する必要があります。対応付けられたマスター・サイトまたはマスター・マテリアライズド・ビュー・サイトから変更を取り込む頻度をスケジュール設定する場合は、マテリアライズド・ビュー・サイトで、DBMS_REFRESH.REFRESHもコールする必要があります。

B ユーザー定義の競合解消メソッド

この付録では、ユーザー定義の競合解消メソッドおよびユーザー定義の競合通知方法の作成方法を説明します。

この付録には、次の項が含まれます。

- ユーザー定義の競合解消メソッド

- ユーザー定義の競合通知方法

- 競合解消情報の表示

ユーザー定義の競合解消メソッド

ユーザー独自の競合解消メソッドや通知方法を作成できます。ユーザー定義の競合解消メソッドとは、TRUEまたはFALSEのいずれかを戻すPL/SQLファンクションです。TRUEは、列グループへの競合する変更すべてが競合解消メソッドによって正常に解消されたことを示します。競合が正常に解消されない場合は、FALSEが戻されます。競合解消メソッドからTRUEが戻されるか、または使用可能な競合解消メソッドがなくなるまで、方法の評価が順番に続行されます。

競合解消メソッドで例外が呼び出されると、その方法の評価が停止します。それ以降の順序番号でその他の競合解消メソッドが用意されていても、評価は行われません。

競合解消メソッドのパラメータ

ユーザー定義の競合解消メソッドで必要なパラメータは、解消する競合のタイプ(一意、更新または削除)およびレプリケートされる表の列によって決定されます。すべての競合解消メソッドは、表の古い列値、新しい列値およびカレント列値の組合せを使用します。

- 古い値は、発信元サイトでの変更前の行の値を表します。

- 新しい値は、発信元サイトでの変更後の行の値を表します。

- カレント値は、受信サイトでの対応する行の値を表します。

注意:
Oracleでは、比較する行の判別に、主キー、すなわちSET_COLUMNSで指定されたキーが使用されることに注意してください。

競合解消機能は、DBMS_REPCAT.ADD_conflicttype_RESOLUTIONプロシージャに対するPARAMETER_COLUMN_NAME引数で指定した列値をパラメータとして受け取ります。列パラメータは、PARAMETER_COLUMN_NAME引数に示される順序で、またこの引数に'*'を指定した場合はアルファベットの昇順で、競合解消メソッドに渡されます。古い列値と新しい列値の両方が(更新の競合の)パラメータとして渡される場合、列の古い値は新しい値の直前に置かれます。

注意:

- ユーザー定義の競合解消メソッドでは、パラメータ列のタイプのチェックは、対応付けられたレプリケート表のレプリケーション・サポートを再生成するまで実行されません。

- 列オブジェクトの属性は、ユーザー定義の競合解消メソッドの列パラメータとして定義することはできません。

更新の競合の解消

更新の競合の場合、ユーザー定義ファンクションでは、列グループ内の各列に次の値を使用する必要があります。

- 発信元サイトからの古い列値。このパラメータのモードはINです。この値は変更できません。

- 発信元サイトからの新しい列値。このパラメータのモードはIN OUTです。そのファンクションで競合を正常に解消できる場合は、必要に応じて新しい列値を変更する必要があります。

- 受信サイトからのカレント列値。このパラメータのモードは INです。

列値は、古い値、新しい値、カレント値と連続して受信されます。競合解消メソッドに渡す最後の引数は、ブール型フラグである必要があります。このフラグがFALSEの場合、IN OUTパラメータ(すなわち、新しい列)の値をすでに更新したこと、およびカレント列値をこの新しい値に更新する必要があることを示します。このフラグがTRUEの場合、カレント列値を変更できないことを示します。

一意性競合の解消

一意性競合は、INSERTまたはUPDATEの結果として発生する場合があります。ユーザー定義の一意性競合解消メソッドでは、列グループの各列に、発信元サイトからのIN OUTモードの新しい列値を受け入れる必要があります。競合解消メソッドに渡す最後のパラメータは、ブール型フラグである必要があります。

競合解消メソッドで競合が解消された場合、新しい列値を変更して、現在行への挿入または現在行の新しい列値による更新を可能にします。ファンクションにより新しい列値を廃棄する場合はブール型フラグをTRUEに設定し、廃棄しない場合はFALSEに設定します。

競合解消メソッドでは一意性競合におけるデータの収束を保証できないので、ユーザー定義の一意性競合解消メソッドに通知メカニズムを組み込む必要があります。

削除の競合の解消

削除の競合は、ローカル・サイトからの削除が正常に実行されても、対応付けられた行が(更新されたなどの理由で)リモート・サイトにない場合に発生します。削除の競合の場合、ファンクションでは、行全体の古い列値をIN OUTモードで受け入れる必要があります。競合解消メソッドに渡す最後のパラメータは、ブール型フラグである必要があります。

競合解消メソッドで競合が解消されると、古い列値が変更され、すべての古い列値に一致する現在行を削除できます。ファンクションによりこれらの列値を廃棄する場合はブール型フラグをTRUEに設定し、廃棄しない場合はFALSEに設定します。

ローカル・サイトで削除を実行し、リモート・サイトで更新を実行した場合、リモート・サイトで削除の競合が検出されますが、ローカル・サイトでは解消不可能な更新の競合が検出されます。このタイプの競合は自動的には処理できません。この競合によってNO_DATA_FOUND例外が発生し、このトランザクションはエラー・トランザクションとして記録されます。

これらのタイプの更新や削除の競合を適切に処理するメカニズムを設計することは困難です。削除された行を単純にマーク付けして、プロシージャ・レプリケーションを使用してパージすることで、これらのタイプの競合を完全に回避する方がはるかに容易です。

関連項目:
「削除の競合防止メソッドの作成」

複数層マテリアライズド・ビューとユーザー定義の競合解消メソッド

ユーザー定義の競合解消メソッドを複数層マテリアライズド・ビューに使用するときは、これらの方法に関する情報はマスター・マテリアライズド・ビュー・サイトに自動的にプルダウンされます。この情報は、マスター・マテリアライズド・ビュー・サイトのデータ・ディクショナリに格納されます。ただし、ユーザー定義の競合解消メソッドそのものをマスター・サイトからプルダウンすることはできません。このため、マスター・マテリアライズド・ビュー・サイトでこれらの方法を再作成する必要があります。

関連項目:

- ユーザー定義の競合解消メソッドの情報を格納するデータ・ディクショナリ・ビューの詳細は、「競合解消情報の表示」を参照してください。

- 競合解消と複数層マテリアライズド・ビューの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

ユーザー定義の競合解消メソッドの制限事項

次の項では、ユーザー定義の競合解消メソッドの制限事項を説明します。

ユーザー定義の競合解消メソッドのSQL文に関する制限事項

ユーザー定義の競合解消メソッドで次のSQL文を使用しないでください。これらの文を使用すると、予期しない結果が起こる可能性があります。

- データ定義言語(DDL)文(CREATE、ALTER、DROPなど)

- トランザクション制御文(COMMIT、ROLLBACKなど)

- セッション制御(ALTER SESSIONなど)

- システム制御(ALTER SYSTEMなど)

ユーザー定義の競合解消メソッドの列サブセット化に関する制限事項

更新可能な複数層マテリアライズド・ビューを作成するときは、列グループの列をサブセット化しないでください。列をサブセット化すると、マスター表またはマスター・マテリアライズド・ビューの列が、これらのマスターをベースとするマテリアライズド・ビューから除外されます。これを行うには、マテリアライズド・ビューの作成中にSELECT文でいくつかのSELECT列を指定します。

競合解消を複数層マテリアライズド・ビューに使用するときは、マテリアライズド・ビュー・サイトでは競合解消メソッドを定義できません。競合解消メソッドは、常にマスター・サイトからプルダウンされます。このため、ユーザー定義の競合解消を持つ列グループの列をサブセット化すると、マスター・マテリアライズド・ビュー・サイトの列グループの列をすべてこの競合解消メソッドで見つけることができなくなります。この場合、競合解消メソッドから次のエラーが戻されます。

ORA-23460 missing value for column in resolution method

たとえば、hr.employees表のjob_id、salaryおよびcommission_pct列が、マスター・サイトhq.example.comにある、ユーザー定義の競合解消メソッドを持つ列グループ名employees_cg1の一部である場合を考えます。営業スタッフのプライバシーを保護するため、列サブセット化を使用してca.usオフィスのsalaryおよびcommission_pct列を排除する、レベル1の更新可能なマテリアライズド・ビューを作成します。ca.usオフィスにこのマテリアライズド・ビューを作成すると、競合解消メソッドがhq.example.comからプルダウンされます。次に、sf.caオフィスに、ca.usオフィスのレベル1のマテリアライズド・ビューをベースとする更新可能なマテリアライズド・ビューを作成します。

このレプリケーション環境では、ca.usオフィスのレベル 1のマテリアライズド・ビューでjob_id値の競合が発生した場合、競合解消メソッドではsalaryおよびcommission_pct列が見つけられず、前述のORA-23460エラーが戻されます。

関連項目:
列サブセット化の詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

ユーザー定義の競合解消メソッドの例

標準的な組込みの最大値および加算による競合解消メソッドを変形した、ユーザー定義方法の例を次に示します。標準方法と異なり、これらのユーザー定義ファンクションでは、競合解消に使用される列内のNULL値を処理できます。

最大値ユーザー・ファンクション

-- User function similar to MAXIMUM method.
-- If curr is null or curr < new, then use new values.
-- If new is null or new < curr, then use current values.
-- If both are null, then no resolution.
-- Does not converge with > 2 masters, unless
-- always increasing.

CREATE OR REPLACE FUNCTION max_null_loses(old  IN       NUMBER,
new                    IN  OUT  NUMBER,
cur                    IN       NUMBER,
ignore_discard_flag    OUT      BOOLEAN)
RETURN BOOLEAN IS
BEGIN
IF (new IS NULL AND cur IS NULL) OR new = cur THEN
RETURN FALSE;
END IF;
IF new IS NULL THEN
ignore_discard_flag := TRUE;
ELSIF cur IS NULL THEN
ignore_discard_flag := FALSE;
ELSIF new < cur THEN
ignore_discard_flag := TRUE;
ELSE
ignore_discard_flag := FALSE;
END IF;
RETURN TRUE;
END max_null_loses;
/

加算ユーザー・ファンクション

-- User function similar to ADDITIVE method.
-- If old is null, then old = 0.
-- If new is null, then new = 0.
-- If curr is null, then curr = 0.
-- new = curr + (new - old) -> just like ADDITIVE method.

CREATE OR REPLACE FUNCTION additive_nulls(old  IN       NUMBER,
new                    IN  OUT  NUMBER,
cur                    IN       NUMBER,
ignore_discard_flag    OUT      BOOLEAN)
RETURN BOOLEAN IS
old_val NUMBER := 0.0;
new_val NUMBER := 0.0;
cur_val NUMBER := 0.0;
BEGIN
IF old IS NOT NULL THEN
old_val := old;
END IF;
IF new IS NOT NULL THEN
new_val := new;
END IF;
IF cur IS NOT NULL THEN
cur_val := cur;
END IF;
new := cur_val + (new_val - old_val);
ignore_discard_flag := FALSE;
RETURN TRUE;
END additive_nulls;
/

ユーザー定義の競合通知方法

競合通知方法は、競合解消のかわりまたは追加として競合を通知する、ユーザー定義ファンクションです。たとえば、独自の競合通知方法を作成して、データベース表に競合情報を記録したり、電子メール・メッセージを送信したり、管理者を呼び出したりできます。競合通知方法を作成した後、それを列グループ(または制約)に特定の順序で割り当てて、競合が発生した時点か、後続の競合解消メソッドを試行する前か、競合解消を試行して失敗した後に、通知を受けることができます。

レプリケート表にユーザー定義の競合通知メカニズムを構成するには、次の手順を実行する必要があります。

1. 競合通知ログを作成します。

2. パッケージ内にユーザー定義の競合通知方法を作成します。

次の項で各手順を説明します。

競合通知ログの作成

ユーザー定義の競合通知方法を使用するレプリケート表を構成するときは、最初に、競合通知を記録できるデータベース表を作成します。マスター・グループ内の1つ以上の表での競合通知を記録するデータベース表を作成できます。

すべてのマスター・サイトで競合通知ログ表を作成するには、レプリケーション実行DDL機能を使用します。詳細は、「EXECUTE_DDLプロシージャ」を参照してください。競合通知表のエントリは競合を検出するサイトに固有のエントリであるため、競合通知表に対するレプリケーション・サポートを生成しないでください。

競合通知ログ表の例

次のCREATE TABLE文では、マスター・グループのいくつかの表から競合通知を記録するのに使用する表を作成します。

CREATE TABLE sales.conf_report (
line          NUMBER(2),    --- used to order message text
txt           VARCHAR2(80), --- conflict notification message
timestamp     DATE,         --- time of conflict
table_name    VARCHAR2(30), --- table in which the
--- conflict occurred
table_owner   VARCHAR2(30), --- owner of the table
conflict_type VARCHAR2(6)   --- INSERT, DELETE or UNIQUE
);

競合通知パッケージの作成

競合通知方法を作成するには、PL/SQLパッケージ内で方法を定義し、対応付けられたレプリケート表とともにPL/SQLパッケージをマスター・グループの一部としてレプリケートする必要があります。

競合通知方法では、競合の通知のみ、または競合の通知と解消の両方を実行できます。可能な場合は常に、Oracleの組込み競合解消メソッドのいずれかを使用して競合を解消します。ユーザー定義の競合通知方法で競合の通知のみを実行する場合は、競合を解消する競合解消メソッドとともに、ユーザー定義の通知方法を列グループ(または制約)に割り当ててください。

注意:
レプリケーションの競合が最終的に解消されない場合は、通知表に加えられた更新内容を含め、トランザクション全体がロールバックされます。トランザクションとは無関係に通知が必要な場合は、Oracle DBMS_PIPESパッケージを使用する通知メカニズムを設計できます。

競合通知パッケージの例

次のパッケージおよびパッケージ本体では、CUSTOMERS表の一意性競合を定義済のCONF_REPORT表に記録することによって、簡単な競合通知を実行します。

注意:
この競合通知の例では、競合は解消されません。したがって、競合解消メソッド(廃棄や上書きなど)を用意するか、エラーが解消されずにトランザクションがロールバックされても正しく機能する通知メカニズム(電子メールの利用など)を用意する必要があります。次のユーザー定義の競合通知方法に簡単な変更を加えれば、さらに有効な処置を取ることができます。たとえば、このパッケージでは、通知メッセージを記録でき、またDBMS_OFFICEユーティリティ・パッケージを使用してOracle Officeの電子メール・メッセージを管理者に送信することもできます。

CREATE OR REPLACE PACKAGE notify AS
-- Report uniqueness constraint violations on CUSTOMERS table
FUNCTION customers_unique_violation (
first_name         IN OUT VARCHAR2,
last_name          IN OUT VARCHAR2,
discard_new_values IN OUT BOOLEAN)
RETURN BOOLEAN;
END notify;
/

CREATE OR REPLACE PACKAGE BODY notify AS
-- Define a PL/SQL associative array to hold the notification message
TYPE message_table IS TABLE OF VARCHAR2(80) INDEX BY BINARY_INTEGER;
PROCEDURE report_conflict (
conflict_report IN MESSAGE_TABLE,
report_length   IN NUMBER,
conflict_time   IN DATE,
conflict_table  IN VARCHAR2,
table_owner     IN VARCHAR2,
conflict_type   IN VARCHAR2) IS
BEGIN
FOR idx IN 1..report_length LOOP
BEGIN
INSERT INTO sales.conf_report
(line, txt, timestamp, table_name, table_owner, conflict_type)
VALUES (idx, SUBSTR(conflict_report(idx),1,80), conflict_time,
conflict_table, table_owner, conflict_type);
EXCEPTION WHEN others THEN NULL;
END;
END LOOP;
END report_conflict;
-- This is the conflict resolution method that is called first when
-- a uniqueness constraint violated is detected in the CUSTOMERS table.
FUNCTION customers_unique_violation (
first_name  IN OUT VARCHAR2,
last_name  IN OUT VARCHAR2,
discard_new_values  IN OUT BOOLEAN)
RETURN BOOLEAN IS
local_node  VARCHAR2(128);
conf_report MESSAGE_TABLE;
conf_time   DATE := SYSDATE;
BEGIN
-- Get the global name of the local site
BEGIN
SELECT global_name INTO local_node FROM global_name;
EXCEPTION WHEN others THEN local_node := '?';
END;
-- Generate a message for the DBA
conf_report(1) := 'UNIQUENESS CONFLICT DETECTED IN TABLE CUSTOMERS ON ' ||
TO_CHAR(conf_time, 'MM-DD-YYYY HH24:MI:SS');
conf_report(2) := '  AT NODE ' || local_node;
conf_report(3) := 'ATTEMPTING TO RESOLVE CONFLICT USING ' ||
'APPEND SEQUENCE METHOD';
conf_report(4) := 'FIRST NAME: ' || first_name;
conf_report(5) := 'LAST NAME:  ' || last_name;
conf_report(6) := NULL;
--- Report the conflict
report_conflict(conf_report, 5, conf_time, 'CUSTOMERS',
'OFF_SHORE_ACCOUNTS', 'UNIQUE');
--- Do not discard the new column values. They are still needed by
--- other conflict resolution methods.
discard_new_values := FALSE;
--- Indicate that the conflict was not resolved.
RETURN FALSE;
END customers_unique_violation;
END notify;
/

競合解消情報の表示

Oracleには、レプリケーション・カタログ(REPCAT)ビューが用意されており、このビューを使用して、レプリケーション環境の各表および列グループで使用している競合解消メソッドを判別できます。各ビューには、USER_*、ALL_*、SYS.DBA_*の3つのバージョンがあります。使用可能なビューを次の表に示します。

ビュー

説明

ALL_REPRESOLUTION_METHOD

使用可能な競合解消メソッドがすべて表示されます。

ALL_REPCOLUMN_GROUP

データベースに定義された列グループがすべて表示されます。

ALL_REPGROUPED_COLUMN

データベース内の各列グループの列がすべて表示されます。

ALL_REPPRIORITY_GROUP

データベースに定義された優先グループおよびサイト優先グループがすべて表示されます。

ALL_REPPRIORITY

各優先グループまたはサイト優先グループの値および対応する優先順位レベルが表示されます。

ALL_REPCONFLICT

データベース内の表、列グループおよび一意制約に関して解決メソッドを指定した競合のタイプ(削除、更新または一意性)が表示されます。

ALL_REPRESOLUTION

各オブジェクトで発生する競合解消メソッドに関する、より具体的な情報が表示されます。

ALL_REPPARAMETER_COLUMN

競合解消メソッドが競合の解消に使用する列が表示されます。

関連項目:
第23章「レプリケーション・カタログ・ビュー」

索引
A  B  C  D  E  F  G  I  J  L  M  N  O  P  Q  R  S  T  U  V  W

A

ADDプロシージャ, 5.2.2, 8.5, 17

ADD_DEFAULT_DESTプロシージャ, 14

ADD_DELETE_RESOLUTIONプロシージャ, 18

ADD_GROUPED_COLUMNプロシージャ, 18

ADD_MASTER_DATABASEプロシージャ, 3.2, 7.2.2, 7.2.2.1, 18

ADD_NEW_MASTERSプロシージャ, 7.2.1.1, 7.2.1.2, 18

ADD_PRIORITY_CHARプロシージャ, 18

ADD_PRIORITY_datatypeプロシージャ, 18

ADD_PRIORITY_DATEプロシージャ, 18

ADD_PRIORITY_NUMBERプロシージャ, 18

ADD_PRIORITY_VARCHAR2プロシージャ, 18

ADD_SITE_PRIORITY_SITEプロシージャ, 6.2.6, 18

ADD_UNIQUENESS_RESOLUTIONプロシージャ, 18

ADD_UPDATE_RESOLUTIONプロシージャ, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6, 18

管理要求

ALL_REPCATLOGビュー, 23

実行, 7.2.2.2, 18

監視, 10.3

エラー, 10.3.2

ジョブ, 10.3.3

パージ, 18 管理者

マテリアライズド・ビュー・サイト

作成, 2.3.1

アドバンスト・レプリケーション

Streamsに移行, 18

Advanced Replicationインタフェース

レプリケーションの監視, 10

ALL_REPCAT_REFRESH_TEMPLATESビュー, 23 ALL_REPCAT_TEMPLATE_OBJECTSビュー, 23 ALL_REPCAT_TEMPLATE_PARMSビュー, 23 ALL_REPCAT_TEMPLATE_SITESビュー, 23 ALL_REPCAT_USER_AUTHORIZATIONSビュー, 23 ALL_REPCAT_USER_PARM_VALUESビュー, 23 ALL_REPCATLOGビュー

管理要求, 23

ALL_REPCOLUMNビュー, 23 ALL_REPCOLUMN_GROUPビュー, 23 ALL_REPCONFLICTビュー, 23 ALL_REPDDLビュー, 23 ALL_REPGENOBJECTSビュー, 23 ALL_REPGROUPビュー, 23 ALL_REPGROUP_PRIVILEGESビュー, 23 ALL_REPGROUPED_COLUMNビュー, 23 ALL_REPKEY_COLUMNSビュー, 23 ALL_REPOBJECTビュー, 23 ALL_REPPARAMETER_COLUMNビュー, 23 ALL_REPPRIORITYビュー, 23 ALL_REPPRIORITY_GROUPビュー, 23 ALL_REPPROPビュー, 23 ALL_REPRESOL_STATS_CONTROLビュー, 23 ALL_REPRESOLUTIONビュー, 23 ALL_REPRESOLUTION_METHODビュー, 23 ALL_REPRESOLUTION_STATISTICSビュー, 23

統計収集, 6.6

ALL_REPSITESビュー, 23 ALTER MATERIALIZED VIEW LOG文, 8.4.1.1, 8.4.1.2 ALTER_CATCHUP_PARAMETERSプロシージャ, 18 ALTER_MASTER_PROPAGATIONプロシージャ, 18 ALTER_MASTER_REPOBJECTプロシージャ, 6.2.3, 6.2.6, 6.4, 9.1, 18 ALTER_MVIEW_PROPAGATIONプロシージャ, 18 ALTER_PRIORITYプロシージャ, 18 ALTER_PRIORITY_CHARプロシージャ, 18 ALTER_PRIORITY_datatypeプロシージャ, 18 ALTER_PRIORITY_DATEプロシージャ, 18 ALTER_PRIORITY_NUMBERプロシージャ, 18 ALTER_PRIORITY_RAWプロシージャ, 18 ALTER_REFRESH_TEMPLATEプロシージャ, 21 ALTER_SITE_PRIORITYプロシージャ, 18 ALTER_SITE_PRIORITY_SITEプロシージャ, 18 ALTER_TEMPLATE_OBJECTプロシージャ, 21 ALTER_TEMPLATE_PARMプロシージャ, 21 ALTER_USER_AUTHORIZATIONプロシージャ, 21 ALTER_USER_PARM_VALUEプロシージャ, 21 ANY_CHAR_ARGプロシージャ, 12 ANY_CLOB_ARGプロシージャ, 12 ANY_VARCHAR2_ARGプロシージャ, 12 ANYDATA

GET_ANYDATA_ARGファンクション, 13

ANYDATAデータ型

レプリケーション, 9.5.3

ANYDATA_ARGプロシージャ, 12 認証

テンプレート・ユーザー, 4.3

可用性

拡張, 7.2.1, 18, 18, 18, 18, 18, 18

B

BEGIN_INSTANTIATIONプロシージャ, 7.2.2.2, 15

BEGIN_LOADプロシージャ, 7.2.2.2, 15

BEGIN_TABLE_REORGANIZATION, 8.4.3.1

BLOB_ARGプロシージャ, 12

C

CALLプロシージャ, 12

CANCEL_STATISTICSプロシージャ, 6.6.3, 18

CHANGEプロシージャ, 17

CHAR_ARGプロシージャ, 12

CLEAR_PROP_STATISTICSプロシージャ, 10.6.6, 14

CLOB_ARGプロシージャ, 12

列オブジェクト

ユーザー定義の競合解消, B.1.1

列サブセット化

ユーザー定義の競合解消メソッド, B.1.6.2

列

マスター表への追加, 18

列グループ, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6

メンバーの追加, 18

作成, 18, 18

削除, 18

メンバーの削除, 18

COMMENT_ON_COLUMN_GROUPプロシージャ, 18 COMMENT_ON_DELETE_RESOLUTIONプロシージャ, 18 COMMENT_ON_MVIEW_REPSITESプロシージャ, 18 COMMENT_ON_PRIORITYプロシージャ, 18 COMMENT_ON_REPGROUPプロシージャ, 18 COMMENT_ON_REPOBJECTプロシージャ, 18 COMMENT_ON_REPSITESプロシージャ, 18 COMMENT_ON_SITE_PRIORITYプロシージャ, 18 COMMENT_ON_UNIQUE_RESOLUTIONプロシージャ, 18 COMMENT_ON_UPDATE_RESOLUTIONプロシージャ, 18 コメント

コメント・フィールド

ビュー内の更新, 7.4

更新, 7.4 COMMIT_WORKプロシージャ, 12 COMPARE_OLD_VALUESプロシージャ, 18, 18 COMPARE_TEMPLATESファンクション, 21 比較

表, 16

競合解消, 6

加算によるメソッド, 6.2.4, 18

監査, 6.6, 6.6

平均によるメソッド, 6.2.4

列グループ, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6

DBA_REPRESOLUTION_STATISTICSビュー, 6.6.4

廃棄によるメソッド, 6.2.1

情報

表示, B.3

最大のメソッド, 6.2.2 最小のメソッド, 6.2.2 上書きによるメソッド, 6.2.1 準備, 6.1 優先グループによるメソッド, 6.2.5 プロシージャ・レプリケーション, 7.5.3 サイトの優先順位によるメソッド, 6.2.6

サンプル・トリガー, 6.2.6

統計, 18, 18

取消し, 6.6.3

収集, 6.6.1

表示, 6.6.2

タイムスタンプによるメソッド

サンプル・トリガー, 6.2.3

タイムスタンプによるメソッド, 6.2.3 一意性競合, 6.3 ユーザー定義方法, B.1

列オブジェクト, B.1.1

列サブセット化, B.1.6.2

例, B.1.7

削除の競合, B.1.4

一意性競合, B.1.3

更新の競合, B.1.2

複数層マテリアライズド・ビュー, B.1.5

パラメータ, B.1.1

制限事項, B.1.6

表示, B.3 競合

回避

削除, 6.4

動的所有権, 6.5

通知ログ表

作成, B.2.1

例, B.2.1.1

通知方法

ユーザー定義, B.2

通知パッケージ

作成, B.2.2

例, B.2.2.1

トークン渡し, 6.5.2 ワークフロー, 6.5.1 COPY_TEMPLATEファンクション, 21 CREATE_MASTER_REPGROUPプロシージャ, 3.2, 18 CREATE_MASTER_REPOBJECTプロシージャ, 6.2.3, 6.2.6, 18 CREATE_MVIEW_REPGROUPプロシージャ, 5.2.1, 8.5, 8.6, 8.6, 18 CREATE_MVIEW_REPOBJECTプロシージャ, 5.2.1, 5.2.1, 5.2.2, 5.2.2, 8.6, 8.6, 18 CREATE_OBJECT_FROM_EXISTINGファンクション, 21 CREATE_REFRESH_TEMPLATEファンクション, 21 CREATE_REFRESH_TEMPLATEプロシージャ, 4.3 CREATE_TEMPLATE_OBJECTファンクション, 21 CREATE_TEMPLATE_OBJECTプロシージャ, 4.3 CREATE_TEMPLATE_PARMファンクション, 21 CREATE_USER_AUTHORIZATIONファンクション, 21 CREATE_USER_AUTHORIZATIONプロシージャ, 4.3 CREATE_USER_PARM_VALUEファンクション, 21

D

データ定義言語

レプリケート・オブジェクトの変更, 18

非同期, 18

データ・ディクショナリ・ビュー

コメント

更新, 7.4

マテリアライズド・ビュー, 25 リフレッシュ・グループ, 25 レプリケーション, 10, 23 データベース・リンク

作成, 2.2.4, 2.3.2, 4.6, 5.2.1, 5.2.2, 8.6

datatype_ARGプロシージャ, 12 日付式, 2.2.1 DATE_ARGプロシージャ, 12 DBA_REGISTERED_MVIEW_GROUPSビュー, 23 DBA_REPCAT_REFRESH_TEMPLATESビュー, 23 DBA_REPCAT_TEMPLATE_OBJECTSビュー, 23 DBA_REPCAT_TEMPLATE_PARMSビュー, 23 DBA_REPCAT_TEMPLATE_SITESビュー, 23 DBA_REPCAT_USER_AUTHORIZATIONSビュー, 23 DBA_REPCAT_USER_PARM_VALUESビュー, 23 DBA_REPCATLOGビュー, 23

要求のパージ, 18

DBA_REPCOLUMNビュー, 23 DBA_REPCOLUMN_GROUPビュー, 23

更新, 18

DBA_REPCONFLICTビュー, 23 DBA_REPDDLビュー, 23 DBA_REPEXTENSIONSビュー, 23 DBA_REPGENOBJECTSビュー, 23 DBA_REPGROUPビュー, 23

更新, 18

DBA_REPGROUP_PRIVILEGESビュー, 23 DBA_REPGROUPED_COLUMNビュー, 23 DBA_REPKEY_COLUMNSビュー, 23 DBA_REPOBJECTビュー, 23

更新, 18

DBA_REPPARAMETER_COLUMNビュー, 23 DBA_REPPRIORITYビュー, 23 DBA_REPPRIORITY_GROUPビュー, 23 DBA_REPPRIORITYGROUPビュー

更新, 18, 18

DBA_REPPROPビュー, 23 DBA_REPRESOL_STATS_CONTROLビュー, 23 DBA_REPRESOLUTIONビュー, 23

更新, 18

DBA_REPRESOLUTION_METHODビュー, 23, 23 DBA_REPRESOLUTION_STATISTICSビュー, 23

パージ, 6.6.4, 18

DBA_REPSITESビュー, 23

更新, 18

DBA_REPSITES_NEWビュー, 23 DBMS_DEFERパッケージ, 12 DBMS_DEFER_QUERYパッケージ, 13

GET_ANYDATA_ARGファンクション, 9.5.3

DBMS_DEFER_SYSパッケージ, 14

CLEAR_PROP_STATISTICSプロシージャ, 10.6.6

EXECUTE_ERRORプロシージャ, 7.2.2.2, 9.6.1

EXECUTE_ERROR_AS_USERプロシージャ, 9.6.2

PURGEファンクション, 9.5.2

PUSHファンクション, 9.5.1

REGISTER_PROPAGATORプロシージャ, 2.2.1, 2.3.1, 2.3.2

SCHEDULE_PURGEプロシージャ, 2.2.1, 2.3.1, 2.3.2

SCHEDULE_PUSHプロシージャ, 2.2.4, 2.3.1, 2.3.2

DBMS_MVIEWパッケージ

BEGIN_TABLE_REORGANIZATIONプロシージャ, 8.4.3.1

END_TABLE_REORGANIZATIONプロシージャ, 8.4.3.1

PURGE_LOGプロシージャ, 8.4.2.1

PURGE_MVIEW_FROM_LOGプロシージャ, 8.3.3.1, 8.3.3.2, 8.3.3.2, 8.4.2.1

REFRESHプロシージャ, 8.1, 8.5

UNREGISTER_MVIEWプロシージャ, 8.3.3.2

DBMS_OFFLINE_OGパッケージ, 15

BEGIN_INSTANTIATIONプロシージャ, 7.2.2.2

BEGIN_LOADプロシージャ, 7.2.2.2

END_INSTANTIATIONプロシージャ, 7.2.2.2

END_LOADプロシージャ, 7.2.2.2

RESUME_SUBSET_OF_MASTERSプロシージャ, 7.2.2.2

DBMS_OFFLINE_SNAPSHOTパッケージ

END_LOADプロシージャ, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5, 8.5

DBMS_RECTIFIER_DIFFパッケージ, 9.4, 16

DIFFERENCESプロシージャ, 9.4.1

RECTIFYプロシージャ, 9.4.2

DBMS_REFRESHパッケージ, 17

ADDプロシージャ, 5.2.2, 8.5

MAKEプロシージャ, 5.2.1, 5.2.2, 8.5

REFRESHプロシージャ, 8.1

DBMS_REPCATパッケージ, 7.4, 18

ADD_MASTER_DATABASEプロシージャ, 3.2, 7.2.2, 7.2.2.1

ADD_NEW_MASTERSプロシージャ, 7.2.1.1, 7.2.1.2

ADD_SITE_PRIORITY_SITEプロシージャ, 6.2.6

ADD_UPDATE_RESOLUTIONプロシージャ, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6

ALTER_MASTER_REPOBJECTプロシージャ, 6.2.3, 6.2.6, 6.4, 9.1

CANCEL_STATISTICSプロシージャ, 6.6.3

CREATE_MASTER_REPGROUPプロシージャ, 3.2

CREATE_MASTER_REPOBJECTプロシージャ, 6.2.3, 6.2.6

CREATE_MVIEW_REPGROUPプロシージャ, 5.2.1, 8.5, 8.6, 8.6

CREATE_MVIEW_REPOBJECTプロシージャ, 5.2.1, 5.2.1, 5.2.1, 5.2.1, 5.2.1, 5.2.1, 5.2.2, 5.2.2, 5.2.2, 5.2.2, 5.2.2, 5.2.2, 5.2.2, 8.6, 8.6

DEFINE_SITE_PRIORITYプロシージャ, 6.2.6

DO_DEFERRED_REPCAT_ADMINプロシージャ, 6.4, 7.2.2.2

DROP_MVIEW_REPGROUPプロシージャ, 8.3.1.1, 8.3.1.2, 8.3.2.1

DROP_MVIEW_REPOBJECTプロシージャ, 8.3.2.2

GENERATE_REPLICATION_SUPPORTプロシージャ, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 9.1

MAKE_COLUMN_GROUPプロシージャ, 6.2.1, 6.2.2, 6.2.3, 6.2.3, 6.2.4, 6.2.5, 6.2.6

PREPARE_INSTANTIATED_MASTERプロシージャ, 7.2.1.1, 7.2.1.2

PURGE_STATISTICSプロシージャ, 6.6.4

REGISTER_STATISTICSプロシージャ, 6.6.1

RELOCATE_MASTERDEFプロシージャ, 7.1.1

REMOVE_MASTER_DATABASEプロシージャ, 7.3

RESUME_MASTER_ACTIVITYプロシージャ, 3.2

RESUME_PROPAGATION_TO_MDEFプロシージャ, 7.2.1.1, 7.2.1.2

SPECIFY_NEW_MASTERSプロシージャ, 7.2.1.1, 7.2.1.2

SWITCH_MVIEW_MASTERプロシージャ, 8.2

UNREGISTER_MVIEW_REPGROUPプロシージャ, 8.3.3.1

DBMS_REPCAT_ADMINパッケージ, 20

GRANT_ADMIN_ANY_SCHEMAプロシージャ, 2.2.1, 2.3.1, 2.3.2

REGISTER_USER_REPGROUPプロシージャ, 2.2.1, 2.2.1, 2.2.2, 2.2.3, 2.3.1, 2.3.1

DBMS_REPCAT_INSTANTIATEパッケージ, 19

DROP_SITE_INSTANTIATIONプロシージャ, 8.3.1.1, 8.3.1.2

DBMS_REPCAT_RGTパッケージ, 21

CREATE_REFRESH_TEMPLATEプロシージャ, 4.3

CREATE_TEMPLATE_OBJECTプロシージャ, 4.3

CREATE_USER_AUTHORIZATIONプロシージャ, 4.3

INSTANTIATE_OFFLINEプロシージャ, 4.4.1.1

INSTANTIATE_ONLINEプロシージャ, 4.4.1.2

DBMS_REPUTILパッケージ, 22

REPLICATION_OFFプロシージャ, 7.5.4, 9.2.1

REPLICATION_ONプロシージャ, 7.5.4, 9.2.2

DDL,「データ定義言語」を参照 DEFCALLビュー, 26 DEFCALLDESTビュー, 26 DEFDEFAULTDESTビュー, 26

接続先の追加, 14

接続先の削除, 14, 14

DEFERRCOUNTビュー, 26 遅延トランザクション・キュー

遅延コール

値の判定, 9.5.3

管理, 9.5 伝播されたトランザクションのパージ, 9.5.2 プッシュ, 9.5.1 遅延トランザクション

データ・ディクショナリ・ビュー, 26

DEFDEFAULTDESTビュー

接続先の追加, 14

接続先の削除, 14

遅延リモート・プロシージャ・コール(RPC)

引数のタイプ, 13

引数値, 13

引数, 12

作成, 12

即時実行, 14

DEFSCHEDULEビュー

統計の消去, 14

接続先の削除, 14

キューからの削除, 14 監視, 10.4

パージ・ジョブ, 10.4.2.1, 10.4.2.2

プッシュ・ジョブ, 10.4.1.2, 10.4.1.3

再実行, 14 実行のスケジュール, 14 開始, 12 DEFERRORビュー, 9.6, 26

トランザクションの削除, 14

DEFINE_COLUMN_GROUPプロシージャ, 18 DEFINE_PRIORITY_GROUPプロシージャ, 18 DEFINE_SITE_PRIORITYプロシージャ, 6.2.6, 18 DEFLOBビュー, 26 DEFPROPAGATORビュー, 26, 26 DEFSCHEDULEビュー, 26

統計の消去, 10.6.6, 14

DEFTRANビュー, 26 DEFTRANDESTビュー, 26 DELETE_DEF_DESTINATIONプロシージャ, 14 DELETE_DEFAULT_DESTプロシージャ, 14 DELETE_ERRORプロシージャ, 14 DELETE_RUNTIME_PARMSプロシージャ, 21 DELETE_TRANプロシージャ, 14 デプロイメント・テンプレート

オブジェクトの変更, 21

パラメータの変更, 21

テンプレートの変更, 21

ユーザー認証の変更, 21

ユーザー・パラメータ値の変更, 21

ユーザーの認証, 4.3

テンプレートの比較, 21

概要, 4.1

テンプレートのコピー, 21

既存のオブジェクトからのオブジェクトの作成, 21

テンプレートの作成, 21

作成, 4.3, 4.3

データ・ディクショナリ・ビュー, 23

ファイルの配布, 4.5

サイトのインスタンス化の削除, 19

削除, 21

すべて削除, 21

マテリアライズド・ビュー・グループの削除, 8.3.1

作成用フローチャート, 4.3

インスタンス化, 4.6

インスタンス化スクリプト, 4.4.2

テンプレートのロック, 21, 21

監視, 10.1.3.4

オブジェクト

作成, 21

削除, 21

すべて削除, 21

オフライン・インスタンシエーション, 4.4, 19, 21 オンライン・インスタンシエーション, 19, 21 パッケージ化, 4.4, 4.4.1

オフライン・インスタンシエーション, 4.4.1.1

オンライン・インスタンシエーション, 4.4.1.2

パラメータ

作成, 4.3, 21

削除, 21

すべて削除, 21

ユーザー値, 4.3

ランタイム・パラメータ

作成, 21

削除, 21

IDの取得, 21

挿入, 21

サイト

削除, 21

すべて削除, 21

ユーザー認証

作成, 21

削除, 21

すべて削除, 21

ユーザー・パラメータ値

作成, 21

削除, 21

すべて削除, 21

ユーザー定義型, 4.1 DESTROYプロシージャ, 17 違い

表, 16

調整, 16

DIFFERENCESプロシージャ, 9.4.1, 16 DISABLEDファンクション, 14 使用禁止

伝播, 14

DO_DEFERRED_REPCAT_ADMINプロシージャ, 6.4, 7.2.2.2, 18 DROP MATERIALIZED VIEW LOG文, 8.4.4 DROP_ALL_OBJECTSプロシージャ, 21 DROP_ALL_TEMPLATE_PARMSプロシージャ, 21 DROP_ALL_TEMPLATE_SITESプロシージャ, 21 DROP_ALL_TEMPLATESプロシージャ, 21 DROP_ALL_USER_AUTHORIZATIONSプロシージャ, 21 DROP_ALL_USER_PARM_VALUESプロシージャ, 21 DROP_COLUMN_GROUPプロシージャ, 18 DROP_DELETE_RESOLUTIONプロシージャ, 18 DROP_GROUPED_COLUMNプロシージャ, 18 DROP_MASTER_REPGROUPプロシージャ, 18 DROP_MASTER_REPOBJECTプロシージャ, 18 DROP_MVIEW_REPGROUPプロシージャ, 8.3.1.1, 8.3.1.2, 18 DROP_MVIEW_REPOBJECTプロシージャ, 8.3.2.2, 18 DROP_PRIORITYプロシージャ, 18 DROP_PRIORITY_CHARプロシージャ, 18 DROP_PRIORITY_datatypeプロシージャ, 18 DROP_PRIORITY_DATEプロシージャ, 18 DROP_PRIORITY_GROUPプロシージャ, 18 DROP_PRIORITY_NUMBERプロシージャ, 18 DROP_PRIORITY_VARCHAR2プロシージャ, 18 DROP_REFRESH_TEMPLATEプロシージャ, 21 DROP_SITE_INSTANTIATIONプロシージャ, 8.3.1.1, 8.3.1.2, 19, 21 DROP_SITE_PRIORITYプロシージャ, 18 DROP_SITE_PRIORITY_SITEプロシージャ, 18 DROP_TEMPLATE_OBJECTプロシージャ, 21 DROP_TEMPLATE_PARMプロシージャ, 21 DROP_UNIQUE_RESOLUTIONプロシージャ, 18 DROP_UPDATE_RESOLUTIONプロシージャ, 18 DROP_USER_AUTHORIZATIONプロシージャ, 21 DROP_USER_PARM_VALUEプロシージャ, 21 動的所有権

競合防止, 6.5

行の所有者の検索, 6.5.3

所有権の取得, 6.5.4

ワークフロー・パーティション分割, 6.5.1

動的パフォーマンス・ビュー

レプリケーション, 24

E

END_INSTANTIATIONプロシージャ, 7.2.2.2, 15

END_LOADプロシージャ, 7.2.2.2, 8.5, 8.5, 15

END_TABLE_REORGANIZATIONプロシージャ, 8.4.3.1

Enterprise Manager

Advanced Replicationインタフェース, 10

エラー

エラー・キュー

DEFERRORビュー, 9.6

管理, 9.6

エラー・トランザクション

監視, 10.5

代替ユーザーとしての再実行, 9.6.2

受信者としての再実行, 9.6.1

EXCLUDE_PUSHファンクション, 14 EXECUTE_DDLプロシージャ, 18 EXECUTE_ERRORプロシージャ, 7.2.2.2, 9.6.1, 14 EXECUTE_ERROR_AS_USERプロシージャ, 9.6.2, 14 拡張可用性, 7.2.1, 18, 18, 18, 18, 18, 18

F

外部キー制約

マスター・サイトの追加, 7.2

FROM_REMOTEファンクション, 22

G

GENERATE_MVIEW_SUPPORTプロシージャ, 18

GENERATE_REPLICATION_SUPPORTプロシージャ, 3.2, 3.2, 9.1, 18

生成

レプリケーション・サポート, 3.2

プロシージャ・レプリケーション, 7.5.4

GET_ANYDATA_ARGファンクション, 9.5.3, 13 GET_ARG_FORMファンクション, 13 GET_ARG_TYPEファンクション, 13 GET_BLOB_ARGファンクション, 13 GET_CALL_ARGSプロシージャ, 13 GET_CHAR_ARGファンクション, 13 GET_CLOB_ARGファンクション, 13 GET_datatype_ARGファンクション, 13 GET_DATE_ARGファンクション, 13 GET_IDS_ARGファンクション, 13 GET_IYM_ARGファンクション, 13 GET_NCHAR_ARGファンクション, 13 GET_NCLOB_ARGファンクション, 13 GET_NUMBER_ARGファンクション, 13 GET_NVARCHAR2_ARGファンクション, 13 GET_OBJECT_NULL_VECTOR_ARGファンクション, 13 GET_RAW_ARGファンクション, 13 GET_ROWID_ARGファンクション, 13 GET_RUNTIME_PARM_IDファンクション, 21 GET_TIMESTAMP_ARGファンクション, 13 GET_TSLTZ_ARGファンクション, 13 GET_TSTZ_ARGファンクション, 13 GET_VARCHAR2_ARGファンクション, 13 GLOBAL_NAMEファンクション, 22 GRANT_ADMIN_ANY_SCHEMAプロシージャ, 2.2.1, 2.3.1, 2.3.2, 20 GRANT_ADMIN_SCHEMAプロシージャ, 20

I

IDS_ARGプロシージャ, 12

インポート

レプリケーション・グループ

オフライン・インスタンシエーション, 15, 15

ステータス・チェック, 18 INSERT_RUNTIME_PARMSプロシージャ, 21 INSTANTIATE_OFFLINEファンクション, 19, 21 INSTANTIATE_OFFLINEプロシージャ, 4.4.1.1 INSTANTIATE_ONLINEファンクション, 19, 21 INSTANTIATE_ONLINEプロシージャ, 4.4.1.2 インスタンス化, 4.6

DROP_SITE_INSTANTIATIONプロシージャ, 19, 21

オフライン, 4.4

INSTANTIATE_OFFLINEファンクション, 19, 21

オンライン

INSTANTIATE_ONLINEファンクション, 19, 21

リフレッシュ, 4.7 スクリプト, 4.4.2 IYM_ARGプロシージャ, 12

J

ジョブ

キュー

ジョブの削除, 14, 14

L

LOCK_TEMPLATE_EXCLUSIVEプロシージャ, 21

LOCK_TEMPLATE_SHAREDプロシージャ, 21

LONG列

レプリケーション, 9.3

M

MAKEプロシージャ, 5.2.1, 5.2.2, 8.5, 17

MAKE_COLUMN_GROUPプロシージャ, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.6, 18

MAKE_INTERNAL_PKGプロシージャ, 22

マスター定義サイト

再配置, 18

マスター・グループ

マスター・サイトの追加

静止, 7.2.2

静止なし, 7.2.1

オブジェクトの追加, 3.2 作成, 3.1, 3.2, 18 削除, 18 作成用フローチャート, 3.1.1 監視, 10.1.2 静止, 18 マスター・サイトの削除, 7.3 レプリケーション・アクティビティの再開, 18 マスター・マテリアライズド・ビュー

監視, 10.1.3

再編成, 8.4.3

マスター・サイト

追加, 3.2, 7.2

循環依存, 3.2, 7.2

フローチャート, 7.2.1.2

方法決定のフローチャート, 7.2.1

外部キー制約, 7.2

制限事項, 7.2.1

変更ベースのリカバリに対する制限事項, 7.2.1

全データベースのエクスポートまたはインポートに対する制限事項, 7.2.1

自己参照型制約, 3.2, 7.2

変更ベースのリカバリの使用, 7.2.1.1

全データベースのエクスポートまたはインポートの使用, 7.2.1.1

オブジェクトレベルのエクスポート/インポートの使用, 7.2.1.2

オフライン・インスタンシエーションの使用, 7.2.2.2

静止, 7.2.2

静止なし, 7.2.1

マスター定義サイトの変更, 7.1 クリーンアップ, 8.3.3 作成, 18 対象ユーザーの作成, 2.2.1, 2.2.1, 2.2.2, 2.2.2, 2.2.3, 2.2.3, 2.3.1 データベース・リンク, 2.2.4 違いの判別, 9.4 削除, 18 設定用フローチャート, 2.1 監視, 10.1.1, 10.1.3 変更の伝播, 14 削除, 7.3 スケジュール・リンクの対象, 2.2.4 スケジュール・パージの対象, 2.2.1 設定, 2.2 マスター表

列の追加, 18

オンラインでの再定義, 8.4.3

再編成, 8.4.3

方法, 8.4.3.3

切捨て, 8.4.3.2 マテリアライズド・ビュー・グループ

オブジェクトの追加, 5.2.1, 5.2.2, 8.6

マスターの変更, 8.2

作成, 5.2, 5.2.1, 5.2.2, 18

削除, 8.3.1, 8.3.2.1

グループ所有者, 8.6

監視, 10.2.2

リフレッシュ, 18

マテリアライズド・ビュー・ログ

列の追加, 8.4.1.2

変更, 8.4.1

必要な権限, 8.4.1

削除, 8.4.4 管理, 8.4

領域, 8.4.2

監視, 10.1.3.2 パージ

マテリアライズド・ビュー, 8.3.3.1, 8.3.3.2

必要な権限, 8.4.2.1

行のパージ

手動, 8.4.2.1

割り当てられた領域の削減, 8.4.2.2 マスターの再編成, 8.4.3 切捨て, 8.4.2.2 マスター表の切捨て, 8.4.3.2 マテリアライズド・ビュー・サイト

追加

オフライン・インスタンシエーションの使用, 8.5

管理者

作成, 2.3.1

マスターの変更, 18 データベース・リンク

作成, 2.3.2, 4.6, 5.2.1, 5.2.2, 8.6

削除, 8.3, 18 オブジェクトの削除, 8.3.2 設定用フローチャート, 2.3 グループ所有者

使用, 8.6

監視, 10.2.1 複数層

設定, 2.3

マスターへの変更の伝播, 14 リフレッシャ

作成, 2.3.1, 2.3.2

スケジュール・パージ, 2.3.1, 2.3.1, 2.3.2, 2.3.2 ユーザー

作成, 2.3.1

マテリアライズド・ビュー

データ・ディクショナリ・ビュー, 25

デプロイメント・テンプレート

ユーザー定義型, 4.1

削除, 8.3.2.2 サポートの生成, 18 監視, 10.2, 10.2.3 複数層

設定, 5.2

ユーザー定義の競合解消, B.1.5

マテリアライズド・ビュー・ログからのパージ, 8.3.3.1, 8.3.3.2 リフレッシュ・グループ

作成, 5.2.1, 5.2.2

リフレッシュ, 4.7, 8.1, 8.5 セキュリティ, A.2

トラステッド・セキュリティとアントラステッド・セキュリティの比較, A.2.1

マスターからの登録解除, 8.3.3.2 レプリケーションの監視, 10

Advanced Replicationインタフェース, 10

マルチマスター・レプリケーション

監視, 10.1

セキュリティ

トラステッド・セキュリティとアントラステッド・セキュリティの比較, A.1.1

複数層マテリアライズド・ビュー

設定, 2.3

N

NCHAR_ARGプロシージャ, 12

NCLOB_ARGプロシージャ, 12

通知ログ表

競合

作成, B.2.1

例, B.2.1.1

通知方法

ユーザー定義, B.2

通知パッケージ

競合

作成, B.2.2

NUMBER_ARGプロシージャ, 12 NVARCHAR2_ARGプロシージャ, 12

O

オブジェクト

マテリアライズド・ビュー・サイトへの追加, 18

変更, 18

作成

マスター・グループ, 18, 18

マテリアライズド・ビュー・サイト, 18

削除

マテリアライズド・ビュー・サイト, 8.3.2, 18

レプリケーション・サポートの生成, 18, 18 オフライン・インスタンシエーション

マスター・サイトの追加, 7.2.2.2

マテリアライズド・ビュー・サイトの追加, 8.5

INSTANTIATE_OFFLINEファンクション, 19, 21

レプリケーション・グループ, 15, 15, 15, 15, 15

オンライン・インスタンシエーション

INSTANTIATE_ONLINEファンクション, 19, 21

表のオンライン再定義, 8.4.3 Oracle Streams

移行, 18

P

パッケージ化

デプロイメント・テンプレート, 4.4

パラレル伝播

監視, 10.6.5, 10.6.7

パラメータ

デプロイメント・テンプレート, 4.3

ユーザー値, 4.3

パフォーマンス

レプリケーション

監視, 10.6

計画

レプリケーション, 1.2

PREPARE_INSTANTIATED_MASTERプロシージャ, 7.2.1.1, 7.2.1.2 PREPARE_INSTANTIATED_MASTERプロシージャ, 18 PRESERVE MATERIALIZED VIEW LOGオプション

TRUNCATE TABLE文, 8.4.3.2

優先グループ

メンバーの追加, 18

メンバーの変更

優先順位, 18

値, 18

作成, 18 削除, 18 メンバーの削除, 18, 18 サイト優先グループ

メンバーの追加, 18

プロシージャ・レプリケーション

競合, 7.5.3

レプリケーション・サポートの生成, 7.5.4

制限事項, 7.5.1

トランザクションのシリアル化, 7.5.3

ユーザー定義型, 7.5.2

使用, 7.5

伝播

方法の変更, 18, 18

使用禁止, 14

変更, 18

パラレル

監視, 10.6.5, 10.6.7

ステータス, 14 プロパゲータ

登録, 2.2.1, 2.2.1, 14

プロキシ・マテリアライズド・ビュー管理者

作成, 2.2.1, 2.2.1, 2.2.2, 2.2.2, 2.2.3, 2.2.3, 2.3.1

PURGEファンクション, 9.5.2, 14 PURGE_LOGプロシージャ, 8.4.2.1 PURGE_MASTER_LOGプロシージャ, 18 PURGE_MVIEW_FROM_LOGプロシージャ, 8.3.3.1, 8.3.3.2, 8.3.3.2, 8.4.2.1 PURGE_STATISTICSプロシージャ, 6.6.4, 18 パージ

DBA_REPCATLOG表, 18

遅延トランザクション・キュー, 9.5.2

マスター・サイト, 2.2.1

マテリアライズド・ビュー・サイト, 2.3.1, 2.3.2

監視, 10.4.2

PUSHファンクション, 9.5.1, 14 プッシュ

遅延トランザクション・キュー, 9.5.1

Q

静止

マスター・サイトの追加時に実行, 7.2.2

マスター・サイトの追加時に実行しない, 7.2.1

マスター・グループ, 18

R

RAW_ARGプロシージャ, 12

受信者

登録, 2.2.1

RECTIFYプロシージャ, 9.4.2, 16 調整

表, 9.4.2, 16

表の再定義

オンライン

レプリケーション, 8.4.3

リフレッシュ

マテリアライズド・ビュー・サイト, 18

マテリアライズド・ビュー, 8.1, 8.5

監視, 10.2.5, 10.2.6

リフレッシュ・グループ

メンバーの追加, 17

オブジェクトの追加, 5.2.1, 5.2.2, 8.5

作成, 5.2.1, 5.2.2, 17

データ・ディクショナリ・ビュー, 25

削除, 17

監視, 10.2.4

リフレッシュ, 8.1

リフレッシュ間隔

変更, 17

リフレッシュ

手動, 17

メンバーの削除, 17 REFRESHプロシージャ, 8.1, 8.1, 8.5, 17 REFRESH_ALL_MVIEWSプロシージャ, 8.1 REFRESH_DEPENDENTプロシージャ, 8.1 REFRESH_MVIEW_REPGROUPプロシージャ, 18 リフレッシャ

作成, 2.3.1, 2.3.2

REGISTER_MVIEW_REPGROUPプロシージャ, 18 REGISTER_PROPAGATORプロシージャ, 2.2.1, 2.3.1, 2.3.2, 14 REGISTER_STATISTICSプロシージャ, 6.6.1, 18 REGISTER_USER_REPGROUPプロシージャ, 2.2.1, 2.2.1, 2.2.2, 2.2.3, 2.3.1, 2.3.1, 20 RELOCATE_MASTERDEFプロシージャ, 7.1.1, 18 REMOVE_MASTER_DATABASEプロシージャ, 7.3 REMOVE_MASTER_DATABASEプロシージャ, 18 RENAME_SHADOW_COLUMN_GROUPプロシージャ, 18 REPCAT_IMPORT_CHECKプロシージャ, 18 レプリケーション

カタログ・ビュー, 10, 23

列グループ, 6.2.1, 6.2.2, 6.2.3, 6.2.4, 6.2.5, 6.2.6

競合解消, 6

一意性競合, 6.3

環境の構築, 1.1 データ・ディクショナリ・ビュー, 10, 23 データベース・リンク

作成, 2.2.4

日時データ型

略称, 11.4

遅延トランザクション・キュー

管理, 9.5

遅延トランザクション

データ・ディクショナリ・ビュー, 26

デプロイメント・テンプレート

ユーザー定義型, 4.1

表間の違いの判別, 9.4 使用禁止, 7.5.4, 9.2, 9.2.1, 22 動的パフォーマンス・ビュー, 24 有効化, 7.5.4, 9.2, 9.2.2, 22 エラー・キュー

管理, 9.6

環境構築用フローチャート, 1.1 サポートの生成, 3.2 期間データ型

略称, 11.4

LONG列

LOBへの変換, 9.3

環境の管理, 6.6.4 マスター・グループ

作成, 3.1

マスター・サイト

追加, 3.2

マテリアライズド・ビュー・グループ

作成, 5.2, 5.2.1, 5.2.2

マテリアライズド・ビュー・ログ

管理, 8.4

監視, 10

遅延トランザクション, 10.4

エラー・トランザクション, 10.5

マスター環境, 10.1

マテリアライズド・ビュー環境, 10.2

パフォーマンス, 10.6

オブジェクト

マスター・グループへの追加, 3.2

マスター・サイトからの削除, 18

パラレル伝播

監視, 10.6.5, 10.6.7

計画対象, 1.2 プロシージャ・レプリケーション, 7.5

制限事項, 7.5.1

ユーザー定義型, 7.5.2

プロパゲータ

登録, 2.2.1, 2.2.1

受信者

登録, 2.2.1

レプリケート・オブジェクト, 9 レプリケーション・キュー, 9 再開, 3.2 スケジュール・リンク

作成, 2.2.4

セキュリティ, A サイトの設定, 2.1 サイト

設定, 2.1

統計

消去, 10.6.6

トリガー, 9.2.3 レプリケーション・カタログ・ビュー, 23

コメント

更新, 7.4, 7.4

レプリケーションの監視, 10 レプリケーション・マネージメントAPI, 11

競合解消, 6

デプロイメント・テンプレート

作成, 4.3

インスタンス化, 4.6

パッケージ化, 4.4

例, 11.1 レプリケーション環境の管理, 6.6.4 レプリケート・オブジェクトの管理, 9 レプリケーション・キューの管理, 9 マスター・グループ

作成, 3.1

マテリアライズド・ビュー・グループ

作成, 5.2

概要, 1 パッケージ, 10.6.7.2 レプリケーション・サイトの設定, 2.1 レプリケーション・オブジェクト

変更, 9.1

表

変更, 9.2

REPLICATION_IS_ONファンクション, 22 REPLICATION_OFFプロシージャ, 22 REPLICATION_ONプロシージャ, 7.5.4, 7.5.4, 22 RESUME_MASTER_ACTIVITYプロシージャ, 3.2, 18 RESUME_PROPAGATION_TO_MDEFプロシージャ, 7.2.1.1, 7.2.1.2, 18 RESUME_SUBSET_OF_MASTERSプロシージャ, 7.2.2.2, 15 レプリケーション・アクティビティの再開, 18 REVOKE_ADMIN_ANY_SCHEMAプロシージャ, 20 REVOKE_ADMIN_SCHEMAプロシージャ, 20 ROWID_ARGプロシージャ, 12

S

SCHEDULE_PURGEプロシージャ, 2.2.1, 2.3.1, 2.3.2, 14

SCHEDULE_PUSHプロシージャ, 2.2.4, 2.3.1, 2.3.2, 14

スケジュール・リンク

作成, 2.2.4

セキュリティ

マテリアライズド・ビュー・レプリケーション, A.2

トラステッド・セキュリティとアントラステッド・セキュリティの比較, A.2.1

マルチマスター・レプリケーション, A.1

トラステッド・セキュリティとアントラステッド・セキュリティの比較, A.1.1

レプリケーション, A トラステッド・セキュリティとアントラステッド・セキュリティの比較, A.1.1, A.2.1 SEND_OLD_VALUESプロシージャ, 18 シリアル化

トランザクション, 7.5.3

SET_COLUMNSプロシージャ, 18, 18 SET_DISABLEDプロシージャ, 14 サイトの優先順位

変更, 18

サイト優先グループ

メンバーの追加, 18

作成

構文, 18

削除, 18 メンバーの削除, 18 スナップショット,「マテリアライズド・ビュー」を参照 SPECIFY_NEW_MASTERSプロシージャ, 7.2.1.1, 18 統計

競合解消

監査, 6.6

取消し, 6.6.3

消去, 6.6.4, 18

収集, 6.6.1, 18

表示, 6.6.2

伝播

消去, 10.6.6, 14

ステータス

伝播, 14

記憶域パラメータ

マテリアライズド・ビュー・ログ

変更, 8.4.1.1

STREAMS_MIGRATIONプロシージャ, 18 SUBTRACTプロシージャ, 17 SUSPEND_MASTER_ACTIVITYプロシージャ, 18 SWITCH_MVIEW_MASTERプロシージャ, 8.2, 18 SYNC_UP_REPプロシージャ, 22

T

表

変更

変更をレプリケートしない, 9.2

レプリケーションの変更, 9.1 比較, 16 違い, 9.4 調整, 9.4.2, 16 オンラインでの再定義

レプリケーション, 8.4.3

コメントの更新, 7.4, 7.4 テンプレート,「デプロイメント・テンプレート」を参照 TIMESTAMP_ARGプロシージャ, 12 トークン渡し, 6.5.2

実現例, 6.5

TRANSACTIONプロシージャ, 12 トランザクション

シリアル化, 7.5.3

トリガー

サイトの優先順位による競合解消, 6.2.6

タイムスタンプによる競合解消, 6.2.3

レプリケート, 9.2.3

TRUNCATE文, 8.4.2.2 TRUNCATE TABLE文

PRESERVE MATERIALIZED VIEW LOGオプション, 8.4.3.2

トラステッド・セキュリティ, A.1.1, A.2.1 TSLTZ_ARGプロシージャ, 12

U

UNDO_ADD_NEW_MASTERS_REQUESTプロシージャ, 18

UNREGISTER_MVIEWプロシージャ, 8.3.3.2

UNREGISTER_MVIEW_REPGROUPプロシージャ, 18

UNREGISTER_PROPAGATORプロシージャ, 14

UNREGISTER_USER_REPGROUPプロシージャ, 20

UNSCHEDULE_PURGEプロシージャ, 14

UNSCHEDULE_PUSHプロシージャ, 14

USER_REPCAT_REFRESH_TEMPLATESビュー, 23

USER_REPCAT_TEMP_OUTPUTビュー, 4.4.1

USER_REPCAT_TEMPLATE_OBJECTSビュー, 23

USER_REPCAT_TEMPLATE_PARMSビュー, 23

USER_REPCAT_TEMPLATE_SITESビュー, 23

USER_REPCAT_USER_AUTHORIZATIONSビュー, 23

USER_REPCAT_USER_PARM_VALUESビュー, 23

USER_REPCATLOGビュー, 23

USER_REPCOLUMNビュー, 23

USER_REPCOLUMN_GROUPビュー, 23

USER_REPCONFLICTビュー, 23, 23

USER_REPDDLビュー, 23, 23

USER_REPGENOBJECTSビュー, 23, 23

USER_REPGROUPビュー, 23

USER_REPGROUP_PRIVILEGESビュー, 23

USER_REPGROUPED_COLUMNビュー, 23

USER_REPKEY_COLUMNSビュー, 23

USER_REPOBJECTビュー, 23

USER_REPPARAMETER_COLUMNビュー, 23

USER_REPPRIORITYビュー, 23

USER_REPPRIORITY_GROUPビュー, 23

USER_REPPROPビュー, 23

USER_REPRESOL_STATS_CONTROLビュー, 23

USER_REPRESOLUTIONビュー, 23

USER_REPRESOLUTION_METHODビュー, 23

USER_REPRESOLUTION_STATISTICSビュー, 23

USER_REPSITESビュー, 23

ユーザー

デプロイメント・テンプレートに対する認証, 4.3

マスター・マテリアライズド・ビュー・サイト, 2.3.1

マスター・サイト, 2.2.1, 2.2.1, 2.2.2, 2.2.2, 2.2.3, 2.2.3

マテリアライズド・ビュー・サイト, 2.3.1

V

V$MVREFRESHビュー, 24

V$REPLPROPビュー, 10.6.7, 24

V$REPLQUEUEビュー, 24

VALIDATEプロシージャ, 18

VARCHAR2_ARGプロシージャ, 12

W

WAIT_MASTER_LOGプロシージャ, 18

ワークフロー, 6.5.1

Oracleの法律上の注意点

コピーライト

Copyright © 1994-2017, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Pre-General Availability (一般提供前)版のドキュメントについて

このドキュメントがPre-General Availability (一般提供前)版の場合:

このドキュメントはPre-General Availability (一般提供前)版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のPre-General Availability (一般提供前)版のドキュメントについて

このドキュメントが非公開のPre-General Availability (一般提供前)版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のPre-General Availability Trial Agreement (Pre-GAトライアル契約)のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle Partner Network Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティ

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。