DBMS_COMPARISON
パッケージでは、様々なデータベースでデータベース・オブジェクトを比較および収束するインタフェースが提供されています。
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
ビュー
使用上の注意
関連項目:
|
この項では、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を指定します。
関連項目: スキャン、バケット、親スキャンおよびルート・スキャンの詳細情報などの比較の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
このパッケージのセキュリティは、次のいずれかの方法で制御できます。
選択したユーザーまたはロールに、このパッケージの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によるオーバーライドは、別のユーザーが作成した比較を削除する必要があるクリーンアップ操作で特に有用です。 |
DBMS_COMPARISON
パッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。列挙定数にはパッケージ名を接頭辞として付加する必要があります。たとえば、DBMS_COMPARISON.CMP_SCAN_MODE_FULL
です。
表35-1に、パラメータおよび列挙定数の一覧を示します。
表35-1 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
関連項目: 『Oracle Databaseリファレンス』 |
この項では、DBMS_COMPARISON
パッケージの次の使用上の注意について説明します。
DBMS_COMPARISON
パッケージのサブプログラムを実行する場合は、次のOracle Databaseリリース要件を満たしている必要があります。
DBMS_COMPARISON
のサブプログラムを実行するローカル・データベースは、Oracle Database 11gリリース1(11.1)のデータベースである必要があります。
リモート・データベースは、Oracle Database 10gリリース1(10.1)以上のデータベースである必要があります。このリリースより前のOracle DatabaseおよびOracle以外のデータベースは、サポートされていません。
データベース・キャラクタ・セットは、比較対象のデータベース・オブジェクトが含まれているデータベースのものと同じである必要があります。
関連項目: データベース・キャラクタ・セットの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。 |
DBMS_COMPARISON
パッケージでは、次のタイプのデータベース・オブジェクトを比較できます。
表
単一表ビュー
マテリアライズド・ビュー
表、単一表ビューおよびマテリアライズド・ビューのシノニム
様々なデータベースで、様々なタイプのデータベース・オブジェクトを比較および収束できます。たとえば、このパッケージを使用すると、あるデータベースの表と別のデータベースのマテリアライズド・ビューを比較および収束できます。
DBMS_COMPARISON
パッケージのサブプログラムを実行するには、指定したデータベース・オブジェクトが各データベースで同じ形状をしている必要があります。具体的には、データベース・オブジェクトは各データベースで同数の列を持ち、対応する列のデータ・タイプが一致している必要があります。
比較されるデータベース・オブジェクトに、その他のデータベース・オブジェクトに存在しない列が含まれている場合は、比較の作成時に余分な列を除外することによってデータベース・オブジェクトを比較できます。両方のデータベース・オブジェクトに存在する列のみを表示するには、CREATE_COMPARISON
プロシージャでcolumn_list
パラメータを使用します。
この項では、数値、タイムスタンプおよび時間隔の列について説明します。これらには、次のデータ・タイプのものが含まれます。
数値列のデータ・タイプは、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
が指定されている索引列がコンポジット索引の先頭の索引列となります。
DBMS_COMPARISON
パッケージでは、次のデータ・タイプの列のデータを比較できます。
VARCHAR2
NVARCHAR2
NUMBER
FLOAT
DATE
BINARY_FLOAT
BINARY_DOUBLE
TIMESTAMP
TIMESTAMP
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
パラメータを使用します。
関連項目:
|
いずれのデータベースでも更新されない行のみを収束する必要があります。たとえば、共有データベース・オブジェクトがレプリケーション・コンポーネントによって更新される場合は、レプリケーションの変更が適用されている行のみを収束し、これらの行に対する新しい変更がレプリケートされていないことを確認します。レプリケートされたデータベース・オブジェクトを比較する場合は、通常、レプリケーション・アクティビティが少ないか、またはまったくない期間に比較して、永続的な相違点を識別することをお薦めします。
注意: スキャンによって、2つのデータベースの共有データベース・オブジェクトの行が異なることが識別され、スキャン後にその行が変更された場合、CONVERGE プロシージャを実行すると、その行によって予期しないデータが戻される可能性があります。 |
関連項目: Oracle Streamsレプリケーション環境でのDBMS_COMPARISONパッケージの詳細は、『Oracle Streamsレプリケーション管理者ガイド』 を参照してください。 |
DBMS_COMPARISON
パッケージは、レコード
・タイプを定義します。
表35-3 DBMS_COMPARISONパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
指定した比較を実行します。 |
|
指定したスキャンで比較されたデータベース・オブジェクトの一部を同期化するために、データ操作言語(DML)の変更を実行します。 |
|
比較を作成します。 |
|
比較を削除します。 |
|
比較のために、比較結果または比較結果のサブセットをパージします。 |
|
比較のために指定したスキャンで相違点を再チェックします。 |
このファンクションは、指定した比較を実行します。
比較を実行するたびに新しいスキャンが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;
パラメータ
表35-4 COMPAREファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
|
「COMPARISON_TYPEレコード・タイプ」を参照してください。 |
|
比較のスキャン・モードが スキャン・モードが
比較対象のスキャン・モードを決定するには、 スキャン・モードについては、「定数」を参照してください。 |
|
比較のスキャン・モードが スキャン・モードが scan_modeパラメータが 比較対象のスキャン・モードを決定するには、 スキャン・モードについては、「定数」を参照してください。 |
|
バケットの詳細は、「概要」を参照してください。 |
このプロシージャは、指定したスキャンで比較されたデータベース・オブジェクトの一部を同期化するために、データ操作言語(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);
パラメータ
表35-5 CONVERGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
|
収束されるデータベース・オブジェクト間での相違点が含まれているスキャンの識別子。 このパラメータでスキャンIDを指定する方法の詳細は、「概要」を参照してください。 |
|
「COMPARISON_TYPEレコード・タイプ」を参照してください。 |
|
これらの定数の詳細は、「定数」を参照してください。 |
|
|
|
収束されるデータベース・オブジェクトでデータを収束するための変更を行う前に、ローカル・データベース上のセッションに設定するOracle Streamsタグ。 このパラメータ設定は、
このパラメータに関連したセキュリティ要件の詳細は、「セキュリティ・モデル」を、またタグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
収束されるデータベース・オブジェクトでデータを収束するための変更を行う前に、リモート・データベース上のセッションに設定するOracle Streamsタグ。 このパラメータ設定は、
このパラメータに関連したセキュリティ要件の詳細は、「セキュリティ・モデル」を、またタグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
このプロシージャは、比較を作成します。
構文
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);
パラメータ
表35-6 CREATE_COMPARISONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
|
比較するローカル・データベース・オブジェクトが含まれているスキーマの名前。 |
|
比較するローカル・データベース・オブジェクトの名前。 |
|
リモート・データベースへのデータベース・リンク。リモート・データベースに指定されたデータベース・オブジェクトは、ローカル・データベースのデータベース・オブジェクトと比較されます。
|
|
索引が含まれているスキーマの名前。
|
|
索引の名前。
関連項目: 索引の指定方法の詳細は、「使用上の注意」を参照してください。 |
|
リモート・データベースのデータベース・オブジェクトが含まれているスキーマの名前。2つのデータベースでスキーマ名が異なる場合は、
|
|
リモート・データベースのデータベース・オブジェクトの名前。2つのデータベースでデータベース・オブジェクト名が異なる場合は、
|
|
デフォルト値の |
|
比較されるデータベース・オブジェクトにすべての列を含めるには、 データベース・オブジェクトの列のサブセットを比較するには、チェックする列をカンマで区切ったリストを指定します。リストに含まれていない列は、比較時および収束時に無視されます。 column_listパラメータで必要な列については、 |
|
これらの定数の詳細は、「定数」を参照してください。 |
|
注意: |
|
比較されるデータベース・オブジェクトの各 比較される列に この定数の詳細は、「定数」を参照してください。 |
|
比較されるデータベース・オブジェクトでデータを収束するための変更を行う前に、ローカル・データベース上のセッションに設定するOracle Streamsタグ。 この比較の結果が収束される際に タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
比較されるデータベース・オブジェクトでデータを収束するための変更を行う前に、リモート・データベース上のセッションに設定するOracle Streamsタグ。 この比較の結果が収束される際に タグの詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
|
使用するバケットの最大数を指定します。値を指定するか、または バケットの詳細は、「概要」を参照してください。 注意: 比較用の索引列が |
|
各バケットの行の最小数を指定します。値を指定するか、または バケットの詳細は、「概要」を参照してください。 |
使用上の注意
この項では、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パッケージの索引列要件」を参照してください。
CONVERGE
プロシージャを使用して、比較に基づいてデータベース・オブジェクトを変更する場合は、NOT
NULL
制約が含まれ、デフォルト値は含まれていないデータベース・オブジェクト内の列が、列リストに含まれている必要があります。これらの列が含まれていない場合、CONVERGE
プロシージャはエラーを戻します。詳細は、「CONVERGEプロシージャ」を参照してください。
このプロシージャは、比較のために、比較結果または比較結果のサブセットをパージします。
注意: 少なくとも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);
パラメータ
表35-8 PURGE_COMPARISONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
比較の名前。 |
|
結果がパージされるスキャンのスキャンID。スキャンIDでルート・スキャンが識別される必要があります。スキャンIDでルート・スキャンが識別されない場合は、エラーが発生します。ルート・スキャンIDが指定されている場合、そのIDはパージされ、指定したルート・スキャンのすべての直接的および間接的な子スキャンもパージされます。
スキャンの詳細は、「概要」を参照してください。 |
|
この日付より前の結果がパージされます。
|
このファンクションは、比較のために指定したスキャンで相違点を再チェックします。
このファンクションは、次のいずれかのアクションを実行します。
指定したスキャンが前回実行時に正常に完了していた場合、このファンクションは、スキャンで以前に特定された相違点をチェックします。
指定したスキャンが部分的に完了していた場合、このファンクションは、以前のスキャンが終了した時点からデータベース・オブジェクトのチェックを継続します。
注意: このファンクションは、指定した比較スキャンに記録されなかった相違点については共有データベース・オブジェクトを比較しません。これらの相違点をチェックするには、COMPARE ファンクションを実行します。 |
構文
DBMS_COMPARISON.RECHECK( comparison_name IN VARCHAR2, scan_id IN NUMBER, perform_row_dif IN BOOLEAN DEFAULT FALSE) RETURN BOOLEAN;