機械翻訳について

128 DBMS_METADATA_DIFF

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

この章のトピックは、次のとおりです:

参照:

DBMS_METADATA_DIFFパッケージの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。

128.1 DBMS_METADATA_DIFFの概要

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

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

128.2 DBMS_METADATA_DIFFのセキュリティ・モデル

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

参照:

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

128.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;

パラメータ

表128-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ドキュメントを戻します。

128.4 DBMS_METADATA_DIFFサブプログラムの要約

DBMS_METADATA_DIFFサブプログラムは、様々なオブジェクト・タイプを対象とした比較機能を提供します。

これらのサブプログラムは、次の処理に使用されます。

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

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

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

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

「表128-2」は、DBMS_METADATA_DIFFサブプログラムの要約を提供します。

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

サブプログラム 説明

OPENCファンクション

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

ADD_DOCUMENTプロシージャ

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

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

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

CLOSEプロシージャ

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

128.4.1 OPENCファンクション

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

構文

DBMS_METADATA_DIFF.OPENC (
object_type  IN VARCHAR2)
RETURN NUMBER;

パラメータ

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

パラメータ 説明

object_type

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

戻り値

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

例外

  • INVALID_ARGVAL

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

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

パラメータ

表128-4 ADD_DOCUMENTプロシージャのパラメータ

パラメータ 説明

handle

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

document

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

使用上のノート

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

例外

  • INVALID_ARGVAL

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

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

パラメータ

表128-5 FETCH_CLOBサブプログラムのパラメータ

パラメータ 説明

handle

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

doc

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

diffs

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

戻り値

文書1と文書2の差分。

例外

  • INVALID_ARGVAL

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

128.4.4 CLOSEプロシージャ

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

構文

DBMS_METADATA_DIFF.CLOSE(
handle IN NUMBER);

パラメータ

表128-6 CLOSEファンクションのパラメータ

パラメータ 説明

handle

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

例外

  • INVALID_ARGVAL

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