106 DBMS_METADATA_DIFF
DBMS_METADATA_DIFF
パッケージには、SXML形式の2つのメタデータ・ドキュメントを比較するためのインタフェースが含まれています。
この章のトピックは、次のとおりです:
参照:
DBMS_METADATA_DIFF
パッケージの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。
106.1 DBMS_METADATA_DIFFの概要
DBMS_METADATA_DIFF
パッケージに含まれているインタフェースを使用して、SXML形式の2つのメタデータ・ドキュメントを比較できます。
比較の結果はSXML差分ドキュメントに出力されます。このドキュメントは、DBMS_METADATA
送信インタフェースおよびCONVERT
APIを使用して他の形式に変換できます。
106.2 DBMS_METADATA_DIFFのセキュリティ・モデル
DBMS_METADATA_DIFF
パッケージのブラウズ・インタフェースは、DBMS_METADATA
パッケージを実際に使用して比較対象のメタデータをフェッチします。そのため、DBMS_METADATA
で使用するセキュリティ・モデルは、DBMS_METADATA_DIFF
にも適用されます。(ただし、DBMS_METADATA_DIFF
はすべてのオブジェクト・タイプをサポートするわけではないことに注意してください。)
参照:
DBMS_METADATAのセキュリティ・モデルについては、 DBMS_METADATA を参照してください。
106.3 DBMS_METADATA_DIFF - オブジェクトをフェッチおよび比較するためのAPIの参照
次のファンクションを使用すると、2つのオブジェクトのメタデータを1回のコールで比較できます。
構文
DBMS_METADATA_DIFF.COMPARE_SXML( object_type IN VARCHAR2, name1 IN VARCHAR2, name2 IN VARCHAR2, schema1 IN VARCHAR2 DEFAULT NULL, schema2 IN VARCHAR2 DEFAULT NULL, network_link1 IN VARCHAR2 DEFAULT NULL, network_link2 IN VARCHAR2 DEFAULT NULL) RETURN CLOB; DBMS_METADATA_DIFF.COMPARE_ALTER( object_type IN VARCHAR2, name1 IN VARCHAR2, name2 IN VARCHAR2, schema1 IN VARCHAR2 DEFAULT NULL, schema2 IN VARCHAR2 DEFAULT NULL, network_link1 IN VARCHAR2 DEFAULT NULL, network_link2 IN VARCHAR2 DEFAULT NULL) RETURN CLOB; DBMS_METADATA_DIFF.COMPARE_ALTER_XML( object_type IN VARCHAR2, name1 IN VARCHAR2, name2 IN VARCHAR2, schema1 IN VARCHAR2 DEFAULT NULL, schema2 IN VARCHAR2 DEFAULT NULL, network_link1 IN VARCHAR2 DEFAULT NULL, network_link2 IN VARCHAR2 DEFAULT NULL) RETURN CLOB;
パラメータ
表106-1 COMPARE_xxxファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
比較するオブジェクトのタイプ。有効なタイプ名は、 |
|
比較する最初のオブジェクトの名前。 |
|
比較する2番目のオブジェクトの名前。 |
|
比較する最初のオブジェクトのスキーマ。デフォルトは現行ユーザーです。 |
|
比較する2番目のオブジェクトのスキーマ。デフォルトは |
|
最初のオブジェクトが存在するデータベースへのデータベース・リンクの名前。NULL(デフォルト)の場合、オブジェクトはコール元を実行しているデータベースに存在するとみなされます。 |
|
2番目のオブジェクトが存在するデータベースへのデータベース・リンクの名前。デフォルトは |
戻り値
DBMS_METADATA_DIFF.COMPARE_xxx
は2つのオブジェクト間の差分を戻します。
例外
-
INVALID_ARGVAL
入力パラメータに
NULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
OBJECT_NOT_FOUND
指定したオブジェクトがデータベースにありません。
使用上のノート
これらのファンクションは、2つのオブジェクトそれぞれのメタデータをフェッチし、比較するためのDBMS_METADATA
とDBMS_METADATA_DIFF
のファンクションおよびプロシージャ両方へのコールをカプセル化しています。
使用するファンクションは、必要な比較形式によって異なります。
-
COMPARE_SXML
は、SXML差分ドキュメントを戻します。 -
COMPARE_ALTER
は、最初のオブジェクトを2番目のオブジェクトのようにするための一連のALTER
文を戻します。 -
COMPARE_ALTER_XML
は、ALTER_XML
ドキュメントを戻します。
106.4 DBMS_METADATA_DIFFサブプログラムの要約
DBMS_METADATA_DIFF
サブプログラムは、様々なオブジェクト・タイプを対象とした比較機能を提供します。
これらのサブプログラムは、次の処理に使用されます。
-
比較するオブジェクトのタイプの指定
-
比較するSXMLドキュメントの指定
-
比較したドキュメントの差分の表示
-
比較後のクリーンアップ
表106-2に、DBMS_METADATA_DIFF
サブプログラムの要約を示します。
表106-2 DBMS_METADATA_DIFFパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
比較するオブジェクトのタイプを指定します。 |
|
比較するSXMLドキュメントを指定します。 |
|
|
|
|
106.4.1 OPENCファンクション
このファンクションは、比較するオブジェクトのタイプを指定します。戻り値は、不透明なコンテキスト・ハンドルです。
構文
DBMS_METADATA_DIFF.OPENC ( object_type IN VARCHAR2) RETURN NUMBER;
パラメータ
表106-3 OPENCファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
比較するオブジェクトのタイプ。有効なタイプ名は、 |
戻り値
このファンクションから戻される不透明なハンドルは、ADD_DOCUMENT
、FETCH_xxx
およびCLOSE
への入力として使用されます。
例外
-
INVALID_ARGVAL
入力パラメータに
NULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。
106.4.2 ADD_DOCUMENTプロシージャ
このプロシージャは、比較するSXMLドキュメントを指定します。
構文
DBMS_METADATA_DIFF.ADD_DOCUMENT( handle IN NUMBER, document IN sys.XMLType); DBMS_METADATA_DIFF.ADD_DOCUMENT( handle IN NUMBER, document IN CLOB);
パラメータ
表106-4 ADD_DOCUMENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
比較するドキュメント。ドキュメントは |
使用上のノート
比較インタフェースで比較できるSXMLドキュメントは2つのみのため、プログラムではOPENC
ハンドルごとにADD_DOCUMENT
を正確に2回コールする必要があります。比較結果では、最初のコールで指定されるドキュメントが文書1、2番目のコールで指定されるドキュメントが文書2です。
例外
-
INVALID_ARGVAL
入力パラメータに
NULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。
106.4.3 FETCH_CLOBファンクションおよびプロシージャ
FETCH_CLOB
ファンクションおよびプロシージャは、ADD_DOCUMENT
で指定されている2つのドキュメントの差分を示すCLOBを戻します。
構文
DBMS_METADATA_DIFF.FETCH_CLOB( handle IN NUMBER) RETURN CLOB; DBMS_METADATA_DIFF.FETCH_CLOB(
handle IN NUMBER, doc IN OUT NOCOPY CLOB); DBMS_METADATA_DIFF.FETCH_CLOB( handle IN NUMBER, doc IN OUT NOCOPY CLOB diffs OUT BOOLEAN);
パラメータ
表106-5 FETCH_CLOBサブプログラムのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
文書1と文書2の差分を含むCLOB。 |
|
ドキュメントが異なる場合は |
戻り値
文書1と文書2の差分。
例外
-
INVALID_ARGVAL
入力パラメータに
NULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。