21.2 データベース・ファイル・システム・リンクを作成する方法
データベース・ファイル・システム・リンクでは、DBFSコンテンツ・パッケージ(DBMS_DBFS_CONTENT
)を使用して、データベース・ファイル・システムを作成する必要があります。
Oracleでは、DBFSリンクの作成用に複数の方法を用意しています。
-
指定したDBFSパス名にSecureFiles LOBデータを移動し、新しい場所への参照をLOBに格納します。
LOBおよびDBFSパス名引数を使用して
DBMS_LOB.MOVE_TO_DBFS_LINK()
をコールすると、指定したDBFS HSMストアが作成され(存在しない場合)、指定したDBFS HSMストアにSecureFiles LOBからデータがコピーされ、SecureFiles LOBからデータが削除され、このLOBを介して後続のアクセス用のファイル・パス名が格納されます。 -
既存のファイルへの参照をコピーまたは作成します。
DBMS_LOB.COPY_DBFS_LINK()
をコールし、既存のDBFSリンクからリンクをコピーします。宛先SecureFiles LOBにデータがある場合、そのデータは削除され、そのリンクに対する参照のコピーが宛先SecureFiles LOBに格納されます。 -
指定されたDBFSパス名にリンクのデータが格納されている場合は、
DBMS_LOB.SET_DBFS_LINK()
をコールします。指定したSecureFiles LOBからデータが削除され、DBFSパス名のリンクが格納されます。
DBFSリンクを作成すると、実行可能な操作およびその実行方法に影響があります。基礎となるLOBがDBFSリンクに移動された場合、LOBのコンテンツを変更するすべてのDBMS_LOB
操作によって例外がスローされます。アプリケーションでは、これらをコールする前にDBMS_LOB.COPY_FROM_LINK()
をコールして、DBFSリンクをLOBで置き換える必要があります。
完了したら、DBMS_LOB.MOVE_TO_DBFS_LINK()
を使用して、更新済のLOBを必要に応じてDBFSに戻すことができます。Oracle Database 11gリリース2より前から存在しているその他のDBMS_LOB
操作は、ストリーミングをサポートするファイル・システムにDBFSリンクが存在する場合に、透過的に動作します。ストリーミングがサポートされていないか無効の場合、これらの操作は失敗することに注意してください。
DBFSリンク・ファイルがDBFSインタフェースから直接変更されると、後続のSecureFiles LOBの読取りに変更内容が反映されます。ファイルがDBFSインタフェースからから削除されると、後続の読取りで例外が発生します。
データベースでは、エクスポートおよびインポートの際、DBAがSecureFiles LOB HSMに格納されたデータのすべてを格納することは望まない場合もあります。Oracleには、データベース・ファイル・システム・リンクのみをエクスポートおよびインポートする機能があります。このリンクは完全に修飾された識別子で、SecureFiles LOBに入れられるか、または異なるデータベースのSecureFiles LOBに登録されると、格納済のデータに対するアクセスを提供します。リンクをエクスポートおよびインポートするこの機能は、シンボリック・リンクの共通ファイル・システムの機能性に類似しています。
新しくインポートしたリンクが使用可能なのは、ソース(格納されたデータ)が使用可能である場合、または、インポートしたシステムで最初の取得が行われるまでのみです。格納されたデータベースの保存はアプリケーションが担当します。まだ参照されているデータをアプリケーション・システムがストアから削除すると、参照する側のSecureFiles LOBがこのデータにアクセスしようとしたときに例外がスローされます。Oracleでは、データベース内のデータをDBFSストアに移行した後もキャッシュ済コピーとして保持し続けることもサポートしています。保存ポリシーに準拠してこれらのコピーをパージするかどうかは、アプリケーションによって決まります。
親トピック: データベース・ファイル・システム・リンク