DBMS_XDB_REPOSパッケージは、Oracle XMLデータベース・リポジトリで動作するインタフェースを提供します。
|
関連項目: 次のトピックに関する詳細は、『Oracle XML DB開発者ガイド』を参照してください。
|
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
DBMS_XDB_REPOSパッケージをOracle XML DBリポジトリで操作して、リソースの作成、変更および削除を行えます。これには、アクセス制御リスト(ACL)に基づくセキュリティの管理も含まれます。このインタフェースには、問合せとDMLの両方の機能が備わっています。PL/SQLパッケージ(DBMS_XDB_REPOS、DBMS_XDBZおよびDBMS_XDB_VERSION)の組合せを使用すると、ドキュメントとフォルダの作成、削除および名前変更、フォルダ階層内でのファイルまたはフォルダの移動、ファイルまたはフォルダに対するアクセス権限の設定および変更、バージョニングの開始および管理を実行できます。
XDBによって所有されているため、DBMS_XDB_REPOSパッケージはSYSまたはXDBで作成する必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。XDB構成で動作するサブプログラムは、現在のユーザーがSYSまたはXDBである場合、または現在のユーザーがXDBADMINロールまたはDBAロールを持つ場合にのみ成功します。
DBMS_XDB_REPOSパッケージでは、表185-1「DBMS_XDB_REPOSの定数」に示す定数が使用されます。
表185-1 DBMS_XDB_REPOSの定数
| 定数 | タイプ | 値 | 説明 |
|---|---|---|---|
|
|
|
1 |
リソースを削除します。リソースに子がある場合失敗します。 |
|
|
|
2 |
リソースと子がある場合それを削除します。 |
|
|
|
3 |
含まれているオブジェクトが無効な場合でも、リソースを削除します。 |
|
|
|
4 |
含まれているオブジェクトが無効な場合でも、リソースと子がある場合にそれを削除します。 |
|
|
|
1 |
メタデータの行を削除します。 |
|
|
|
2 |
行を削除しません。 |
|
|
|
(60*60) |
WebDAVロックのタイムアウト値(秒数) |
|
|
|
1 |
フォルダのリソースへの強いリンク |
|
|
|
2 |
フォルダのリソースへの弱いリンク |
|
|
|
3 |
フォルダのリソースへのシンボリック・リンク |
表185-2 DBMS_XDB_REPOSパッケージのサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
指定のACLドキュメントで指定されている現行ユーザーに付与されたアクセス権限をチェックします。このアクセス権限は、所有者が'owner'パラメータで指定されているリソースに対するものです。 |
|
|
ユーザー定義のメタデータを |
|
|
リソースの所有者を指定した所有者に変更します。 |
|
|
指定したACEを、指定したリソースのACLに追加します。 |
|
|
指定したリソースに対して現行ユーザーに付与されているアクセス権限をチェックします。 |
|
|
階層内に新規フォルダ・リソースを作成します。 |
|
|
オブジェクトIDに基づいたリソースの仮想パスを作成します。 |
|
|
新規リソースを作成します。 |
|
|
階層からリソースを削除します。 |
|
|
リソースからメタデータを削除します(スキーマ・ベースまたは非スキーマ・ベースのメタデータに使用できます)。 |
|
|
リソースの絶対パスに基づいて、リソースが階層であるかどうかを判別します。 |
|
|
パス名を指定して、リソースを保護するACLドキュメントを取得します。 |
|
|
BLOBとして戻されたリソースの内容を取り出します。 |
|
|
CLOBとして戻されたリソースの内容を取り出します。 |
|
|
文字列として戻されたリソースの内容を取り出します。 |
|
|
|
|
|
|
|
|
リソースへのパスを指定して、現行ユーザーのリソースのロック・トークンを戻します。 |
|
|
指定したリソース上の現在のユーザーに付与された権限をすべて取得します。 |
|
|
リソースの絶対パスからオブジェクトIDを戻します。 |
|
|
XDB(ユーザー)の現行の表領域を戻します。 |
|
|
リソースにBLOBコンテンツがある場合は |
|
|
リソースに文字コンテンツがある場合は |
|
|
リソースにXMLコンテンツがある場合は |
|
|
リソースにXMLコンテンツへの |
|
|
リソースがフォルダまたはコンテナの場合は、 |
|
|
既存のリソースへのリンクを作成します。 |
|
|
リソースへのパスを指定して、リソースに対するWebDAVスタイルのロックを取得します。 |
|
|
指定したリソース内のドキュメント・リンクを処理します。 |
|
|
リソースからすべてのユーザー・メタデータを削除します。 |
|
|
XDBリソースの名前を変更します。 |
|
|
指定したリソースにACLを設定します。 |
|
|
パスを親のパスと子のパスに分割します。 |
|
|
リソースの変更時刻を現在の時刻に変更します。 |
|
|
ロック・トークンおよびリソース・パスを指定して、リソースのロックを解除します。 |
|
|
リソースのメタデータを更新します。 |
このファンクションは、リソースのOWNERによる指定したACLドキュメントによって、現在のユーザーに付与されたアクセス権限をチェックします。すべての権限が付与されている場合は、正の整数を戻します。
構文
DBMS_XDB_REPOS.ACLCHECKPRIVILEGES( acl_path IN VARCHAR2, owner IN VARCHAR2, privs IN xmltype) RETURN PLS_INTEGER;
パラメータ
表185-3 ACLCHECKPRIVILEGESファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ACLドキュメントの階層内の絶対パス。 |
|
|
リソースの所有者名。疑似ユーザー「DAV:owner」は、ACL権限の解決時にこのユーザーに置き換えられます。 |
|
|
privilege要素の |
このプロシージャは、ユーザー定義のメタデータをXMLTYPEへのREFまたはXMLTYPEとして使用し、目的のリソースに追加します。
構文
DBMS_XDB_REPOS.APPENDRESOURCEMETADATA ( abspath IN VARCHAR2, metadata IN XMLTYPE); DBMS_XDB_REPOS.APPENDRESOURCEMETADATA ( abspath IN VARCHAR2, metadata IN REF SYS.XMLTYPE);
このプロシージャは、リソースの所有者を指定した所有者に変更します。
このファンクションは新しいリソースを作成します。オーバーロード・オプションの記述は各バージョンの構文の前に配置します。
構文
指定した文字列を内容として使用し、新規リソースを作成します。
DBMS_XDB_REPOS.CREATERESOURCE(
abspath IN VARCHAR2,
data IN VARCHAR2)
RETURN BOOLEAN;
指定したXMLTypeデータを内容として使用し、新規リソースを作成します。
DBMS_XDB_REPOS.CREATERESOURCE(
abspath IN VARCHAR2,
data IN SYS.XMLTYPE)
RETURN BOOLEAN;
既存のXMLType行にREFを指定し、その行を指す内容を持つリソースを作成します。この行は、別のリソース内に事前に存在させることはできません。
DBMS_XDB_REPOS.CREATERESOURCE(
abspath IN VARCHAR2,
datarow IN REF SYS.XMLTYPE)
RETURN BOOLEAN;
内容として指定したBLOBを使用して、リソースを作成し、ソースBLOBのキャラクタ・セットを指定します。
DBMS_XDB_REPOS.CREATERESOURCE(
abspath IN VARCHAR2,
data IN BLOB,
csid IN NUMBER :=0)
RETURN BOOLEAN;
内容として指定したBFILEを使用して、リソースを作成し、ソースBFILEのキャラクタ・セットを指定します。
DBMS_XDB_REPOS.CREATERESOURCE (
abspath IN VARCHAR2,
data IN BFILE,
csid IN NUMBER :=0)
RETURN BOOLEAN;
指定したCLOBを内容として使用し、リソースを作成します。
DBMS_XDB_REPOS.CREATERESOURCE (
abspath IN VARCHAR2,
data IN CLOB)
RETURN BOOLEAN;
文字列を指定すると、その文字列を内容として持つ新規リソースを階層に挿入します。
DBMS_XDB_REPOS.CREATERESOURCE ( abspath IN VARCHAR2, data IN VARCHAR2, schemaurl IN VARCHAR2 := NULL, elem IN VARCHAR2 := NULL) RETURN BOOLEAN;
XMLTYPEおよびスキーマURLを指定すると、XMLTYPEを内容として持つ新規リソースを階層に挿入します。
DBMS_XDB_REPOS.CREATERESOURCE ( abspath IN VARCHAR2, data IN SYS.XMLTYPE, schemaurl IN VARCHAR2 := NULL, elem IN VARCHAR2 := NULL) RETURN BOOLEAN;
パラメータ
表185-10 CREATERESOURCEファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
作成するリソースの絶対パス。パス名の親フォルダは、階層内にすでに存在している必要があります。たとえば、 |
|
|
新規リソースの内容が含まれている文字列バッファ。データは解析され、スキーマに基づいたXML文書が含まれているかどうかがチェックされ、含まれている場合、内容はスキーマのデフォルト表にスキーマに基づいたものとして格納されます。含まれていない場合は、バイナリ・データとして保存されます。 |
|
|
内容として使用する |
|
|
ドキュメントのキャラクタ・セットID。有効なOracle IDである必要があり、無効な場合、エラーが戻されます。 CSIDを指定しない場合またはCSIDに0(ゼロ)を指定した場合、ドキュメントのキャラクタ・セットIDは次のように判断されます。
|
|
|
XMLデータの場合、データが準拠するスキーマURL(デフォルトは |
|
|
要素名(デフォルトは |
このプロシージャは、絶対パスでリソースを使用し、REFで識別されるスキーマ・ベースのメタデータ、またはネームスペースと名前の組合せで識別されるメタデータ(スキーマ・ベースまたは非スキーマ・ベースのメタデータ)を削除します。また、メタデータの削除方法を指定する追加のパラメータ(オプション)も使用できます。このパラメータは、削除する必要のあるスキーマ・ベースのリソース・メタデータにのみ関連しています。非スキーマ・ベースのメタデータの場合、このパラメータは無視されます。
構文
次の構文は、スキーマ・ベースのメタデータにのみ使用できます。
DBMS_XDB_REPOS.DELETERESOURCEMETADATA ( abspath IN VARCHAR2, metadata IN REF SYS.XMLTYPE, delete_option IN pls_integer := DBMS_XDB_REPOS.DELETE_RESOURCE_METADATA_CASCADE);
次の構文は、スキーマ・ベースまたは非スキーマ・ベースのメタデータに使用できます。
DBMS_XDB_REPOS.DELETERESOURCEMETADATA ( abspath IN VARCHAR2, metadatans IN VARCHAR2, metadataname IN VARCHAR2, delete_option IN pls_integer := DBMS_XDB_REPOS.DELETE_RESOURCE_METADATA_CASCADE);
パラメータ
表185-12 DELETERESOURCEMETADATAプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
リソースの絶対パス。 |
|
|
削除する(スキーマ・ベースの)メタデータの一部への |
|
|
削除するメタデータの断片のネームスペース。 |
|
|
削除するメタデータの断片のローカル名。 |
|
|
スキーマ・ベースのメタデータにのみ適用できます。このパラメータは次のいずれかになります。
|
このファンクションは、BLOBとして戻されたリソースの内容を取り出します。
構文
DBMS_XDB_REPOS.GETCONTENTBLOB(
abspath IN VARCHAR2,
csid OUT PLS_INTEGER,
locksrc IN BOOLEAN := FALSE)
RETURN BLOB;
このプロシージャは、指定したフォルダから指定したリソースに作成します。
リソースへのパスを指定して、リソースに対するWebDAVスタイルのロックを取得します。
構文
DBMS_XDB_REPOS.LOCKRESOURCE( path IN VARCHAR2, depthzero IN BOOLEAN, shared IN boolean) RETURN BOOLEAN;
このプロシージャは、リソースからすべてのユーザー・メタデータを削除します。スキーマ・ベースのメタデータはカスケード・モードで削除され、対応するメタデータ表から行が削除されます。
このプロシージャは、XDBリソースの名前を変更します。
このプロシージャは、リソースのメタデータを更新します。このプロシージャは、絶対パスで識別されるリソースおよび、そのREFで識別されて置き換えられる、そのリソース内のメタデータを使用します。メタデータの一部をユーザー定義のメタデータ(XMLTYPEへのREFまたはXMLTYPEのいずれかの形式)に置き換えます。
構文
次の構文は、スキーマ・ベースのメタデータの更新にのみ使用できます。新しいメタデータは、スキーマ・ベースである必要があります。
DBMS_XDB_REPOS.UPDATERESOURCEMETADATA( abspath IN VARCHAR2, oldmetadata IN REF SYS.XMLTYPE, newmetadata IN REF SYS.XMLTYPE)
次の構文は、スキーマ・ベースのメタデータの更新にのみ使用できます。新しいメタデータは、スキーマ・ベースまたは非スキーマ・ベースである必要があります。
DBMS_XDB_REPOS.UPDATERESOURCEMETADATA( abspath IN VARCHAR2, oldmetadata IN REF SYS.XMLTYPE, newmetadata IN XMLTYPE);
次の構文は、スキーマ・ベースおよび非スキーマ・ベースの両方のメタデータに使用できます。
DBMS_XDB_REPOS.UPDATERESOURCEMETADATA( abspath IN VARCHAR2, oldns IN VARCHAR2, oldname IN VARCHAR, newmetadata IN XMLTYPE);
次の構文は、スキーマ・ベースおよび非スキーマ・ベースの両方のメタデータに使用できます。新しいメタデータは、スキーマ・ベースである必要があります。
DBMS_XDB_REPOS.UPDATERESOURCEMETADATA( abspath IN VARCHAR2, oldns IN VARCHAR2, oldname IN VARCHAR, newmetadata IN REF SYS.XMLTYPE);