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オブジェクト・タイプ」を参照)。 |