DBMS_DBFS_CONTENT_SPI
パッケージは、DBMS_DBFS_CONTENTサービス・プロバイダにApplication Program Interface(API)の仕様を提供します。アプリケーション設計者は、このAPIに準拠するPL/SQLパッケージを作成して、DBMS_CONTENT
を拡張し、カスタム・サービス・プロバイダを利用できます。
関連項目:
|
この章では、次の項目について説明します。
概要
セキュリティ・モデル
使用上の注意
DBMS_DBFS_CONTENT_SPI
パッケージは、DBMS_DBFS_CONTENTインタフェースの実装と個々のサービス・プロバイダ間の内部契約、およびプロバイダのコードを含むパッケージを説明します。
PL/SQLでは、パッケージ・シグネチャ間でコンパイル時に宣言タイプの一致を許可しないため、ストア・プロバイダは略式でSPIに準拠する必要があります。つまり、同じメソッド・シグネチャとセマンティクスで、パッケージDBMS_DBFS_CONTENT_SPI
で指定されたすべてのメソッドを含むパッケージによってSPIを実装する必要があるということです。
明らかに、これらのプロバイダ・パッケージは他のメソッドを実装して、他のインタフェースを公開できますが、そのようなインタフェースをDBMS_CONTENT
インタフェース自体で使用することはできません。
プロバイダSPIは単なる契約仕様であるため、DBMS_DBFS_CONTENT_SPI
にはパッケージ本体はなく、このパッケージを使用して、実際にメソッドを起動することはできません。
SPIは、DBMS_CONTENT
インタフェースによって定義される様々な要素(定数、タイプ、例外)を参照します。
また、DBMS_CONTENT
インタフェースによってエクスポートされたクライアントAPIとDBMS_CONTENT
インタフェース自体が動作対象として予測するプロバイダ・インタフェース間にはほぼ1対1対応があります。
メソッドのネーミング規則での主な区別は、すべてのパス名参照が常にストア修飾されていることです。つまり、マウント・ポイントの概念と完全絶対パス名は、DBMS_CONTENT
インタフェースがプロバイダSPIメソッドを起動する前に、このインタフェースによって正規化され、ストア修飾パス名に変換されているということです。
DBMS_DBFS_CONTENT
インタフェースとプロバイダSPIの相互接続は1対多の接続可能なアーキテクチャであり、インタフェースが動的SQLを使用してプロバイダSPIでメソッドを起動するため、これはランタイム・エラーの原因になる可能性があります。
実装
DBMS_DBFS_CONTENTインタフェースとプロバイダSPIの相互接続は1対多の接続可能なアーキテクチャであるため、インタフェースが動的SQLを使用してプロバイダSPIでメソッドを起動し、ランタイム・エラーの原因になる可能性があります。
DBMS_DBFS_CONTENT
インタフェースが特定のプロバイダSPIを接続または接続解除するタイミングを示す明示的なINIT
またはFINI
メソッドはありません。プロバイダSPIは、任意のSPIエントリポイントで自動初期化が可能である必要があります。
サービス・プロバイダが実行するすべての操作は、自己完結している点で「ステートレス」です。なんらかの理由によりステートを維持する必要がある場合、必要に応じて問合せが可能な補助表などのデータ構造でステート維持する必要があります。
パス名
プロバイダSPIで使用されるすべてのパス名は、ペア形式でストア修飾されており(store_name
、pathname
)、この形式ではパス名はストアのネームスペースをルートとします。
コンテンツIDベースのアクセスをサポートするストアおよびそのプロバイダ(「DBMS_DBFS_CONTENTの定数: ストア機能」の「FEATURE_CONTENT_ID」
を参照)もパス名に基づかないアドレッシングの形式をサポートします。コンテンツ項目は、明示的なストア名およびNULL
パス名によって識別され、パラメータとしてまたはOPT_CONTENT_ID
(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」を参照)プロパティによって指定されるコンテンツIDによって識別される場合もあります。
コンテンツIDベースのアクセスではサポートされない操作もあり、アプリケーションは利用できる最も簡単な作成または削除機能のみに依存することが必要です。
作成オプション
プロバイダSPIは、ディレクトリ、ファイル、リンクおよびストア機能のサポート対象である参照要素をDBFSコンテンツAPIが作成することを許可する必要があります。
すべての作成サブプログラムには有効なパス名が必要ですが、コンテンツIDベースのアクセスでは特別に除外されていることに注意してください。作成サブプログラムは、パス名が作成されるときにプロパティがパス名と関連付けられるように、オプションとして指定できます。STD_CREATION_TIME
(「DBMS_DBFS_CONTENTの定数: 標準プロパティ」を参照)など、自動的に生成されたプロパティがただちにクライアントに使用可能になるように、作成完了後にクライアントが項目のプロパティを戻すことも可能です。フェッチ・バックされる正確なプロパティのセットは、prop_flags
パラメータにある様々なPROP_XXX
ビットマスクによって制御されます。
リンクおよび参照には、主パス名と関連付ける追加のパス名が必要です。
ファイルパス名は、オプションとしてBLOB
値を指定して、基礎となるファイル・コンテンツを最初に移入するために使用できます(指定されたBLOB
は任意の有効なLOBが可能)。prop_flags
パラメータでPROP_DATA
が指定されていれば、作成時に基礎となるLOBがクライアントに戻されます。
ディレクトリ以外のパス名では、親ディレクトリを最初に作成する必要があります。ディレクトリ・パス名自体は、1回のコールで作成されたディレクトリにつながるパス名の階層で再帰的に作成することができます。
すでに存在するパスの作成を試みるとエラーになりますが、唯一の例外は「ソフト削除された」パス名です(「削除操作」の項を参照)。この場合、ソフト削除された項目は、暗黙的にパージされ、新しい項目の作成が試みられます。
コンテンツIDベースのアクセスをサポートするストアおよびそのプロバイダは、明示的なストア名およびNULL
パスを受け入れて新しいコンテンツ要素を作成します。この要素に生成されたコンテンツIDは、OPT_CONTENT_ID
プロパティによって使用でき(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」を参照)、コンテンツIDベースの作成は、prop_flags
パラメータのPROP_OPT
プロパティによって自動的に暗黙的に行われます。
FEATURE_LAZY_PATH
プロパティがサポートされない場合、新しく作成された要素も内部生成されたパス名を持つ場合があり(「DBMS_DBFS_CONTENTの定数: ストア機能」を参照)、このパスはSTD_CANONICAL_PATH
プロパティによって使用できます(「DBMS_DBFS_CONTENTの定数: 標準プロパティ」を参照)。
ファイル要素のみがコンテンツIDベースのアクセスの候補です。
削除操作
プロバイダSPIは、ディレクトリ、ファイル、リンクおよびストア機能のサポート対象である参照要素をDBFSコンテンツAPIが削除することを許可する必要があります。
デフォルトでは、削除は永続的であり、トランザクションのコミットで正常に削除された項目を削除しますが、ストアは「ソフト削除」機能をサポートする場合もあります。クライアントから要求された場合、通常、標準リストや検索では表示されませんが、ソフト削除された項目はストアによって保持されます。
ソフト削除された項目は、リストアすることも明示的にパージすることもできます。
ディレクトリ・パス名は、1回のコールで削除されたディレクトリより下のパス名の階層で再帰的に削除することができます。再帰的ではない削除は空のディレクトリでのみ実行できます。再帰的なソフト削除は、削除されるすべての項目にソフト削除を適用します。
個々のパス名、およびディレクトリの下のソフト削除されたパス名は、様々なリストアおよびパージ・サブプログラムによってリストアまたはパージできます。
フィルタリングをサポートするプロバイダは、プロバイダ・フィルタを使用して、削除する項目のサブセットを識別できます。これは、DELETEDIRECTORYプロシージャ、PURGEALLプロシージャ、RESTOREALLプロシージャなどのバルク操作では非常に有効ですが、削除関連のすべての操作がフィルタ
引数を受け入れます。
コンテンツIDベースのアクセスをサポートするストアおよびそのプロバイダは、コンテンツIDを指定することによりファイル項目の削除も許可します。
Get(取出し)操作およびPut(挿入)操作
GetサブプログラムおよびPutサブプログラムを使用して、既存のパス項目にアクセスして(問合せまたは更新のため)、変更できます。すべてのパス名はメタデータ(プロパティ)の読取りと変更を許可します。コール完了時に、クライアントはprop_flags
パラメータにより、特定のプロパティをフェッチするように要求できます。
ファイル・パス名はデータ(コンテンツ)の読取りと変更を許可します。コール完了時に、クライアントはprop_flags
パラメータのPROP_DATA
ビットマスクを使用して、新しいBLOB
ロケータを要求してデータ・アクセスを継続できます。
論理オフセットまたはバッファ量および適切なサイズのバッファを明示的に指定することにより、BLOB
ロケータを使用せずにファイルの読取りまたは書込みが可能です。
更新アクセスでは、forUpdate
フラグを指定する必要があります。deref
フラグを指定した場合、リンク・パス名へのアクセスはストアにより暗黙的、内部的に逆参照できますが(機能サポートの対象)、シンボリック・リンクが常に解決可能とはかぎらないため、これにより出力が未定義にされている可能性があります。
GETPATHプロシージャなどforUpdate
が0に指定される読取りメソッドも、ストアが「時点」スタイルのフラッシュバック問合せを実行するために使用できるctx
パラメータの有効なasof
タイムスタンプを受け入れます。GETPATHプロシージャ・メソッドおよびPUTPATHプロシージャ・メソッドの変化形では、「時点」モードの操作はサポートされません。
GETPATHNOWAITプロシージャは、操作が更新のためであることを示しており、実行された場合(「DBMS_DBFS_CONTENTの定数: ストア機能」のFEATURE_NOWAIT
を参照)、プロバイダは行のロックを待機せず例外(ORA-00054)を戻すことができます。
名前変更操作および移動操作
パス名は、名前の変更や移動が可能で、別のディレクトリ階層やマウント・ポイントにも移動できますが、同じストア内にかぎられます。
以前にはoldPath
パラメータを指定することでアクセス可能だったディレクトリ以外のパス名は、その後newPath
を指定することでアクセス可能な単一の項目に名前が変更されます(newPath
がすでに存在していないことが前提)。
newPath
が存在し、ディレクトリではない場合は、名前変更の処理はoldPath
の名前を変更する前に暗黙的に既存の項目を削除します。newPath
が存在しディレクトリである場合は、oldPath
はターゲット・ディレクトリに移動されます。
以前にはoldPath
によりアクセス可能だったディレクトリ・パス名はディレクトリとそのすべての子をnewPath
に移動することによって名前が変更される(すでに存在していない場合)か、またはnewPath
の子となります(存在しディレクトリである場合)。
コンテンツIDベースのアクセスおよびレイジー・パス名バインドをサポートするストアおよびそのプロバイダは、既存のコンテンツIDを新しい「パス」と関連付けるSETPATHプロシージャもサポートします。
ディレクトリ・ナビゲーションおよび検索
DBMS_CONTENT
インタフェースはディレクトリ・パス名の内容をリストまたは検索でき、オプションとして、サブディレクトリに再帰的にリストまたは検索、ソフト削除された項目を表示、入力されたタイムスタンプの「時点」のフラッシュバックの使用、リストまたは検索述語に基づいてストア内で項目を内または外にフィルタリングできます。
ロック操作
DBMS_CONTENT
インタフェースのクライアントは、ユーザー・レベルのロックを任意の有効なパス名(ストア機能サポートの対象)に適用、ロックをユーザー・データと関連付け、およびその後これらのパス名をロック解除できます。
ロックされた項目のステータスは、様々なオプションのプロパティを使用して利用できます(opt_lock
に関する前述の説明に注意してください)。
ロックおよびロック解除操作を整合性のある方法で実行することは、ストアの責任です(ユーザー定義のロック・チェックをサポートすることが前提)。
アクセス・チェック操作
この操作は、指定したパス名(store_name
、path
、pathtype
)が、principal
パラメータを利用する、ストアでのユーザーによる操作によって操作可能かどうかを確認します(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」の様々なDBMS_CONTENT.OP_XXX
操作コードを参照)。アクセス制御をサポートするストアでも、内部的にこれらのチェックを実行してセキュリティが保証されるため、これは、DBMS_CONTENT
インタフェースに便利なファンクションです。
表48-1 DBMS_DBFS_CONTENT_SPIパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
指定したパスでユーザー( |
|
ディレクトリを作成します。 |
|
ファイルを作成します。 |
|
既存のファイル・システム要素への物理的なリンクを作成します。 |
|
ソース・ファイル・システム要素への新しい参照を作成します。 |
|
指定したコンテンツIDによって指定されるファイルを削除します。 |
|
ディレクトリを削除します。 |
|
ファイルを削除します。 |
|
ストアの機能を戻します。 |
|
既存のパス項目(ファイルやディレクトリなど)を戻します。 |
|
基礎となるGUIDが元のストアにある場合、ストア修飾されたパス名を戻します。 |
|
操作が更新のためであることを示しており、実行された場合、プロバイダは行のロックを待機せず例外( |
|
ストアのIDを戻します。 |
|
ストアに関連付けられたバージョンを戻します。 |
|
ディレクトリ・パス名の内容をリストします。 |
|
指定した有効なパス名にユーザー・レベルのロックを適用します。 |
|
パスおよびオプションのフィルタ条件に一致する、すべてのソフト削除されたエントリをパージします。 |
|
指定したパス項目の任意のソフト削除したバージョンをパージします。 |
|
新しいパス項目を作成します。 |
|
パスの名前変更または移動を行います。 |
|
パスおよびフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。 |
|
指定したパスおよびフィルタ条件に適合するすべてのソフト削除されたパス項目をリストアします。 |
|
指定したパスおよびフィルタ条件に適合するパス項目を検索します。 |
|
コンテンツIDによって表されるパス項目にパス名を割り当てます。 |
|
ファイル・システム領域使用統計情報を問い合せます。 |
|
LOCKPATHプロシージャで以前にロックされたパス項目をロック解除します。 |
このファンクションは、指定したパスでユーザー(principal
)が指定操作を実行できるかどうかをレポートします。これによって、操作の実行を試みることなく操作の妥当性を検証できます。CHECKACCESS
が0を戻す場合、この操作を実行するために起動されたサブプログラムはエラーによって失敗します。
構文
DBMS_DBFS_CONTENT_SPI.CHECKACCESS ( store_name IN VARCHAR2 DEFAULT NULL, path IN VARCHAR2, pathtype IN INTEGER, operation IN VARCHAR2, principal IN VARCHAR2) RETURN INTEGER;
パラメータ
表48-2 CHECKACCESSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
アクセスのチェックを行うパスの名前。 |
|
|
|
チェックする操作(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」を参照)。 |
|
アクセス・チェックを行う対象のファイル・システム・ユーザー。 |
このプロシージャは、ディレクトリを作成します。
構文
DBMS_DBFS_CONTENT_SPI.CREATEDIRECTORY ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, prop_flags IN INTEGER, recurse IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-3 CREATEDIRECTORYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
ディレクトリへのパス名。 |
|
|
|
どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトは |
|
0の場合、再帰的に実行せず、それ以外の場合は、指定したディレクトリの上に再帰的にディレクトリを作成します。 |
|
ディレクトリを作成するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、ファイルを作成します。
構文
DBMS_DBFS_CONTENT_SPI.CREATEFILE ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, content IN OUT NOCOPY BLOB, prop_flags IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-4 CREATEFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
ファイルへのパス名。 |
|
|
|
ファイルに移入するデータを保持する |
|
どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトは |
|
ファイルを作成するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、すでに存在するファイル・システム要素(ファイルやディレクトリなど)への物理的なリンクを作成します。生成されるエントリは、srcPath
パラメータの値と同じメタデータ構造を共有するため、ファイル・システム要素の参照数を増加する点でも類似しています。これは、UNIXファイル・システムのハード・リンクと似ています。
構文
DBMS_DBFS_CONTENT_SPI.CREATELINK ( store_name IN VARCHAR2, srcPath IN VARCHAR2, dstPath IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, prop_flags IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-5 CREATELINKプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
リンク先のファイル・システム・エントリ。 |
|
作成する新しいリンク要素のパス。 |
|
|
|
どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトは |
|
リンクを作成するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、ソース・ファイル・システム要素(ファイルやディレクトリなど)への新しい参照を作成します。生成される参照はソース要素を指しますが、ソース要素と直接メタデータを共有しません。これは、UNIXファイル・システムのシンボリック・リンクと似ています。
構文
DBMS_DBFS_CONTENT_SPI.CREATEREFERENCE ( srcPath IN VARCHAR2, dstPath IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, prop_flags IN INTEGER, store_name IN VARCHAR2, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-6 CREATEREFERENCEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
リンク先のファイル・システム・エントリ。 |
|
作成する新しいリンク要素のパス。 |
|
|
|
どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトは |
|
参照を作成するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、指定したコンテンツIDによって指定されるファイルを削除します。
構文
DBMS_DBFS_CONTENT_SPI.DELETECONTENT ( store_name IN VARCHAR2, contentID IN RAW, filter IN VARCHAR2, soft_delete IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-7 DELETECONTENTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
削除するファイルの一意の識別子。 |
|
存在する場合、適用するフィルタ。 |
|
0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(「削除操作」を参照)。 |
|
ファイルを削除するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、ディレクトリを削除します。recurse
がゼロ以外の場合、ディレクトリのすべての要素を再帰的に削除します。フィルタがある場合は、ディレクトリのどの要素が削除されるかを決定します。
構文
DBMS_DBFS_CONTENT_SPI.DELETEDIRECTORY ( store_name IN VARCHAR2, path IN VARCHAR2, filter IN VARCHAR2, soft_delete IN INTEGER, recurse IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-8 DELETEDIRECTORYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
ディレクトリへのパス名。 |
|
存在する場合、適用するフィルタ。 |
|
0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(「削除操作」を参照)。 |
|
0の場合、再帰的に実行しません。それ以外の場合は、指定したディレクトリの下にあるディレクトリおよびファイルを再帰的に削除します。 |
|
ディレクトリを削除するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、指定したファイルを削除します。
構文
DBMS_DBFS_CONTENT_SPI.DELETEFILE ( store_name IN VARCHAR2, path IN VARCHAR2, filter IN VARCHAR2, soft_delete IN BOOLEAN, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-9 DELETEFILEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
ファイルへのパス名。 |
|
存在する場合、適用するフィルタ。 |
|
0の場合、ハード(永続的)削除を実行します。0以外の値の場合、ソフト削除を実行します(「削除操作」を参照)。 |
|
ファイルを削除するコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、既存のパス項目(ファイルやディレクトリなど)を戻します。これには、データとメタデータ(プロパティ)の両方が含まれます。
クライアントは(prop_flags
を使用して)特定のプロパティが戻されるように要求できます。ファイル・パス名は、prop_flags
でprop_data
ビットマスクを使用してBLOB
ロケータを指定する(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)か、または1つ以上のRAW
バッファを渡すことによって、読み取れます。
forUpdate
が0の場合、このプロシージャは、ストアにより「時点」スタイルのフラッシュバック問合せを実行するために使用できるctx
の一部として、有効な「時点」タイムスタンプ・パラメータも受け入れます。GETPATH
プロシージャの変化形では、これらのモードの操作はサポートされません。
構文
DBMS_DBFS_CONTENT_SPI.GETPATH ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, content OUT NOCOPY BLOB, item_type OUT INTEGER, prop_flags IN INTEGER, forUpdate IN INTEGER, deref IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T); DBMS_DBFS_CONTENT_SPI.GETPATH ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, amount IN OUT NUMBER, offset IN NUMBER, buffer OUT NOCOPY RAW, prop_flags IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T); DBMS_DBFS_CONTENT_SPI.GETPATH ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, amount IN OUT NUMBER, offset IN NUMBER, buffers OUT NOCOPY DBMS_CONTENT_RAW_T, prop_flags IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-11 GETPATHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
パス項目へのパス名。 |
|
|
|
ファイルに移入するデータを保持する |
|
指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。 |
|
入力時に読み取られるバイト数。出力時に読み取られるバイト数。 |
|
読取りを開始するバイト・オフセット。 |
|
書込み先のバッファ。 |
|
書込み先のバッファ。 |
|
どのプロパティが設定されるか、戻されるかまたはその両方かを決定します。デフォルトは |
|
パス項目に対する排他的書込みアクセス権限を示すためにロックを取得する必要があることを指定します。 |
|
0(ゼロ)以外に設定すると、指定したパス項目を実際のデータに解決しようとします。ただし、実際のデータが参照(シンボリック・リンク)であることが条件です。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
基礎となるGUIDが元のストアにある場合、このファンクションはストア修飾されたパス名を戻します。
このプロシージャは、操作が更新のためであることを示しており、実行された場合(「DBMS_DBFS_CONTENTの定数: ストア機能」のFEATURE_NOWAIT
を参照)、プロバイダは行のロックを待機せず例外(ORA-00054
)を戻すことができます。
構文
DBMS_DBFS_CONTENT_SPI.GETPATHNOWAIT ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, content OUT NOCOPY BLOB, item_type OUT INTEGER, prop_flags IN INTEGER, deref IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-13 GETPATHNOWAITプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
パス項目へのパス名。 |
|
|
|
ファイルに移入するデータを保持する |
|
指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。 |
|
どのプロパティが戻されるかを決定します。デフォルトは |
|
0(ゼロ)以外に設定すると、指定したパス項目を実際のデータに解決しようとします。ただし、実際のデータが参照(シンボリック・リンク)であることが条件です。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このファンクションは、ディレクトリ・パス名の内容をリストします。
サブプログラムの実行者には、サブディレクトリを再帰的に検索、ソフト削除された項目を表示、指定したタイムスタンプの「時点」でフラッシュバックを使用、リスト述語に基づいてストア内で項目をフィルタリングするオプションがあります。
構文
DBMS_DBFS_CONTENT_SPI.LIST ( store_name IN VARCHAR2, path IN VARCHAR2, filter IN VARCHAR2, recurse IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T) RETURN DBMS_CONTENT_LIST_ITEMS_T PIPELINED;
パラメータ
表48-16 LISTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
リポジトリの名前。 |
|
ディレクトリへのパス名。 |
|
存在する場合、適用するフィルタ。 |
|
0の場合、再帰的に実行しません。それ以外の場合は、指定したディレクトリの下にあるディレクトリおよびファイルの内容を再帰的にリストします。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
使用上の注意
このファンクションはリスト項目のみを戻します。クライアントは、GETPATHプロシージャのいずれかを明示的に使用して、項目と関連付けられているプロパティまたはコンテンツにアクセスする必要があります。
このプロシージャは、ユーザー・レベルのロックを指定した有効なパス名(ストア機能サポートの対象)に適用し、オプションとしてユーザー・データをロックと関連付けます。
構文
DBMS_DBFS_CONTENT_SPI.LOCKPATH ( store_name IN VARCHAR2, path IN VARCHAR2, lock_type IN INTEGER, lock_data IN VARCHAR2, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-17 LOCKPATHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
ロックされる項目のパス名。 |
|
いずれかの利用可能なロック・タイプ(「DBMS_DBFS_CONTENTの定数: ロックタイプ」を参照)。 |
|
ロックと関連付けられるオプションのユーザー・データ |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
使用上の注意
ロックおよびロック解除操作を整合性のある方法で実行することは、ストアおよびそのプロバイダの責任です(ユーザー定義のロック・チェックをサポートすることが前提)。
ロックされた項目のステータスは、様々なオプションのプロパティを使用して利用できます(「DBMS_DBFS_CONTENTの定数: オプションのプロパティ」のOPT_LOCK
*を参照)。
このプロシージャは、パスおよびオプションのフィルタ条件に一致する、すべてのソフト削除されたエントリをパージします。
構文
DBMS_DBFS_CONTENT_SPI.PURGEALL ( store_name IN VARCHAR2, path IN VARCHAR2, filter IN VARCHAR2, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-18 PURGEALLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
ファイル項目へのパス名。 |
|
存在する場合、指定した条件に基づいて適用するフィルタ。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、指定したパス項目の任意のソフト削除したバージョンをパージします。
構文
DBMS_DBFS_CONTENT_SPI.PURGEPATH ( path IN VARCHAR2, filter IN VARCHAR2, store_name IN VARCHAR2, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-19 PURGEPATHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
ファイル項目へのパス名。 |
|
存在する場合、適用するフィルタ。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、新しいパス項目を作成します。
構文
DBMS_DBFS_CONTENT_SPI.PUTPATH ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, content IN OUT NOCOPY BLOB, item_type OUT INTEGER, prop_flags IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T); DBMS_DBFS_CONTENT_SPI.PUTPATH ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, amount IN NUMBER, offset IN NUMBER, buffer IN RAW, prop_flags IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T); DBMS_DBFS_CONTENT_SPI.PUTPATH ( store_name IN VARCHAR2, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, written OUT NUMBER, offset IN NUMBER, buffers IN DBMS_CONTENT_RAW_T, prop_flags IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-20 PUTPATHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
置かれる項目のパス名。 |
|
|
|
ファイルに移入するデータを保持する |
|
指定したパス項目のタイプ(「DBMS_DBFS_CONTENTの定数: パス名タイプ」を参照)。 |
|
読み取られるバイト数。 |
|
書き込まれたバイト数。 |
|
読取りを開始するバイト・オフセット。 |
|
書込み先のバッファ。 |
|
書込み先のバッファ。 |
|
どのプロパティが設定されるかを決定します。デフォルトは |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
使用上の注意
すべてのパス名はメタデータ(プロパティ)の読取りと変更を許可します。コール完了時に、クライアントはprop_flags
を使用して、特定のプロパティにアクセスできます(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)。
コール完了時に、クライアントはprop_flags
にあるprop_data
ビットマスクを使用して、データ・アクセスを継続するために使用できる新しいBLOB
ロケータを要求できます(「DBMS_DBFS_CONTENTの定数: プロパティ・アクセス・フラグ」を参照)。
ファイルは、論理オフセット、バッファ量および適切なサイズのバッファを明示的に指定することにより、BLOB
ロケータを使用せずに書き込むことができます。
このプロシージャは、パスの名前変更または移動を行います。この操作は、同じストア内であれば、複数のディレクトリ階層やマウント・ポイント間で実行できます。
構文
DBMS_DBFS_CONTENT_SPI.RENAMEPATH ( store_name IN VARCHAR2, oldPath IN VARCHAR2, newPath IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-21 RENAMEPATHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。一意であることが必要です。 |
|
名前変更前のパス名。 |
|
名前変更後のパス名。 |
|
|
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、パスおよびオプションのフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。
構文
DBMS_DBFS_CONTENT_SPI.RESTOREALL ( store_name IN VARCHAR2, path IN VARCHAR2, filter IN VARCHAR2, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-22 RESTOREALLプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
パス項目へのパス名。 |
|
存在する場合、適用するフィルタ。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、指定したパスおよびオプションのフィルタ条件に一致するすべてのソフト削除されたパス項目をリストアします。
構文
DBMS_DBFS_CONTENT_SPI.RESTOREPATH ( store_name IN VARCHAR2, path IN VARCHAR2, filter IN VARCHAR2, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-23 RESTOREPATHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
パス項目へのパス名。 |
|
存在する場合、適用するフィルタ。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このファンクションは、指定したパスおよびフィルタ条件に適合するパス項目を検索します。
構文
DBMS_DBFS_CONTENT_SPI.SEARCH ( store_name IN VARCHAR2, path IN VARCHAR2, filter IN VARCHAR2, recurse IN INTEGER, ctx IN DBMS_CONTENT_CONTEXT_T) RETURN DBMS_CONTENT_LIST_ITEMS_T PIPELINED;
パラメータ
表48-24 LISTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
パス項目へのパス名。 |
|
存在する場合、適用するフィルタ。 |
|
0の場合、再帰的に実行しません。それ以外の場合は、指定したディレクトリの下にあるディレクトリおよびファイルの内容を再帰的に検索します。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、コンテンツIDによって表されるパス項目にパス名を割り当てます。
コンテンツIDベースのアクセスおよびレイジー・パス名バインドをサポートするストアおよびそのプロバイダは、既存のcontentID
を新しい「パス」と関連付けるSETPATHプロシージャ
もサポートします。
構文
DBMS_DBFS_CONTENT_SPI.SETPATH ( store_name IN VARCHAR2, contentID IN RAW, path IN VARCHAR2, properties IN OUT NOCOPY DBMS_CONTENT_PROPERTIES_T, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-25 SETPATHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
関連付けるファイルの一意の識別子。 |
|
パス項目へのパス名。 |
|
|
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |
このプロシージャは、ファイル・システム領域使用統計情報を問い合せます。プロバイダは、ストアに対してこのサブプログラムをサポートする必要があり、特にストアが複数の表、索引、LOBなどで構成される場合、領域使用率の決定に最善の試みが求められます。
構文
DBMS_DBFS_CONTENT_SPI.SPACEUSAGE ( store_name IN VARCHAR2, blksize OUT INTEGER, tbytes OUT INTEGER, fbytes OUT INTEGER, nfile OUT INTEGER, ndir OUT INTEGER, nlink OUT INTEGER, nref OUT INTEGER);
パラメータ
表48-26 SPACEUSAGEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
ストアを保持する自然表領域のブロック・サイズ。異なるブロック・サイズの複数の表領域を使用する場合、任意の有効なブロック・サイズが受け入れられます。 |
|
ストアを構成するすべてのセグメントに対して計算されたストアの合計サイズ(バイト単位)。 |
|
ストアを構成するすべてのセグメントに対して計算されたストアの空き領域または未使用領域のサイズ(バイト単位)。 |
|
ストアで現在使用可能なファイル数。 |
|
ストアで現在使用可能なディレクトリ数。 |
|
ストアで現在使用可能なリンク数。 |
|
ストアで現在使用可能な参照数。 |
このプロシージャは、LOCKPATHプロシージャで以前にロックされたパス項目をロック解除します。
構文
DBMS_DBFS_CONTENT_SPI.UNLOCKPATH ( store_name IN VARCHAR2, path IN VARCHAR2, ctx IN DBMS_CONTENT_CONTEXT_T);
パラメータ
表48-27 UNLOCKPATHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ストアの名前。 |
|
パス項目へのパス名。 |
|
パス項目にアクセスするコンテキスト(「DBMS_DBFS_CONTENT_CONTEXT_Tオブジェクト・タイプ」を参照)。 |