71 DBMS_FS
OracleデータベースでOracle File Systemに対する操作(make、mount、unmountおよびdestroy操作)を実行するためのDBMS_FSパッケージ。
この章のトピックは、次のとおりです:
71.1 DBMS_FSの概要
DBMS_FSパッケージには、Oracle File Systemの作成、マウント、アンマウントおよび破棄に使用できるOracle File System (OFS)のプロシージャが含まれています。
DBMS_FSパッケージによって、アプリケーションはNFSサーバーなどのユニバーサル・クライアントからデータベース・オブジェクトにアクセスできます。この機能はOracle SecureFilesとのインタフェースとなって、ファイル・システム・アクセスを提供します。
参照:
Oracle DatabaseでのNFSサーバーの管理の詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。
71.2 DBMS_FSのセキュリティ・モデル
DBMS_FSパッケージを使用するには、SYSDBA管理権限が必要です。
DBMS_FSパッケージを使用して実行する操作は、ルート・ユーザーがオペレーティング・システムで実行するファイル・システム操作と同じです。このパッケージにより作成およびマウントされた個々のファイル・システムへのアクセスは、アクセス制御リスト(ACL)と、オペレーティング・システム・ユーザーへのマウント済ディレクトリに対する権限を使用して適用されます。
71.3 DBMS_FSサブプログラムの要約
この表は、DBMS_FSサブプログラムを示し、簡単に説明しています。
表71-1 DBMS_FSサブプログラム
| サブプログラム | 説明 |
|---|---|
|
|
|
|
|
|
|
指定されたマウント・ポイントにOracle File Systemをマウントします。 |
|
|
指定されたマウント・ポイントのOracle File Systemをアンマウントします。 |
71.3.1 DESTROY_ORACLE_FSプロシージャ
このプロシージャは、Oracle File Systemを破棄してから、それに関連付けられたリソースを解放します。
構文
DBMS_FS.DESTROY_ORACLE_FS ( fstype IN VARCHAR2, fsname IN VARCHAR2);
パラメータ
表71-2 DBMS_FSのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ファイル・システム・タイプ。有効なオプションは次のとおりです。
|
|
|
ファイル・システムの名前。 |
使用上のノート
-
現在マウントされているファイル・システムの情報を取得するには、
V$OFSMOUNT動的ビューを問い合せます。 -
ファイル・システム・タイプの詳細は、「MAKE_ORACLE_FSプロシージャ」の
fstypeに関する項を参照してください。 -
DBMS_FS.DESTROY_ORACLE_FSプロシージャを実行する前に、DBMS_FS.UNMOUNT_ORACLE_FSプロシージャを使用してファイル・システムをアンマウントする必要があります。 -
DBMS_FS.DESTROY_ORACLE_FSを実行した後、Oracle Databaseはファイル・システムを破棄して、関連付けられたリソースを解放します。
例
次の例は、OFSファイル・システムを破棄する方法を示しています。
BEGIN DBMS_FS.DESTROY_ORACLE_FS ( fstype => 'ofs', fsname => 'dbfs_fs1'); END; /
71.3.2 MAKE_ORACLE_FSプロシージャ
このプロシージャは、タイプOFSの新しいファイル・システムを、既存のOracle表領域またはその他のデータベース・オブジェクトの上に作成します。
構文
DBMS_FS.MAKE_ORACLE_FS ( fstype IN VARCHAR2, fsname IN VARCHAR2, fsoptions IN VARCHAR2);
パラメータ
表71-3 DBMS_FSのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ファイル・システム・タイプ。 |
|
|
ファイル・システムの名前。英数字を使用して、256文字以下の文字列を入力します。 |
|
|
次の形式を使用して、Oracle File Systemに使用する既存の表領域を指定します。 "tablespace=tablespace_name" |
使用上のノート
-
データベース・ファイル・システム(DBFS)を作成する場合は、
dbfs_create_filesystem.sqlスクリプトを実行する必要があります。このスクリプトによって、dbfs_create_filesystem_advanced.sqlスクリプトがコールされます。デフォルトでは、このスクリプトは$ORACLE_HOME/rdbms/adminディレクトリ内にあります。このスクリプトを実行する場合、既存の表領域の名前と、データベースに格納されるファイル・システムの名前を指定します。ファイル・システムのサイズは、表のサイズと同じです。たとえば、dbfs_ts表領域にファイル・システムdbfs_tabを作成する場合は、次のようにします。@/$ORACLE_HOME/rdbms/admin/dbfs_create_filesystem.sql dbfs_ts dbfs_tab
このスクリプトを実行した後、
DBMS_FSパッケージ内の他のプロシージャを使用して、ファイル・システムをマウント、アンマウントおよび破棄できます。 -
データベース・インスタンスに対して
DBMS_FS.MAKE_ORACLE_FSプロシージャを実行することは、オペレーティング・システムでルートとしてmkfsコマンドを実行することと同じです。 -
DBMS_FS.MAKE_ORACLE_FSプロシージャを実行するには、fsoptionsパラメータで指定した表領域がすでに存在している必要があります。既存の表領域を検索するには、DBA_TABLESPACESデータ・ディクショナリ・ビューを問い合せます。 -
ファイル・システムのサイズは、この表領域のサイズと同じです。
例
次の例は、OFSファイル・システムを作成する方法を示しています。
BEGIN DBMS_FS.MAKE_ORACLE_FS ( fstype => 'ofs', fsname => 'ofs_fs1', mount_options => 'TABLESPACE=ofs_fs1_tbspc'); END; /
71.3.3 MOUNT_ORACLE_FSプロシージャ
このプロシージャは、指定されたマウント・ポイントにOracle File Systemをマウントします。
構文
DBMS_FS.MOUNT_ORACLE_FS ( fstype IN VARCHAR2, fsname IN VARCHAR2, mount_point IN VARCHAR2, mount_options IN VARCHAR2);
パラメータ
表71-4 MOUNT_ORACLE_FSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ファイル・システム・タイプ。有効なオプションは次のとおりです。
|
|
|
ファイル・システムの名前。英数字を使用して、256文字以下の文字列を入力します。 |
|
|
ファイル・システムをマウントするローカル・ディレクトリ。このディレクトリはすでに存在している必要があります。絶対パスを入力します。作成できるマウント・ポイントの最大数は、64です。 |
|
|
表71-5に示されたカンマ区切りのマウント・オプション。 |
使用上のノート
表71-5 MOUNT_ORACLE_FSプロシージャでサポートされているマウント・オプション
| マウント・オプション | 使用方法の説明 |
|---|---|
default_permissions |
権限チェックを有効にし、ファイル・モードに基づいてアクセスを制限します。このオプションは、allow_otherマウント・オプションとともに使用できます。 |
allow_other
|
マウントを実行したオペレーティング・システム・ユーザー以外のユーザーがファイルにアクセスできるようにします。これは、ファイル・アクセスの決定時に権限チェックと組み合せて使用されます。Linuxでは、このオプションを使用する場合、/etc/fuse.conf構成ファイルにuser_allow_otherパラメータを設定する必要があります。
|
max_read
|
読取り操作の最大サイズ。デフォルトでは、最大サイズは設定されません。 |
max_write
|
1つのリクエストにおける最大書込みサイズ。デフォルトは128KBです。 |
direct_io |
オペレーティング・システム・カーネルに対してファイル・システム・キャッシュを使用しないように指示します。 |
nopersist
|
マウント・オプションを次回のインスタンス起動で使用するために格納しません。 |
persist |
マウント・エントリを、以降のインスタンス起動時に再度自動マウントされるように永続的に格納します。 |
ro |
読取り専用モードでファイル・システムをマウントします。ファイルを変更することはできません。 |
rw |
ファイル・システムを読取り/書込みとしてマウントします。これはデフォルトです。 |
nosuid
|
ファイル・システムに設定ユーザーIDファイルを含められないことを指定します。 |
suid |
ファイル・システムに設定ユーザーIDファイルを含められることを指定します。これはデフォルトです。 |
使用上のノート
-
このプロシージャは、ローカル・データベース・インスタンスでファイル・システムを参照可能にします。
-
ファイル・システム・タイプの詳細は、「MAKE_ORACLE_FSプロシージャ」の
fstypeに関する項を参照してください。 -
現在マウントされているファイル・システムの情報を取得するには、
V$OFSMOUNT動的ビューを問い合せます。 -
Oracleデータベース・インスタンスが実行されているローカル・コンピュータ・ノードで、
DBMS_FS.MAKE_ORACLE_FSを使用してすでに作成されたファイル・システムに対してDBMS_FS.MOUNT_ORACLE_FSプロシージャを実行します。Oracle Database外部で作成されたファイル・システムに対してこのプロシージャを実行することはできません。
例
BEGIN DBMS_FS.MOUNT_ORACLE_FS ( fstype => 'dbfs', fsname => 'dbfs_fs1', mount_point => '/oracle/dbfs/testfs', mount_options => 'default_permissions, allow_other, persist'); END;
71.3.4 UNMOUNT_ORACLE_FSプロシージャ
このプロシージャは、指定されたマウント・ポイントのOracle File Systemをアンマウントします。
構文
DBMS_FS.UNMOUNT_ORACLE_FS ( fsname IN VARCHAR2, mount_point IN VARCHAR2, unmount_options IN VARCHAR2);
表71-6 UNMOUNT_ORACLE_FSプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
ファイル・システムの名前。 |
|
|
ファイル・システムがマウントされたローカル・ディレクトリ。絶対パスを入力します。 |
|
|
オプションで、 この設定を省略した場合、ビジー状態のファイル・システムをアンマウントしようとすると、 |
使用上のノート
-
ファイル・システムをアンマウントする前に、このファイル・システムを使用するすべてのアプリケーションが停止していることを確認してください。また、マウント中のファイル・システムを参照するプロセスがないことも確認してください。
-
現在マウントされているファイル・システムの情報を取得するには、
V$OFSMOUNT動的ビューを問い合せます。 -
ファイル・システム・タイプの詳細は、「MAKE_ORACLE_FSプロシージャ」の
fstypeに関する項を参照してください。 -
Oracleインスタンスが通常の即時モードで停止された場合、マウントされているすべてのファイル・システムは自動的にアンマウントされます。
-
mountコマンドのpersistオプションを使用してファイル・システムがオペレーティング・システム・レベルからマウントされた場合、そのファイル・システムはデータベース・インスタンスの起動時に自動的に再度マウントされます。DBMS_FS.UNMOUNT_ORACLE_FSを実行してこのファイル・システムがアンマウントされた場合、ファイル・システムはデータベース・インスタンスの起動時に自動的にマウントされません。 -
SHUTDOWN ABORTを実行した後も、ファイル・システムにマウントされているがアクセスできないと示される場合があります。この場合、オペレーティング・システム・レベルでunmountコマンド(Linuxシステムではfusermountプロシージャ)をコールして、手動でシステムをアンマウントする必要があります。 -
Oracle File Systemのローカル・マウント・ポイントをリモート・システムを指すようにエクスポートし、次にオペレーティング・システムの
mountコマンドを使用してリモート・システムからファイル・システムのNFSマウントを実行できます。DBMS_FS.MOUNT_ORACLE_FSプロシージャは、他のローカル・ファイル・システムで使用されるmountコマンドに類似しています。 -
セキュリティを強化するため、アクセス制御リスト(ACL)およびKerberosを使用して、機密性の高いデータへのアクセスを制御することをお薦めします。
-
オペレーティング・システム・レベルからファイル・システムをアンマウントしないでください。これを行うと、Oracle Databaseで作成されたファイル・システム内部表が一貫性のない状態のまま残ることがあります。
例
BEGIN DBMS_FS.UNMOUNT_ORACLE_FS ( fsname => 'dbfs_fs1', mount_point => '/oracle/dbfs/testfs', mount_options => 'force'); END;