DBFS SecureFilesストアを設定および使用するための特定の手順があります。
ここでは、次の項目について説明します。
SecureFilesストアの設定にはいくつかの側面があります。
この項では、SecureFilesストアの設定方法について説明します。
ここでは、次の項目について説明します。
操作のためのコンテンツAPIおよびストアへのアクセスでは、標準のデータベース・ユーザーを使用する必要があります。
SYS
またはSYSTEM
ユーザーやSYSDBA
またはSYSOPER
システム権限は使用しないでください。セキュリティおよび義務の分離を強化するために、DBFSコンテンツAPIの操作を管理する機能の使用を許可するのは、信頼できる特定のユーザーに対してのみにしてください。
各ユーザーにDBFS_ROLE
ロールを付与する必要があります。そうでない場合、DBFSコンテンツAPIを使用する権限がユーザーに付与されません。適切な管理権限(SYSDBA
)を持つユーザーが、必要に応じて追加のユーザーにロールを付与できます。
データベースでのロール、アクセス制御および定義者/実行者権限の相互作用に応じて、DBFSコンテンツAPIタイプ(DBMS_DBFS_CONTENT_
xxx
接頭辞を持つSQLタイプ)およびパッケージ(通常はDBMS_DBFS_CONTENT
およびDBMS_DBFS_SFS
のみ)の各種の権限(通常は実行権限)を、本来DBFS_ROLE
ロールを持つユーザーに明示的に付与することが必要な場合があります。
これらの明示的および直接的な付与は、一般的な必要とされる処理であり、必要またはリクエストに応じて行われます。
DBFSコンテンツAPIを使用する必要があるユーザーには、DBFS_ROLE
ロールを付与する必要があります。
これにより、DBFS_ROLE
ロールを持つデータベース・ユーザー用にDBFSコンテンツAPIが設定されます。
DBFSコンテンツAPIがアクセスするSecureFilesファイルシステム・ストアを作成する必要があります。
CREATEFILESYSTEM
プロシージャは、実行の前後に自動コミットします(DDLに類似)。メソッドCREATESTORE
はCREATEFILESYSTEM
のラッパーです。
DBMS_DBFS_SFS
構文の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
SecureFilesファイルシステム・ストアの作成手順:
DBMS_DBFS_SFS
パッケージ・メソッドを使用する場合でも、SecureFilesストア・ファイルシステムのデータを保持する表には直接アクセスしないでください。
ファイルシステムにアクセスする正しい方法は、次のとおりです。
手順を実行する場合: DBFSコンテンツAPI (DBMS_DBFS_CONTENT
メソッド)を使用します。
SQL操作の場合: リソースとプロパティのビュー(DBFS_CONTENT
およびDBFS_CONTENT_PROPERTIES
)を使用します。
SecureFilesストアに関連付けられた表を切り捨てたり再初期化することができます。
プロシージャINITFS()
を使用します。
プロシージャの実行は、DDLに類似しています(実行の前後に自動コミット)。
次の例では、SecureFilesストアstore_name
に関連付けられたファイルシステムFS1
および表SFS_DEMO
.T1
を使用しています。
CONNECT sfs_demo; Enter password: password EXEC DBMS_DBFS_SFS.INITFS(store_name => 'FS1');
SecureFiles LOBは、Oracle Database 11gリリース1以上でのみ使用できます。それより前のリリースでは使用できません。
自動セグメント領域管理(ASSM)で管理されていない表領域のLOB記憶域には、BasicFiles LOB記憶域を使用する必要があります。
SecureFiles LOBを使用するには、11.1.0.0以上の互換性が必要です。
また、DBMS_DBFS_SFS.CREATEFILESYSTEM
で次の情報を指定する必要があります。
SecureFiles LOB (デフォルト)を使用するには、use_bf => false
を指定します。
BasicFiles LOBを使用するには、use_bf => true
を指定します。
DBFSコンテンツAPIには、SecureFilesストア・ファイルシステムに移入したり、あるいはファイルシステムを管理するためのメソッドが用意されています。
ここでは、次の項目について説明します。
SecureFilesストア・ファイルシステムに移入するための新しいファイルおよびディレクトリ要素を作成できます。
「SecureFilesストアの設定」の手順を実行して、DBFSコンテンツAPI権限を設定し、少なくとも1つのSecureFilesストア参照ファイルシステムを作成し、マウント・ポイント/mnt1
の下にマウントした場合、例6-1のようにして新しいファイルおよびディレクトリ要素を作成できます。
例6-1 DBFSコンテンツAPIの操作
CONNECT tjones Enter password: password DECLARE ret integer; b blob; str varchar2(1000) := '' || chr(10) || '#include <stdio.h>' || chr(10) || '' || chr(10) || 'int main(int argc, char** argv)' || chr(10) || '{' || chr(10) || ' (void) printf("hello world\n");' || chr(10) || ' RETURN 0;' || chr(10) || '}' || chr(10) || ''; BEGIN ret := dbms_fuse.fs_mkdir('/mnt1/FS1'); ret := dbms_fuse.fs_creat('/mnt1/FS1/hello.c', content => b); dbms_lob.writeappend(b, length(str), utl_raw.cast_to_raw(str)); COMMIT; END; / SHOW ERRORS; -- verify newly created directory and file SELECT pathname, pathtype, length(filedata), utl_raw.cast_to_varchar2(filedata) FROM dbfs_content WHERE pathname LIKE '/mnt1/FS1%' ORDER BY pathname;
ファイルシステムは、DBMS_DBFS_CONTENT
を使用してPL/SQLから移入およびアクセスできます。ファイルシステムは、dbfs_content
およびdbfs_content_properties
ビューを使用してSQLから読取り専用でアクセスできます。
また、ファイルシステムは、FUSEを使用してマウントされているときは通常のファイルシステムAPIおよびUNIXユーティリティで、またはスタンドアロンのdbfs_client
ツール(FUSE
が使用不可または設定されていない環境)によって、移入およびアクセスできます。
DBFS SecureFilesストア・パッケージ(DBMS_DBFS_SFS
)は、DBMSコンテンツのSecureFiles LOB記憶域をサポートするDBMS_DBFS_CONTENT
のストア・プロバイダです。
DBMS_DBFS_SFS
パッケージを使用するには、DBFS_ROLE
ロールが付与されている必要があります。
SecureFilesストア・プロバイダは、DBFSコンテンツAPIのデフォルトの実装(また、プロバイダSPIに準拠するストア・プロバイダの標準的な例)であり、スキーマ内の列としてLOBをすでに使用しているアプリケーションがBLOB
列にアクセスできるようにするためのものです。これにより既存のアプリケーションは容易にPL/SQLプロバイダ実装を追加して、スキーマやビジネス・ロジックを変更することなくDBFSコンテンツAPIを通じてアクセスできます。
さらに、標準DBFSコンテンツAPIインタフェースを介して、別の(サード・パーティの)ストアに格納されたコンテンツをアプリケーションで読取りおよび書込みできます。DBMS_DBFS_CONTENT_SPI
に定義されているプロバイダSPIの詳細は、「独自のDBFSストアの作成」および『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
SecureFilesストアでは、基礎となるユーザー・データはSecureFiles LOBに格納され、パス名、IDおよびプロパティなどのメタデータはリレーショナル表内の列として格納されます。SecureFiles LOBの拡張機能の詳細は、「SecureFiles LOB記憶域」を参照してください。
DBMS_DBFS_SFS
パッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。