22.3 DBMS_DBFS_CONTENTパッケージの開始

DBMS_DBFS_CONTENTは、Oracle Database 11gリリース2以降に付属しており、インストールは必要ありません。

22.3.1 DBFSコンテンツAPIのロール

コンテンツの操作および管理API (パッケージ、タイプ、表など)には、DBFS_ROLEを使用してアクセスできます。

DBFS_ROLEは、必要に応じてすべてのユーザーに付与できます。

22.3.2 パス名の定数およびタイプ

パス名の定数は、SecureFiles LOBストアの一方に基づいて作成されます。

関連項目:

パス名の定数とそのタイプについては、DBMS_DBFS_CONTENT定数を参照してください。

22.3.3 パス・プロパティ

ストアにあるすべてのパス名はプロパティのセットと関連付けられています。

簡易性と汎用性のために、各プロパティは文字列で識別され、文字列(未設定または特定のストア実装で未定義もしくは非サポートの場合はnullの可能性あり)および値タイプコード(文字列で保持される実際の値のタイプに対する数値判別)を持ちます。

プロパティの値を文字列に強制することは、様々なインタフェースを一様かつコンパクトにするというメリットがあります(また、基礎となるストアの実装を簡単にすることもできます)が、文字列への変換および文字列からの変換で情報が失われる可能性があります。

クライアントおよびストアは、これらの変換に明確に定義されたデータベース表記規則を使用し、必要に応じてtypecodeフィールドを使用することが前提です。

PL/SQLタイプpath_tおよびname_tは、パス名およびコンポーネント名を表す文字列のポータブルな別名です。

typecodeは、文字列が強制されたプロパティ値の真のタイプを表す数値です。単純なスカラー・タイプ(数字、日付、タイムスタンプなど)がクライアントにより依存でき、ストアによって実装される必要があります。

標準RDBMSのtypecodeは正の整数であるため、DBMS_DBFS_CONTENTインタフェースでは、負の整数が負のtypecodeによるクライアント定義のタイプを表すことができます。これらのtypecodeは標準のtypecodeとは競合せず、永続的に保持され、必要に応じてクライアントに戻されますが、DBFSコンテンツAPIや特定のストアによる解釈は必要ありません。ポータブル・クライアント・アプリケーションでは、特定のストアに情報を渡す裏口としてユーザー定義のtypecodeを使用することはできません。

関連項目:

DBMS_DBFS_CONTENT定数およびプロパティとDBMS_DBFS_CONTENT_PROPERTY_Tパッケージの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.4 コンテンツID

コンテンツIDは、ストア内のパスを表す一意の識別子です。

関連項目:

DBMS_DBFS_CONTENTコンテンツIDの定数およびプロパティの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.5 パス名タイプ

ストアでは、8つのタイプのエンティティへのアクセスを格納および提供します。

エンティティは次のとおりです:
  • type_file
  • type_directory
  • type_link
  • type_reference
  • type_scoket
  • type_character
  • type_block
  • type_fifo

すべてのストアで、すべてのディレクトリ、リンクまたは参照を実装する必要はありません。

関連項目:

DBMS_DBFS_CONTENT定数およびパス名タイプの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.6 ストア機能

共通のプログラム・インタフェースを、可能なかぎり多くの異なるタイプのストアに提供するために、DBFSコンテンツAPIでは、個別のストア・プロバイダが各種操作の動作の一部を定義および実装できます。

DBFSコンテンツAPIは、異なるストア・プロバイダ(および異なるストア)が自らを機能セットとして記述することを可能にすることにより、豊富な機能を維持するとともに、ポータブル・アプリケーションをサポートします。機能セットは、サポートされている機能およびサポートされていない機能を示すビット・マスクです。

関連項目:

ストア機能および定数の詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.7 ロック・タイプ

ロックをサポートするストアでは、3タイプのロックを実装する必要があります。

3タイプのロックとは、lock_read_onlylock_write_onlylock_read_writeです。

ユーザー・ロック(これらのタイプの1つ)は、ユーザー指定のlock_dataに関連付けが可能です。ストアはデータを解釈しませんが、クライアント・アプリケーションはこれを独自の目的のために使用できます(たとえば、ロックがかけられた時刻をユーザー・データが示す場合、クライアント・アプリケーションは後でこのデータを使用してそのアクションを制御できます)。

単純なロック・モデルでは、lock_read_onlyにより、パス名に対するすべての明示的な変更ができなく(ただし暗黙的変更および親/子パス名の変更は可能)なります。lock_write_onlyにより、パス名に対するすべての明示的な読取りができなくなりますが、暗黙的読取りおよび親/子パス名の読取りは可能になります。lock_read_writeでは、両方が可能です。

