DBMS_METADATA
パッケージには、データベース・ディクショナリからXMLまたは作成DDLとしてメタデータを取り出す機能と、データベースにXMLを送信してオブジェクトを再作成する機能があります。
関連項目: メタデータAPIの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。 |
この章では、次の項目について説明します。
概要
セキュリティ・モデル
ルールおよび制限
データベースから複数のオブジェクトを取り出すためのサブプログラム
データベースにXMLを送信するためのサブプログラム
この項では、DBMS_METADATA
パッケージの使用に関連する項目について説明します。
DBMS_METADATA
パッケージには、メタデータを取り出す機能とXMLを送信する機能があります。この機能については次の項で説明します。
メタデータを取り出すときは、次の事項を指定できます。
取り出すオブジェクトのタイプ。特定のタイプのオブジェクト(表、索引、プロシージャなど)、または異なるタイプのオブジェクトからなるコレクション(データベースのエクスポートやスキーマのエクスポートなど、特定の論理ユニットを形成するオブジェクトのコレクション)を指定できます。
所有者または名前などの選択条件(任意指定)。
解析項目(解析され、個別に戻される戻りオブジェクトの属性)。
XSLT(eXtensible Stylesheet Language Transformation)スクリプトによって実装される、出力時の変換(任意指定)。デフォルトでは、XML形式の出力が取り出されますが、データベース内または外部に保存されたXSLTスタイルシートを通じて出力に適用する変換(SQL DDLなどへの変換)を指定できます。
DBMS_METADATA
に備わっている取出しインタフェースは次のとおりです。
プログラミング用: OPEN
、SET_FILTER
、SET_COUNT
、GET_QUERY
、SET_PARSE_ITEM
、ADD_TRANSFORM
SET_TRANSFORM_PARAM、SET_REMAP_PARAM
、FETCH_xxx
およびCLOSE
は複数のオブジェクトを取り出します。
SQL問合せおよびブラウズ用: GET_XML
、GET_DDL
およびGET_SXML
は、単一の名前付きオブジェクトのメタデータを戻します。GET_DEPENDENT_XML
、GET_DEPENDENT_DDL
、GET_GRANTED_XML
およびGET_GRANTED_DDL
インタフェースは、1つ以上の依存オブジェクトまたは権限付与オブジェクトのメタデータを戻します。これらのプロシージャでは、異種オブジェクト・タイプを処理できません。
XMLを送信するときは、次の事項を指定できます。
オブジェクトのタイプ
オブジェクトの属性を変更する(たとえば、オブジェクトの所有者を変更する)変換パラメータ(任意指定)
解析項目(送信するオブジェクトの属性のうち、個別に解析して送信する属性)
作成されたDDLをそのまま戻すか、なんらかの処理を実行するかの指定
DBMS_METADATA
には、XMLを送信するためのプログラム・インタフェースが用意されています。このプログラム・インタフェースを構成するプロシージャは、OPENW
、ADD_TRANSFORM
、SET_TRANSFORM_PARAM
、SET_REMAP_PARAM
、SET_PARSE_ITEM
、CONVERT
、PUT
およびCLOSE
です。
DBMS_METADATA
パッケージでは、SYS
として接続されているユーザーまたはSELECT_CATALOG_ROLE
ロールを持つユーザーを特権ユーザーとみなします。Oracleメタデータ・モデルのオブジェクト・ビューでは、次のような方法でセキュリティが実現されています。
非権限ユーザーは、自分が所有するオブジェクトのメタデータのみを参照できます。
非権限ユーザーは、パブリック・シノニム、自分に付与されたシステム権限、自分に付与されたオブジェクト権限または自分が他のユーザーに付与したオブジェクト権限を取り出せます。また、PUBLIC
に付与された権限を取り出せます。
取出し権限が付与されていないオブジェクトをコール元が要求した場合、例外は発生せず、単にオブジェクトが取り出されません。
他のユーザーのスキーマ内にあるオブジェクトに対するなんらかの形式のアクセス権限が非権限ユーザーに付与された場合、その非権限ユーザーはメタデータAPIを通じて権限付与情報を参照できますが、オブジェクトの実際のメタデータは取り出せません。
ストアド・プロシージャ、ストアド・ファンクション、定義者権限パッケージでは、ロール(SELECT_CATALOG_ROLE
など)を使用できません。したがって、これらのPL/SQLプログラムでは、それ自体のスキーマ内にあるオブジェクトのメタデータしかフェッチできません。(実行者が所有するSELECT_CATALOG_ROLE
を通じて)別のスキーマ内にあるオブジェクトのメタデータをフェッチするPL/SQLプログラムを作成するには、実行者権限をPL/SQLプログラムに付与する必要があります。
パスワードを持つすべてのオブジェクト(データベース・リンク、ユーザー、ロールなど)には、次のルールが適用されます。
SELECT_CATALOG_ROLE
を持つユーザーは、パスワードを除いて、該当するオブジェクトのすべてのメタデータを参照できます。
SYS
ユーザー、EXP_FULL_DATABASE
ロールを持つユーザー、およびオブジェクトを所有するユーザーは、パスワードを含めて、該当するオブジェクトのすべてのメタデータを参照できます。
DBMS_METADATA
パッケージは、SYS
スキーマ内で、次のOBJECT
タイプおよびTABLE
タイプを定義します。
CREATE TYPE sys.ku$_parsed_item AS OBJECT ( item VARCHAR2(30), value VARCHAR2(4000), object_row NUMBER ) / CREATE PUBLIC SYNONYM ku$_parsed_item FOR sys.ku$_parsed_item; CREATE TYPE sys.ku$_parsed_items IS TABLE OF sys.ku$_parsed_item / CREATE PUBLIC SYNONYM ku$_parsed_items FOR sys.ku$_parsed_items; CREATE TYPE sys.ku$_ddl AS OBJECT ( ddlText CLOB, parsedItem sys.ku$_parsed_items ) / CREATE PUBLIC SYNONYM ku$_ddl FOR sys.ku$_ddl; CREATE TYPE sys.ku$_ddls IS TABLE OF sys.ku$_ddl / CREATE PUBLIC SYNONYM ku$_ddls FOR sys.ku$_ddls; CREATE TYPE sys.ku$_multi_ddl AS OBJECT ( object_row NUMBER, ddls sys.ku$_ddls ) / CREATE OR REPLACE PUBLIC SYNONYM ku$_multi_ddl FOR sys.ku$_multi_ddl; CREATE TYPE sys.ku$_multi_ddls IS TABLE OF sys.ku$_multi_ddl; / CREATE OR REPLACE PUBLIC SYNONYM ku$_multi_ddls FOR sys.ku$_multi_ddls; CREATE TYPE sys.ku$_ErrorLine IS OBJECT ( errorNumber NUMBER, errorText VARCHAR2(2000) ) / CREATE PUBLIC SYNONYM ku$_ErrorLine FOR sys.ku$_ErrorLine; CREATE TYPE sys.ku$_ErrorLines IS TABLE OF sys.ku$_ErrorLine / CREATE PUBLIC SYNONYM ku$ErrorLines FOR sys.ku$_ErrorLines; CREATE TYPE sys.ku$_SubmitResult AS OBJECT ( ddl sys.ku$_ddl, errorLines sys.ku$_ErrorLines ); / CREATE TYPE sys.ku$_SubmitResults IS TABLE OF sys.ku$_SubmitResult / CREATE PUBLIC SYNONYM ku$_SubmitResults FOR sys.ku$_SubmitResults;
DBMS_METADATA
のサブプログラムの使用目的は、データベースからオブジェクトを取り出すこと、およびデータベースにXMLを送信することです。サブプログラムの中には、これら2つの目的に使用されるものと、一方の目的(オブジェクトの取出しまたはXMLの送信)のみに使用されるものがあります。
表87-1に、データベースから複数のオブジェクトを取り出すために使用されるDBMS_METADATA
サブプログラムの要約をアルファベット順に示します。
表87-2に、XMLメタデータをデータベースに送信するために使用されるDBMS_METADATA
サブプログラムの要約をアルファベット順に示します。
表87-1に、データベースから複数のオブジェクトを取り出すためのサブプログラムを示します。
表87-1 複数のオブジェクトを取り出すためのDBMS_METADATAサブプログラム
サブプログラム | 説明 |
---|---|
|
取り出されるオブジェクトを表すXML文書に |
|
|
|
|
|
|
|
単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。 |
|
取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。 |
|
|
|
取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。 |
|
解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。 |
SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ |
|
表87-2に、データベースにXMLを送信するためのサブプログラムを示します。
表87-2 XMLを送信するためのDBMS_METADATAサブプログラム
サブプログラム | 説明 |
---|---|
|
XML文書に対する変換を指定します。 |
|
|
|
XML文書をDDLに変換します。 |
|
書込みコンテキストを開きます。 |
|
XML文書をデータベースに送信します。 |
|
解析するオブジェクト属性を指定します。 |
SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ |
|
表87-3 DBMS_METADATAパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
取り出されるオブジェクトを表すXML文書に |
|
|
|
XML文書をDDLに変換します。 |
|
|
|
単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。 |
|
|
|
取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。 |
|
書込みコンテキストを開きます。 |
|
XML文書をデータベースに送信します。 |
|
|
|
取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。 |
|
解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。 |
SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ |
|
このファンクションは、取出しと送信の両方の目的に使用されます。
このファンクションをオブジェクトの取出しに使用するときは、取り出されるオブジェクトを表すXML文書にFETCH_xxx
を通じて適用される変換を指定します。
オブジェクトの送信に使用するときは、送信されるオブジェクトを表すXML文書にCONVERT
またはPUT
を通じて適用される変換を指定します。複数の変換を追加することが可能です。
構文
DBMS_METADATA.ADD_TRANSFORM ( handle IN NUMBER, name IN VARCHAR2, encoding IN VARCHAR2 DEFAULT NULL, object_type IN VARCHAR2 DEFAULT NULL) RETURN NUMBER;
パラメータ
表87-4 ADD_TRANSFORMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
取り出されるオブジェクトに変換を適用するときは、 |
|
変換名。この変換名にピリオド(.)、コロン(:)またはスラッシュ(/)が含まれている場合、ユーザーが提供するXSLTスタイルシートのURLとして解釈されます。詳細は、『Oracle XML DB開発者ガイド』を参照してください。 それ以外の場合、このnameパラメータは
|
|
nameパラメータで指定されたXSLTスタイルシートがエンコードされるグローバリゼーション・サポート・キャラクタ・セットの名前。このパラメータは、nameがURLである場合のみ有効です。このパラメータがNULLのままで、URLがデータベースの外部を指している場合は、UTF-8エンコーディングが適用されます。このパラメータがNULLのままで、URLがデータベースの内部を指している(つまり、URLが/oradb/で始まっている)場合は、データベース・キャラクタ・セットがエンコーディングに使用されます。 |
|
このパラメータの定義は、オブジェクトを取り出すのか、XMLメタデータを送信するのかに応じて異なります。
|
戻り値
このファンクションから戻される不透明なハンドルは、SET_TRANSFORM_PARAM
およびSET_REMAP_PARAM
への入力として使用されます。このハンドルはOPEN
またはOPENW
から戻されるハンドルとは異なり、取り出されるオブジェクトではなく変換を指します。
使用上の注意
変換が追加されない場合、デフォルトではXML文書としてオブジェクトが戻されます。戻されるXML文書の変換に使用するXSLTスタイルシートを指定するには、ADD_TRANSFORM
をコールします。
XML文書に対して複数の変換を適用するには、ADD_TRANSFORM
を複数回コールします。変換は指定された順序で適用されるため、最初の変換の出力は2番目の変換の入力として使用されます(以降同様)。
DDL変換の出力はXML文書ではありません。したがって、DDL変換の後に変換を追加しないでください。
個々の変換は、特定形式のXML文書を入力として予測します。入力文書が指定されていない場合、メタデータXML形式が想定されます。
例外
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。
INVALID_OPERATION
。OPEN
コンテキストに対するFETCH_xxx
への最初のコールの後に、ADD_TRANSFORM
がコールされました。FETCH_xxx
への最初のコールの後で、現行のOPEN
コンテキストに対して、それ以上ADD_TRANSFORM
をコールできません。
INCONSISTENT_ARGS
。引数に整合性がありません。不整合の原因は次のとおりです。
nameがURLでないにもかかわらず、encoding
が指定されています。
handleによって指定されるコレクションにobject_type
が属していません。
このプロシージャは、オブジェクトの取出しとXMLの送信の両方の目的に使用されます。このプロシージャは、OPEN
(またはOPENW
)から戻されるハンドルを無効にして、関連する状態をクリーンアップします。
使用上の注意
注意: 次の注意は、オブジェクトの取出しにのみ適用されます。 |
このプロシージャを使用すると、OPEN
(またはOPENW
)によって確立されたオブジェクトのストリームを早期終了できます。
FETCH_xxx
へのコールでオブジェクトが存在しないことを示すNULL
が戻された場合、CLOSE
へのコールが透過的に行われます。その場合に、ハンドルのCLOSE
をコールしても、例外は発生しません。(CLOSE
へのコールは不要です。)
1つの特定オブジェクトのみが戻されるとわかっている場合、FETCH_xxx
を一度コールしてハンドルに保持されたリソースを解放した後、CLOSE
を明示的にコールしてください。
CONVERT
ファンクションおよびプロシージャは、入力XML文書を変換します。CONVERT
ファンクションは、作成DDLを戻します。CONVERT
プロシージャは、指定した変換に応じて、XMLまたはDDLのいずれかを戻します。
構文
CONVERT
ファンクションは、次のとおりです。
DBMS_METADATA.CONVERT ( handle IN NUMBER, document IN sys.XMLType) RETURN sys.ku$_multi_ddls; DBMS_METADATA.CONVERT ( handle IN NUMBER, document IN CLOB) RETURN sys.ku$_multi_ddls;
CONVERT
プロシージャは、次のとおりです。
DBMS_METADATA.CONVERT ( handle IN NUMBER, document IN sys.XMLType, result IN OUT NOCOPY CLOB); DBMS_METADATA.CONVERT ( handle IN NUMBER, document IN CLOB, result IN OUT NOCOPY CLOB);
使用上の注意
CONVERT
は、FETCH_xxx
の後半(ファンクションの変数の場合はFETCH_DDL
、プロシージャの変数の場合はFETCH_CLOB
)と類似しています。相違点は、次の2点です。
FETCH_xxx
がデータベースからXML文書を取得するのに対して、CONVERT
はコール元からXML文書を取得すること
FETCH_DDLがネストした表sys.ku$_ddlsに結果を戻すのに対して、CONVERTはネストした表sys.ku$_multi_ddlsを戻すこと
ADD_TRANSFORM
で指定された変換が適用されると、変換結果はコール元に戻されます。ファンクションの変数の場合は、DDL変換を指定する必要があります。解析項目が指定された場合は、parsedItems
列に解析項目が戻されます。プロシージャの変数の場合、解析項目は無視されます。
XML文書のエンコーディングは、CLOBまたはXMLTypeの表示に埋め込まれます。メタデータのバージョンは、XMLに埋め込まれます。作成されるDDLは、OPENW
に指定されているデータベース・バージョンで有効です。
これらのファンクションおよびプロシージャは、OPEN
、SET_FILTER
、SET_COUNT
、ADD_TRANSFORM
などによって設定された条件を満たすオブジェクトのメタデータを戻します。変数については、「使用上の注意」を参照してください。
構文
FETCH
ファンクションは、次のとおりです。
DBMS_METADATA.FETCH_XML (
handle IN NUMBER)
RETURN sys.XMLType;
関連項目: XMLType の詳細は、『Oracle XML DB開発者ガイド』を参照してください。 |
DBMS_METADATA.FETCH_DDL ( handle IN NUMBER) RETURN sys.ku$_ddls; DBMS_METADATA.FETCH_CLOB ( handle IN NUMBER, cache_lob IN BOOLEAN DEFAULT TRUE, lob_duration IN PLS INTEGER DEFAULT DBMS_LOB.SESSION) RETURN CLOB;
FETCH
プロシージャは次のとおりです。
DBMS_METADATA.FETCH_CLOB ( handle IN NUMBER, doc IN OUT NOCOPY CLOB); DBMS_METADATA.FETCH_XML_CLOB ( handle IN NUMBER, doc IN OUT NOCOPY CLOB, parsed_items OUT sys.ku$_parsed_items, object_type_path OUT VARCHAR2);
パラメータ
表87-7 FETCH_xxxファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
|
|
オブジェクトのメタデータ。すべてのオブジェクトが戻された場合は |
|
|
|
異種オブジェクト・タイプを指している場合は、 |
使用上の注意
これらのファンクションは、ハンドルを戻したOPEN
、およびそれ以降にコールされたSET_FILTER
、SET_COUNT
、ADD_TRANSFORM
などによって設定された条件を満たすオブジェクトのメタデータを戻します。FETCH_xxx
への各コールは、すべてのオブジェクトが戻されるまで、SET_COUNT
によって指定された個数(元のカーソルに保持されたオブジェクトが少ない場合はそれ以下の個数)のオブジェクトを戻します。最後のオブジェクトが戻された後で、FETCH_xxx
を再度コールすると、NULL
が戻され、OPEN
によって作成されたストリームが透過的にクローズされます。
FETCH_xxx
ファンクションは、複数のファンクションとプロシージャからなります。
FETCH_XML
ファンクションは、オブジェクトのXMLメタデータをXMLType
として戻します。変換が指定されている場合は、その変換がXML文書を作成することを前提とします。特別に、DDL変換は指定されていないことを前提とします。
FETCH_DDL
ファンクションは、オブジェクトを作成するDDLをネストした表sys.ku$_ddls
に戻します。DDL変換が指定されていることを前提とします。ネストした表sys.ku$_ddls
の各行には、ddlText
列に単一のDDL文が含まれ、要求があれば、DDL文に対して解析された項目がparsedItems
列に戻されます。次の状況では、複数のDDL文が戻される場合があります。
SET_COUNT
をコールして1
を超える件数を指定した場合。
オブジェクトが複数のDDL文に変換された場合。たとえば、DDL変換が適用されたTYPE
オブジェクトは、CREATE TYPE
文とCREATE TYPE BODY
文に変換される可能性があります。また、TABLE
オブジェクトは、1つのCREATE TABLE
文、および1つ以上のALTER TABLE
文に変換される可能性があります。
FETCH_CLOB
ファンクションは、変換の有無にかかわらず、CLOBとしてオブジェクトを戻します。デフォルトでは、CLOBは、バッファ・キャッシュに読み込まれ、セッション継続時間が指定されますが、これらのデフォルト値は、cache_lob
およびlob_duration
パラメータで上書きできます。
FETCH_CLOB
プロシージャは、IN
OUT
NOCOPY
パラメータの参照によりオブジェクトを戻します。これは、LOBを値で戻すファンクションの変数(非効率的なLOBコピーを行う方法)より高速です。
FETCH_XML_CLOB
プロシージャは、オブジェクトのXMLメタデータをCLOBとしてIN
OUT
NOCOPY
パラメータに戻します。これにより、多くのリソースを消費する可能性のあるLOBコピーが不要になります。解析項目のネストした表と、戻されるオブジェクトのオブジェクト・タイプを表すフルパス名も戻されます。
FETCH_xxx
から戻されるLOBはすべて一時LOBです。これらのLOBは解放する必要があります。IN
OUT
NOCOPY
パラメータとしてLOBを渡す場合は、新しいLOBを作成する必要があります。
SET_PARSE_ITEM
がコールされた場合、FETCH_DDL
とFETCH_XML_CLOB
は、オブジェクトのメタデータの属性(またはDDL文)をネストした表sys.ku$_parsed_items
に戻します。FETCH_XML_CLOB
プロシージャでは、ネストした表がOUT
パラメータの1つになっています。FETCH_DDL
ファンクションでは、戻されるネストした表sys.ku$_ddls
の1つの列がsys.ku$_parsed_itemsです。ネストした表の各行は、SET_PARSE_ITEM
で指定される項目に対応しており、次の列からなります。
item
- SET_PARSE_ITEM.
のname
パラメータで指定される属性名。
value - 属性値。属性がDDL文に存在しない場合はNULL
。
object_row
- 解析項目が適用されるオブジェクトを示す正の整数。(SET_COUNT
で1を超える件数が指定されているために) FETCH_xxx
から複数のオブジェクトが戻される場合、object_row
=1
を指定すると、最初のオブジェクトのすべての項目が解析対象となり、2
を指定すると、2番目のオブジェクトのすべての項目が解析対象となります(以降同様)。
ネストした表sys.ku$_parsed_items
の各行は、object_row
の値の昇順に並べ替えられますが、それ以外の並べ替え順序は定義されていません。オブジェクトの各行から特定の解析項目を取り出すには、item
の値を条件として表を検索する必要があります。
一般的に、要求した解析項目が戻される保証はありません。たとえば、特定のDDL行またはオブジェクト・タイプに解析項目が適用されない場合や、項目値がNULL
である場合などが考えられます。
SET_PARSE_ITEM
がコールされなかった場合は、ネストした表の解析項目の値としてNULL
が戻されます。
OPEN
によって選択されるすべてのオブジェクトに対して、同じ種類のFETCH_xxx
がコールされることが前提とされます。つまり、プログラムは、同じOPEN
ハンドルを使用したFETCH_XML
、FETCH_DDL
、FETCH_CLOB
などへのコールを混合しません。異形をコールした場合の影響は定義されていないため、期待どおりの結果が得られる場合もありますが、なんら保証はありません。
フェッチされるすべてのオブジェクトは、ディクショナリに対する進行中のDDL操作(およびそれ以降のDML操作)に関して、内部的な一貫性が保証されます。ただし、複数の異なるタイプのオブジェクトが混在している場合や、パフォーマンス上の理由から(ヒープ表と索引構成表に対して別々の問合せを発行する場合など)、複数の問合せが発行される可能性があります。そのため、FETCH_xxx
への各コールでは、異なるカーソルからデータをフェッチする場合があります(これは読取り一貫性が保証されないことを意味します)。
次のGET_xxx
ファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。
GET_XML
GET_DDL
GET_SXML
GET_DEPENDENT_XML
GET_DEPENDENT_DDL
GET_GRANTED_XML
GET_GRANTED_DDL
構文
DBMS_METADATA.GET_XML ( object_type IN VARCHAR2, name IN VARCHAR2, schema IN VARCHAR2 DEFAULT NULL, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', transform IN VARCHAR2 DEFAULT NULL) RETURN CLOB; DBMS_METADATA.GET_DDL ( object_type IN VARCHAR2, name IN VARCHAR2, schema IN VARCHAR2 DEFAULT NULL, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', transform IN VARCHAR2 DEFAULT 'DDL') RETURN CLOB; DBMS_METADATA.GET_SXML ( object_type IN VARCHAR2, name IN VARCHAR2 DEFAULT NULL, schema IN VARCHAR2 DEFAULT NULL, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', transform IN VARCHAR2 DEFAULT 'SXML') RETURN CLOB; DBMS_METADATA.GET_DEPENDENT_XML ( object_type IN VARCHAR2, base_object_name IN VARCHAR2, base_object_schema IN VARCHAR2 DEFAULT NULL, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', transform IN VARCHAR2 DEFAULT NULL, object_count IN NUMBER DEFAULT 10000) RETURN CLOB; DBMS_METADATA.GET_DEPENDENT_DDL ( object_type IN VARCHAR2, base_object_name IN VARCHAR2, base_object_schema IN VARCHAR2 DEFAULT NULL, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', transform IN VARCHAR2 DEFAULT 'DDL', object_count IN NUMBER DEFAULT 10000) RETURN CLOB; DBMS_METADATA.GET_GRANTED_XML ( object_type IN VARCHAR2, grantee IN VARCHAR2 DEFAULT NULL, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', transform IN VARCHAR2 DEFAULT NULL, object_count IN NUMBER DEFAULT 10000) RETURN CLOB; DBMS_METADATA.GET_GRANTED_DDL ( object_type IN VARCHAR2, grantee IN VARCHAR2 DEFAULT NULL, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', transform IN VARCHAR2 DEFAULT 'DDL', object_count IN NUMBER DEFAULT 10000) RETURN CLOB;
パラメータ
表87-8 GET_xxxファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
取り出すオブジェクトのタイプ。このパラメータには、 |
|
オブジェクト名。 |
|
オブジェクトのスキーマ。 |
|
抽出されるメタデータのバージョン。このパラメータには、 |
|
使用するオブジェクト・モデル。このパラメータには、 |
|
出力時に適用される変換の名前。このパラメータには、 |
|
ベース・オブジェクト名。 |
|
ベース・オブジェクトのスキーマ。 |
|
権限受領者。 |
|
戻すオブジェクトの最大数。「SET_COUNTプロシージャ」を参照してください。 |
使用上の注意
これらのファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。これらは、OPEN
やSET_FILTER
などに対するコールをカプセル化します。オブジェクトのタイプまたは文書のタイプ(XML、SXMLまたはDDL)に応じて、各ファンクションを使い分けてください。
GET_xxx
は、名前付きオブジェクト(特に、表やビューなどのスキーマ・オブジェクト)をフェッチするときに使用します。
GET_DEPENDENT_xxx
は、依存オブジェクト(監査、オブジェクト権限付与など)をフェッチするときに使用します。
GET_GRANTED_xxx
は、権限付与オブジェクト(システム権限付与、ロール権限付与など)をフェッチするときに使用します。
オブジェクト・タイプによっては、複数のファンクションを使用できます。たとえばGET_xxx
を使用すると、名前に基づいて索引をフェッチでき、GET_DEPENDENT_xxx
を使用すると、同じ索引をその索引が定義されている表を指定してフェッチできます。
GET_xxx
は、単一の名前付きオブジェクトのみを戻します。
GET_DEPENDENT_xxx
およびGET_GRANTED_xxx
では、任意の数の依存オブジェクトまたは権限付与オブジェクトが入力基準と一致する可能性があります。これらのオブジェクトをフェッチするときは、オブジェクト件数を指定できます。(ほとんどの場合は、デフォルト値の10000個で十分です。)
DDL変換が指定された場合は、セッションレベルの変換パラメータが継承されます。
これらのファンクションをSQL*Plusから起動する場合は、中断されない完全な出力を生成するために、PAGESIZE
を0に設定し、LONG
を十分大きい値に設定する必要があります。
例外
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。
OBJECT_NOT_FOUND
。指定したオブジェクトがデータベースにありません。
例
例: SCOTT.EMPのXML表示のフェッチ
中断されない完全な出力を生成するには、次に示すように、PAGESIZE
を0に設定し、LONG
を十分大きい値に設定してから、問合せを実行します。
SET LONG 2000000 SET PAGESIZE 0 SELECT DBMS_METADATA.GET_XML('TABLE','EMP','SCOTT') FROM DUAL;
例: ネストした表とオーバーフロー・セグメントをフィルタにかけ、現行のスキーマ内のすべてのComplete表を示すDDLをフェッチする方法
この例では、ネストした表とオーバーフロー・セグメントをフィルタにかけ、現行のスキーマ内のすべてのComplete表を示すDDLをフェッチします。この例では、SET_TRANSFORM_PARAM
(現行のセッションを示すハンドル値=DBMS_METADATA.SESSION_TRANSFORM
)を使用して、記憶域句がSQL DDLに戻されないように指定しています。その後、この例では、セッション・レベルのパラメータをデフォルトにリセットします。
中断されない完全な出力を生成するには、次に示すように、PAGESIZE
を0に設定し、LONG
を十分大きい値に設定してから、問合せを実行します。
SET LONG 2000000 SET PAGESIZE 0 EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false); SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_ALL_TABLES u WHERE u.nested='NO' AND (u.iot_type is null or u.iot_type='IOT'); EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'DEFAULT');
例: HR.EMPLOYEESのすべてのオブジェクト権限付与を示すDDLのフェッチ
SELECT DBMS_METADATA.GET_DEPENDENT_DDL('OBJECT_GRANT', 'EMPLOYEES','HR') FROM DUAL;
例: SCOTTに付与されたすべてのシステム権限付与を示すDDLのフェッチ
SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','SCOTT') FROM DUAL;
このファンクションは、取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。戻り値は、後続のコールで使用されるオブジェクトの不透明なコンテキスト・ハンドルです。
構文
DBMS_METADATA.OPEN ( object_type IN VARCHAR2, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE', network_link IN VARCHAR2 DEFAULT NULL) RETURN NUMBER;
パラメータ
表87-10 Openファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
取り出すオブジェクトのタイプ。有効なタイプ名およびその意味は、表87-11を参照してください。これらのオブジェクト・タイプは、Oracleモデルのメタデータでサポートされます(この表の 表87-11の「属性」列には、複数のオブジェクト・タイプ属性が示されています。
オブジェクトの選択基準を指定するときは、これらの属性を考慮する必要があります。詳細は、「SET_FILTERプロシージャ」を参照してください。 |
|
抽出されるメタデータのバージョン。このバージョンと互換性のないデータベース・オブジェクトまたは属性は抽出されません。このパラメータに指定できる値は次のとおりです。
特定のデータベース・バージョン。9.2.0より前のバージョンは指定できません。 |
|
APIはメタデータに対し複数のビューをサポートするため、使用するビューを指定します。ORACLEモデルのみがサポートされています。 |
|
メタデータを取り出すデータベースへのデータベース・リンクの名前。NULL(デフォルト)の場合、メタデータはコール元を実行しているデータベースから取り出されます。 |
表87-11に、DBMS_METADATA
パッケージのオブジェクト・タイプの名前、意味、属性および注意点を示します。「属性」列のS
はスキーマ・オブジェクト、N
は名前付きオブジェクト、D
は依存オブジェクト、G
は権限付与オブジェクト、H
は異種オブジェクトを表します。
表87-11 DBMS_METADATA: オブジェクト・タイプ
タイプ名 | 意味 | 属性 | 注意 |
---|---|---|---|
|
キュー |
|
表に応じて属性が異なります。 |
|
キュー表に対する追加のメタデータ |
|
表に応じて属性が異なります。 |
|
変換 |
|
なし |
|
関連統計情報 |
|
なし |
|
SQL文の監査 |
|
依存オブジェクト、権限付与オブジェクトとしてモデル化されます。ベース・オブジェクト名は、文監査オプション名(例: |
|
スキーマ・オブジェクトの監査 |
|
なし |
|
クラスタ |
|
なし |
|
コメント |
|
なし |
|
制約 |
|
次のものは含まれません。
|
|
アプリケーション・コンテキスト |
|
なし |
|
データベース内のすべてのメタデータ・オブジェクト |
|
全データベースのエクスポートに対応します。 |
|
データベース・リンク |
|
データベース・リンクには所有者がいるため、スキーマ・オブジェクトとしてモデル化されます。パブリック・リンクの場合、所有者はPUBLICです。プライベート・リンクの場合は、作成者が所有者です。 |
|
デフォルト・ロール |
|
|
|
ディメンション |
|
なし |
|
ディレクトリ |
|
なし |
|
ファイングレイン監査条件 |
|
ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。 |
|
ストアド・ファンクション |
|
なし |
|
索引に関して事前に計算された統計情報 |
|
ベース・オブジェクトは索引の表です。 |
|
索引 |
|
なし |
|
索引タイプ |
|
なし |
|
Javaソース |
|
なし |
|
ジョブ |
|
なし |
|
外部プロシージャ・ライブラリ |
|
なし |
|
マテリアライズド・ビュー |
|
なし |
|
マテリアライズド・ビュー・ログ |
|
なし |
|
オブジェクト権限付与 |
|
なし |
|
演算子 |
|
なし |
|
ストアド・パッケージ |
|
デフォルトでは、パッケージ仕様部およびパッケージ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。 |
|
パッケージ仕様部 |
|
なし |
|
パッケージ本体 |
|
なし |
|
ストアド・プロシージャ |
|
なし |
|
プロファイル |
|
なし |
|
プロキシ認証 |
|
|
|
参照制約 |
|
なし |
|
リフレッシュ・グループ |
|
なし |
|
リソース・コスト情報 |
なし |
|
|
ファイングレイン・アクセス・コントロールのポリシーを実現するための駆動コンテキスト |
|
DBMS_RLS.ADD_POLICY_CONTENTプロシージャに対応します。 |
|
ファイングレイン・アクセス・コントロールのポリシー・グループ |
|
DBMS_RLS.CREATE_GROUPプロシージャに対応します。 |
|
ファイングレイン・アクセス・コントロールのポリシー |
|
DBMS_RLS.ADD_GROUPED_POLICYに対応します。ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。 |
|
リソース・コンシューマ・グループ |
|
データ・ポンプでは、これらのオブジェクト・タイプが使用されません。かわりに、リソース・マネージャ・オブジェクトがプロシージャ・オブジェクトとしてエクスポートされます。 |
|
ユーザーに対する初期コンシューマ・グループの割当て |
|
なし |
|
リソース・プラン |
|
なし |
|
リソース・プラン・ディレクティブ |
|
リソース・プランに対する依存性 |
|
ロール |
|
なし |
|
ロール権限付与 |
|
なし |
|
ロールバック・セグメント |
|
なし |
|
スキーマ内のすべてのメタデータ・オブジェクト |
|
ユーザー・モードのエクスポートに対応します。 |
|
順序 |
|
なし |
|
シノニム |
|
プライベート・シノニムはスキーマ・オブジェクトです。パブリック・シノニムはスキーマ・オブジェクトではありませんが、このAPIでのスキーマ名は |
|
システム権限付与 |
|
なし |
|
表 |
|
なし |
|
表の行データ、ネストした表、パーティションを記述するメタデータ |
|
パーティションの場合、オブジェクト名はパーティション名です。 ネストした表の場合、オブジェクト名は記憶表の名前です。ベース・オブジェクトは、表データが属する最上位レベルの表です。ネストした表とパーティションの場合、これは(親表または親パーティションではなく)最上位レベルの表です。パーティション化していない表とネストしていない表の場合、ベース・オブジェクトはその表自体です。 |
|
表のメタデータ、および表のメタデータに関連するオブジェクト |
|
表モードのエクスポートに対応します。 |
|
表に関して事前に計算された統計情報 |
|
なし |
|
表領域 |
|
なし |
|
表領域割当て制限 |
|
|
|
トランスポータブル表領域内のオブジェクトのメタデータ |
|
トランスポータブル表領域のエクスポートに対応します。 |
|
トリガー |
|
なし |
|
信頼されているリンク |
|
なし |
|
ユーザー定義タイプ |
|
デフォルトでは、タイプおよびタイプ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。 |
|
タイプ指定 |
|
なし |
|
タイプ本体 |
|
なし |
|
ユーザー |
|
なし |
|
ビュー |
|
なし |
|
XML Schema |
|
オブジェクト名はそのURLです(30文字を超える可能性があります)。そのスキーマは、登録したユーザーです。 |
表87-12に、異種オブジェクト・タイプから戻されるオブジェクト・タイプのリストを示します。SCHEMA_EXPORT
では、INCLUDE_USER
フィルタがTRUE
に指定されている場合のみ、特定のオブジェクト・タイプが戻されます。表では、そのようなオブジェクト・タイプをINCLUDE_USER
というマークで示しています。
表87-12 異種オブジェクト・タイプから戻されるオブジェクト・タイプ
オブジェクト・タイプ | DATABASE_EXPORT | SCHEMA_EXPORT | TABLE_EXPORT | TRANSPORTABLE_EXPORT |
---|---|---|---|---|
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
いいえ |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
|
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
はい |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
|
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
はい |
|
はい |
いいえ |
いいえ |
はい |
|
はい |
ポリシーに従って表データが取り出される |
ポリシーに従って表データが取り出される |
はい |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
|
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
|
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
はい(トランスポータブル・セット内の表によってタイプが使用される場合) |
|
はい |
はい |
いいえ |
はい(トランスポータブル・セット内の表によってタイプが使用される場合) |
|
はい |
はい |
いいえ |
はい(トランスポータブル・セット内の表によってタイプが使用される場合) |
|
はい |
|
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
このファンクションは、送信するオブジェクトのタイプ、およびオブジェクト・モデルを指定します。戻り値は、不透明なコンテキスト・ハンドルです。
構文
DBMS_METADATA.OPENW (object_type IN VARCHAR2, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE') RETURN NUMBER;
パラメータ
表87-13 OPENWファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
送信するオブジェクトのタイプ。有効なタイプ名および各タイプの意味の一覧は、表87-11を参照してください。異種オブジェクト・タイプは指定できません。 |
|
|
|
使用するビューを指定します。 |
このファンクションは、オブジェクトを作成するために、オブジェクトのメタデータが保存されたXML文書をデータベースに送信します。
構文
DBMS_METADATA.PUT ( handle IN NUMBER, document IN sys.XMLType, flags IN NUMBER, results IN OUT NOCOPY sys.ku$_SubmitResults) RETURN BOOLEAN; DBMS_METADATA.PUT ( handle IN NUMBER, document IN CLOB, flags IN NUMBER, results IN OUT NOCOPY sys.ku$_SubmitResults) RETURN BOOLEAN;
使用上の注意
PUT
ファンクションは、CONVERT
ファンクションと同様に(指定された変換を適用して)XML文書からDDL文を作成した後、個々の結果DDL文をデータベースに送信します。CONVERT
と同様に、DDL変換を指定する必要があります。DDL文の内容とDDL文に関連する解析項目は、ネストした表sys
.ku$_SubmitResults
に戻されます。この表は、個々のDDL文から発生したエラーと例外を記録したエラー行からなります。
XML文書のエンコーディングは、CLOBまたはXMLTypeの表示に埋め込まれます。メタデータのバージョンは、XMLに埋め込まれます。作成されるDDLは、OPENW
に指定されているデータベース・バージョンで有効です。
このプロシージャは、FETCH_xxx
への1回のコールで取り出されるオブジェクトの最大数を指定します。デフォルトでは、FETCH_xxx
への各コールで戻されるオブジェクトは1つです。SET_COUNT
プロシージャを使用すると、このデフォルトを変更できます。FETCH_xxx
がクライアントからコールされる場合に、2以上のカウント値を指定すると、サーバーへのラウンド・トリップが減少するため、パフォーマンスが改善されます。
異種オブジェクト・タイプの場合、FETCH_xxx
への1回の操作で取り出されるのは、1つのオブジェクト・タイプのオブジェクトに限られます。
構文
DBMS_METADATA.SET_COUNT ( handle IN NUMBER, value IN NUMBER, object_type_path IN VARCHAR2 DEFAULT NULL);
パラメータ
表87-15 SET_COUNTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
取り出すオブジェクトの最大数。 |
|
カウント値が適用されるオブジェクト・タイプを示すパス名。デフォルトでは、
|
このプロシージャは、取り出すオブジェクトに関する制限事項(オブジェクト名やスキーマなど)を指定します。
構文
DBMS_METADATA.SET_FILTER ( handle IN NUMBER, name IN VARCHAR2, value IN VARCHAR2, object_type_path IN VARCHAR2 DEFAULT NULL); DBMS_METADATA.SET_FILTER ( handle IN NUMBER, name IN VARCHAR2, value IN BOOLEAN DEFAULT TRUE, object_type_path IN VARCHAR2 DEFAULT NULL); DBMS_METADATA.SET_FILTER ( handle IN NUMBER, name IN VARCHAR2, value IN NUMBER, object_type_path IN VARCHAR2 DEFAULT NULL);
パラメータ
表87-16 SET_FILTERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
フィルタ名。各フィルタが適用される 表87-17の「データ・タイプ」列には、テキスト・フィルタが式フィルタであるかどうかも示しています。式フィルタは、SQL比較の右側、つまり、SQL比較演算子(=、!=、など)および比較対象値の右側にあります。比較対象値には、適切な場所にカッコと引用符を付ける必要があります。PL/SQLとSQL*Plusでは、アポストロフィを表現するときに(1つの二重引用符ではなく) 2つの一重引用符が必要です。たとえば、PL/SQLの
フィルタ値が特定のオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せの |
|
フィルタ値。フィルタ値としてテキスト、ブール値、数値を指定できます。 |
|
フィルタが適用されるオブジェクト・タイプを示すパス名。デフォルトでは、 |
表87-17に、SET_FILTER
プロシージャで使用可能なフィルタのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表87-17 SET_FILTER: フィルタ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
名前付きオブジェクト |
|
TEXT |
指定された名前を持つオブジェクトが選択されます。 |
名前付きオブジェクト |
|
TEXT EXPRESSION |
フィルタ値がオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せの デフォルトでは、 |
名前付きオブジェクト |
|
TEXT EXPRESSION |
フィルタ値がオブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。 デフォルトでは、指定されたオブジェクト・タイプの名前付きオブジェクトがすべて選択されます。 |
スキーマ・オブジェクト |
|
TEXT |
このスキーマ内のオブジェクトが選択されます。オブジェクト・タイプがSYNONYMである場合は、PUBLICを指定すると、パブリック・シノニムが選択されます。 |
スキーマ・オブジェクト |
|
TEXT EXPRESSION |
フィルタ値がオブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。 デフォルトの抽出条件は次のようにして決定されます。 - - それ以外の場合は、現行スキーマ内のオブジェクトが選択されます。 |
|
|
BOOLEAN |
|
|
|
BOOLEAN |
|
|
|
TEXT |
指定された表領域内のオブジェクト(または、指定された表領域内にパーティションがあるオブジェクト)が選択されます。 |
|
|
TEXT EXPRESSION |
フィルタ値がオブジェクトの表領域(パーティション表またはパーティション索引の場合は、そのパーティションの表領域)を表す属性と組み合され、問合せの抽出条件が作成されます。デフォルトでは、すべての表領域内のオブジェクトが選択されます。 |
|
|
BOOLEAN |
デフォルトは |
|
|
BOOLEAN |
デフォルトは |
依存オブジェクト |
|
TEXT |
指定された名前のオブジェクトに対して定義または付与されたオブジェクトが選択されます。スキーマに対するトリガーの場合は |
依存オブジェクト |
|
TEXT |
指定されたスキーマ内のオブジェクトに対して定義または付与されたオブジェクトが選択されます。 |
依存オブジェクト |
|
TEXT EXPRESSION |
フィルタ値がベース・オブジェクトの名前を表す属性とが組み合されて、問合せの抽出条件が作成されます。 スキーマおよびデータベースに対するトリガーには使用できません。 |
依存オブジェクト |
|
TEXT EXPRESSION |
フィルタ値がベース・オブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。 スキーマおよびデータベースに対するトリガーには使用できません。 |
依存オブジェクト |
|
TEXT EXPRESSION |
フィルタ値がベース・オブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。 |
依存オブジェクト |
|
TEXT |
ベース・オブジェクトのオブジェクト・タイプ。 |
依存オブジェクト |
|
TEXT EXPRESSION |
フィルタ値がベース・オブジェクトのオブジェクト・タイプを表す属性と組み合されて、問合せの抽出条件が作成されます。 デフォルトでは、オブジェクト・タイプに対してフィルタ処理は適用されません。 |
依存オブジェクト |
|
TEXT |
ベース・オブジェクトの表領域。 |
依存オブジェクト |
|
TEXT EXPRESSION |
フィルタ値がベース・オブジェクトの表領域を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、表領域に対してフィルタ処理は適用されません。 |
|
|
BOOLEAN |
|
権限付与オブジェクト |
|
TEXT |
指定されたユーザーまたはロールに付与されたオブジェクトが選択されます。 |
権限付与オブジェクト |
|
TEXT |
付与される権限またはロールの名前。TABLESPACE_QUOTAには、UNLIMITEDのみを指定できます。 |
権限付与オブジェクト |
|
TEXT EXPRESSION |
フィルタ値が権限またはロールの名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、すべての権限とロールが戻されます。 |
権限付与オブジェクト |
|
TEXT EXPRESSION |
フィルタ値が権限受領者の名前を表す属性と組み合されて、問合せの抽出条件が作成されます。 |
権限付与オブジェクト |
|
TEXT EXPRESSION |
フィルタ値が権限受領者の名前を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。 |
|
|
TEXT |
指定されたユーザーが付与したオブジェクト権限付与が選択されます。 |
|
|
TEXT |
30文字を超える名前。指定された名前を持つオブジェクトが選択されます。オブジェクト名が30文字以内である場合は、 |
|
|
TEXT |
フィルタ値がオブジェクトの長い名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、オブジェクトの長い名前に対してフィルタ処理は適用されません。 |
すべてのオブジェクト |
|
|
その他のフィルタは、多数のユーザーのニーズを満たすことを目的としています。目的に合ったフィルタが定義されていない場合は、 |
すべてのオブジェクト |
|
TEXT |
エディション・フィルタはすべてのオブジェクト・タイプで受け入れられますが、エディションをサポートしているオブジェクトにのみ影響します。このフィルタはローカル・オブジェクトでのみ受け入れられます(つまり、 |
|
|
|
選択されるオブジェクトのスキーマ。 |
|
|
|
フィルタ値は次のどちらかの方法で処理されます。 フィルタ値がスキーマ名を表す属性と組み合されて、スキーマ・オブジェクトをフェッチする問合せの フィルタ値がベース・スキーマ名を表す属性と組み合されて、依存オブジェクトをフェッチする問合せの デフォルトでは、現行ユーザーのオブジェクトが選択されます。 |
|
|
|
デフォルトは |
|
|
|
指定されたスキーマ内のオブジェクト(表、および表の依存オブジェクト)が選択されます。 |
|
|
|
フィルタ値は次のどちらかの方法で処理されます。 フィルタ値がスキーマ名を表す属性と組み合されて、表をフェッチする問合せの フィルタ値がベース・スキーマ名を表す属性と組み合されて、表の依存オブジェクトをフェッチする問合せの デフォルトでは、現行ユーザーのオブジェクトが選択されます。 |
|
|
|
指定された名前を持つ表と、その表の依存オブジェクトが選択されます。 |
|
|
TEXT EXPRESSION |
フィルタ値が表の名前を表す属性と組み合されて、表および表の依存オブジェクトをフェッチする問合せの条件が作成されます。 デフォルトでは、指定されたスキーマ内のすべての表、およびそれらの表の依存オブジェクトが選択されます。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
TEXT |
異種コレクションから取り出す最初のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
TEXT |
異種コレクションから取り出す最初のオブジェクト・タイプの直前にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
TEXT |
異種コレクションから取り出す最後のオブジェクト・タイプの直後にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
TEXT |
異種コレクションから取り出す最後のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
TEXT EXPRESSION |
これら2つのフィルタでは、フィルタ値がオブジェクト・タイプのパス名を表す属性と組み合されて、異種コレクションに含まれるオブジェクト・タイプをフェッチする問合せの
|
使用上の注意
SET_FILTER
をコールするたびに、オブジェクトのセットをフェッチする問合せに対してWHERE
条件式が追加されます。複数のWHERE
条件式はAND処理されるため、SET_FILTER
を複数回コールすると、戻されるオブジェクトのセットの範囲を細かく制限できます。たとえば、SCOTT
というスキーマ内のEMP
という名前付きオブジェクトを取り出すには、次のように指定します。
SET_FILTER(handle,'SCHEMA','SCOTT'); SET_FILTER(handle,'NAME','EMP');
同じテキスト式フィルタを、異なる値で複数回使用できます。すべてのフィルタ条件が問合せに適用されます。たとえば、FelixとOscarの間の名前を持つオブジェクトを取得するには、次のように記述します。
SET_FILTER(handle,'NAME_EXPR','>=''FELIX'''); SET_FILTER(handle,'NAME_EXPR','<=''OSCAR''');
SET_FILTER
を使用すると、取り出されるオブジェクトのスキーマを指定できますが、セキュリティ上の理由からそのスキーマ指定が上書きされる可能性があります。コール元がSYS
であるか、またはSELECT_CATALOG_ROLE
を付与されている場合、どのようなオブジェクトでも取り出せますが、そうでない場合は、次のオブジェクトのみを取り出せます。
現行ユーザーが所有するスキーマ・オブジェクト
パブリック・シノニム
現行ユーザーまたはPUBLIC
に付与されたシステム権限
現行ユーザーが所有者、権限付与者または権限受領者(明示的に受領またはPUBLIC
として受領)であるオブジェクトに対する付与
name
が現行ユーザーであるSCHEMA_EXPORT
SCHEMA
が現行ユーザーであるTABLE_EXPORT
取出しの権限が付与されていないオブジェクトを要求した場合、例外は発生しません。ただし、オブジェクトは存在しないとみなされ、取り出されません。
ストアド・プロシージャ、ストアド・ファンクション、定義者権限パッケージでは、ロール(SELECT_CATALOG_ROLE
など)を使用できません。したがって、これらのPL/SQLプログラムでは、それ自体のスキーマ内にあるオブジェクトのメタデータしかフェッチできません。(実行者が所有するSELECT_CATALOG_ROLE
を通じて)別のスキーマ内にあるオブジェクトのメタデータをフェッチするPL/SQLプログラムを作成するには、実行者権限をPL/SQLプログラムに付与する必要があります。
異種オブジェクト・タイプの場合、BEGIN_WITH
フィルタとBEGIN_AFTER
フィルタを使用すると、オブジェクト・タイプの境界からの再取出しを制御できます。これらのフィルタで使用する適切な値を取得するには、FETCH_XML_CLOB
プロシージャを使用します。
異種コレクションに対するフィルタでは、コレクション内部の各オブジェクト・タイプに対するフィルタごとにデフォルト値が定義されています。特定のオブジェクト・タイプのデフォルト値を変更するには、目的のオブジェクト・タイプ・パスに対して適切なフィルタを指定します。たとえば、SCHEMA_EXPORT
では、フェッチされるスキーマ(スキーマ内のすべての表を含む)がNAME
フィルタによって指定されますが、TABLEオブジェクト・タイプ・パスに対してNAME_EXPR
フィルタを明示的に指定すると、フェッチ対象の表をさらに細かく制限できます。主要な異種オブジェクト・タイプに対して指定できる有効なオブジェクト・タイプ・パス名および個々のパス名の適用範囲については、表87-18を参照してください。(DATABASE_EXPORT_OBJECTS
、SCHEMA_EXPORT_OBJECTS
およびTABLE_EXPORT_OBJECTS
のカタログ・ビューでも参照できます。)個々のパス名について定義されているフィルタの一覧は、表87-17を参照してください。これらのパス名は、INCLUDE_PATH_EXPR
フィルタおよびEXCLUDE_PATH_EXPR
フィルタで使用できます。アスタリスク(*)が付いたパス名は、これらのフィルタのみで使用でき、これらのパス名は、SET_FILTER
object_type_path
パラメータの値として使用できません。
表87-18 異種オブジェクト・タイプに対して指定できるオブジェクト・タイプ・パス名
異種オブジェクト・タイプ | パス名(*=xxx_PATH_EXPRのみで使用可能) | 有効範囲 |
---|---|---|
|
|
選択される表に対するオブジェクト監査。 |
|
|
選択される表に関する表コメントと列コメント。 |
|
|
選択される表に対する制約(参照制約を含む)。 |
|
|
選択される表に対するオブジェクト権限付与。 |
|
|
選択される表の索引(ドメイン索引を含む)。 |
|
|
選択される表に対するオブジェクト権限付与。 |
|
|
選択される表に対する参照制約(外部キー制約)。 |
|
|
選択される表に関する統計情報。 |
|
|
選択される表の行データ。 |
|
|
選択される表に対するトリガー。 |
|
|
選択されるスキーマ内のオブジェクトに対する統計タイプの結合。 |
|
|
選択されたスキーマ内のすべてのオブジェクトに対する監査。 |
|
|
選択されるスキーマ内のクラスタ、およびクラスタの索引。 |
|
|
選択されるスキーマ内のすべてのオブジェクトに関するコメント。 |
|
|
選択されるスキーマ内のすべてのオブジェクトに対する制約(参照制約を含む)。 |
|
|
選択されるスキーマ内のプライベート・データベース・リンク。 |
|
|
選択されるスキーマと関連付けられたユーザーに付与されるデフォルト・ロール。 |
|
|
選択されるスキーマ内のディメンション。 |
|
|
選択されるスキーマ内のファンクション、およびファンクションの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のオブジェクトに対する権限付与。 |
|
|
選択されるスキーマ内の表とクラスタの索引(ドメイン索引を含む)。 |
|
|
選択されるスキーマ内の索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のJavaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のジョブ。 |
|
|
選択されるスキーマ内の外部プロシージャ・ライブラリ。 |
|
|
選択されるスキーマ内のマテリアライズド・ビュー。 |
|
|
選択されるスキーマ内の表に関するマテリアライズド・ビュー・ログ。 |
|
|
選択されるスキーマ内のオブジェクトに対する権限付与。 |
|
|
選択されるスキーマ内の演算子、および演算子の依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のパッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のパッケージ本体。 |
|
|
選択されるスキーマ内のパッケージ仕様部。 |
|
|
選択されるスキーマと関連付けられたユーザーのパスワード履歴。 |
|
|
選択されるスキーマ内のプロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内の表に対する参照制約(外部キー制約)。 |
|
|
選択されるスキーマ内のリフレッシュ・グループ。 |
|
|
選択されるスキーマ内の順序、およびそれらの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内の表と索引に関する統計情報。 |
|
|
選択されるスキーマ内のプライベート・シノニム。 |
|
|
選択されるスキーマ内の表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。 |
|
|
選択されるスキーマ内の表の行データ。 |
|
|
選択されるスキーマと関連付けられたユーザーに付与される表領域割当て制限。 |
|
|
選択されるスキーマ内の表に対するトリガー。 |
|
|
選択されるスキーマ内のタイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のタイプ本体。 |
|
|
選択されるスキーマ内のタイプ仕様部。 |
|
|
選択されるスキーマと関連付けられたユーザーのユーザー定義。 |
|
|
選択されるスキーマ内のビュー、およびビューの依存オブジェクト(権限付与、制約、コメント、監査)。 |
|
|
データベース内のオブジェクトに対する統計タイプの結合。 |
|
|
SQL文の監査。 |
|
|
データベース内のすべてのオブジェクトに対する監査。 |
|
|
クラスタおよびクラスタ索引。 |
|
|
すべてのオブジェクトに関するコメント。 |
|
|
制約(参照制約を含む)。 |
|
|
アプリケーション・コンテキスト。 |
|
|
プライベート・データベース・リンクおよびパブリック・データベース・リンク。 |
|
|
データベース内のユーザーに付与されたデフォルト・ロール。 |
|
|
データベース内のディメンション。 |
|
|
データベース内のディレクトリ・オブジェクト。 |
|
|
ファイングレイン監査方針。 |
|
|
ファンクション |
|
|
オブジェクト権限付与およびシステム権限付与。 |
|
|
表とクラスタの索引(ドメイン索引を含む)。 |
|
|
索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。 |
|
|
Javaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。 |
|
|
ジョブ |
|
|
外部プロシージャ・ライブラリ。 |
|
|
マテリアライズド・ビュー |
|
|
マテリアライズド・ビュー・ログ。 |
|
|
データベース内のすべてのオブジェクト権限付与。 |
|
|
演算子、および演算子の依存オブジェクト(権限付与と監査)。 |
|
|
パッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。 |
|
|
パッケージ本体。 |
|
|
パッケージ仕様部。 |
|
|
データベース・ユーザーのパスワード履歴。 |
|
|
複雑なパスワードの検証機能。 |
|
|
プロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。 |
|
|
プロファイル。 |
|
|
プロキシ認証。 |
|
|
データベース内の表に対する参照制約(外部キー制約)。 |
|
|
リフレッシュ・グループ。 |
|
|
リソース・コスト情報。 |
|
|
ファイングレイン・アクセス・コントロールの駆動コンテキスト。 |
|
|
ファイングレイン・アクセス・コントロールのポリシー・グループ。 |
|
|
ファイングレイン・アクセス・コントロールのポリシー。 |
|
|
ロール |
|
|
データベース内のユーザーに対するロール権限付与。 |
|
|
ロールバック・セグメント。 |
|
|
データベース・スキーマ - 各スキーマに関連するすべての関連オブジェクトと依存オブジェクトも含まれ、関連オブジェクトや依存オブジェクトには、ユーザー定義とその属性(デフォルト・ロール、ロール権限付与、表領域割当て制限など)、スキーマ内のオブジェクト(表、ビュー、パッケージ、タイプなど)、スキーマ内のオブジェクトの依存オブジェクト(権限付与、監査、索引、制約など)があります。このオブジェクト・タイプ・パス名に |
|
|
順序。 |
|
|
表と索引に関する統計情報。 |
|
|
パブリック・シノニムとプライベート・シノニム。 |
|
|
システム権限付与。 |
|
|
表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。 |
|
|
すべての表の行データ。 |
|
|
表領域の定義。 |
|
|
データベース内のユーザーに付与された表領域割当て制限。 |
|
|
データベース、スキーマ、スキーマ・オブジェクトに対するトリガー。 |
|
|
信頼されているリンク。 |
|
|
タイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。 |
|
|
タイプ本体。 |
|
|
タイプ仕様部。 |
|
|
ユーザー定義。 |
|
|
ビュー |
例外
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。
INVALID_OPERATION
。OPEN
コンテキストに対するFETCH_xxx
への最初のコールの後に、SET_FILTER
がコールされました。FETCH_xxx
への最初のコールの後で、それ以上SET_FILTER
をコールできません。
INCONSISTENT_ARGS
。引数に整合性がありません。不整合の原因は次のとおりです。
OPEN
コンテキストに関連付けられたオブジェクト・タイプに対して、フィルタ名が有効でありません。
object_type_path
に対して、フィルタのname
パラメータが無効です。
handle
によって指定されるコレクションにobject_type_path
が属していません。
フィルタのvalue
パラメータのデータ・タイプが不正です。
このプロシージャは、オブジェクトの取出しとXMLの送信の両方の目的に使用されます。このプロシージャは、解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。
構文
オブジェクトの取出しにSET_PARSE_ITEM
を使用するときは、次の構文が適用されます。
DBMS_METADATA.SET_PARSE_ITEM ( handle IN NUMBER, name IN VARCHAR2, object_type IN VARCHAR2 DEFAULT NULL);
XMLの送信にSET_PARSE_ITEM
を使用するときは、次の構文が適用されます。
DBMS_METADATA.SET_PARSE_ITEM ( handle IN NUMBER, name IN VARCHAR2);
パラメータ
表87-19 SET_PARSE_ITEMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
解析して戻されるオブジェクト属性の名前。オブジェクト・タイプ、名前および意味は、表87-20を参照してください。 |
|
解析項目が適用されるオブジェクト・タイプを指定します(オブジェクトのパス名ではなくタイプ名を指定します)。デフォルトでは、OPENハンドルのオブジェクト・タイプに解析項目が適用されます。
オブジェクトの取出しに |
表87-20に、SET_PARSE_ITEM
プロシージャで使用できる解析項目のオブジェクト・タイプ、名前および意味を示します。
表87-20 SET_PARSE_ITEM: 解析項目
オブジェクト・タイプ | 名前 | 意味 |
---|---|---|
すべてのオブジェクト |
|
|
すべてのオブジェクト |
|
|
スキーマ・オブジェクト |
|
オブジェクト・スキーマが戻されます。オブジェクトがスキーマ・オブジェクトでない場合、値は戻されません。 |
名前付きオブジェクト |
|
オブジェクト名が戻されます。オブジェクトが名前付きオブジェクトでない場合、値は戻されません。 |
|
|
オブジェクトの表領域名、または、オブジェクトがパーティション表である場合は、デフォルトの表領域が戻されます。TABLE_DATAオブジェクトの場合は、常に、行が格納される表領域が戻されます。 |
|
|
トリガーが有効にされている場合、 |
|
|
権限付与者が戻されます。 |
依存オブジェクト(ドメイン索引、セカンダリ表を含む) |
|
ベース・オブジェクトの名前が戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。 |
依存オブジェクト(ドメイン索引、セカンダリ表を含む) |
|
ベース・オブジェクトのスキーマが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。 |
依存オブジェクト(ドメイン索引、セカンダリ表を含む) |
|
ベース・オブジェクトのオブジェクト・タイプが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。 |
権限付与オブジェクト |
|
権限受領者が戻されます。オブジェクトが権限付与オブジェクトでない場合、値は戻されません。 |
使用上の注意
次の注意は、オブジェクトの取出しにSET_PARSE_ITEMを使用するときにのみ適用されます。
FETCH_xxx
のデフォルトでは、オブジェクトのメタデータがXMLまたは作成DDLとして戻されます。SET_PARSE_ITEM
をコールすると、オブジェクトの個々の属性も戻すことを要求できます。
SET_PARSE_ITEM
を複数回コールして、複数の項目を解析して戻すように要求できます。解析された項目は、ネストした表sys
.ku$_parsed_items
に戻されます。
TABLE_DATA
オブジェクトを解析する場合は、次の解析項目の戻り値に注意してください。
オブジェクト・タイプ | 名前、スキーマ | BASE_OBJECT_NAME、BASE_OBJECT_SCHEMA |
---|---|---|
パーティション化していない表 | 表名、スキーマ | 表名、スキーマ |
表パーティション | パーティション名、スキーマ | 表名、スキーマ |
ネストした表 | 記憶表の名前、スキーマ | (ネストした表の親表ではなく)最上位レベルの表の名前とスキーマ |
通常、表は依存オブジェクトとはみなされません。ただし、ドメイン索引のセカンダリ表はドメイン索引に依存しています。そのため、解析項目BASE_OBJECT_NAME
、BASE_OBJECT_SCHEMA
およびBASE_OBJECT_TYPE
をセカンダリ表(TABLE
オブジェクト)に適用すると、ドメイン索引の名前、スキーマおよびタイプが戻されます。
CONVERT
プロシージャとPUT
プロシージャのデフォルトでは、単にオブジェクトのXMLメタデータがDDLに変換されます。SET_PARSE_ITEM
をコールすると、オブジェクトの個々の属性も戻すことを要求できます。
これらのプロシージャは、取出しと送信の両方の目的に使用されます。SET_TRANSFORM_PARAM
とSET_REMAP_PARAM
は、transform_handle
によって特定されるXSLTスタイルシートに対するパラメータを指定します。これらのプロシージャを使用して、変換の出力の変更またはカスタマイズを行います。
構文
DBMS_METADATA.SET_TRANSFORM_PARAM ( transform_handle IN NUMBER, name IN VARCHAR2, value IN VARCHAR2, object_type IN VARCHAR2 DEFAULT NULL); DBMS_METADATA.SET_TRANSFORM_PARAM ( transform_handle IN NUMBER, name IN VARCHAR2, value IN BOOLEAN DEFAULT TRUE, object_type IN VARCHAR2 DEFAULT NULL); DBMS_METADATA.SET_TRANSFORM_PARAM ( transform_handle IN NUMBER, name IN VARCHAR2, value IN NUMBER, object_type IN VARCHAR2 DEFAULT NULL); DBMS_METADATA.SET_REMAP_PARAM ( transform_handle IN NUMBER, name IN VARCHAR2, old_value IN VARCHAR2, new_value IN VARCHAR2, object_type IN VARCHAR2 DEFAULT NULL);
パラメータ
表87-21に、SET_TRANSFORM_PARAM
プロシージャおよびSET_REMAP_PARAM
プロシージャのパラメータを示します。
表87-21 SET_TRANSFORM_PARAMおよびSET_REMAP_PARAMのパラメータ
パラメータ | 説明 |
---|---|
|
(1)
|
|
パラメータの名前。 DDL変換用に定義された変換パラメータの一覧、変換が適用される
|
|
変換の値。このパラメータは、 |
|
再マッピングの元の値。このパラメータは、 |
|
再マッピングの新しい値。このパラメータは、 |
|
変換または再マッピングのパラメータが適用されるオブジェクト・タイプを指定します。デフォルトでは、変換と同じオブジェクト・タイプにパラメータが適用されます。異種コレクション内部のすべてのオブジェクト・タイプに変換が適用される場合は、次のような動作になります。
異種コレクションに変換を追加したコール元でこのパラメータを使用すると、コレクション内部の個々のオブジェクト・タイプに対して、別々の変換パラメータを指定できます。 |
表87-22に、SET_TRANSFORM_PARAM
プロシージャのDDL変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表87-22 SET_TRANSFORM_PARAM: DDL変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意: このオブジェクト・タイプは非推奨となっています。 |
|
|
|
|
|
|
|
|
|
|
|
ロールが取り消されるユーザーの名前。このパラメータがNULL文字列でない場合に、 注意: デフォルトはNULL文字列です。 |
|
|
|
デフォルトは |
|
|
|
オブジェクト・タイプの領域割当てを修正する割合を示す数値。この値は、現在の割当てに100を掛けた数値です。たとえば、100は100%を意味します。 オブジェクト・タイプが - ファイル指定での - - これ以外のオブジェクト・タイプの場合は、 |
表87-23に、SET_TRANSFORM_PARAM
プロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表87-23 SET_TRANSFORM_PARAM: MODIFY変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
|
|
|
オブジェクトのオブジェクト行を示す数値。文書内のオブジェクトのうち、この数値に対応するオブジェクトが出力文書にコピーされます。 このパラメータは加算的です。 デフォルトでは、すべてのオブジェクトが出力文書にコピーされます。 |
表87-24に、SET_REMAP_PARAM
プロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表87-24 SET_REMAP_PARAM: MODIFY変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
|
|
|
文書内にあるオブジェクトのファイル仕様名のうち、 このパラメータは加算的です。 デフォルトでは、ファイル仕様の名前は変更されません。 |
|
|
|
文書内にあるスキーマ・オブジェクトのスキーマ名のうち、 依存オブジェクトのベース・オブジェクト名のうち、 権限付与オブジェクトの権限受領者名のうち、 ユーザーの名前のうち、 このパラメータは加算的です。 デフォルトでは、スキーマは再マッピングされません。 |
|
|
|
文書内にあるオブジェクトの表領域名のうち、 このパラメータは加算的です。 デフォルトでは、表領域は再マッピングされません。 |
名前付きオブジェクトおよびすべてのオブジェクトは、名前付きオブジェクトに依存します。 |
|
TEXT |
文書内にある名前付きオブジェクトのうち、 依存オブジェクトのベース・オブジェクト名のうち、 このパラメータは加算的です。 デフォルトでは、名前は再マッピングされません。 ( |
例外
INVALID_ARGVAL。
入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。
INVALID_OPERATION。
OPEN
コンテキストに対するFETCH_xxx
への最初のコールの後に、SET_TRANSFORM_PARAM
またはSET_REMAP_PARAM
がコールされました。FETCH_xxx
への最初のコールの後で、それ以上SET_TRANSFORM_PARAM
またはSET_REMAP_PARAM
をコールできません。
INCONSISTENT_ARGS
。引数に整合性がありません。不整合の原因は次のとおりです。
OPEN
コンテキストに関連付けられたオブジェクト・タイプ、または変換ハンドルに関連付けられた変換に対して、変換パラメータname
が有効でありません。
異種コレクション内部のすべてのオブジェクト・タイプに変換が適用されるにもかかわらず、object_type
がコレクションに属していません。
使用上の注意
XSLTを使用すると、パラメータをスタイルシートに渡すことができます。transform_handle
によって特定されるスタイルシートに渡されるパラメータの値を指定するには、SET_TRANSFORM_PARAM
またはSET_REMAP_PARAM
をコールします。
通常、同じパラメータ名に対してSET_TRANSFORM_PARAMETER
を複数回コールすると、各コールによって以前のコールの結果が上書きされます。たとえば、次の一連のコールによって、STORAGE
変換パラメータがTRUE
に設定されます。
SET_TRANSFORM_PARAM(tr_handle,'STORAGE',false); SET_TRANSFORM_PARAM(tr_handle,'STORAGE',true);
ただし、一部の変換パラメータは加算的ですが、これは、最後のパラメータ値だけではなく、指定されたすべてのパラメータ値が文書に適用されることを意味します。たとえば、MODIFY
変換のOBJECT_ROW
パラメータは加算的です。次を指定すると、指定された行はどちらも出力文書にコピーされます。
SET_TRANSFORM_PARAM(tr_handle,'OBJECT_ROW',5); SET_TRANSFORM_PARAM(tr_handle,'OBJECT_ROW',8);
REMAP_TABLESPACE
パラメータも加算的です。次のコールを実行すると、表領域TBS1がTBS2に変更され、表領域TBS3がTBS4に変更されます。
SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS1','TBS2'); SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS3','TBS4');
変換が実行される順序は明確に決まっていません。たとえば、次のようなコールを実行した場合、結果は予測できません。
SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS1','TBS2'); SET_REMAP_PARAM(tr_handle,'REMAP_TABLESPACE','TBS2','TBS3');
注意: MODIFY変換で指定可能な再マッピング・パラメータの数は、10に制限されます。つまり、REMAP_DATAFILE 、REMAP_SCHEMA パラメータなどをそれぞれ最大10個まで指定できます。追加のインスタンスは無視されます。これを解決するには、別のDBMS_METADATA.ADD_TRANSFORM を実行し、追加の再マッピング・パラメータを指定します。 |
GET_DDL
、GET_DEPENDENT_DDL
およびGET_GRANTED_DDL
の各ファンクションを使用すると、一般的なブラウザを通じてオブジェクトの作成DDLを抽出できます。ユーザーが変換パラメータを指定できるように、このパッケージでは、DDL変換のハンドルとして列挙定数SESSION_TRANSFORM
がセッション・レベルで定義されています。DBMS_METADATA.SESSION_TRANSFORM
を変換ハンドルとして使用し、SET_TRANSFORM_PARAM
をコールすると、セッション全体の変換パラメータを設定できます。GET_DDL
、GET_DEPENDENT_DDL
およびGET_GRANTED_DDL
の各ファンクションからDDL変換を起動するときは、セッション全体のパラメータが継承されます。
注意: 列挙定数にはパッケージ名DBMS_METADATA.SESSION_TRANSFORM を接頭辞として付加する必要があります。 |