プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

95 DBMS_METADATA_DIFF

DBMS_METADATA_DIFFパッケージには、SXML形式の2つのメタデータ・ドキュメントを比較するためのインタフェースが含まれています。


関連項目:

メタデータAPIの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。

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

DBMS_METADATA_DIFFの使用方法

この項では、DBMS_METADATA_DIFFパッケージの使用に関連する項目について説明します。

概要

DBMS_METADATA_DIFFパッケージに含まれているインタフェースを使用して、SXML形式の2つのメタデータ・ドキュメントを比較できます。比較の結果はSXML差分ドキュメントに出力されます。このドキュメントは、DBMS_METADATA送信インタフェースおよびCONVERT APIを使用して他の形式に変換できます。

セキュリティ・モデル

DBMS_METADATA_DIFFパッケージのブラウズ・インタフェースは、DBMS_METADATAパッケージを実際に使用して比較対象のメタデータをフェッチします。そのため、DBMS_METADATAで使用するセキュリティ・モデルは、DBMS_METADATA_DIFFにも適用されます。(ただし、DBMS_METADATA_DIFFはすべてのオブジェクト・タイプをサポートするわけではないことに注意してください。)


関連項目:

DBMS_METADATAのセキュリティ・モデルについては、DBMS_METADATAを参照してください。

オブジェクトをフェッチおよび比較するための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;

パラメータ

表95-1 COMPARE_xxxファンクションのパラメータ

パラメータ 説明

object_type

比較するオブジェクトのタイプ。有効なタイプ名は、CLUSTERCONTEXTDB_LINKFGA_POLICYINDEXMATERIALIZED_VIEWMATERIALIZED_VIEW_LOGQUEUEQUEUE_TABLERLS_CONTEXTRLS_GROUPRLS_POLICYROLESEQUENCESYNONYMTABLETABLESPACETRIGGERTYPETYPE_SPECTYPE_BODYUSERおよびVIEWです。

name1

比較する最初のオブジェクトの名前。

name2

比較する2番目のオブジェクトの名前。

schema1

比較する最初のオブジェクトのスキーマ。デフォルトは現行のユーザーです。

schema2

比較する2番目のオブジェクトのスキーマ。デフォルトはschema1の値です。

network_link1

最初のオブジェクトが存在するデータベースへのデータベース・リンクの名前。NULL(デフォルト)の場合、オブジェクトはコール元を実行しているデータベースに存在するとみなされます。

network_link2

2番目のオブジェクトが存在するデータベースへのデータベース・リンクの名前。デフォルトはnetwork_link1の値です。


戻り値

DBMS_METADATA_DIFF.COMPARE_xxxは2つのオブジェクト間の差分を戻します。

例外

  • INVALID_ARGVAL

    入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

  • OBJECT_NOT_FOUND

    指定したオブジェクトがデータベースにありません。

使用上の注意

これらのファンクションは、2つのオブジェクトそれぞれのメタデータをフェッチし、比較するためのDBMS_METADATADBMS_METADATA_DIFFのファンクションおよびプロシージャ両方へのコールをカプセル化しています。

使用するファンクションは、必要な比較形式によって異なります。

  • COMPARE_SXMLは、SXML差分ドキュメントを戻します。

  • COMPARE_ALTERは、最初のオブジェクトを2番目のオブジェクトのようにするための一連のALTER文を戻します。

  • COMPARE_ALTER_XMLは、ALTER_XMLドキュメントを戻します。

DBMS_METADATA_DIFFサブプログラムの要約

DBMS_METADATA_DIFFサブプログラムの機能は、次のとおりです。

  • 比較するオブジェクトのタイプの指定

  • 比較するSXMLドキュメントの指定

  • 比較したドキュメントの差分の表示

  • 比較後のクリーンアップ

表95-2に、DBMS_METADATA_DIFFサブプログラムの要約を示します。

表95-2 DBMS_METADATA_DIFFパッケージのサブプログラム

サブプログラム 説明

OPENCファンクション


比較するオブジェクトのタイプを指定します。

ADD_DOCUMENTプロシージャ


比較するSXMLドキュメントを指定します。

FETCH_CLOBファンクションおよびプロシージャ


ADD_DOCUMENTで指定されている2つのドキュメントの差分を示すCLOBを戻します。

CLOSEプロシージャ


OPENCにより戻されるハンドルを無効にして、関連する状態をクリーンアップします。


OPENCファンクション

このファンクションは、比較するオブジェクトのタイプを指定します。戻り値は、不透明なコンテキスト・ハンドルです。

構文

DBMS_METADATA_DIFF.OPENC (
object_type  IN VARCHAR2)
RETURN NUMBER;

パラメータ

表95-3 OPENCファンクションのパラメータ

パラメータ 説明

object_type

比較するオブジェクトのタイプ。有効なタイプ名は、CLUSTERCONTEXTDB_LINKFGA_POLICYINDEXMATERIALIZED_VIEWMATERIALIZED_VIEW_LOGQUEUEQUEUE_TABLERLS_CONTEXTRLS_GROUPRLS_POLICYROLESEQUENCESYNONYMTABLETABLESPACETRIGGERTYPETYPE_SPECTYPE_BODYUSERおよびVIEWです。


戻り値

このファンクションから戻される不透明なハンドルは、ADD_DOCUMENTFETCH_xxxおよびCLOSEへの入力として使用されます。

例外

  • INVALID_ARGVAL

    入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

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);

パラメータ

表95-4 CLOSEプロシージャのパラメータ

パラメータ 説明

handle

OPENCから戻されたハンドル。

document

比較するドキュメント。ドキュメントはOPENCに指定されているタイプである必要があります。


使用上の注意

比較インタフェースで比較できるSXMLドキュメントは2つのみのため、プログラムではOPENCハンドルごとにADD_DOCUMENTを正確に2回コールする必要があります。比較結果では、最初のコールで指定されるドキュメントが文書1、2番目のコールで指定されるドキュメントが文書2です。

例外

  • INVALID_ARGVAL

    入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

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);

パラメータ

表95-5 CONVERTサブプログラムのパラメータ

パラメータ 説明

handle

OPENCから戻されたハンドル。

doc

文書1と文書2の差分を含むCLOB。

diffs

ドキュメントが異なる場合はTRUE、同一の場合はFALSEです。


戻り値

文書1と文書2の差分。

例外

  • INVALID_ARGVAL

    入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。

CLOSEプロシージャ

このプロシージャは、OPENCにより戻されるハンドルを無効にして、関連する状態をクリーンアップします。

構文

DBMS_METADATA_DIFF.CLOSE(
handle IN NUMBER);

パラメータ

表95-6 FETCH_xxxファンクションのパラメータ

パラメータ 説明

handle

OPENCから戻されたハンドル。


例外

  • INVALID_ARGVAL

    入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。