18.4 DBFSファイル・システムへのアクセス
この項では、DBFSファイル・システムへのアクセスに使用できる様々なインタフェースについて説明します。
- DBFSクライアントの前提条件
DBFSファイル・システム・クライアント側アプリケーション(dbfs_client
という名前)は、DBFSにアクセスする各システムで実行されます。 - DBFSクライアント上の複数のマウント・ポイント
Oracle Databaseリリース21c以降、単一のデータベース・ファイル・システム(DBFS)クライアント・インスタンスは、異なるデータベース・インスタンス間で異なるデータベース・ユーザーが所有する複数のDBFSをマウントできます。 - Manager File System
Manager File Systemは、OSユーザーとDBFSクライアント間のインタフェースです。OSユーザーは、制限されたファイル・システム・コマンドを使用してクライアントと通信できます。 - DBFSクライアント・コマンドライン・インタフェースの操作
DBFSクライアント・コマンドライン・インタフェースを使用すると、DBFSに格納されているファイルに直接アクセスできます。 - DBFSマウント・インタフェース(LinuxおよびSolarisのみ)
LinuxおよびSolarisのdbfs_client
を使用してDBFSをマウントできます。 - ファイル・システム・セキュリティ・モデル
データベースはDBFSのセキュリティを管理します。オペレーティング・システムのセキュリティ・モデルは使用しません。 - DBFSへのHTTP、WebDAVおよびFTPアクセス
インターネットを介したDBFSへのHTTP、WebDAVおよびFTPアクセスを可能にするコンポーネントは、様々なXML DBサーバー・プロトコルを使用します。
親トピック: DBFSの使用
18.4.1 DBFSクライアントの前提条件
DBFSファイル・システム・クライアント側アプリケーション(dbfs_client
という名前)は、DBFSにアクセスする各システムで実行されます。
DBFSファイル・システム・クライアントdbfs_client
の前提条件は、次のとおりです。
-
dbfs_
client
ホストに、Oracleクライアント・ライブラリがインストールされている必要があります。 -
dbfs_client
は、DBFSコマンド・インタフェースを使用して、直接のRDBMSクライアントとしてLinux、Linux.X64、Solaris、Solaris64、AIX、HPUXおよびWindowsプラットフォームで使用できます。 -
dbfs_client
は、マウント・クライアントとしてLinux、Linux.X64およびSolaris 11プラットフォームでのみ使用できます。dbfs_client
ホストには、FUSE
LinuxパッケージまたはSolarislibfuse
パッケージがインストールされている必要があります。関連項目:
詳細は、「DBFSマウント・インタフェース(LinuxおよびSolarisのみ)」を参照してください。
DBFSクライアント・コマンドライン・インタフェースを使用すると、ネットワーク上のホストからDBFSファイルシステムにファイルをコピーしたりDBFSファイルシステムからホストにファイルをコピーするコマンドなど、事前定義された多くのコマンドを実行できます。
コマンドライン・インタフェースのパフォーマンスは、DBFSクライアント・マウント・インタフェースよりも少し上回ります。これは、ファイル・システムにマウントせずに、ユーザー・スペースのファイル・システムを迂回するためです。ただし、これはアプリケーションに対して透過的ではありません。
DBFSクライアント・マウント・インタフェースを使用すると、ファイル・システム・マウント・ポイントを介してDBFSをマウントできるため、一般的なファイル・システム操作により、DBFSに格納されているファイルに透過的にアクセスできます。
DBFSコマンドを実行するには、DBFSクライアントに対して--command
を指定します。
親トピック: DBFSファイル・システムへのアクセス
18.4.2 DBFSクライアント上の複数のマウント・ポイント
Oracle Databaseリリース21c以降、単一のデータベース・ファイル・システム(DBFS)クライアント・インスタンスは、異なるデータベース・インスタンス間で異なるデータベース・ユーザーが所有する複数のDBFSをマウントできます。
複数のデータベース・ユーザーへのアクセスを有効にするには、DBFSクライアントで複数のマウント・ポイントを管理する必要があります。各マウント・ポイントを使用すると、1人のデータベース・ユーザーがDBFSにアクセスできます。
DBFSクライアントが単一のマウント・ポイントを介して単一のデータベース・ユーザーにアクセスできる場合、単一ユーザー・マウント・バージョン(SUMV)モードと呼ばれ、DBFSクライアントが複数のマウント・ポイントを介して複数のデータベース・ユーザーにアクセスできる場合、マルチ・ユーザー・マウント・バージョン(MUMV)モードと呼ばれます。
DBFSクライアントは、次のいずれかのモードで起動できます。ただし、いずれかのモードでクライアントを起動した後は、クライアントを再起動せずに他のモードに切り替えることはできません。DBFSクライアントがMUMVモードで起動されると、クライアントはOSユーザーとDBFSクライアントの間のインタフェースとして機能するManager File System (MFS)という疑似ファイル・システムを作成します。
MUMVモードは、複数のコンテナ・データベースにDBFSをマウントできる変数、または単一のコンテナ・データベースの異なるプラガブル・データベースに属するDBFSのみをマウントできる変数の2つで起動できます。複数のデータベースからDBFSをマウントするMUMV変数は、クロスデータベース変数と呼ばれ、単一のコンテナ・データベースの複数のPDBのDBFSをCDB変数としてマウントするMUMV変数と呼ばれます。両方の変数は、起動時にMFSマウント・ポイントのみを指定することで開始されます。DBFSマウントを追加するには、MFSマウント・ポイントに拡張属性を設定します。
- CDB変数のMUMV
マルチ・ユーザー・マウント・バージョン(MUMV)モードのCDB変数は、単一のコンテナ・データベース(CDB)の異なるプラガブル・データベース(PDB)に属するデータベース・ファイル・システム(DBFS)のマウント・ポイントを管理します。 - クロス・データベース変数のMUMV
マルチユーザー・マウント・バージョン(MUMV)モードのクロス・データベース変数は、複数のデータベースのデータベース・ファイル・システム(DBFS)のマウント・ポイントを管理します。
親トピック: DBFSファイル・システムへのアクセス
18.4.2.1 CDB変数のMUMV
マルチ・ユーザー・マウント・バージョン(MUMV)モードのCDB変数は、単一コンテナ・データベース(CDB)の異なるプラガブル・データベース(PDB)に属するデータベース・ファイル・システム(DBFS)のマウント・ポイントを管理します。
MUMVモードのCDB変数を操作する場合は、次の点に注意してください。
- 単一コンテナの複数のDBFSマウント・ポイントを管理するDBFSクライアントには、
CDB$ROOT
のCDBの共通ユーザーに接続するための資格証明を指定する必要があります。マウントするDBFSは、PDBのこの共通ユーザーに作成またはエクスポートする必要があります。 - 指定されたコンテナ内のすべてのPDBのDBFSにマウント・ポイントを指定する必要があります。DBFSクライアントは、共通ユーザー資格証明を使用して
CDB$ROOT
に接続し、必要なPDBに切り替えて、指定されたマウント・ポイントを介してDBFSにアクセスします。
親トピック: DBFSクライアント上の複数のマウント・ポイント
18.4.2.2 クロス・データベース変数のMUMV
マルチユーザー・マウント・バージョン(MUMV)モードのクロスデータベース変数は、複数のデータベースのデータベース・ファイル・システム(DBFS)のマウント・ポイントを管理します。
MUMVモードのクロスデータベース変数を使用する場合は、次の点に注意してください。
- DBFSクライアントには、各DBFSマウント・ポイントを管理する各データベースのデータベース・ユーザーの資格証明が必要です。
- DBFSマウント・ポイントはデータベース・ユーザーごとに指定する必要があり、DBFSはそれぞれのスキーマに作成する必要があります。
親トピック: DBFSクライアント上の複数のマウント・ポイント
18.4.3 Manager File System
Manager File Systemは、OSユーザーとDBFSクライアント間のインタフェースです。OSユーザーは、制限されたファイル・システム・コマンドを使用してクライアントと通信できます。
Manager File System (MFS)は、マルチユーザー・マウント・バージョン(MUMV)モードでのみ有効です。DBFSクライアントによって管理される様々なマウント・ポイントをファイルとして扱います。MFSは、OSユーザーが複数のマウント・ポイントを管理するための簡単なインタフェースを提供します。
MFSはディスク上にファイルを作成または格納しません。MFSマウント・ポイントでは、限定されたファイル・システム操作のみが許可されます。
OSユーザーはMFSの下にファイルまたはディレクトリを作成できません。
- DBFSマウント・ポイントの追加
DBFSマウント・ポイントを追加するには、MFSマウント・ポイントに拡張属性を指定します。 - DBFSマウント・ポイントのリスト
各DBFSマウント・ポイントには、MFSディレクトリ/mnt/mfs
に対応するファイルがあります。そのため、標準のLinuxコマンドls
を使用してDBFSマウント・ポイントをリストできます。 - DBFSマウント・ポイントのアンマウント
DBFSマウント・ポイントをアンマウントする手順は、MUMVモードのCDB変数とクロス・データベース変数の両方で同じです。 - DBFSクライアントの構成パラメータ
シングル・ユーザー・マウント・バージョン(SUMV)モードのDBFSクライアントのすべての構成パラメータは、起動時にマルチ・ユーザー・マウント・バージョン(MUMV)モードのDBFSクライアントでも使用できます。 - DBFSクライアントの診断
Oracle Databaseリリース21c以降、DBFSクライアントは、構成された自動診断リポジトリ(ADR)ベースのクライアント・トレース・ディレクトリにアラート・ファイルを書き込みます。
親トピック: DBFSファイル・システムへのアクセス
18.4.3.1 DBFSマウント・ポイントの追加
DBFSマウント・ポイントを追加するには、MFSマウント・ポイントに拡張属性を指定します。
ノート:
MUMVモードは、-o wallet
オプションを指定しない場合でもウォレット・モードでのみ機能します。DBFSコマンドライン・インタフェースでパスワードを指定する方法はないため、DBFSクライアントに必要なすべての資格証明をウォレットに追加する必要があります。
MUMVモードのCDB変数を使用している場合は、/mnt/mfs
ディレクトリで拡張属性を設定して、CDB内の各PDBのマウント・ポイントを追加します。ここで、/mnt/mfs
はMFSマウント・ポイントです。
CDB変数でのマウント・ポイントの定義
MUMVモードのCDB変数でマウント・ポイントを定義するには、次のステップを実行します。
- DBFSクライアントを起動して
CDB$ROOT
の共通ユーザーに接続し、MFSマウント・ポイントとウォレット別名を起動時に指定します。% dbfs_client -o mfs_mount=/mnt/mfs -o cdb=inst_cdb
ここで、
/mnt/mfs
はMFSマウント・ポイントです。任意の空のディレクトリを指定できます。inst_cdb
は、CDB$ROOT
の共通ユーザーに接続できるウォレットに挿入される別名です。 - 次のように拡張属性を設定してDBFSマウント・ポイントを追加します。
% setfattr -n mount_pdb -v " pdb1 /mnt/mp1" /mnt/mfs/
説明:
mount_pdb
は、DBFSマウント・ポイントをCDB変数にマウントするための拡張属性の名前ですpdb1
は、inst_cdb
が指す特定のCDB内のPDBの名前です。/mnt/mp1
は、PDBpdb1
の共通ユーザーに存在するDBFSをマウントするマウント・ディレクトリです。/mnt/mfs
は、dbfs_client
コマンドの起動時に使用されたMFSマウント・ディレクトリです。
- (オプション)次のように異なる引数を使用して同じ拡張属性を設定し、DBFSマウント・ポイントを追加します。
% setfattr -n mount_pdb -v " pdb2 /mnt/mp2" /mnt/mfs % setfattr -n mount_pdb -v " pdb3 /mnt/mp3" /mnt/mfs
ここで、
pdb2
およびpdb3
はコンテナ内のPDBの実際の名前です。
クロスデータベース変数でのマウント・ポイントの定義
MUMVモードのクロスデータベース変数でマウント・ポイントを定義するには、次のステップを実行します。
- 次の方法で起動時にMFSマウント・ポイントを指定して、MUMVクロスデータベース変数でDBFSクライアントを起動します。
% dbfs_client -o mfs_mount=/mnt/mfs
ここで、
/mnt/mfs
はMFSマウント・ポイントです。任意の空のディレクトリを選択できます。 - 次のように拡張属性を設定してDBFSマウント・ポイントを追加します。
% setfattr -n mount -v " inst1 /mnt/mp1" /mnt/mfs/
説明
mount
は、DBFSマウントをクロス・データベース変数にマウントするための拡張属性の名前ですinst1
は、DBFSをマウントする必要があるDBユーザーに接続するウォレット別名です。/mnt/mp1
は、DBFSをマウントするマウント・ディレクトリです。/mnt/mfs
は、dbfs_client
コマンドの起動時に使用されたMFSマウント・ディレクトリです。
- (オプション)次のように異なる引数を使用して同じ拡張属性を設定し、DBFSマウント・ポイントを追加します。
% setfattr -n mount -v "inst2 /mnt/mp2" /mnt/mfs/ % setfattr -n mount -v "inst3 /mnt/mp3" /mnt/mfs/
ここで、
inst2
およびinst3
はウォレットに存在する必要がある別名です。DBFSクライアントは、データベース内のユーザーに接続するための資格証明を持っている必要があり、スキーマ内に少なくとも1つのDBFSが作成されている必要があります。
親トピック: Manager File System
18.4.3.2 DBFSマウント・ポイントのリスト
各DBFSマウント・ポイントには、MFSディレクトリ/mnt/mfs
の下に対応するファイルがあります。そのため、標準のLinuxコマンドls
を使用してDBFSマウント・ポイントをリストできます。
% ls -l /mnt/mfs
/mnt/mfs
ディレクトリの下の各ファイルの内容には、対応するマウント・ポイントで使用されるパラメータの詳細が表示されます。
MFSは読取り専用ファイル・システムです。DBFSクライアント以外のアプリケーションを使用して、ファイルまたはディレクトリを作成することはできません。MFSの下にファイルまたはディレクトリとして表示されるものはすべてDBFSクライアントによって定義されます。
親トピック: Manager File System
18.4.3.3 DBFSマウント・ポイントのアンマウント
DBFSマウント・ポイントをアンマウントする手順は、MUMVモードのCDB変数とクロスデータベース変数の両方で同じです。
FUSE実行可能ファイルfusermount
を使用してマウント・ポイントをアンマウントする必要があります。DBFSマウント・ポイントを削除する方法を次のコード・スニペットに示します。
% fusermount –u /mnt/mp1
親トピック: Manager File System
18.4.3.4 DBFSクライアントの構成パラメータ
シングル・ユーザー・マウント・バージョン(SUMV)モードのDBFSクライアントのすべての構成パラメータは、起動時にマルチ・ユーザー・マウント・バージョン(MUMV)モードのDBFSクライアントでも使用できます。
MUMVモードでDBFSクライアントに渡されるすべてのコマンドライン・オプションは、後で追加できるすべてのDBFSマウント・ポイントによって継承されます。たとえば、次のdbfs_client
コマンドの場合、/mnt/mp1
マウント・ポイントにマウントされているDBFSは、spool_max
値を32として、max_threads value
を16として自動的に継承します。
% dbfs_client -o mfs_mount=/mnt/mfs -o spool_max=32 -o max_threads=16
% setfattr -n mount -v "inst1 /mnt/mp1" /mnt/mfs
DBFSクライアントとは異なる方法でマウント・ポイントを構成する場合は、次のようにsetfattr
コマンドを使用します。
% sefattr -n mount -v "inst2 /mnt/mp2 -o trace_file=/tmp/clnt.trc,trace_level=1" /mnt/mfs
前述のコマンドでは、/mnt/mp2
マウント・ポイントでDBFSクライアントのトレースのみが有効になりますが、起動時に指定されたspool_max
およびmax_threads
引数は継承されません。setfattr
コマンドで指定された値は、起動時に指定された値を上書きします。
親トピック: Manager File System
18.4.3.5 DBFSクライアントの診断機能
Oracle Databaseリリース21c以降、DBFSクライアントは、構成された自動診断リポジトリ(ADR)ベースのクライアント・トレース・ディレクトリにアラート・ファイルを書き込みます。
アラート・ファイルはDBFSクライアントのすべてのインスタンスに対して生成され、ADRベースのclients/DBFS/DBFS/trace
ディレクトリにあります。ファイル名の形式は、dbfs_alert_<client_pid>.trc
です。
アラート・ファイルがトレース・ファイルと異なります。常に有効で、DBFSクライアントの重要なアクティビティのみがアラート・ファイルに書き込まれます。
ノート:
diagnostic_dest
初期化パラメータは、自動診断リポジトリの場所を設定します。依存性サイクルが生成され、システムがハングアップする可能性があるため、dbfs_client
またはOracle File Server (OFS)をファイル・システム・サーバーとして使用する場合は、このパラメータがdbfs_client
またはOFS内のディレクトリを指していないことを確認してください。
親トピック: Manager File System
18.4.4 DBFSクライアント・コマンドライン・インタフェースの操作
DBFSクライアント・コマンドライン・インタフェースを使用すると、DBFSに格納されているファイルに直接アクセスできます。
- DBFSクライアント・コマンドライン・インタフェースについて
DBFSクライアント・コマンドライン・インタフェースを使用すると、ネットワーク上の任意のホストからDBFSファイルシステムにファイルをコピーしたりDBFSファイルシステムからファイルをコピーするなど、事前定義された様々なコマンドを実行できます。 - ディレクトリのリスト
ls
コマンドを使用して、ディレクトリの内容をリストできます。 - ファイルおよびディレクトリのコピー
cp
コマンドを使用して、ファイルまたはディレクトリをソースの場所から宛先の場所にコピーできます。 - ファイルおよびディレクトリの削除
rm
コマンドを使用して、ファイルまたはディレクトリを削除できます。
親トピック: DBFSファイル・システムへのアクセス
18.4.4.1 DBFSクライアント・コマンドライン・インタフェースについて
DBFSクライアント・コマンドライン・インタフェースを使用すると、ネットワーク上のホストからDBFSファイルシステムにファイルをコピーしたりDBFSファイルシステムからホストにファイルをコピーするコマンドなど、事前定義された多くのコマンドを実行できます。
コマンドライン・インタフェースのパフォーマンスは、DBFSクライアント・マウント・インタフェースよりも少し上回ります。これは、ファイル・システムにマウントせずに、ユーザー・スペースのファイル・システムを迂回するためです。ただし、これはアプリケーションに対して透過的ではありません。
DBFSクライアント・マウント・インタフェースを使用すると、ファイル・システム・マウント・ポイントを介してDBFSをマウントできるため、一般的なファイル・システム操作により、DBFSに格納されているファイルに透過的にアクセスできます。
DBFSコマンドを実行するには、DBFSクライアントに対して--command
を指定します。
コマンドライン・インタフェースのすべてのDBFSコンテンツ・ストア・パスの前には、dbfs:
を付ける必要があります。dbfs:/staging_area/file1
がその例です。指定するすべてのデータベース・パス名は、絶対パスである必要があります。
dbfs_client db_user@db_server--command command [switches] [arguments]
説明:
command
は、ls、cp、mkdir
、rm
などの実行可能なコマンドです。switches
は、コマンドごとに固有です。arguments
は、ファイル名またはディレクトリ名で、コマンドごとに固有です。
dbfs_clientは、失敗するとゼロ以外の値を戻します。
18.4.4.2 ディレクトリのリスト
ls
コマンドを使用して、ディレクトリのコンテンツをリストできます。
次の構文を使用します。
dbfs_client db_user@db_server --command ls [switches] target
ここで
-
target
は、リストされたディレクトリです。 -
switches
は、次の組合せのいずれかになります。-
-
a
は、すべてのファイル('.
'や'..
'を含む)を示します。 -
-
l
は、長いリスト形式(各ファイルの名前、ファイル・タイプ、権限およびサイズ)を示します。 -
-
R
は、サブディレクトリを再帰的にリストします。
-
たとえば:
$ dbfs_client ETLUser@DBConnectString --command ls dbfs:/staging_area/dir1
または
$ dbfs_client ETLUser@DBConnectString --command ls -l -a -R dbfs:/staging_area/dir1
18.4.4.3 ファイルおよびディレクトリのコピー
cp
コマンドを使用して、ファイルまたはディレクトリをソースの場所から宛先の場所にコピーできます。
cp
コマンドは、ディレクトリの再帰的コピーもサポートしています。
dbfs_client db_user@db_server --command cp [switches]source
destination
説明:
-
source
は、ソースの場所です。 -
destination
は、宛先の場所です。 -
switches
は-R
または-r
のいずれかで、これらは、すべてのソース・コンテンツを宛先ディレクトリに再帰的にコピーするためのオプションです。
次の例では、ローカル・ディレクトリ01-01-10-dump
のコンテンツをDBFS内のディレクトリに再帰的にコピーします。
$ dbfs_client ETLUser@DBConnectString --command cp -R 01-01-10-dump dbfs:/staging_area/
次の例では、ファイルhello.txt
をDBFSからローカル・ファイルHi.txt
にコピーします。
$ dbfs_client ETLUser@DBConnectString --command cp dbfs:/staging_area/hello.txt Hi.txt
18.4.4.4 ファイルおよびディレクトリの削除
コマンドrm
を使用して、ファイルまたはディレクトリを削除できます。
rm
コマンドは、ディレクトリの再帰的削除もサポートしています。
dbfs_client db_user@db_server --command rm [switches] target
説明:
-
target
は、リストされたディレクトリです。 -
switches
は-R
または-r
のいずれかで、これらは、すべてのコンテンツを再帰的に削除するためのオプションです。
たとえば:
$ dbfs_client ETLUser@DBConnectString --command rm dbfs:/staging_area/srcdir/hello.txt
または
$ dbfs_client ETLUser@DBConnectString --command rm -R dbfs:/staging_area/dir1
18.4.5 DBFSマウント・インタフェース(LinuxおよびSolarisのみ)
dbfs_client
を使用してDBFSをマウントできるのは、LinuxおよびSolarisの場合のみです。
LinuxプラットフォームとSolarisプラットフォームでは要件が異なります。
- Solaris 11 SRU7以降でのFUSEのインストール
FUSE
をインストールする場合は、Solaris 11 SRU7以降でdbfs_client
をマウント・クライアントとして使用できます。 - Solaris固有の権限
Solarisの場合、DBFSファイルシステムでマウントおよびアンマウント操作を実行するには、Solarisの権限PRIV_SYS_MOUNT
が必要です。 - SolarisおよびLinuxのマウント・コマンドについて
SolarisおよびLinuxのdbfs_client
マウント・コマンドでは、特定の構文を使用します。 - ウォレットを使用したファイル・システムのマウント
様々な環境変数を構成した後、ウォレットを使用してファイル・システムをマウントできます。 - コマンド・プロンプトでパスワードを使用したファイル・システムのマウント
dbfs_client
を使用してファイル・システムをマウントするには、コマンド・プロンプトでパスワードを入力する必要があります。 - ファイル・システムのアンマウント
Linuxでは、fusermount
を実行してファイル・システムをアンマウントできます。 - Linuxのfstabユーティリティを使用したDBFSのマウント
Linuxでは、dbfs_client
を使用してDBFSファイルシステムをマウントするようにfstab
ユーティリティを構成できます。 - Solaris用のvfstabユーティリティを使用したDBFSのマウント
Solarisでは、通常、ファイル・システムはvfstab
ユーティリティを使用して構成されます。 - マウントされたファイル・システムに関する制限事項
DBFSでは、ほとんどのファイル・システム操作がサポートされますが、例外があります。 - DBFSマウント・ポイントに格納されるファイル・タイプに関する制限事項
DBFSファイルに対するファイル操作の結果、DBFSにライトバックされるデータが増える可能性があるシナリオでは、DBFSを回避する必要があります。
親トピック: DBFSファイル・システムへのアクセス
18.4.5.1 Solaris 11 SRU7以降でのFUSEのインストール
FUSE
をインストールする場合、Solaris 11 SRU7以降ではdbfs_client
をマウント・クライアントとして使用できます
Solaris 11 SRU7以降でdbfs_client
をマウント・クライアントとして使用するには、FUSE
をインストールします。
-
次のパッケージを
root
として実行します。pkg install libfuse
18.4.5.2 Solaris固有の権限
Solarisの場合、DBFSファイルシステムでマウントおよびアンマウント操作を実行するには、Solarisの権限PRIV_SYS_MOUNT
が必要です。
ユーザーのSolarisの権限PRIV_SYS_MOUNT
を付与します。
-
/etc/user_attr
を編集します。 -
次のようにユーザー・エントリを追加または変更します(ユーザーがOracleであることを前提としています)。
oracle::::type=normal;project=group.dba;defaultpriv=basic,priv_sys_mount;;auth s=solaris.smf.*
18.4.5.3 SolarisおよびLinux用のマウント・コマンドについて
SolarisおよびLinux用のdbfs_client
マウント・コマンドでは、特定の構文を使用します。
構文:
dbfs_client db_user@db_server [-o option_1 -o option_2 ...] mount_point
必須のパラメータは次のとおりです。
-
db_user
は、DBFSコンテンツ・ストア・ファイル・システムを所有するデータベース・ユーザーの名前です。 -
db_server
は、hrdb_host:1521/hrservice
やtnsnames.ora
で指定された別名など、Oracle Databaseサーバーへの有効な接続文字列です。 -
mount_point
は、データベース・ファイル・システムがマウントされるパスです。データベース・ユーザーによって所有されるすべてのファイル・システムはマウント・ポイントで表示されることに注意してください。
オプションは次のとおりです。
-
direct_io
: OSページ・キャッシュを使用しないため、大きいファイルの場合にパフォーマンスが向上します。このオプションでは、ファイル・システムのプログラムを実行できません。DBFSがETLステージング領域として使用される場合は、このオプションをお薦めします。 -
wallet
: DBFSクライアントをバックグラウンドで実行します。証明書を取得できるようにウォレットを設定する必要があります。 -
failover
: データを損失せずに残存のデータベース・インスタンスにDBFSクライアントをフェイルオーバーします。小さいファイルでは特に、書込みでパフォーマンスのコストが予想されます。 -
allow_root
: rootユーザーによるファイルシステムへのアクセスを許可します。/etc/fuse.conf
構成ファイルにuser_allow_other
パラメータを設定する必要があります。 -
allow_other
: 他のユーザーによるファイルシステムへのアクセスを許可します。/etc/fuse.conf
構成ファイルにuser_allow_other
パラメータを設定する必要があります。 -
rw
: 読取り/書込みとしてファイルシステムをマウントします。これがデフォルトの設定です。 -
ro
: 読取り専用としてファイルシステムをマウントします。ファイルを変更することはできません。 -
trace_level=
n
では、トレース・レベルを設します。トレース・レベルは次のとおりです。-
1 DEBUG
-
2 INFO
-
3 WARNING
-
4 ERROR
: デフォルトのトレース・レベルです。エラーが発生した場合のみ診断情報を出力します。このトレース・レベルは常に有効にすることをお薦めします。 -
5 CRITICAL
-
-
trace_file=STR
: トレース・ログ・ファイルを指定します。STR
はfile_name
とsyslog
のどちらでもかまいません。 -
trace_size=
trcfile_size
: トレース・ファイルのサイズをMB単位で指定します。デフォルトでは、dbfs_client
では、2つの10MBファイル間でトレース出力をローテーションします。trace_size=
に対して0
を指定すると、トレース・ファイルの最大サイズが無制限に設定されます。
18.4.5.4 ウォレットを使用したファイル・システムのマウント
様々な環境変数を構成した後、ウォレットを使用してファイル・システムをマウントできます。
ウォレットを使用してファイル・システムをマウントする前に、最初にLD_LIBRARY_PATH
、ORACLE_HOME
環境変数およびsqlnet.ora
を正しく構成する必要があります。
18.4.5.5 コマンド・プロンプトでパスワードを使用したファイル・システムのマウント
dbfs_client
を使用してファイル・システムをマウントするには、コマンド・プロンプトでパスワードを入力する必要があります。
-
コマンド・プロンプトで次のコマンドを実行し、パスワードを入力します。
$ dbfs_client ETLUser@DBConnectString /mnt/dbfs password: xxxxxxx
コマンド・プロンプトでパスワードを指定すると、
dbfs_client
がフォアグラウンドで実行されます。
18.4.5.6 ファイル・システムのアンマウント
Linuxの場合、fusermount
を実行して、ファイル・システムをアンマウントできます。
fusermount
をLinuxで実行するには、次を実行します。
-
次のコマンドを実行します。
$ fusermount -u <
mount point
>
Solarisの場合、umount
を実行して、ファイル・システムをアンマウントできます。
-
次のコマンドを実行します。
$ umount -u <
mount point
>
18.4.5.7 Linux用のfstabユーティリティを使用したDBFSのマウント
Linuxの場合、fstab
ユーティリティを構成し、dbfs_client
を使用してDBFSファイルシステムをマウントします。
/etc/fstab
でDBFSをマウントするには、Oracle Walletを認証に使用する必要があります。
18.4.5.9 マウントされたファイル・システムの制限事項
DBFSでは、一部を例外としてほとんどのファイル・システム操作をサポートしています。
例外は次のとおりです。
-
ioctl
-
範囲ロック(ファイル・ロックがサポートされています)
-
libaio
を使用した非同期I/O -
O_DIRECT
ファイル・オープン -
ハード・リンク
-
その他の特定のファイル・モード
メモリー・マップ・ファイルは、共有書込み可能モードを除いてサポートされます。パフォーマンス上の理由から、DBFSでは、ファイル・データまたはファイル・データ属性の読取りのたびにファイル・アクセス時間を更新することはありません。
ノート:
direct_io
オプションでマウントされたDBFSマウント・ファイル・システムからプログラムを実行しないでください。
Oracleでは、NFSまたはSambaを使用したDBFSファイル・システムのエクスポートはサポートしていません。
18.4.5.10 DBFSマウント・ポイントで格納されるファイルのタイプに関する制限事項
DBFSファイルに対するファイル操作の結果、DBFSにライトバックされるデータが増える可能性があるシナリオでは、DBFSを回避する必要があります。
次のシナリオは網羅したものではありませんが、DBFSとデータベースを相互に依存させる可能性があり、そのために回避する必要がある運用の例を示しています。
- サンプル・シナリオ1: DBFSは、DBFSをホストしている同じデータベースによって生成されたトレース・ファイルの宛先です。
たとえば、DBFSにトレース・ファイルを書き込む操作では、DBFSにライトバックされるトレース・データをさらに生成できます。
- サンプル・シナリオ2: データベース・レプリケーションの証跡ファイルはDBFS内にあり、DBFSはレプリケートされるSAMEデータベース内にあります。
たとえば: レプリケーション・プロセスによって証跡に書き込む操作では、REDOが生成されます。このREDOはレプリケーションにフィードバックされる可能性があります。
- サンプル・シナリオ3: DBFSは、同じデータベースのデータベース・ファイルの宛先です。
たとえば、データファイル、制御ファイル、REDOログ・ファイルはDBFSとデータベースを相互に依存させる可能性があります。
18.4.6 ファイル・システム・セキュリティ・モデル
データベースでは、DBFSでセキュリティを管理します。オペレーティング・システムのセキュリティ・モデルは使用しません。
- ファイル・システム・セキュリティ・モデルについて
DBFSは、ユーザーによって作成されたすべてのファイル・システムが、デフォルトでそのユーザー固有になるセキュリティ・モデルで機能します。 - 共有ルート・アクセスの有効化
ファイル・システムをマウントするオペレーティング・システム・ユーザーとして、allow_root
オプションを指定することで、ファイル・システムへのルート・アクセスを許可できます。 - 複数データベース・ユーザーのDBFSアクセスについて
DBFSでは、複数のユーザーがファイルシステムの状態のサブセットを共有できます。 - 複数のデータベース・ユーザー間でのDBFSアクセスの共有の確立
この項では、DBFSのアクセスを複数のデータベース・ユーザーと共有する方法について説明します。
親トピック: DBFSファイル・システムへのアクセス
18.4.6.1 ファイル・システムのセキュリティ・モデルについて
DBFSは、ユーザーによって作成されたすべてのファイル・システムが、デフォルトでそのユーザー固有になるセキュリティ・モデルで機能します。
このモデルを変更しないことをお薦めします。オペレーティング・システム・ユーザーとOracle Databaseユーザーは異なるため、複数のオペレーティング・システム・ユーザーを単一のDBFSファイルシステムにマウントすることはできません。これらのマウントは、マウント・ポイントおよび権限が異なる場合があります。たとえば、OS user1
はDBFSファイルシステムをREAD ONLY
としてマウントでき、OS user2
はREAD WRITE
としてマウントできます。ただし、どちらのユーザーも同じデータベース・ユーザーとしてファイルシステムにアクセスするため、Oracle Databaseでは、両方のユーザーを同じ権限を持つユーザーとして認識します。
データベース・ファイル・システムにアクセスするには、ファイル・システムの基礎となっている表の権限を持つデータベース・ユーザーとしてデータベースにログインする必要があります。データベース管理者は、ファイル・システムへのアクセス権をデータベース・ユーザーに付与します。データベース・ユーザーごとに、ファイル・システムに対して異なるREAD
権限またはUPDATE
権限を持つことができます。データベース管理者は、DBFSファイル・システムに格納されているすべてのファイルにアクセスできます。
各クライアント・コンピュータでは、DBFSマウント・ポイントへのアクセスは、ファイル・システムをマウントするオペレーティング・システム・ユーザーに制限されています。ただし、多数のユーザーが同一のDBFSファイル・システムを別々にマウントできるため、これによってDBFSファイル・システムにアクセス可能なユーザーの数が制限されることはありません。
DBFSでは、データベースの権限チェックのみが実行されます。Linuxでは、DBFSがファイル・システムがマウントされた場合に、オペレーティング・システムのファイル・レベルの権限チェックが実行されます。コマンド・インタフェースを使用した場合、またはPL/SQLインタフェースを直接使用した場合は、DBFSでこのチェックは実行されません。
親トピック: ファイル・システムのセキュリティ・モデル
18.4.6.2 共有ルート・アクセスの有効化
ファイル・システムをマウントしているオペレーティング・システム・ユーザーとしては、allow_root
オプションを指定することで、ファイル・システムへのrootアクセスを許可できます。
このオプションでは、例18-1に示されているように、/etc/fuse.conf
ファイルにuser_allow_other
フィールドを含める必要があります。
例18-1 他のユーザーのルート・アクセスの有効化
# Allow users to specify the 'allow_root' mount option. user_allow_other
親トピック: ファイル・システムのセキュリティ・モデル
18.4.6.3 複数データベース・ユーザーのDBFSアクセスについて
DBFSでは、複数のユーザーがファイルシステムの状態のサブセットを共有できます。
単一のファイルシステムに複数のデータベース・ユーザーがアクセスできます。たとえば、ファイルシステムを所有するデータベース・ユーザーが権限を付与されたユーザーで、そのユーザーの証明書を共有すると、セキュリティのリスクにさらされる危険があるとします。これを回避するために、DBFSでは、複数のデータベース・ユーザーがファイルシステムの状態のサブセットを共有できるようになっています。
DBFSコンテンツAPIによるDBFSの登録およびマウントは各ユーザー固有ですが、各ユーザーが利用する基礎となるファイルシステムおよび表はユーザー間で共有できます。これにより、個々のファイルシステムを個別にマウントでき、SQL/PLSQLまたはdbfs_client
のいずれかを使用して、異なるデータベース・ユーザーで使用できます。
親トピック: ファイル・システムのセキュリティ・モデル
18.4.6.4 複数のデータベース・ユーザー間でのDBFSアクセスの共有の確立
この項では、DBFSのアクセス権を複数のデータベース・ユーザーに共有する方法について学習します。
次の例では、ユーザーuser1
はファイルシステムを変更できますが、user2
はこれらの変更を参照することしかできません。user1
は、ファイルシステムを作成するデータベース・ユーザーで、user2
は、最終的にdbfs_client
を使用してファイルシステムのマウントとアクセスを行うデータベース・ユーザーです。user1
とuser2
は、どちらもDBFS_ROLE
権限を持ちます。
エクスポートと登録の組合せが完了した後、基礎となる表の使用に関しては両ユーザーは対等に動作します。exportFilesystem()
プロシージャは、スキーマ間で共有される同じデータへのアクセスに必要な権限の付与を管理します。user1
がexportFilesystem()
をコールした後、ファイルシステムのアクセス権をDBFS_ROLE
を持つすべてのユーザーに付与できます。別のロールをexportFilesystem
に指定できることに注意してください。
続いて、dbms_dbfs_sfs.registerFilesystem()
、dbms_dbfs_sfs.registerStore()
およびdmbs_dbfs_sfs.mountStore()
プロシージャ・コールを呼び出すことにより、基礎となる同じ記憶域を共有する新しいDBFSファイルシステムをuser2
がuser1_FS
ファイルシステムとして作成できます。
複数のデータベース・ユーザーがファイルシステムを共有している場合は、所有者(ここではuser1
)がファイルシステムを削除する前に、すべてのデータベース・ユーザーがそのファイルシステムに関連する各自の項目の登録を解除している必要があります。
root
としてDBFSを実行することは推奨されません。
親トピック: ファイル・システムのセキュリティ・モデル
18.4.7 DBFSへのHTTP、WebDAVおよびFTPアクセス
インターネットを介してDBFSへのHTTP、WebDAVおよびFTPアクセスを可能にするコンポーネントでは、様々なXML DBサーバーのプロトコルを使用します。
- XDBを介したDBFSへのインターネット・アクセス
DBFS認証を持つデータベース・ユーザーに対して、階層ファイルシステムに類似した登録済およびマウント済DBFSストアのビューを提供するために、ストアはパス/dbfs
の下に表示されます。 - Web Distributed Authoring and Versioning (WebDAV) Access
WebDAVは、ユーザーにインターネット上のリポジトリへのファイルシステムのようなインタフェースを提供するIETF標準プロトコルです。 - DBFSへのFTPアクセス
DBFSへのFTPアクセスでは、ほとんどのUnixベースのディストリビューションにある標準FTPクライアントが使用されます。FTPは、制御およびデータ接続方式が異なるクライアント・サーバー・アーキテクチャ上に構築されるファイル転送メカニズムです。 - DBFSへのHTTPアクセス
ユーザーは、HTTP/HTTPSプロトコルを介して読取り専用でアクセスできます。
親トピック: DBFSファイル・システムへのアクセス
18.4.7.1 XDBを介したDBFSへのインターネット・アクセス
DBFS認証を持つデータベース・ユーザーに対して、階層ファイルシステムに類似した登録済およびマウント済DBFSストアのビューを提供するために、ストアはパス/dbfs
の下に表示されます。
/dbfs
フォルダは仮想フォルダです。これは、サブツリー内のリソースがXDBリポジトリではなくDBFSストアに格納されるためです。XDBは、ルート・パス名/
に対して(起動者権限を使用して) dbms_dbfs_content.list()
コマンドを発行し、/dbfs
フォルダ内のサブフォルダとしてストア・アクセス・ポイントのリストを受け取ります。このリストは、dbms_dbfs_content.mountStore()
に渡されるstore_mount
パラメータと同等です。FTPユーザーとWebDAVユーザーはこれらのストアに移動できます。一方、HTTPユーザーとHTTPSユーザーはブラウザからURLにアクセスします。
リポジトリ・イベント、リソース構成およびACLなどの、XDBリポジトリによって実装される機能は、/dbfs
フォルダでは使用できません。
DBFSストアの作成、登録、登録解除、マウント、アンマウントおよび削除に関するガイドラインの詳細は、「DBFSコンテンツAPI」を参照してください
親トピック: DBFSへのHTTP、WebDAVおよびFTPアクセス
18.4.7.2 Web Distributed Authoring and Versioning (WebDAV)アクセス
WebDAVは、インターネットを介してリポジトリへのファイルシステムの類似インタフェースをユーザーに提供するIETF標準のプロトコルです。
通常、WebDAVサーバーのフォルダは、Microsoft Windows (2000/NT/XP/Vista/7など)上でWebフォルダを介してアクセスされます。リソースには、完全修飾名を使用してアクセスできます。たとえば、/dbfs/sfs1/dir1/file1.txt
などで、sfs1
はDBFSストアの名前です。
DBFSファイルシステムにアクセスするには、WindowsでWebDAVを設定する必要があります。
関連項目:
DBFS仮想フォルダにアクセスするために必要なユーザー認証は、XDBリポジトリの場合と同じです。
WebDAVクライアントがWebDAVサーバーに初めて接続する場合、通常、ユーザーにはユーザー名およびパスワードの入力が求められます。これらは、クライアントが後続のすべてのリクエストに対して使用します。プロトコルの観点からは、すべてのリクエストには認証情報が含まれます。この情報は、XDBがユーザーを有効なデータベース・ユーザーとして認証するために使用します。ユーザーが存在しない場合、クライアントはDBFSストアまたはXDBリポジトリにアクセスできません。認証が成功すると、データベース・ユーザーはセッション内の現在のユーザーになります。
XDBでは、Basic認証およびDigest認証の両方がサポートされています。セキュリティ上の理由により、Basic認証が有効になっている場合はHTTPS転送を使用することをお薦めします。
親トピック: DBFSへのHTTP、WebDAVおよびFTPアクセス
18.4.7.3 DBFSへのFTPアクセス
DBFSへのFTPアクセスでは、ほとんどのUNIXベースのディストリビューションで使用されている標準のFTPクライアントが使用されます。FTPは、制御およびデータ接続方式が異なるクライアント・サーバー・アーキテクチャ上に構築されるファイル転送メカニズムです。
FTPユーザーは、データベース・ユーザーとして認証されます。このプロトコルは、RFC 959で説明されているように、認証用としてクリアテキストのユーザー名およびパスワードを使用します。したがって、FTPはセキュアなプロトコルではありません。
DBFSに対しては、次のコマンドがサポートされています。
-
USER
: 認証ユーザー名 -
PASS
: 認証パスワード -
CWD
: 作業ディレクトリの変更 -
CDUP
: 親ディレクトリへの変更 -
QUIT
: 切断 -
PORT
: サーバーの接続先のアドレスおよびポートの指定 -
PASV
: パッシブ・モードの入力 -
TYPE
: ASCIIまたはバイナリなどの転送モードの設定 -
RETR
: ファイルのコピーの転送 -
STOR
: データを受け入れ、サーバー・サイトでデータをファイルとして格納 -
RNFR
: 変更前の名前 -
RNTO
: 変更後の名前 -
DELE
: ファイルの削除 -
RMD
: ディレクトリの削除 -
MKD
: ディレクトリの作成 -
PWD
: 作業ディレクトリの印刷 -
LIST
: ファイルまたはディレクトリのリスト。デフォルトは現在のディレクトリです。 -
NLST
: ディレクトリ内のファイル名を戻す -
HELP
: 使用方法に関するドキュメント -
SYST
: システム・タイプを戻す -
FEAT
: サーバーによって実装される機能リストの取得 -
NOOP
: 操作なし(キープ・アライブ用として使用) -
EPRT
: サーバーの接続先の拡張アドレス(IPv6)およびポート -
EPSV
: 拡張パッシブ・モード(IPv6)の入力
親トピック: DBFSへのHTTP、WebDAVおよびFTPアクセス
18.4.7.4 DBFSへのHTTPアクセス
ユーザーは、HTTP/HTTPSプロトコルを介して読取り専用でアクセスできます。
ユーザーは、XDB HTTPサーバーを使用してブラウザでDBFSストアを指定します。これには、https://hostname:
port
/dbfs/sfs1
などのURLを使用します。sfs1
はDBFSストア名です。
親トピック: DBFSへのHTTP、WebDAVおよびFTPアクセス