すべてのロックは、ロック操作を実行するプリンシパルに関連付けられます。ロックをサポートするストアではこの情報を保持し、読取り/書込みロック・チェックの実行に使用する必要があります(opt_lockerを参照)。

関連項目:

ロック・タイプおよび定数の詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.8 標準プロパティ

標準プロパティは、すべてのストアが(DBFSコンテンツAPIに説明されている方法で)サポートする必要のあるすべてのコンテンツ・パス名と関連付けられている、明確に定義された必須プロパティです。

固定スキーマのある表に対して作成されたストアでは、これらのプロパティの必要なだけ多くに対して適切なデフォルトを選択することなどが可能です。

すべての標準プロパティでは、非公式に、stdネームスペースが使用されます。クライアントおよびストアで、将来競合が発生するのを阻止するために、独自のプロパティの定義にこのネームスペースを使用することは避ける必要があります。

関連項目:

標準プロパティおよび定数の詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.9 オプション・プロパティ

オプション・プロパティは、正しく定義されているが、すべてのストアで自由に(しかしDBFSコンテンツAPIで記述されている方法でのみ)サポートされるすべてのコンテンツ・パス名に関連付けられた必須ではないプロパティです。

オプション・プロパティをまったくサポートしないストアに対応できるように、クライアントを準備する必要があります。

すべてのオプション・プロパティでは、非公式に、optネームスペースが使用されます。クライアントおよびストアで、将来競合が発生するのを阻止するために、独自のプロパティの定義にこのネームスペースを使用することは避ける必要があります。

関連項目:

オプション・プロパティおよび定数の詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.10 ユーザー定義プロパティ

アプリケーションで使用するために独自のプロパティを定義できます。

ネームスペースの接頭辞が互いに、またはDBFSの標準またはオプション・プロパティと競合しないようにしてください。

22.3.11 プロパティ・アクセス・フラグ

プロパティを取得および設定するDBFSコンテンツAPIメソッドでは、プロパティ・アクセス・フラグを組み合せて使用して、単一APIコール内の異なるネームスペースからプロパティをフェッチできます。

関連項目:

プロパティ・アクセス・フラグおよび定数の詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.12 例外

DBFSコンテンツAPI操作では、いずれかのトップレベルの例外が発生します。

クライアントでは、基礎となるエラー・シグナリング・コードの特定のストア実装を気にすることなく、エラー・ハンドラでこれらの特定の例外に対するプログラミングが可能です。

ストア・サービス・プロバイダは、必要に応じて内部例外を例外タイプのいずれかにトラップおよびラップすることを試行する必要があります。

22.3.13 プロパティ・バンドル

プロパティ・バンドルは、property_tレコード・タイプおよびproperties_tと呼ばれます。

  • property_tレコード・タイプは、単一(値、タイプコード)プロパティ値タプルを説明し、プロパティ名は暗黙的です。

  • properties_tは、名前で索引付けされたプロパティ・タプルのハッシュ表です。索引と値の間の暗黙的なハッシュ表の関連付けにより、クライアントでproperties_tの完全なdbms_dbfs_content_property_tタプルを作成できます。

dbms_dbfs_content_property_tproperty_tはほぼ対応するものです。前者は完全プロパティ・タプルを説明するSQLオブジェクト・タイプであり、後者はプロパティ値コンポーネントのみを説明するPL/SQLレコード・タイプです。

dbms_dbfs_content_properties_tproperties_t.はほぼ対応するものです。前者はSQLネスト表タイプであり、後者はPL/SQLハッシュ表タイプです。

動的SQLコール規則ではSQLタイプの使用を強制しますが、ハッシュ表タイプの点では、PL/SQLコードはより簡単に実装されます。

DBFSコンテンツAPIにより、dbms_dbfs_content_properties_tproperties_t間の変換に便利なユーティリティ・ファンクションが提供されます。

ファンクションDBMS_DBFS_CONTENT.PROPERTIEST2HDBMS_DBFS_CONTENT_PROPERTIES_T値を同等のproperties_t値に変換し、ファンクションDBMS_DBFS_CONTENT.PROPERTIESH2Tproperties_t値を同等のDBMS_DBFS_CONTENT_PROPERTIES_T値に変換します。

関連項目:

PROPERTY_Tレコード・タイプの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください

22.3.14 ストア記述子

ストア記述子は、store_tおよびmount_tレコードとして扱われます。

  • store_tは、DBFSコンテンツAPIに登録されて管理されるストアを記述するレコードです。

  • mount_tは、ストア・マウント・ポイントおよびそのプロパティを説明するレコードです。

クライアントは、使用可能なストアのリストをDBFSコンテンツAPIに問合せ、指定のパス名へのアクセスを処理するストアを判別し、ストアの機能セットを判別できます。

関連項目: