22.3 DBMS_DBFS_CONTENTパッケージの開始
DBMS_DBFS_CONTENT
は、Oracle Database 11gリリース2以降に付属しており、インストールは必要ありません。
関連項目:
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください
- DBFSコンテンツAPIロール
コンテンツ操作および管理API (パッケージ、タイプ、表など)へのアクセスは、DBFS_ROLE
を介して使用できます。 - パス名の定数およびタイプ
パス名の定数は、対応するSecureFiles LOBストアの後にモデル化されます。 - パス・プロパティ
ストア内のすべてのパス名は、一連のプロパティに関連付けられます。 - コンテンツID
コンテンツIDは、ストア内のパスを表す一意の識別子です。 - パス名タイプ
ストアは、8つのタイプのエンティティへのアクセスを格納および提供できます。 - ストア機能
共通のプログラム・インタフェースを、可能なかぎり多くの異なるタイプのストアに提供するために、DBFSコンテンツAPIでは、個別のストア・プロバイダが様々な操作の動作の一部を定義および実装できます。 - ロック・タイプ
ロックをサポートするストアは、3種類のロックを実装する必要があります。 - 標準プロパティ
標準プロパティは、すべてのストアが(DBFSコンテンツAPIで説明されている方法で)サポートする必要のあるすべてのコンテンツ・パス名に関連付けられている、明確に定義された必須プロパティです。 - オプション・プロパティ
オプション・プロパティは、正しく定義されているが、すべてのストアで自由に(DBFSコンテンツAPIで記述されている方法でのみ)サポートされるすべてのコンテンツ・パス名に関連付けられた必須ではないプロパティです。 - ユーザー定義プロパティ
アプリケーションで使用する独自のプロパティを定義できます。 - プロパティ・アクセス・フラグ
プロパティを取得および設定するDBFSコンテンツAPIメソッドでは、プロパティ・アクセス・フラグを組み合せて使用して、単一APIコール内の異なるネームスペースからプロパティをフェッチできます。 - 例外
DBFSコンテンツAPI操作では、トップレベルの例外のいずれかが発生する可能性があります。 - プロパティ・バンドル
プロパティ・バンドルは、property_t
レコード・タイプおよびproperties_t
と呼ばれます。 - ストア記述子
ストア記述子は、store_t
およびmount_t
レコードと呼ばれます。
親トピック: DBFSコンテンツAPI
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_only
、lock_write_only
、lock_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操作では、いずれかのトップレベルの例外が発生します。
クライアントでは、基礎となるエラー・シグナリング・コードの特定のストア実装を気にすることなく、エラー・ハンドラでこれらの特定の例外に対するプログラミングが可能です。
ストア・サービス・プロバイダは、必要に応じて内部例外を例外タイプのいずれかにトラップおよびラップすることを試行する必要があります。
関連項目:
例外の詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください
22.3.13 プロパティ・バンドル
プロパティ・バンドルは、property_t
レコード・タイプおよびproperties_t
と呼ばれます。
-
property_t
レコード・タイプは、単一(値、タイプコード)プロパティ値タプルを説明し、プロパティ名は暗黙的です。 -
properties_t
は、名前で索引付けされたプロパティ・タプルのハッシュ表です。索引と値の間の暗黙的なハッシュ表の関連付けにより、クライアントでproperties_t
の完全なdbms_dbfs_content_property_t
タプルを作成できます。
dbms_dbfs_content_property_t
とproperty_t
はほぼ対応するものです。前者は完全プロパティ・タプルを説明するSQLオブジェクト・タイプであり、後者はプロパティ値コンポーネントのみを説明するPL/SQLレコード・タイプです。
dbms_dbfs_content_properties_t
とproperties_t
.はほぼ対応するものです。前者はSQLネスト表タイプであり、後者はPL/SQLハッシュ表タイプです。
動的SQLコール規則ではSQLタイプの使用を強制しますが、ハッシュ表タイプの点では、PL/SQLコードはより簡単に実装されます。
DBFSコンテンツAPIにより、dbms_dbfs_content_properties_t
とproperties_t
間の変換に便利なユーティリティ・ファンクションが提供されます。
ファンクションDBMS_DBFS_CONTENT.PROPERTIEST2H
はDBMS_DBFS_CONTENT_PROPERTIES_T
値を同等のproperties_t
値に変換し、ファンクションDBMS_DBFS_CONTENT.PROPERTIESH2T
はproperties_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に問合せ、指定のパス名へのアクセスを処理するストアを判別し、ストアの機能セットを判別できます。
関連項目:
-
STORE_T
レコード・タイプの詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスを参照してください