115 DBMS_METADATA
DBMS_METADATA
パッケージには、データベース・ディクショナリからXMLまたは作成DDLとしてメタデータを取り出す機能と、データベースにXMLを送信してオブジェクトを再作成する機能があります。
参照:
DBMS_METADATA
パッケージの詳細および使用例は、『Oracle Databaseユーティリティ』を参照してください。
この章のトピックは、次のとおりです:
-
-
データベースから複数のオブジェクトを取り出すためのサブプログラム
-
データベースにXMLを送信するためのサブプログラム
-
115.1 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の送信
XMLを送信するときは、次の事項を指定できます。
-
オブジェクトのタイプ
-
オブジェクトの属性を変更する(たとえば、オブジェクトの所有者を変更する)変換パラメータ(任意指定)
-
解析項目(送信するオブジェクトの属性のうち、個別に解析して送信する属性)
-
作成されたDDLをそのまま戻すか、なんらかの処理を実行するかの指定
DBMS_METADATA
には、XMLを送信するためのプログラム・インタフェースが用意されています。このプログラム・インタフェースを構成するプロシージャは、OPENW
、ADD_TRANSFORM
、SET_TRANSFORM_PARAM
、SET_REMAP_PARAM
、SET_PARSE_ITEM
、CONVERT
、PUT
およびCLOSE
です。
115.2 DBMS_METADATAのセキュリティ・モデル
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
ロールを持つユーザー、およびオブジェクトを所有するユーザーは、パスワードを含めて、該当するオブジェクトのすべてのメタデータを参照できます。
-
-
データベース・リンクには、パスワードは表示されません。セキュリティ上の理由から、Oracleでは、
link$.passwordx
列に直接問い合せを行うSYS
ユーザーに対してパスワード値の可視性を制限しています。パスワードのかわりに、DBMS_METADATA
では、次の無効な構文が戻されます。IDENTIFIED BY VALUES ':1'
データベース・リンクのパスワードを知っているユーザーは、手動で
:1
をパスワードに置き換えます。
115.3 ルールおよび制限
Oracle Shared Server(OSS)環境では、DBMS_METADATA
パッケージによってセッションの移行と接続プーリングが禁止されます。
そのため、パッケージを実行しているセッションを管理する共有サーバー・プロセスが、セッションの全期間にわたって実質的にデフォルトの専用サーバーとなります。パッケージを使用するときは、十分な数の共有サーバーを構成するとともに、MAX_SHARED_SERVERS
初期化パラメータの値が小さいために共有サーバーの数が人為的に制限されないように注意する必要があります。
115.4 DBMS_METADATAデータ構造 - オブジェクト・タイプおよび表タイプ
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, parsedItems 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;
ノート:
COMPATIBLE
初期化パラメータを12.0に、MAX_STRING_SIZE
初期化パラメータをEXTENDED
に設定すると、VARCHAR2
、NVARCHAR2
およびRAW
の各データ・タイプの最大サイズを32KBに増やせます。Oracle Database 12cリリース1 (12.1)より前のバージョンのメタデータでないかぎり、DBMS_METADATA
パッケージでは、このサイズの増加がサポートされます。
115.5 DBMS_METADATAサブプログラムのグループ化
DBMS_METADATA
サブプログラムは、データベースからオブジェクトを取り出し、データベースにXMLを送信します。サブプログラムの中には、これら2つの目的に使用されるものと、一方の目的(取出しまたは送信)のみに使用されるものがあります。
115.5.1 データベースから複数のオブジェクトを取り出すためのDBMS_METADATAサブプログラム
DBMS_METADATA
は、データベースから複数のオブジェクトを取り出すために次のサブプログラムを使用します。
表115-1 複数のオブジェクトを取り出すためのDBMS_METADATAサブプログラム
サブプログラム | 説明 |
---|---|
取り出されるオブジェクトを表すXML文書に |
|
|
|
|
|
|
|
単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。 |
|
取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。 |
|
|
|
取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。 |
|
解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。 |
|
|
115.5.2 データベースにXMLを送信するためのDBMS_METADATAサブプログラム
DBMS_METADATA
は、データベースにXMLを送信するために次のサブプログラムを使用します。
表115-2 XMLを送信するためのDBMS_METADATAサブプログラム
サブプログラム | 説明 |
---|---|
XML文書の変換を指定します。 |
|
|
|
XML文書をDDLに変換します。 |
|
書込みコンテキストを開きます。 |
|
XML文書をデータベースに送信します。 |
|
解析するオブジェクト属性を指定します。 |
|
|
115.6 すべてのDBMS_METADATAサブプログラムの要約
この表は、DBMS_METADATA
サブプログラムを示し、簡単に説明しています。
表115-3 DBMS_METADATAパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
取り出されるオブジェクトを表すXML文書に |
|
|
|
XML文書をDDLに変換します。 |
|
|
|
単一のコールのみを使用することによって、指定されたオブジェクトのメタデータをXML、SXMLまたはDDLとしてフェッチします。 |
|
|
|
取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。 |
|
書込みコンテキストを開きます。 |
|
XML文書をデータベースに送信します。 |
|
|
|
取り出すオブジェクトに関する制限事項(オブジェクト名またはスキーマなど)を指定します。 |
|
解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。 |
|
|
115.6.1 ADD_TRANSFORMファンクション
DBMS_METADATA.ADD_TRANSFORM
ファンクションは、取出しと送信の両方の目的に使用されます。
-
このファンクションをオブジェクトの取出しに使用するときは、取り出されるオブジェクトを表すXML文書に
FETCH_xxx
を通じて適用される変換を指定します。 -
オブジェクトの送信に使用するときは、送信されるオブジェクトを表すXML文書に
CONVERT
またはPUT
を通じて適用される変換を指定します。複数の変換を追加することが可能です。参照:
-
変換の出力の変更方法およびカスタマイズ方法の詳細は、「SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ」を参照してください。
構文
DBMS_METADATA.ADD_TRANSFORM ( handle IN NUMBER, name IN VARCHAR2, encoding IN VARCHAR2 DEFAULT NULL, object_type IN VARCHAR2 DEFAULT NULL) RETURN NUMBER;
パラメータ
表115-4 ADD_TRANSFORMファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
取り出されるオブジェクトに変換を適用するときは、 |
|
変換名。名前は、内部に格納されているスタイルシートを使用する それ以外の場合、このnameパラメータは 使用可能な変換の詳細は、表115-5を参照してください。 |
|
nameパラメータで指定されたスタイルシートがエンコードされるグローバリゼーション・サポート文字セットの名前。このパラメータは、nameがURLである場合のみ有効です。このパラメータがNULLのままで、URLがデータベースの外部を指している場合は、UTF-8エンコーディングが適用されます。このパラメータが |
|
このパラメータの定義は、オブジェクトを取り出すのか、XMLメタデータを送信するのかに応じて異なります。
|
次の表では、ADD_TRANSFORM
ファンクションで使用可能な変換について説明しています。
時々新しい変換が追加されるため、DBMS_METADATA_TRANSFORMS
ビューを問い合せて、特定のオブジェクト・タイプについて有効なすべてのオラクル社提供の変換を確認することをお薦めします。
表115-5 ADD_TRANSFORMファンクションで使用可能な変換
オブジェクト・タイプ | 変換名 | 入力ドキュメント・タイプ | 出力ドキュメント・タイプ | 説明 |
---|---|---|---|---|
すべて |
DDL |
XML |
DDL |
XMLをSQLに変換してオブジェクトを作成 |
すべて |
MODIFY |
XML |
XML |
変換パラメータに従って、XMLドキュメントを変更 |
サブセット |
SXML |
XML |
SXML |
XMLをSXMLに変換 |
サブセット |
MODIFYSXML |
SXML |
SXML |
変換パラメータに従って、SXMLドキュメントを変更 |
サブセット |
SXMLDDL |
SXML |
DDL |
SXMLをDDLに変換 |
サブセット |
ALTERXML |
SXML差分ドキュメント |
ALTER_XML |
SXML差分ドキュメントからALTER_XMLを生成(SXML差分形式の詳細は、 ALTERXML変換に有効なパラメータは、次のとおりです。
|
サブセット |
ALTERDDL |
ALTER_XML |
ALTER_DDL |
ALTER_XMLをALTER_DDLに変換 |
戻り値
このファンクションから戻される不透明なハンドルは、SET_TRANSFORM_PARAM
およびSET_REMAP_PARAM
への入力として使用されます。このハンドルはOPEN
またはOPENW
から戻されるハンドルとは異なり、取り出されるオブジェクトではなく変換を指します。
使用上のノート
-
変換が追加されない場合、デフォルトではXML文書としてオブジェクトが戻されます。戻されるXML文書の変換に使用するXSLTスタイルシートを指定するには、
ADD_TRANSFORM
をコールします。 -
XML文書に対して複数の変換を適用するには、
ADD_TRANSFORM
を複数回コールします。変換は指定された順序で適用されるため、最初の変換の出力は2番目の変換の入力として使用されます(以降同様)。 -
DDL変換の出力はXML文書ではありません。したがって、DDL変換の後に変換を追加しないでください。
-
個々の変換は、特定形式のXML文書を入力として予測します。入力文書が指定されていない場合、メタデータXML形式が想定されます。
-
ALTERXML変換を使用する場合、解析項目がALTER_XML文書の
PARSE_LIST
要素に戻されます。各PARSE_LIST_ITEM
要素には、ITEM
およびVALUE
が含まれます。たとえば:<PARSE_LIST> <PARSE_LIST_ITEM> <ITEM>XPATH</ITEM> <VALUE>/sxml:TABLE/sxml:RELATIONAL_TABLE/sxml:COL_LIST/sxml:COL_LIST_ITEM[14]</VALUE> </PARSE_LIST_ITEM> <PARSE_LIST_ITEM> <ITEM>NAME</ITEM> <VALUE>Z1</VALUE> </PARSE_LIST_ITEM> <PARSE_LIST_ITEM> <ITEM>CLAUSE_TYPE</ITEM> <VALUE>ADD_COLUMN</VALUE> </PARSE_LIST_ITEM> <PARSE_LIST_ITEM> <ITEM>COLUMN_ATTRIBUTE</ITEM> <VALUE>NOT_NULL</VALUE> </PARSE_LIST_ITEM> </PARSE_LIST>
例外
-
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
INVALID_OPERATION
。OPEN
コンテキストに対するFETCH_xxx
への最初のコールの後に、ADD_TRANSFORM
がコールされました。FETCH_xxx
への最初のコールの後で、現行のOPEN
コンテキストに対して、それ以上ADD_TRANSFORM
をコールできません。 -
INCONSISTENT_ARGS
。引数に整合性がありません。不整合の原因は次のとおりです。-
nameがURLでないにもかかわらず、
encoding
が指定されています。 -
handleによって指定されるコレクションに
object_type
が属していません。
-
115.6.2 CLOSEプロシージャ
このプロシージャは、取出しと送信の両方の目的に使用されます。このプロシージャは、OPEN
(またはOPENW
)から戻されるハンドルを無効にして、関連する状態をクリーンアップします。
構文
DBMS_METADATA.CLOSE (
handle IN NUMBER);
パラメータ
表115-6 CLOSEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
使用上のノート
ノート:
次のノートは、オブジェクトの取出しにのみ適用されます。
このプロシージャを使用すると、OPEN
(またはOPENW
)によって確立されたオブジェクトのストリームを早期終了できます。
-
FETCH_xxx
へのコールでオブジェクトが存在しないことを示すNULL
が戻された場合、CLOSE
へのコールが透過的に行われます。その場合に、ハンドルのCLOSE
をコールしても、例外は発生しません。(CLOSE
へのコールは不要です。) -
1つの特定オブジェクトのみが戻されるとわかっている場合、
FETCH_xxx
を一度コールしてハンドルに保持されたリソースを解放した後、CLOSE
を明示的にコールしてください。
例外
-
INVALID_ARGVAL
。handle
パラメータに対して指定した値がNULL
または無効です。
115.6.3 CONVERTファンクションおよびプロシージャ
DBMS_METADATA.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);
パラメータ
表115-7 CONVERTサブプログラムのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
result |
変換されたドキュメント |
戻り値
指定した変換に応じて、XMLまたはDDLのいずれかを戻します。
使用上のノート
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
に指定されているデータベース・バージョンで有効です。
例外
-
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
INCONSISTENT_OPERATION
。変換が指定されていません。DDL変換が指定されていません(ファンクションの変数の場合のみ)。 -
INCOMPATIBLE_DOCUMENT
。XML文書のバージョンとソフトウェアの現行バージョン間に互換性がありません。
115.6.4 FETCH_xxxファンクションおよびプロシージャ
これらのファンクションおよびプロシージャは、OPEN
、SET_FILTER
、SET_COUNT
、ADD_TRANSFORM
などによって設定された条件を満たすオブジェクトのメタデータを戻します。
変数については、「使用上のノート」を参照してください。
構文
FETCH
ファンクションは、次のとおりです。
DBMS_METADATA.FETCH_XML (
handle IN NUMBER)
RETURN sys.XMLType;
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);
パラメータ
表115-8 FETCH_xxxファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
|
|
オブジェクトのメタデータ。すべてのオブジェクトが戻された場合は |
|
|
|
異種オブジェクト・タイプを指している場合は、 |
戻り値
オブジェクトのメタデータ。すべてのオブジェクトが戻された場合はNULL
。
使用上のノート
これらのファンクションは、ハンドルを戻した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
への各コールでは、異なるカーソルからデータをフェッチする場合があります(これは読取り一貫性が保証されないことを意味します)。
注意:
1つの問合せ内で複数のファンクションおよびプロシージャを実行しないでください。それらは、そのハンドルが異種オブジェクトのオープン・コンテキスト用である場合に失敗する可能性があるためです。例外
問合せの実行中に発生した例外の大部分は、コール元に伝播されます。また、次の例外が発生する場合があります。
-
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
INCONSISTENT_OPERATION
。DDL変換が指定された後でFETCH_XML
がコールされたか、DDL変換が指定されないときにFETCH_DD
Lがコールされました。
115.6.5 GET_xxxファンクション
GET_xxx
ファンクションを使用すると、オブジェクトのメタデータを1回のコールでフェッチできます。
GET_xxx
ファンクションは次のとおりです。
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;
パラメータ
表115-9 GET_xxxファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
取り出すオブジェクトのタイプ。このパラメータには、 |
|
オブジェクト名。このオブジェクト名は、 |
|
オブジェクトのスキーマ。このオブジェクトのスキーマは、 |
|
抽出するメタデータのバージョン。このパラメータには、 |
|
使用するオブジェクト・モデル。このパラメータには、 |
|
出力時に適用される変換の名前。このパラメータには、 |
|
ベース・オブジェクト名。このベース・オブジェクト名は、 |
|
ベース・オブジェクトのスキーマ。このベース・オブジェクトのスキーマは、 |
|
権限受領者。この権限受領者は、 |
|
戻すオブジェクトの最大数。「SET_COUNTプロシージャ」を参照してください。 |
戻り値
指定されたオブジェクトのメタデータをXMLまたはDDLとして戻します。
使用上のノート
-
これらのファンクションを使用すると、オブジェクトのメタデータを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
を十分大きい値に設定する必要があります。 - 現在、
USER
オブジェクトのGET_DDL
はCONTAINER
句を返しません。
例外
-
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.GET_GRANTED_DDL
を使用して、システム権限を付与された非権限ユーザーにシステム権限を付与し、その非権限ユーザーを使用してGRANT INHERIT PRIVILEGES
によって他のユーザーに権限を付与しようとすると、エラー「ORA-31703: 他のユーザーのかわりにINHERIT PRIVILEGES権限を付与することはできません」が表示されます。DBMS_METADATA.GET_GRANTED_DDL
プロシージャは、ユーザーに直接付与された権限のみを戻します。
例: HR.EMPLOYEES
のユーザーSCOTT
のすべてのオブジェクト権限付与を示すDDLのフェッチ
SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT','SCOTT')
FROM dual ;
DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT','SCOTT')
例: SQLドメインDAY_OF_WEEK
を示すDDLのフェッチ
SQL> SET LONG 2000000
SELECT DBMS_METADATA.GET_DDL('SQL_DOMAIN', 'DAY_OF_WEEK');
115.6.6 GET_QUERYファンクション
このファンクションは、FETCH_xxx
によって使用される問合せのテキストを戻します。このファンクションは、デバッグの実行時に役立ちます。
構文
DBMS_METADATA.GET_QUERY ( handle IN NUMBER) RETURN VARCHAR2;
パラメータ
表115-10 GET_QUERYファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
戻り値
FETCH_xxx
によって使用される問合せのテキスト。
例外
-
INVALID_ARGVAL
。handle
パラメータにNULL
または無効な値が指定されています。
115.6.7 OPENファンクション
DBMS_METADATA.OPEN
ファンクションは、取り出すオブジェクトのタイプ、メタデータのバージョンおよびオブジェクト・モデルを指定します。
戻り値は、後続のコールで使用されるオブジェクトの不透明なコンテキスト・ハンドルです。
構文
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;
パラメータ
表115-11 Openファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
取り出すオブジェクトのタイプ。表「 「
オブジェクトの選択基準を指定するときは、これらの属性を考慮する必要があります。詳細は、「SET_FILTERプロシージャ」を参照してください。 |
|
抽出されるメタデータのバージョン。このバージョンと互換性のないデータベース・オブジェクトまたは属性は抽出されません。このパラメータの有効な値は次のとおりです。
特定のデータベース・バージョン。9.2.0より前のバージョンは指定できません。 |
|
APIはメタデータに対し複数のビューをサポートするため、使用するビューを指定します。 |
|
メタデータを取り出すデータベースへのデータベース・リンクの名前。 |
表115-12に、DBMS_METADATA
パッケージのオブジェクト・タイプの名前、意味、属性およびノートを示します。「属性」列のS
はスキーマ・オブジェクト、N
は名前付きオブジェクト、D
は依存オブジェクト、G
は権限付与オブジェクト、H
は異種オブジェクトを表します。
表115-12 DBMS_METADATA: オブジェクト・タイプ
タイプ名 | 意味 | 属性 | ノート |
---|---|---|---|
|
キュー |
|
表に応じて属性が異なります。 |
|
キュー表に対する追加のメタデータ |
|
表に応じて属性が異なります。 |
|
変換 |
|
なし |
|
関連統計情報 |
|
なし |
|
SQL文の監査 |
|
依存オブジェクト、権限付与オブジェクトとしてモデル化されます。ベース・オブジェクト名は、文監査オプション名(たとえば、 |
|
スキーマ・オブジェクトの監査 |
|
なし |
|
クラスタ |
|
なし |
|
コメント |
|
なし |
|
制約 |
|
制約には、次のものは含まれません。
|
|
アプリケーション・コンテキスト |
|
なし |
|
データベース内のすべてのメタデータ・オブジェクト |
|
全データベースのエクスポートに対応します。 |
|
データベース・リンク |
|
データベース・リンクには所有者がいるため、スキーマ・オブジェクトとしてモデル化されます。パブリック・リンクの場合、所有者は |
|
デフォルト・ロール |
|
|
|
ディメンション |
|
なし |
|
ディレクトリ |
|
なし |
|
ファイングレイン監査ポリシー |
|
ポリシー名は一意ではないため、名前付きオブジェクトとしてモデル化されません。 |
|
ストアド・ファンクション |
|
なし |
|
索引に関して事前に計算された統計情報 |
|
ベース・オブジェクトは索引の表です。 |
|
索引 |
|
なし |
|
索引タイプ |
|
なし |
|
Javaソース |
|
なし |
|
ジョブ |
|
なし |
|
外部プロシージャ・ライブラリ |
|
なし |
|
マテリアライズド・ビュー |
|
なし |
|
マテリアライズド・ビュー・ログ |
|
なし |
|
オブジェクト権限付与 |
|
なし |
|
権限付与 |
G |
ユーザー付与としてモデル化されます。あるユーザーの権限を
|
|
演算子 |
|
なし |
|
ストアド・パッケージ |
|
デフォルトでは、パッケージ仕様部およびパッケージ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。 |
|
パッケージ仕様部 |
|
なし |
|
パッケージ本体 |
|
なし |
|
ストアド・プロシージャ |
|
なし |
|
プロファイル |
|
なし |
|
プロキシ認証 |
|
|
|
参照制約 |
|
なし |
|
リフレッシュ・グループ |
|
なし |
|
リソース・コスト情報 |
|
なし |
|
ファイングレイン・アクセス・コントロールのポリシーを実現するための駆動コンテキスト |
|
|
|
ファイングレイン・アクセス・コントロールのポリシー・グループ |
|
DBMS_RLS.CREATE_GROUPプロシージャに対応します。 |
|
ファイングレイン・アクセス・コントロールのポリシー |
|
|
|
リソース・コンシューマ・グループ |
|
Oracle Data Pumpでは、これらのオブジェクト・タイプが使用されません。かわりに、リソース・マネージャ・オブジェクトがプロシージャ・オブジェクトとしてエクスポートされます。 |
|
ユーザーに対する初期コンシューマ・グループの割当て |
|
なし |
|
リソース・プラン |
|
なし |
|
リソース・プラン・ディレクティブ |
|
リソース・プランに対する依存性 |
|
ロール |
|
なし |
|
ロール権限付与 |
|
なし |
|
ロールバック・セグメント |
|
なし |
|
スキーマ内のすべてのメタデータ・オブジェクト |
|
ユーザー・モードのエクスポートに対応します。 |
|
順序 |
|
なし |
SQL_DOMAIN |
SQLドメイン |
SN |
ドメインは、スキーマに属している高レベルのディクショナリ・オブジェクトであり、プロパティと制約のセットをカプセル化します。属性と制約はドメインに対してのみ定義および管理され、指定されたドメインのすべての列に自動的に適用されます。 |
|
シノニム |
ノートを参照 |
プライベート・シノニムはスキーマ・オブジェクトです。パブリック・シノニムはスキーマ・オブジェクトではありませんが、このAPIでのスキーマ名は |
|
システム権限付与 |
|
なし |
|
表 |
|
なし |
|
表の行データ、ネストした表、パーティションを記述するメタデータ |
|
パーティションの場合、オブジェクト名はパーティション名です。 ネストした表の場合、オブジェクト名は記憶表の名前です。ベース・オブジェクトは、表データが属する最上位レベルの表です。ネストした表とパーティションの場合、これは(親表または親パーティションではなく)最上位レベルの表です。パーティション化していない表とネストしていない表の場合、ベース・オブジェクトはその表自体です。 |
|
表のメタデータ、および表のメタデータに関連するオブジェクト |
|
表モードのエクスポートに対応します。 |
|
表に関して事前に計算された統計情報 |
|
なし |
|
表領域 |
|
なし |
|
表領域割当て制限 |
|
|
|
トランスポータブル表領域内のオブジェクトのメタデータ |
|
トランスポータブル表領域のエクスポートに対応します。 |
|
トリガー |
|
なし |
|
信頼されているリンク |
|
なし |
|
ユーザー定義型 |
|
デフォルトでは、タイプおよびタイプ本体の両方が取り出されます。「SET_FILTERプロシージャ」を参照してください。 |
|
タイプ仕様部 |
|
なし |
|
タイプ本体 |
|
なし |
|
ユーザー |
|
なし |
|
ビュー |
|
なし |
|
XMLスキーマ |
|
オブジェクト名はそのURLです(30文字を超える可能性があります)。そのスキーマは、登録したユーザーです。 |
|
Real Application Security(RAS)ユーザー |
|
RASユーザーに対応します。 |
|
Real Application Security(RAS)ロール |
|
RASロールに対応します。 |
|
Real Application Security(RAS)ロール・セット |
|
RASロール・セットに対応します。 |
|
Real Application Security(RAS)ロール付与 |
|
RASロール付与に対応します。 |
|
Real Application Security(RAS)セキュリティ・クラス |
|
RASセキュリティ・クラスに対応します。 |
|
Real Application Security(RAS)データ・セキュリティ・ポリシー |
|
RASデータ・セキュリティ・ポリシーに対応します。 |
|
Real Application Security(RAS)のACL |
|
RASのアクセス制御リスト(ACL)およびそれに関連付けられたアクセス制御エントリ(ACE)に対応します。 |
|
Real Application Security(RAS)のACLパラメータ |
|
RASのアクセス制御リスト(ACL)パラメータに対応します。 |
|
Real Application Security(RAS)ネームスペース |
|
RASネームスペースに対応します。 |
表115-13に、主要な異種オブジェクト・タイプから戻されるオブジェクト・タイプのリストを示します。SCHEMA_EXPORT
では、INCLUDE_USER
フィルタがTRUE
に指定されている場合のみ、特定のオブジェクト・タイプが戻されます。表では、そのようなオブジェクト・タイプをINCLUDE_USER
というマークで示しています。
表115-13 異種オブジェクト・タイプから戻されるオブジェクト・タイプ
オブジェクト・タイプ | DATABASE_EXPORT | SCHEMA_EXPORT | TABLE_EXPORT | TRANSPORTABLE_EXPORT |
---|---|---|---|---|
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
いいえ |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
|
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
はい |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
|
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
はい |
|
はい |
いいえ |
いいえ |
はい |
|
はい |
ポリシーに従って表データが取り出される |
ポリシーに従って表データが取り出される |
はい |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
|
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
はい |
はい |
はい |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
|
いいえ |
いいえ |
|
はい |
はい |
はい |
はい |
|
はい |
いいえ |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
はい(トランスポータブル・セット内の表によってタイプが使用される場合) |
|
はい |
はい |
いいえ |
はい(トランスポータブル・セット内の表によってタイプが使用される場合) |
|
はい |
はい |
いいえ |
はい(トランスポータブル・セット内の表によってタイプが使用される場合) |
|
はい |
|
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
|
はい |
はい |
いいえ |
いいえ |
戻り値
オブジェクトのクラスに対する不透明なハンドル。このハンドルを入力として使用できるプロシージャは、SET_FILTER
、SET_COUNT
、ADD_TRANSFORM
、GET_QUERY
、SET_PARSE_ITEM
、FETCH_xxx
およびCLOSE
です。
例外
-
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
INVALID_OBJECT_PARAM
。version
パラメータまたはmodel
パラメータがobject_type
に対して有効でありません。
115.6.8 OPENWファンクション
このファンクションは、送信するオブジェクトのタイプ、およびオブジェクト・モデルを指定します。戻り値は、不透明なコンテキスト・ハンドルです。
構文
DBMS_METADATA.OPENW (object_type IN VARCHAR2, version IN VARCHAR2 DEFAULT 'COMPATIBLE', model IN VARCHAR2 DEFAULT 'ORACLE') RETURN NUMBER;
パラメータ
表115-14 OPENWファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
送信するオブジェクトのタイプ。有効なタイプ名および各タイプの意味の一覧は、表115-12を参照してください。異種オブジェクト・タイプは指定できません。 |
|
|
|
使用するビューを指定します。 |
戻り値
書込みコンテキストに対する不透明なハンドル。このハンドルは、ADD_TRANSFORM
、CONVERT
、PUT
およびCLOSE
プロシージャへの入力として使用されます。
例外
-
INVALID_ARGVAL
。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
INVALID_OBJECT_PARAM
。model
パラメータがobject_type
に対して有効でありません。
115.6.9 PUTファンクション
このファンクションは、オブジェクトを作成するために、オブジェクトのメタデータが保存された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;
パラメータ
表115-15 PUTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
|
|
将来の使用のために予約済 |
|
操作の詳しい結果。 |
戻り値
SQL操作が正常に実行された場合はTRUE
、なんらかのエラーが発生した場合はFALSE
です。
使用上のノート
PUT
ファンクションは、CONVERT
ファンクションと同様に(指定された変換を適用して)XML文書からDDL文を作成した後、個々の結果DDL文をデータベースに送信します。CONVERT
と同様に、DDL変換を指定する必要があります。DDL文の内容とDDL文に関連する解析項目は、ネストした表sys
.ku$_SubmitResults
に戻されます。この表は、個々のDDL文から発生したエラーと例外を記録したエラー行からなります。
XML文書のエンコーディングは、CLOBまたはXMLTypeの表示に埋め込まれます。メタデータのバージョンは、XMLに埋め込まれます。作成されるDDLは、OPENW
に指定されているデータベース・バージョンで有効です。
例外
-
INVALID_ARGVAL
。入力パラメータにNULLまたは無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
INCONSISTENT_OPERATION
。DDL変換が指定されていません。 -
INCOMPATIBLE_DOCUMENT
。XML文書のバージョンとソフトウェアの現行バージョン間に互換性がありません。
115.6.10 SET_COUNTプロシージャ
このプロシージャは、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);
パラメータ
表115-16 SET_COUNTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
取り出すオブジェクトの最大数。 |
|
カウント値が適用されるオブジェクト・タイプを示すパス名。デフォルトでは、
|
例外
-
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
INVALID_OPERATION
。OPEN
コンテキストに対するFETCH_xxx
への最初のコールの後に、SET_COUNT
がコールされました。FETCH_xxx
への最初のコールの後で、現行のOPEN
コンテキストに対して、それ以上SET_COUNT
をコールできません。 -
INCONSISTENT_ARGS
。object_type
パラメータとhandle間に互換性がありません。
115.6.11 SET_FILTERプロシージャ
このプロシージャは、取り出すオブジェクトに関する制限事項(オブジェクト名やスキーマなど)を指定します。
構文
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);
パラメータ
表115-17 SET_FILTERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
フィルタ名。各フィルタが適用されるobject_type、各フィルタの名前、データ・タイプ(テキストまたはブール)、各フィルタの意味または効果(設定されている場合はデフォルト値を含む),については、 表115-18の「データ・タイプ」列には、テキスト・フィルタが式フィルタであるかどうかも示しています。式フィルタは、SQL比較の右側、つまり、SQL比較演算子(=、!=、など)および比較対象値の右側にあります。比較対象値には、適切な場所にカッコと引用符を付ける必要があります。PL/SQLとSQL*Plusでは、アポストロフィを表現するときに(1つの二重引用符ではなく) 2つの一重引用符が必要です。たとえば、PL/SQLの
フィルタ値が特定のオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せの |
|
フィルタ値。フィルタ値としてテキスト、ブール値、数値を指定できます。 |
|
フィルタが適用されるオブジェクト・タイプを示すパス名。デフォルトでは、 |
表115-18に、SET_FILTER
プロシージャで使用可能なフィルタのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表115-18 SET_FILTER: フィルタ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
名前付きオブジェクト |
|
テキスト |
指定された名前を持つオブジェクトが選択されます。 |
名前付きオブジェクト |
|
テキスト式 |
フィルタ値がオブジェクト属性と組み合されて、オブジェクトをフェッチする問合せの デフォルトでは、 |
名前付きオブジェクト |
|
テキスト式 |
フィルタ値がオブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。 デフォルトでは、指定されたオブジェクト・タイプの名前付きオブジェクトがすべて選択されます。 |
|
|
ブール |
|
スキーマ・オブジェクト |
|
テキスト |
このスキーマ内のオブジェクトが選択されます。オブジェクト・タイプが |
スキーマ・オブジェクト |
|
テキスト式 |
フィルタ値がオブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。 デフォルトの抽出条件は次のようにして決定されます。 - - それ以外の場合は、現行スキーマ内のオブジェクトが選択されます。 |
|
|
ブール |
|
|
|
ブール |
|
|
|
テキスト |
指定された表領域内のオブジェクト(または、指定された表領域内にパーティションがあるオブジェクト)が選択されます。 |
|
|
テキスト式 |
フィルタ値がオブジェクトの表領域(パーティション表またはパーティション索引の場合は、そのパーティションの表領域)を表す属性と組み合され、問合せの抽出条件が作成されます。デフォルトでは、すべての表領域内のオブジェクトが選択されます。 |
|
|
ブール |
デフォルトは |
|
|
ブール |
デフォルトは |
依存オブジェクト |
|
テキスト |
指定された名前のオブジェクトに対して定義または付与されたオブジェクトが選択されます。スキーマに対するトリガーの場合は |
依存オブジェクト |
|
テキスト |
指定されたスキーマ内のオブジェクトに対して定義または付与されたオブジェクトが選択されます。 |
依存オブジェクト |
|
テキスト式 |
フィルタ値がベース・オブジェクトの名前を表す属性とが組み合されて、問合せの抽出条件が作成されます。 スキーマおよびデータベースに対するトリガーには使用できません。 |
依存オブジェクト |
|
テキスト式 |
フィルタ値がベース・オブジェクト名を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。 スキーマおよびデータベースに対するトリガーには使用できません。 |
依存オブジェクト |
|
テキスト式 |
フィルタ値がベース・オブジェクトのスキーマを表す属性と組み合されて、問合せの抽出条件が作成されます。 |
依存オブジェクト |
|
テキスト |
ベース・オブジェクトのオブジェクト・タイプ。 |
依存オブジェクト |
|
テキスト式 |
フィルタ値がベース・オブジェクトのオブジェクト・タイプを表す属性と組み合されて、問合せの抽出条件が作成されます。 デフォルトでは、オブジェクト・タイプに対してフィルタ処理は適用されません。 |
依存オブジェクト |
|
テキスト |
ベース・オブジェクトの表領域。 |
依存オブジェクト |
|
テキスト式 |
フィルタ値がベース・オブジェクトの表領域を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、表領域に対してフィルタ処理は適用されません。 |
|
|
ブール |
|
権限付与オブジェクト |
|
テキスト |
指定されたユーザーまたはロールに付与されたオブジェクトが選択されます。 |
権限付与オブジェクト |
|
テキスト |
付与される権限またはロールの名前。 |
権限付与オブジェクト |
|
テキスト式 |
フィルタ値が権限受領者の名前を表す属性と組み合されて、問合せの抽出条件が作成されます。 |
権限付与オブジェクト |
|
テキスト式 |
フィルタ値が権限受領者の名前を表す属性と組み合されて、フェッチ対象のオブジェクトのセットから除外するオブジェクトを指定します。 |
|
|
テキスト |
指定されたユーザーが付与したオブジェクト権限付与が選択されます。 |
|
|
テキスト |
30文字を超える名前。指定された名前を持つオブジェクトが選択されます。オブジェクト名が30文字以内である場合は、 |
|
|
テキスト |
フィルタ値がオブジェクトの長い名前を表す属性と組み合されて、問合せの抽出条件が作成されます。デフォルトでは、オブジェクトの長い名前に対してフィルタ処理は適用されません。 |
すべてのオブジェクト |
|
|
その他のフィルタは、多数のユーザーのニーズを満たすことを目的としています。目的に合ったフィルタが定義されていない場合は、 |
すべてのオブジェクト |
|
テキスト |
エディション・フィルタはすべてのオブジェクト・タイプで受け入れられますが、エディションをサポートしているオブジェクトにのみ影響します。このフィルタはローカル・オブジェクトでのみ受け入れられます(つまり、 |
|
|
|
選択されるオブジェクトのスキーマ。 |
|
|
|
フィルタ値は次のどちらかの方法で処理されます。 フィルタ値がスキーマ名を表す属性と組み合されて、スキーマ・オブジェクトをフェッチする問合せの フィルタ値がベース・スキーマ名を表す属性と組み合されて、依存オブジェクトをフェッチする問合せの デフォルトでは、現行ユーザーのオブジェクトが選択されます。 |
|
|
|
デフォルトは |
|
|
|
指定されたスキーマ内のオブジェクト(表、および表の依存オブジェクト)が選択されます。 |
|
|
|
フィルタ値は次のどちらかの方法で処理されます。 フィルタ値がスキーマ名を表す属性と組み合されて、表をフェッチする問合せの フィルタ値がベース・スキーマ名を表す属性と組み合されて、表の依存オブジェクトをフェッチする問合せの デフォルトでは、現行ユーザーのオブジェクトが選択されます。 |
|
|
|
指定された名前を持つ表と、その表の依存オブジェクトが選択されます。 |
|
|
テキスト式 |
フィルタ値が表の名前を表す属性と組み合されて、表および表の依存オブジェクトをフェッチする問合せの条件が作成されます。 デフォルトでは、指定されたスキーマ内のすべての表、およびそれらの表の依存オブジェクトが選択されます。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
テキスト |
異種コレクションから取り出す最初のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
テキスト |
異種コレクションから取り出す最初のオブジェクト・タイプの直前にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより前にフェッチされたオブジェクトは取り出されません。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
テキスト |
異種コレクションから取り出す最後のオブジェクト・タイプの直後にあるオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプ自体、およびそのオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
テキスト |
異種コレクションから取り出す最後のオブジェクト・タイプの完全修飾パス名。指定されたオブジェクト・タイプより後にフェッチされたオブジェクトは取り出されません。 |
複数の異なるタイプのオブジェクトからなる異種コレクション |
|
テキスト式 |
これら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
フィルタを明示的に指定すると、フェッチ対象の表をさらに細かく制限できます。主要な異種オブジェクト・タイプに対して指定できる有効なオブジェクト・タイプ・パス名および個々のパス名の適用範囲については、表115-19を参照してください。(DATABASE_EXPORT_OBJECTS
、SCHEMA_EXPORT_OBJECTS
およびTABLE_EXPORT_OBJECTS
のカタログ・ビューでも参照できます。)個々のパス名について定義されているフィルタの一覧は、表115-18を参照してください。これらのパス名は、INCLUDE_PATH_EXPR
フィルタおよびEXCLUDE_PATH_EXPR
フィルタで使用できます。アスタリスク(*)が付いたパス名は、これらのフィルタのみで使用でき、これらのパス名は、SET_FILTER
object_type_path
パラメータの値として使用できません。
表115-19 異種オブジェクト・タイプに対して指定できるオブジェクト・タイプ・パス名
異種オブジェクト・タイプ | パス名(*=xxx_PATH_EXPRのみで使用可能) | 有効範囲 |
---|---|---|
|
|
選択される表に対するオブジェクト監査。 |
|
|
選択される表に関する表コメントと列コメント。 |
|
|
選択される表に対する制約(参照制約を含む)。 |
|
|
選択される表に対するオブジェクト権限付与。 |
|
|
選択される表の索引(ドメイン索引を含む)。 |
|
|
選択される表に対するオブジェクト権限付与。 |
|
|
選択される表に対する参照制約(外部キー制約)。 |
|
|
選択される表に関する統計情報。 |
|
|
選択される表の行データ。 |
|
|
選択される表に対するトリガー。 |
|
|
選択されるスキーマ内のオブジェクトに対する統計タイプの結合。 |
|
|
選択されたスキーマ内のすべてのオブジェクトに対する監査。 |
|
|
選択されるスキーマ内のクラスタ、およびクラスタの索引。 |
|
|
選択されるスキーマ内のすべてのオブジェクトに関するコメント。 |
|
|
選択されるスキーマ内のすべてのオブジェクトに対する制約(参照制約を含む)。 |
|
|
選択されるスキーマ内のプライベート・データベース・リンク。 |
|
|
選択されるスキーマと関連付けられたユーザーに付与されるデフォルト・ロール。 |
|
|
選択されるスキーマ内のディメンション。 |
|
|
選択されるスキーマ内のファンクション、およびファンクションの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のオブジェクトに対する権限付与。 |
|
|
選択されるスキーマ内の表とクラスタの索引(ドメイン索引を含む)。 |
|
|
選択されるスキーマ内の索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のJavaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のジョブ。 |
|
|
選択されるスキーマ内の外部プロシージャ・ライブラリ。 |
|
|
選択されるスキーマ内のマテリアライズド・ビュー。 |
|
|
選択されるスキーマ内の表に関するマテリアライズド・ビュー・ログ。 |
|
|
選択されるスキーマ内のオブジェクトに対する権限付与。 |
|
|
選択されるスキーマ内の演算子、および演算子の依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のパッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のパッケージ本体。 |
|
|
選択されるスキーマ内のパッケージ仕様部。 |
|
|
選択されるスキーマと関連付けられたユーザーのパスワード履歴。 |
|
|
選択されるスキーマ内のプロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内の表に対する参照制約(外部キー制約)。 |
|
|
選択されるスキーマ内のリフレッシュ・グループ。 |
|
|
選択されるスキーマ内の順序、およびそれらの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内の表と索引に関する統計情報。 |
|
|
選択されるスキーマ内のプライベート・シノニム。 |
|
|
選択されるスキーマ内の表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。 |
|
|
選択されるスキーマ内の表の行データ。 |
|
|
選択されるスキーマと関連付けられたユーザーに付与される表領域割当て制限。 |
|
|
選択されるスキーマ内の表に対するトリガー。 |
|
|
Oracle Real Application Security (RAS)セキュリティ・クラス |
|
|
Oracle Real Application Security (RAS)データ・セキュリティ・ポリシー |
|
|
Oracle Real Application Security (RAS)のアクセス制御リスト(ACL) |
|
|
選択されるスキーマ内のタイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。 |
|
|
選択されるスキーマ内のタイプ本体。 |
|
|
選択されるスキーマ内のタイプ仕様部。 |
|
|
選択されるスキーマと関連付けられたユーザーのユーザー定義。 |
|
|
選択されるスキーマ内のビュー、およびビューの依存オブジェクト(権限付与、制約、コメント、監査)。 |
|
|
データベース内のオブジェクトに対する統計タイプの結合。 |
|
|
SQL文の監査。 |
|
|
データベース内のすべてのオブジェクトに対する監査。 |
|
|
クラスタおよびクラスタ索引。 |
|
|
すべてのオブジェクトに関するコメント。 |
|
|
制約(参照制約を含む)。 |
|
|
アプリケーション・コンテキスト |
|
|
プライベート・データベース・リンクおよびパブリック・データベース・リンク。 |
|
|
データベース内のユーザーに付与されたデフォルト・ロール。 |
|
|
データベース内のディメンション。 |
|
|
データベース内のディレクトリ・オブジェクト。 |
|
|
ファイングレイン監査ポリシー |
|
|
ファンクション |
|
|
オブジェクト権限付与およびシステム権限付与。 |
|
|
表とクラスタの索引(ドメイン索引を含む)。 |
|
|
索引タイプ、および索引タイプの依存オブジェクト(権限付与と監査)。 |
|
|
Javaソース、およびJavaソースの依存オブジェクト(権限付与と監査)。 |
|
|
ジョブ |
|
|
外部プロシージャ・ライブラリ |
|
|
マテリアライズド・ビュー |
|
|
マテリアライズド・ビュー・ログ |
|
|
データベース内のすべてのオブジェクト権限付与。 |
|
|
演算子、および演算子の依存オブジェクト(権限付与と監査)。 |
|
|
パッケージ(仕様部と本体の両方)、およびパッケージの依存オブジェクト(権限付与と監査)。 |
|
|
パッケージ本体 |
|
|
パッケージ仕様部 |
|
|
データベース・ユーザーのパスワード履歴。 |
|
|
複雑なパスワードの検証機能。 |
|
|
プロシージャ、およびプロシージャの依存オブジェクト(権限付与と監査)。 |
|
|
プロファイル |
|
|
プロキシ認証 |
|
|
データベース内の表に対する参照制約(外部キー制約)。 |
|
|
リフレッシュ・グループ |
|
|
リソース・コスト情報 |
|
|
ファイングレイン・アクセス・コントロールの駆動コンテキスト。 |
|
|
ファイングレイン・アクセス・コントロールのポリシー・グループ。 |
|
|
ファイングレイン・アクセス・コントロールのポリシー |
|
|
ロール |
|
|
データベース内のユーザーに対するロール権限付与。 |
|
|
ロールバック・セグメント |
|
|
データベース・スキーマ - 各スキーマに関連するすべての関連オブジェクトと依存オブジェクトも含まれ、関連オブジェクトや依存オブジェクトには、ユーザー定義とその属性(デフォルト・ロール、ロール権限付与、表領域割当て制限など)、スキーマ内のオブジェクト(表、ビュー、パッケージ、タイプなど)、スキーマ内のオブジェクトの依存オブジェクト(権限付与、監査、索引、制約など)があります。このオブジェクト・タイプ・パス名に |
|
|
順序 |
|
|
表と索引に関する統計情報。 |
|
|
パブリック・シノニムとプライベート・シノニム。 |
|
|
システム権限付与 |
|
|
表、および表の依存オブジェクト(索引、制約、トリガー、権限付与、監査、コメント、表データなど)。 |
|
|
すべての表の行データ。 |
|
|
表領域定義 |
|
|
データベース内のユーザーに付与された表領域割当て制限。 |
|
|
データベース、スキーマ、スキーマ・オブジェクトに対するトリガー。 |
|
|
Oracle Real Application Security (RAS)ユーザー |
|
|
Oracle Real Application Security (RAS)ロール |
|
|
Oracle Real Application Security (RAS)セキュリティ・クラス |
|
|
Oracle Real Application Security (RAS)データ・セキュリティ・ポリシー |
|
|
Oracle Real Application Security (RAS)のアクセス制御リスト(ACL) |
|
|
Oracle Real Application Security (RAS)ネームスペース |
|
|
信頼されているリンク |
|
|
タイプ(仕様部と本体の両方)、およびタイプの依存オブジェクト(権限付与と監査)。 |
|
|
タイプ本体 |
|
|
タイプ仕様部 |
|
|
ユーザー定義 |
|
|
ビュー |
例外
-
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
パラメータのデータ・タイプが不正です。
-
115.6.12 SET_PARSE_ITEMプロシージャ
このプロシージャは、取出しと送信の両方の目的に使用されます。このプロシージャは、解析して戻されるオブジェクト属性を指定することにより、出力を解析できるようにします。
構文
オブジェクトの取出しに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);
パラメータ
表115-20 SET_PARSE_ITEMプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
|
|
解析して戻されるオブジェクト属性の名前。オブジェクト・タイプ、名前および意味は、表115-21を参照してください。 |
|
解析項目が適用されるオブジェクト・タイプを指定します(オブジェクトのパス名ではなくタイプ名を指定します)。デフォルトでは、
オブジェクトの取出しに |
表115-21に、SET_PARSE_ITEM
プロシージャで使用できる解析項目のオブジェクト・タイプ、名前および意味を示します。
時々新しい項目が追加されるため、DBMS_METADATA_PARSE_ITEMS
ビューを問い合せて、有効な解析項目の完全なリストまたは特定のオブジェクト・タイプについて有効な解析項目を確認してください。
表115-21 SET_PARSE_ITEM: 解析項目
オブジェクト・タイプ | 名前 | 意味 |
---|---|---|
すべてのオブジェクト |
|
|
すべてのオブジェクト |
|
|
スキーマ・オブジェクト |
|
オブジェクト・スキーマが戻されます。オブジェクトがスキーマ・オブジェクトでない場合、値は戻されません。 |
名前付きオブジェクト |
|
オブジェクト名が戻されます。オブジェクトが名前付きオブジェクトでない場合、 |
|
|
オブジェクトの表領域名、または、オブジェクトがパーティション表である場合は、デフォルトの表領域が戻されます。 |
|
|
トリガーが有効にされている場合、 |
|
|
権限付与者が戻されます。 |
依存オブジェクト(ドメイン索引、セカンダリ表を含む) |
|
ベース・オブジェクトの名前が戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。 |
依存オブジェクト(ドメイン索引、セカンダリ表を含む) |
|
ベース・オブジェクトのスキーマが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。 |
依存オブジェクト(ドメイン索引、セカンダリ表を含む) |
|
ベース・オブジェクトのオブジェクト・タイプが戻されます。オブジェクトが依存オブジェクトでない場合、値は戻されません。 |
権限付与オブジェクト |
|
権限受領者が戻されます。オブジェクトが権限付与オブジェクトでない場合、値は戻されません。 |
使用上のノート
次のノートは、オブジェクトの取出しに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
オブジェクト)に適用すると、ドメイン索引の名前、スキーマおよびタイプが戻されます。
参照:
-
メタデータAPIの使用方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。
CONVERT
プロシージャとPUT
プロシージャのデフォルトでは、単にオブジェクトのXMLメタデータがDDLに変換されます。SET_PARSE_ITEM
をコールすると、オブジェクトの個々の属性も戻すことを要求できます。
例外
-
INVALID_ARGVAL
。入力パラメータにNULL
または無効な値が指定されています。該当のパラメータはエラー・メッセージのテキストで示されます。 -
INVALID_OPERATION
。OPEN
コンテキストに対するFETCH_xxx
への最初のコールの後に、SET_PARSE_ITEM
がコールされました。FETCH_xxx
への最初のコールの後で、それ以上SET_PARSE_ITEM
をコールできません。 -
INCONSISTENT_ARGS
。属性name
がOPEN
コンテキストに関連付けられたオブジェクト・タイプに対し有効でありません。
115.6.13 SET_TRANSFORM_PARAMプロシージャおよびSET_REMAP_PARAMプロシージャ
これらのプロシージャは、取出しと送信の両方の目的に使用されます。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);
パラメータ
表115-22に、SET_TRANSFORM_PARAM
プロシージャおよびSET_REMAP_PARAM
プロシージャのパラメータを示します。
時々新しいパラメータが追加されるため、DBMS_METADATA_TRANSFORM_PARAMS
ビューを問い合せて、各変換で有効なすべての変換パラメータまたは特定のオブジェクト・タイプについて有効な変換パラメータを確認することをお薦めします。
表115-22 SET_TRANSFORM_PARAMおよびSET_REMAP_PARAMのパラメータ
パラメータ | 説明 |
---|---|
|
変換パラメータの名前。
表115-23 - DDL変換 表115-24 - MODIFY変換 表115-26 - SXML変換 表115-27 - MODIFYSXML変換 表115-28 - SXMLDDL変換
ALTERXML変換に使用可能なパラメータの詳細は、表115-4を参照してください。 |
|
再マッピングの新しい値。このパラメータは、 |
|
変換または再マッピングのパラメータが適用されるオブジェクト・タイプを指定します。デフォルトでは、変換と同じオブジェクト・タイプにパラメータが適用されます。異種コレクション内部のすべてのオブジェクト・タイプに変換が適用される場合は、次のような動作になります。
異種コレクションに変換を追加したコール元でこのパラメータを使用すると、コレクション内部の個々のオブジェクト・タイプに対して、別々の変換パラメータを指定できます。 |
|
再マッピングの元の値。このパラメータは、 |
|
(1)
|
|
変換の値。このパラメータは、 |
表115-23に、SET_TRANSFORM_PARAM
プロシージャのDDL変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表115-23 SET_TRANSFORM_PARAM: DDL変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
USER 、TABLE 、CLUSTER 、VIEW 、MATERIALIZED_VIEW PROCEDURE 、FUNCTION 、PACKAGE 、TYPE 、TRIGGER |
COLLATION_CLAUSE |
Text |
次の3つの値を指定できます。
|
|
OMIT_ENCRYPTION_CLAUSE |
|
|
|
DWCS_CVT_IOTS |
|
|
|
DWCS_CVT_CONSTRAINTS |
|
|
|
CONSTRAINT_USE_DEFAULT_INDEX |
|
この変換パラメータは、
|
|
CONSTRAINT_NAME_FROM_INDEX |
|
この変換パラメータは、ユーザー作成の索引を参照する
|
|
INCLUDE_SHARDING_CLAUSES |
|
この変換パラメータは、シャード表、順序、表領域および表領域セットの作成を容易にするために、変換についてシャーディング・キーワードを有効にします。オプション: デフォルト:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TRUE の場合、別のALTER TABLE 文(必要に応じてCREATE INDEX )として表制約を含めます。FALSE の場合、CREATE TABLE 文の一部として表制約を指定します。デフォルトはFALSE です。CONSTRAINTSがTRUE である必要があります。ノート: 2つの個別のDDL文で表に索引と制約が作成された場合、CONSTRAINTS_AS_ALTER パラメータは効果がありません。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ノート: このオブジェクト・タイプは非推奨となっています。 |
|
|
|
|
|
|
|
|
|
|
|
ロールが取り消されるユーザーの名前。このパラメータがNULL文字列でない場合に、 ノート: デフォルトはNULL文字列です。 |
|
|
|
デフォルトは |
|
|
|
オブジェクト・タイプの領域割当てを修正する割合を示す数値。この値は、現在の割当てに100を掛けた数値です。たとえば、100は100%を意味します。 オブジェクト・タイプが - ファイル指定での - - これ以外のオブジェクト・タイプの場合は、 |
|
|
|
LOBセグメント用の記憶域タイプを指定します。オプションは、次のとおりです。
この変換を指定すると、マテリアライズド・ビューを格納する表を含む、ジョブ内のすべての表のLOB記憶域が変更されます。 |
|
|
|
表の作成時に使用する表の圧縮句( 表の圧縮句を省略する場合は、 この変換を指定すると、マテリアライズド・ビューを格納する表を含む、ジョブ内のすべての表の圧縮タイプが変更されます。 |
表115-24に、SET_TRANSFORM_PARAM
プロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表115-24 SET_TRANSFORM_PARAM: MODIFY変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
|
|
|
オブジェクトのオブジェクト行を示す数値。文書内のオブジェクトのうち、この数値に対応するオブジェクトが出力文書にコピーされます。 このパラメータは加算的です。 デフォルトでは、すべてのオブジェクトが出力文書にコピーされます。 |
表115-25に、SET_REMAP_PARAM
プロシージャのMODIFY変換で使用されるパラメータのオブジェクト・タイプ、名前、データ・タイプおよび意味を示します。
表115-25 SET_REMAP_PARAM: MODIFY変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
|
|
|
文書内にあるオブジェクトのファイル仕様名のうち、 このパラメータは加算的です。 デフォルトでは、ファイル仕様の名前は変更されません。 |
名前付きオブジェクトおよびすべてのオブジェクトは、名前付きオブジェクトに依存します。 |
|
テキスト |
文書内にある名前付きオブジェクトのうち、 依存オブジェクトのベース・オブジェクト名のうち、 このパラメータは加算的です。 デフォルトでは、名前は再マッピングされません。 ( |
|
|
|
文書内にあるスキーマ・オブジェクトのスキーマ名のうち、 依存オブジェクトのベース・オブジェクト名のうち、 権限付与オブジェクトの権限受領者名のうち、 ユーザーの名前のうち、 このパラメータは加算的です。 デフォルトでは、スキーマは再マッピングされません。 ノート: インポートで検出できない一部のスキーマ参照があるため、マッピングは完全ではない場合があります。たとえば、インポートでは、トリガー、タイプ、ビュー、プロシージャおよびパッケージの定義の本体に埋め込まれたスキーマ参照は検出されません。 |
|
|
|
文書内にあるオブジェクトの表領域名のうち、 このパラメータは加算的です。 デフォルトでは、表領域は再マッピングされません。 |
表115-26 SET_TRANSFORM_PARAM: SXML変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
USER 、TABLE 、CLUSTER 、VIEW 、MATERIALIZED_VIEW PROCEDURE 、FUNCTION 、PACKAGE 、TYPE 、TRIGGER |
COLLATION_CLAUSE |
Text |
次の3つの値を指定できます。
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
表115-27 SET_TRANSFORM_PARAM: MODIFYSXML変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
テキスト |
ドキュメント内にある これは、列名には適用されません。( |
|
|
テキスト |
ドキュメント内にある |
|
|
テキスト |
文書内にある列のうち、名前が |
|
|
ブール |
|
|
|
ブール |
|
表115-28 SET_TRANSFORM_PARAM: SXMLDDL変換の変換パラメータ
オブジェクト・タイプ | 名前 | データ・タイプ | 意味 |
---|---|---|---|
USER 、TABLE 、CLUSTER 、VIEW 、MATERIALIZED_VIEW PROCEDURE 、FUNCTION 、PACKAGE 、TYPE 、TRIGGER |
COLLATION_CLAUSE |
Text |
次の3つの値を指定できます。
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
|
|
|
ブール |
デフォルトは |
|
|
ブール |
|
|
|
ブール |
|
例外
-
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
を接頭辞として付加する必要があります。