45 DBMS_COMPARISON
DBMS_COMPARISON
パッケージでは、様々なデータベースでデータベース・オブジェクトを比較および収束するインタフェースが提供されています。
45.1 DBMS_COMPARISONの概要
DBMS_COMPARISON
パッケージは、2つのデータベースのデータベース・オブジェクトの比較に使用できるオラクル社提供のパッケージです。また、このパッケージを使用すると、様々なデータベースで一貫性が保持されるようにデータベース・オブジェクトを収束することができます。通常、このパッケージは、複数のデータベースでデータベース・オブジェクトを共有している環境で使用されます。複数のデータベースに同じデータベース・オブジェクトのコピーが存在する場合、そのデータベース・オブジェクトは共有データベース・オブジェクトです。いくつかのデータ・ディクショナリ・ビューには、DBMS_COMPARISON
パッケージで作成された比較に関する情報が含まれています。
共有データベース・オブジェクトは、データ・レプリケーションによって保持できます。たとえば、マテリアライズド・ビューまたはOracle Streamsコンポーネントによって、データベース・オブジェクトをレプリケートして複数のデータベースで保持できます。また、カスタム・アプリケーションによって、共有データベース・オブジェクトを保持することもできます。データベース・オブジェクトが共有されている場合、そのデータベース・オブジェクトを共有するデータベースでデータベース・オブジェクトが拡散する可能性があります。このパッケージを使用すると、共有データベース・オブジェクトの相違点を特定できます。違いの識別後、必要に応じて、このパッケージを使用して共有データベース・オブジェクトを同期化することもできます。
2つの異なるデータベースで共有されているデータベース・オブジェクトを比較するには、次の一般的なステップを実行します。
-
このパッケージのCREATE_COMPARISONプロシージャを実行して、比較を作成します。この比較によって、比較するデータベース・オブジェクトが特定され、比較用のパラメータが指定されます。
-
このパッケージのCOMPAREファンクションを実行して、2つのデータベースのデータベース・オブジェクトを比較し、相違点を特定します。このファンクションは、相違点が検出された場合は
TRUE
、相違点が検出されなかった場合はFALSE
を戻します。また、このファンクションは、データ・ディクショナリ・ビューに比較結果を移入します。COMPARE
ファンクションを実行するたびに、個別の比較結果が生成されます。 -
比較結果を確認する場合は、次のデータ・ディクショナリ・ビューを問い合せます。
-
DBA_COMPARISON_SCAN
-
USER_COMPARISON_SCAN
-
DBA_COMPARISON_SCAN_VALUES
-
USER_COMPARISON_SCAN_VALUES
-
DBA_COMPARISON_ROW_DIF
-
USER_COMPARISON_ROW_DIF
-
-
2つのデータベース間で相違点が検出されたデータベース・オブジェクトを同期化する場合は、このパッケージの
CONVERGE
プロシージャを実行します。
DBMS_COMPARISON
パッケージのCREATE_COMPARISON
プロシージャを使用して比較を作成した後は、COMPARE
ファンクションを使用して比較を随時実行できます。COMPARE
ファンクションを実行するたびに、適切なデータ・ディクショナリ・ビューに比較結果が記録されます。このパッケージのサブプログラムを起動し、比較結果のスキャンを指定すると、比較結果が変更される場合があります。たとえば、RECHECK
ファンクションを実行すると、比較結果が変更される場合があります。
COMPARE
ファンクションを1回実行したときの比較結果に、1回以上のスキャンが含まれている場合があります。スキャンでは、共有データベース・オブジェクトの一部またはすべての行で、特定の時点における違いが確認されます。データベース・オブジェクトは複数回比較することができ、比較結果の各スキャンは一意のスキャンIDによって識別されます。
バケットとは、比較されているデータベース・オブジェクトの一定範囲の行です。バケットを使用すると、データベース・オブジェクトが複数の範囲に分割され、別々に比較されるため、パフォーマンスが向上します。すべての比較では、比較対象の行が適切な数のバケットに分割され、各バケットがスキャンによって比較されます。
COMPARE
ファンクションによってバケットが小さいバケットに分割されるたびに、小さいバケットに対して新しいスキャンが実行されます。大きいバケットを分析するスキャンは、大きいバケットが分割されて生成された小さいバケットを分析する各スキャンの親スキャンとなります。比較結果のルート・スキャンは、最上位の親スキャンです。ルート・スキャンに親スキャンはありません。
スキャンを再チェックするにはRECHECK
ファンクションを使用し、スキャンを収束するにはCONVERGE
プロシージャを使用します。比較結果のすべての行を再チェックまたは収束する場合は、適切なサブプログラムの比較結果にルート・スキャンIDを指定します。比較結果の一部の行を再チェックまたは収束する場合は、相違点が含まれているスキャンのスキャンIDを指定します。
45.2 DBMS_COMPARISONのセキュリティ・モデル
このパッケージのセキュリティは、2つのいずれかの方法で制御できます。
-
選択したユーザーまたはロールに、このパッケージの
EXECUTE
を付与する方法 -
選択したユーザーまたはロールに、
EXECUTE_CATALOG_ROLE
を付与する方法
パッケージのサブプログラムをストアド・プロシージャ内から実行する場合、そのサブプログラムを実行するユーザーには、パッケージのEXECUTE
権限を直接付与する必要があります。ロールを通して付与することはできません。
DBMS_COMPARISON
パッケージの各サブプログラムには、comparison_name
パラメータがあります。現行のユーザーは、DBMS_COMPARISON
パッケージのサブプログラムを実行する場合、指定した比較の所有者である必要があります。
COMPARE
ファンクション、RECHECK
ファンクションまたはCONVERGE
プロシージャを実行するには、次のユーザーが共有データベース・オブジェクトのコピーごとにSELECT
またはREAD
権限を持っている必要があります。
-
ローカル・データベースの比較の所有者
-
比較の所有者がデータベース・リンクを介して接続するリモート・データベースのユーザー(データベース・リンクを使用する場合)
CONVERGE
プロシージャには、共有データベース・オブジェクトに対する変更を行うデータベースのいずれかのユーザーに対して追加の権限も必要です。このユーザーは、このデータベースの共有データベース・オブジェクトに対するINSERT
、UPDATE
およびDELETE
権限を持っている必要があります。
また、CONVERGE
プロシージャが、NULL
以外の値に設定されたlocal_converge_tag
またはremote_converge_tag
パラメータで実行されるとき、次の要件も満たしている必要があります。
-
ローカル表が優先される場合は、
CONVERGE
プロシージャの実行者がデータベース・リンクを通じて接続するリモート・データベースのユーザーにDBMS_STREAMS_ADM
パッケージのEXECUTE_CATALOG_ROLE
またはEXECUTE
権限を付与する必要があります。 -
リモート表が優先される場合は、ローカル・データベースの
CONVERGE
プロシージャ実行者にDBMS_STREAMS_ADM
パッケージのEXECUTE_CATALOG_ROLE
またはEXECUTE
権限を付与する必要があります。
ノート:
データベース管理者(DBA)は、他のユーザーが所有する一部のDBMS_COMPARISON
ファンクションおよびプロシージャを制御することができます。DROP_COMPARISON
とPURGE_COMPARISON
も制御の対象になります。DBAによるオーバーライドは、別のユーザーが作成した比較を削除する必要があるクリーンアップ操作で特に有用です。
45.3 DBMS_COMPARISONの定数
DBMS_COMPARISON
パッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります。たとえば、DBMS_COMPARISON.CMP_SCAN_MODE_FULL
です。
表 45-1に、パラメータおよび列挙定数の一覧を示します。
表45-1 DBMS_COMPARISONパラメータおよび列挙定数
パラメータ | オプション | タイプ | 説明 |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45.4 DBMS_COMPARISONのビュー
DBMS_COMPARISON
パッケージでは、複数のビューが使用されます。
これらのビューを次に示します。
-
DBA_COMPARISON
-
USER_COMPARISON
-
DBA_COMPARISON_COLUMNS
-
USER_COMPARISON_COLUMNS
-
DBA_COMPARISON_SCAN
-
USER_COMPARISON_SCAN
-
DBA_COMPARISON_SCAN_VALUES
-
USER_COMPARISON_SCAN_VALUES
-
DBA_COMPARISON_ROW_DIF
-
USER_COMPARISON_ROW_DIF
45.5 DBMS_COMPARISONの操作上のノート
DBMS_COMPARISON
パッケージには、特定の要件および操作上のノートがあります。
例を次に示します。
-
DBMS_COMPARISONパッケージのOracle Databaseリリース要件
-
DBMS_COMPARISONパッケージのデータベース文字セット要件
-
DBMS_COMPARISONパッケージのデータベース・オブジェクト要件
-
DBMS_COMPARISONパッケージの索引列要件
-
DBMS_COMPARISONパッケージのデータ・タイプ要件
-
更新されない行のみの収束
DBMS_COMPARISONパッケージのOracle Databaseリリース要件
DBMS_COMPARISON
パッケージのサブプログラムを実行する場合は、次のOracle Databaseリリース要件を満たしている必要があります。
-
DBMS_COMPARISON
のサブプログラムを実行するローカル・データベースは、Oracle Database 11gリリース1(11.1)のデータベースである必要があります。 -
リモート・データベースは、Oracle Database 10gリリース1(10.1)以上のデータベースである必要があります。このリリースより前のOracle DatabaseおよびOracle以外のデータベースは、サポートされていません。
DBMS_COMPARISONパッケージのデータベース文字セット要件
データベース文字セットは、比較対象のデータベース・オブジェクトが含まれているデータベースのものと同じである必要があります。
参照:
データベース文字セットの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
DBMS_COMPARISONパッケージのデータベース・オブジェクト要件
DBMS_COMPARISON
パッケージでは、次のタイプのデータベース・オブジェクトを比較できます。
-
表
-
単一表ビュー
-
マテリアライズド・ビュー
-
表、単一表ビューおよびマテリアライズド・ビューのシノニム
異なるデータベースで、様々なタイプのデータベース・オブジェクトを比較および収束できます。たとえば、このパッケージを使用して、あるデータベースの表と別のデータベースのマテリアライズド・ビューを比較および収束できます。
DBMS_COMPARISON
パッケージのサブプログラムを実行するには、指定したデータベース・オブジェクトが各データベースで同じ形状をしている必要があります。具体的には、データベース・オブジェクトは各データベースで同数の列を持ち、対応する列のデータ・タイプが一致している必要があります。
比較されるデータベース・オブジェクトに、その他のデータベース・オブジェクトに存在しない列が含まれている場合は、比較の作成時に余分な列を除外することによってデータベース・オブジェクトを比較できます。両方のデータベース・オブジェクトに存在する列のみを表示するには、CREATE_COMPARISON
プロシージャでcolumn_list
パラメータを使用します。
DBMS_COMPARISONパッケージの索引列要件
この項では、数値、タイムスタンプおよび時間隔の列について説明します。これらには、次のデータ・タイプのものが含まれます。
-
数値列のデータ・タイプは、
NUMBER
、FLOAT
、BINARY_FLOAT
、およびBINARY_DOUBLE
です。 -
タイムスタンプ列のデータ・タイプは、
TIMESTAMP
、TIMESTAMP
WITH
TIME
ZONE
、およびTIMESTAMP
WITH
LOCAL
TIME
ZONE
です。 -
期間列のデータ・タイプは、
INTERVAL
YEAR
TO
MONTH
およびINTERVAL
DAY
TO
SECOND
です。
DBMS_COMPARISON
パッケージですべてのスキャン・モードがサポートされるには、データベース・オブジェクトに次のいずれかのタイプの索引が必要です。
-
数値、タイムスタンプまたは
DATE
データ・タイプの列に対する単一列索引。 -
数値、タイムスタンプ、時間隔または
DATE
データ・タイプの列のみが含まれているコンポジット索引。コンポジット索引内の各列は、NOT
NULL
制約を含んでいるか、または主キーの一部である必要があります。
CMP_SCAN_MODE_FULL
およびCMP_SCAN_MODE_CUSTOM
がサポートされるには、データベース・オブジェクトに次のいずれかのタイプの索引が必要です。
-
数値、タイムスタンプ、期間、
DATE
、VARCHAR2
、またはCHAR
の各データ・タイプの列に対する単一列索引。 -
数値、タイムスタンプ、時間隔、
DATE
、VARCHAR2
またはCHAR
の列のみが含まれているコンポジット索引。コンポジット索引内の各列は、NOT
NULL
制約を含んでいるか、または主キーの一部である必要があります。
データベース・オブジェクトにこれらのタイプの索引のいずれかが含まれていない場合、そのデータベース・オブジェクトはDBMS_COMPARISON
パッケージではサポートされません。たとえば、データベース・オブジェクトにNVARCHAR2
列に対する単一索引のみが含まれている場合、そのデータベース・オブジェクトはDBMS_COMPARISON
パッケージではサポートされません。また、データベース・オブジェクトに1つのみの索引が含まれていて、その索引がNUMBER
列およびNCHAR
列を含むコンポジット索引である場合、そのデータベース・オブジェクトはDBMS_COMPARISON
パッケージではサポートされません。
CREATE_COMPARISON
プロシージャでindex_schema_name
およびindex_name
パラメータを使用して比較を作成すると、索引を指定できます。索引を指定する場合は、索引の列が、比較に使用されるスキャン・モードの要件を満たしていることを確認してください。
比較の索引列は、比較に関連するすべての行を一意に識別する必要があります。次の制約は、この要件を満たしている必要があります。
-
主キー制約
-
1つ以上の
NULL
以外の列に対する一意制約
これらの制約が表に存在しない場合は、CREATE_COMPARISON
プロシージャでindex_schema_name
およびindex_name
パラメータを使用して、この要件を満たす列を含む索引を指定できます。
単一の索引値によってローカル行およびリモート行の両方が識別される場合、それらの行はレプリケーション表の同じ行のコピーである必要があります。また、同じ行のコピーの各ペアの索引値は常に同じである必要があります。
CREATE_COMPARISON
プロシージャを使用して比較を作成するときは、索引内のすべての列がcolumn_list
パラメータに含まれている場合にのみDBMS_COMPARISON
パッケージで索引を使用できます。
比較の作成後、次の問合せを実行して索引列(複数も可)を特定できます。
SELECT COLUMN_NAME, COLUMN_POSITION FROM DBA_COMPARISON_COLUMNS WHERE COMPARISON_NAME = 'COMPARE_CUSTOM' AND INDEX_COLUMN = 'Y';
2つ以上の索引列が存在する場合は、COLUMN_POSITION
に1
が指定されている索引列がコンポジット索引の先頭の索引列となります。
参照:
-
スキャン・モードについては、「定数」を参照してください。
-
比較用の索引の指定方法については、「CREATE_COMPARISONプロシージャ」を参照してください。
DBMS_COMPARISONパッケージのデータ・タイプ要件
DBMS_COMPARISON
パッケージでは、次のデータ・タイプの列のデータを比較できます。
-
VARCHAR2
-
NVARCHAR2
-
NUMBER
-
FLOAT
-
DATE
-
BINARY_FLOAT
-
BINARY_DOUBLE
-
TIMESTAMP
-
TIME
WITH
TIME
ZONE
-
TIMESTAMP
WITH
LOCAL
TIME
ZONE
-
INTERVAL
YEAR
TO
MONTH
-
INTERVAL
DAY
TO
SECOND
-
RAW
-
CHAR
-
NCHAR
TIMESTAMP
WITH
LOCAL
TIME
ZONE
データ・タイプの列を比較する場合、2つのデータベースで同じタイムゾーンが使用されている必要があります。また、データ・タイプNVARCHAR2
またはNCHAR
の列を比較する場合、2つのデータベースで同じ各国語文字セットが使用される必要があります。
DBMS_COMPARISON
パッケージでは、次のデータ・タイプの列のデータは比較できません。
-
LONG
-
LONG
RAW
-
ROWID
-
UROWID
-
CLOB
-
NCLOB
-
BLOB
-
BFILE
-
ユーザー定義型(オブジェクト型、
REF
、VARRAY、ネストした表など) -
オラクル社提供のタイプ(任意のタイプ、XMLタイプ、空間タイプ、メディア・タイプなど)
比較の作成時にサポートされていない列を除外することによって、サポートされていない列が含まれているデータベース・オブジェクトを比較できます。共有データベース・オブジェクトでサポートされている列のみを表示するには、CREATE_COMPARISON
プロシージャでcolumn_list
パラメータを使用します。
参照:
-
データ・タイプの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
-
各国語文字セットの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
更新されない行のみの収束
いずれのデータベースでも更新されない行のみを収束する必要があります。たとえば、共有データベース・オブジェクトがレプリケーション・コンポーネントによって更新される場合は、レプリケーションの変更が適用されている行のみを収束し、これらの行に対する新しい変更がレプリケートされていないことを確認します。レプリケートされたデータベース・オブジェクトを比較する場合は、通常、レプリケーション・アクティビティが少ないか、またはまったくない期間に比較して、永続的な相違点を識別することをお薦めします。
ノート:
2つのデータベースで共有データベース・オブジェクトの行が異なることがスキャンで識別され、スキャン後にその行が変更された場合、CONVERGE
プロシージャの実行後に、予期しないデータが行に含まれる可能性があります。
45.6 DBMS_COMPARISONのデータ構造
DBMS_COMPARISON
パッケージは、レコード
・タイプを定義します。
DBMS_COMPARISON
パッケージのCOMPARE
ファンクションまたはCONVERGE
プロシージャによって戻される情報が含まれています。
ノート:
COMPARE
ファンクションは、scan_id
フィールドの値のみを戻します。
45.6.1 COMPARISON_TYPEレコード・タイプ
このレコード・タイプには、DBMS_COMPARISON
パッケージのCOMPARE
ファンクションまたはCONVERGE
プロシージャによって戻される情報が含まれます。
ノート:
COMPARE
ファンクションは、scan_id
フィールドの値のみを戻します。
構文
TYPE COMPARISON_TYPE IS RECORD( scan_id NUMBER, loc_rows_merged NUMBER, rmt_rows_merged NUMBER, loc_rows_deleted NUMBER, rmt_rows_deleted NUMBER);
表45-2 COMPARISON_TYPEの属性
フィールド | 説明 |
---|---|
|
スキャンのスキャンID。 |
|
リモート・サイトのデータベース・オブジェクトからの情報で更新されたローカル・データベース・オブジェクトの行の数 |
|
ローカル・サイトのデータベース・オブジェクトからの情報で、リモート・サイトで更新されたデータベース・オブジェクトの行の数 |
|
ローカル・データベース・オブジェクトから削除された行の数 |
|
リモート・データベース・オブジェクトから削除された行の数 |
45.7 DBMS_COMPARISONサブプログラムの要約
この表は、DBMS_COMPARISON
サブプログラムを示し、簡単に説明しています。
表45-3 DBMS_COMPARISONパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
指定した比較を実行します。 |
|
指定したスキャンで比較されたデータベース・オブジェクトの一部を同期化するために、データ操作言語(DML)の変更を実行します。 |
|
比較を作成します。 |
|
比較を削除します。 |
|
比較のために、比較結果または比較結果のサブセットをパージします。 |
|
比較のために指定したスキャンで相違点を再チェックします。 |
45.7.1 COMPAREファンクション
このファンクションは、指定した比較を実行します。
比較を実行するたびに新しいスキャンが1回以上実行され、各スキャンには一意のスキャンIDがあります。CREATE_COMPARISON
プロシージャを使用すると、比較を定義し、名前を付けることができます。
構文
DBMS_COMPARISON.COMPARE( comparison_name IN VARCHAR2, scan_info OUT COMPARISON_TYPE, min_value IN VARCHAR2 DEFAULT NULL, max_value IN VARCHAR2 DEFAULT NULL, perform_row_dif IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN;
パラメータ
表45-4 COMPAREファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
|
「COMPARISON_TYPEレコード・タイプ」を参照してください。 |
|
比較のスキャン・モードが スキャン・モードが
比較対象のスキャン・モードを決定するには、 スキャン・モードについては、「DBMS_COMPARISONの定数」を参照してください。 |
|
比較のスキャン・モードが スキャン・モードが scan_modeパラメータが 比較対象のスキャン・モードを決定するには、 スキャン・モードについては、「DBMS_COMPARISONの定数」を参照してください。 |
|
バケットの詳細は、「DBMS_COMPARISONの概要」を参照してください。 |
戻り値
このファンクションは、比較対象のデータベース・オブジェクトで相違点が検出されなかった場合はTRUE
を戻します。また、比較されるデータベース・オブジェクトで相違点が検出された場合はFALSE
を戻します。
45.7.2 CONVERGEプロシージャ
このプロシージャは、指定したスキャンで比較されたデータベース・オブジェクトの一部を同期化するために、データ操作言語(DML)の変更を実行します。
構文
DBMS_COMPARISON.CONVERGE( comparison_name IN VARCHAR2, scan_id IN NUMBER, scan_info OUT COMPARISON_TYPE, converge_options IN VARCHAR2 DEFAULT CMP_CONVERGE_LOCAL_WINS, perform_commit IN BOOLEAN DEFAULT TRUE, local_converge_tag IN RAW DEFAULT NULL, remote_converge_tag IN RAW DEFAULT NULL);
パラメータ
表45-5 CONVERGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
|
収束されるデータベース・オブジェクト間での相違点が含まれているスキャンの識別子。 このパラメータでスキャンIDを指定する方法の詳細は、「概要」を参照してください。 |
|
「COMPARISON_TYPEレコード・タイプ」を参照してください。 |
|
これらの定数の詳細は、「定数」を参照してください。 |
|
|
|
収束されるデータベース・オブジェクトでデータを収束するための変更を行う前に、ローカル・データベース上のセッションに設定するReplicationタグ。 このパラメータ設定は、
|
|
収束されるデータベース・オブジェクトでデータを収束するための変更を行う前に、リモート・データベース上のセッションに設定するReplicationタグ。 このパラメータ設定は、
|
使用上のノート
収束されるデータベース・オブジェクトのいずれかが読取り専用のマテリアライズド・ビューである場合は、その読取り専用のマテリアライズド・ビューが収束操作で優先されるようにconverge_options
パラメータを設定する必要があります。CONVERGE
プロシージャで読取り専用のマテリアライズド・ビューに対する変更を試行すると、エラーが発生します。
45.7.3 CREATE_COMPARISONプロシージャ
このプロシージャは、比較を作成します。
構文
DBMS_COMPARISON.CREATE_COMPARISON( comparison_name IN VARCHAR2, schema_name IN VARCHAR2, object_name IN VARCHAR2, dblink_name IN VARCHAR2, index_schema_name IN VARCHAR2 DEFAULT NULL, index_name IN VARCHAR2 DEFAULT NULL, remote_schema_name IN VARCHAR2 DEFAULT NULL, remote_object_name IN VARCHAR2 DEFAULT NULL, comparison_mode IN VARCHAR2 DEFAULT CMP_COMPARE_MODE_OBJECT, column_list IN VARCHAR2 DEFAULT '*', scan_mode IN VARCHAR2 DEFAULT CMP_SCAN_MODE_FULL, scan_percent IN NUMBER DEFAULT NULL, null_value IN VARCHAR2 DEFAULT CMP_NULL_VALUE_DEF, local_converge_tag IN RAW DEFAULT NULL, remote_converge_tag IN RAW DEFAULT NULL, max_num_buckets IN NUMBER DEFAULT CMP_MAX_NUM_BUCKETS, min_rows_in_bucket IN NUMBER DEFAULT CMP_MIN_ROWS_IN_BUCKET);
パラメータ
表45-6 CREATE_COMPARISONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
|
比較するローカル・データベース・オブジェクトが含まれているスキーマの名前。 |
|
比較するローカル・データベース・オブジェクトの名前。 |
|
リモート・データベースへのデータベース・リンク。リモート・データベースに指定されたデータベース・オブジェクトは、ローカル・データベースのデータベース・オブジェクトと比較されます。
|
|
索引が含まれているスキーマの名前。
|
|
索引の名前。
関連項目: 索引の指定方法の詳細は、「使用上のノート」を参照してください。 |
|
リモート・データベースのデータベース・オブジェクトが含まれているスキーマの名前。2つのデータベースでスキーマ名が異なる場合は、
|
|
リモート・データベースのデータベース・オブジェクトの名前。2つのデータベースでデータベース・オブジェクト名が異なる場合は、
|
|
デフォルト値の |
|
比較されるデータベース・オブジェクトにすべての列を含めるには、 データベース・オブジェクトの列のサブセットを比較するには、チェックする列をカンマで区切ったリストを指定します。リストに含まれていない列は、比較時および収束時に無視されます。
|
|
これらの定数の詳細は、「定数」を参照してください。 |
|
ノート: |
|
比較されるデータベース・オブジェクトの各 比較される列に この定数の詳細は、「定数」を参照してください。 |
|
比較されるデータベース・オブジェクトでデータを収束するための変更を行う前に、ローカル・データベース上のセッションに設定するOracle Replicationタグ。 この比較の結果が収束される際に |
|
比較されるデータベース・オブジェクトでデータを収束するための変更を行う前に、リモート・データベース上のセッションに設定するOracle Replicationタグ。 この比較の結果が収束される際に |
|
使用するバケットの最大数を指定します。値を指定するか、または バケットの詳細は、「概要」を参照してください。 ノート: 比較用の索引列が |
|
各バケットの行の最小数を指定します。値を指定するか、または バケットの詳細は、「概要」を参照してください。 |
使用上のノート
この項では、CREATE_COMPARISON
プロシージャの使用上のノートについて説明します。
index_schema_nameおよびindex_nameパラメータの使用上のノート
index_schema_name
およびindex_name
パラメータを使用して比較用の索引を指定すると、指定した索引によって比較の索引列およびその順序付けが決定されます。指定した索引の列の順序によって、比較用の索引列の順序付けが決定されます。したがって、索引の列位置1にある列が比較用の先頭列となります。
索引列およびその順序付けによって、比較用に生成および実行される各SQL文の詳細が影響を受けます。各SQL文に対して、索引を使用するかどうかがオプティマイザによって決定されます。オプティマイザでは、索引の使用の決定時に、使用する特定の索引も決定されます。column_list
パラメータに指定された索引が使用される場合も、使用されない場合もあります。
指定した索引の列は、「DBMS_COMPARISONの操作上のノート」に示されている要件を満たしている必要があります。索引列がこれらの要件を満たしていない場合は、エラーが発生します。
ノート:
比較の作成時に索引を指定しなかった場合、CREATE_COMPARISON
プロシージャは主キー(存在する場合)または既存の一意の索引のいずれかを選択します。このプロシージャが一意でない索引を選択することはありません。ただし、索引を指定した場合、CREATE_COMPARISON
プロシージャは索引の一意性をチェックしません。したがって、索引キーが重複して存在する場合に一意でない索引を選択すると、CONVERGE
プロシージャでデータを同期化したときに、結果が不適切になる可能性があります。
column_listパラメータの使用上のノート
column_list
パラメータを'*'
以外の値に設定する場合、column_list
パラメータには次の列が必要です。
-
DBMS_COMPARISON
パッケージの索引列要件を満たすために必要な列。index_name
パラメータがNULL
以外の場合は、指定した索引の列が列リストに含まれている必要があります。index_name
パラメータがNULL
の場合は、DBMS_COMPARISON
索引要件について、「DBMS_COMPARISONの操作上のノート」を参照してください。 -
CONVERGE
プロシージャを使用して、比較に基づいてデータベース・オブジェクトを変更する場合は、NOT
NULL
制約が含まれ、デフォルト値は含まれていないデータベース・オブジェクト内の列が、列リストに含まれている必要があります。これらの列が含まれていない場合、CONVERGE
プロシージャはエラーを戻します。「CONVERGEプロシージャ」を参照してください。
45.7.4 DROP_COMPARISONプロシージャ
このプロシージャは、比較を削除します。
構文
DBMS_COMPARISON.DROP_COMPARISON( comparison_name IN VARCHAR2);
パラメータ
表45-7 DROP_COMPARISONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
45.7.5 PURGE_COMPARISONプロシージャ
このプロシージャは、比較のために、比較結果または比較結果のサブセットをパージします。
ノート:
少なくともscan_id
またはpurge_time
パラメータのいずれかをNULL
に設定する必要があります。scan_id
とpurge_time
パラメータの両方をNULL
に設定すると、このプロシージャは比較のすべての結果をパージします。
構文
DBMS_COMPARISON.PURGE_COMPARISON( comparison_name IN VARCHAR2, scan_id IN NUMBER DEFAULT NULL, purge_time IN TIMESTAMP DEFAULT NULL);
パラメータ
表45-8 PURGE_COMPARISONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
|
結果がパージされるスキャンのスキャンID。スキャンIDでルート・スキャンが識別される必要があります。スキャンIDでルート・スキャンが識別されない場合は、エラーが発生します。ルート・スキャンIDが指定されている場合、そのIDはパージされ、指定したルート・スキャンのすべての直接的および間接的な子スキャンもパージされます。
スキャンの詳細は、「概要」を参照してください。 |
|
この日付より前の結果がパージされます。
|
45.7.6 RECHECKファンクション
このファンクションは、比較のために指定したスキャンで相違点を再チェックします。
このファンクションは、次のいずれかのアクションを実行します。
-
指定したスキャンが前回実行時に正常に完了していた場合、このファンクションは、スキャンで以前に特定された相違点をチェックします。
-
指定したスキャンが部分的に完了していた場合、このファンクションは、以前のスキャンが終了した時点からデータベース・オブジェクトのチェックを継続します。
ノート:
このファンクションは、指定した比較スキャンに記録されなかった相違点については共有データベース・オブジェクトを比較しません。このような違いを確認するには、COMPARE
ファンクションを実行します。
参照:
構文
DBMS_COMPARISON.RECHECK( comparison_name IN VARCHAR2, scan_id IN NUMBER, perform_row_dif IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN;
パラメータ
戻り値
このファンクションは、比較対象のデータベース・オブジェクトで相違点が検出されなかった場合はTRUE
を戻します。また、比較されるデータベース・オブジェクトで相違点が検出された場合はFALSE
を戻します。