DBFS階層ストアおよび関連するストア・ウォレット管理は、使用頻度の低いデータを格納するために連携して機能します。
ここでは、次の項目について説明します。
Oracle DBFS階層ストア・パッケージ(DBMS_DBFS_HS)は、DBMSコンテンツの階層ストレージをサポートするDBMS_DBFS_CONTENTのストア・プロバイダです。
このパッケージでは、コンテンツが2つの外部ストレージ・デバイス(テープおよびAmazonS3 Webサービス)に格納され、関連するメタデータ(またはプロパティ)がデータベースに格納されます。DBFS HSは、データベース表で頻繁にアクセスされるコンテンツをキャッシュして、パフォーマンスを向上させます。
DBMS_DBFS_HSパッケージをDBMS_DBFS_CONTENTパッケージと組み合せて使用し、DBFSリンクを使用するSecureFiles LOBのための階層ストレージ管理を管理する必要があります。
このパッケージを使用すると、使用頻度の低いデータを費用の少ない外部デバイス(テープなど)に移行できるため、ストレージの費用を大幅に削減できます。
DBMS_DBFS_HSパッケージをストア・プロバイダとしてDBMS_DBFS_CONTENTパッケージにプラグインし、関連付けられた外部ストレージ・デバイスがテープの場合はテープ・ファイルシステムを、また関連付けられた外部ストレージ・デバイスがAmazon S3ストレージ・デバイスの場合はクラウド・ファイルシステムを実装できます。
DBMS_DBFS_HSパッケージにより、データベースの表やコンテンツの情報ライフサイクル管理(ILM)を実装する際、テープをストレージ層として使用できるようになります。パッケージでは、Amazon S3のようなWebサービスを含む他の形式のストレージ・ターゲットもサポートされています。このサービスにより、ユーザーはテープまたはその他の形式のストレージにデータベースのデータを格納できます。テープまたはAmazon S3上のデータはOracle Databaseの一部であり、標準APIはすべてこのデータにアクセスできますが、これはデータベースを介した場合のみ可能です。
DBMS_DBFS_HSには、外部ストレージ・デバイスと各ストアに関連するキャッシュを管理するために必要な他のインタフェースがあります。
パッケージDBMS_DBFS_HSを使用するには、DBFS_ROLEロールが付与されている必要があります。
関連項目:
DBMS_DBFS_HSパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
コマンドライン・ユーティリティmkstoreを使用して、ウォレットを作成および管理します。
次のコマンドを使用して、ウォレットを作成します。
ウォレットの作成
mkstore -wrl wallet_location -create
KEY別名の追加
access_keyおよびsecret_key別名を一重引用符で囲んで指定します。
mkstore -wrl wallet_location -createCredential alias 'access_key' 'secret_key'
次に例を示します。
mkstore -wrl /home/user1/mywallet -createCredential mykey 'abc' 'xyz'
KEY別名の削除
mkstore -wrl wallet_location -deleteCredential alias
次に例を示します。
mkstore -wrl /home/user1/mywallet -deleteCredential mykey
関連項目:
ウォレットの作成および管理の詳細は、『Oracle Database Advanced Securityガイド』を参照してください
階層ストアを、独立したファイルシステムまたはSecureFiles LOBのアーカイブ・ソリューションとして使用できます。
ここでは、次の項目について説明します。
DBMS_DBFS_CONTENTパッケージを使用して、ストア内のファイルシステム・エントリを作成、更新、読取りおよび削除します。
詳細は、「DBFSコンテンツAPI」を参照してください。
DBMS_LOBパッケージを使用して、SecureFiles LOBをテープまたはS3ストアにアーカイブします。
「LOBおよびDBFS用のPL/SQLパッケージ」の説明に従い、DBMS_LOBパッケージを使用してSecureFiles LOBをテープまたはS3ストアにアーカイブします。
キャッシュ内の領域を解放、またはキャッシュ常駐コンテンツを外部ストレージ・デバイスに強制的に書き込むには、次をコールします。
DBMS_DBFS_HS.storePush(store_name);
DBFS階層ストアはファイルを圧縮形式で格納できます。
DBFS階層ストアには、SETPROPERTYメソッドおよびプロパティPROPNAME_COMPRESSLVLを使用して圧縮レベルを指定し、ファイルを圧縮形式で格納する機能があります。
有効な値は、次のとおりです。
PROPVAL_COMPLVL_NONE: 圧縮なし
PROPVAL_COMPLVL_LOW: LOWレベルの圧縮
PROPVAL_COMPLVL_MEDIUM: MEDIUMレベルの圧縮
PROPVAL_COMPLVL_HIGH: HIGHレベルの圧縮
通常、圧縮レベルLOWを使用すると、最高のパフォーマンスを維持しながら、高い圧縮率を実現できます。圧縮レベルMEDIUMおよびHIGHでは、圧縮率が大きく向上しますが、それに対応して圧縮時間が長くなることがあります。DBFS HSストア内のファイルが頻繁に更新される場合など、書込みのパフォーマンスが重要である場合は、NONEまたはLOWを使用することをお薦めします。領域が重要であるため、できるかぎり高い圧縮率が求められる場合は、MEDIUMまたはHIGHを使用してください。
ファイルはキャッシュからステージング領域へページ・アウトされて(バックエンドのテープやS3ストレージに順番にプッシュバックされる前に)圧縮されます。したがって、圧縮によりステージング領域内に小さいファイルを格納でき、またステージング領域の使用可能な容量を効果的に増加させることができます。
テープ・ストアを構成および使用するプログラムの例を次に示します。
この例では、<...>で示される場所を有効な値に置き換えて、プログラムを正しく実行する必要があります。
関連項目:
メソッドおよびそのパラメータの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_DBFS_HSのドキュメントを参照してください
Rem Example to configure and use a Tape store.
Rem
Rem hsuser should be a valid database user who has been granted
Rem the role dbfs_role.
connect hsuser/hsuser
Rem The following block sets up a STORETYPE_TAPE store with
Rem DBMS_DBFS_HS acting as the store provider.
declare
storename varchar2(32) ;
tblname varchar2(30) ;
tbsname varchar2(30) ;
lob_cache_quota number := 0.8 ;
cachesz number ;
ots number ;
begin
cachesz := 50 * 1048576 ;
ots := 1048576 ;
storename := 'tapestore10' ;
tblname := 'tapetbl10' ;
tbsname := '<TBS_3>' ; -- Substitute a valid tablespace name
-- Create the store.
-- Here tbsname is the tablespace used for the store,
-- tblname is the table holding all the store entities,
-- cachesz is the space used by the store to cache content
-- in the tablespace,
-- lob_cache_quota is the fraction of cachesz allocated
-- to level-1 cache and
-- ots is minimum amount of content that is accumulated
-- in level-2 cache before being stored on tape
dbms_dbfs_hs.createStore(
storename,
dbms_dbfs_hs.STORETYPE_TAPE,
tblname, tbsname, cachesz,
lob_cache_quota, ots) ;
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_SBTLIBRARY,
'<ORACLE_HOME/work/libobkuniq.so>') ;
-- Substitute your ORACLE_HOME path
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_MEDIAPOOL,
'<0>') ; -- Substitute valid value
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_COMPRESSLEVEL,
'NONE') ;
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.registerstore(
storename,
'tapeprvder10',
'dbms_dbfs_hs') ;
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.mountstore(storename, 'tapemnt10') ;
end ;
/
Rem The following code block does file operations
Rem using DBMS_DBFS_CONTENT on the store configured
Rem in the previous code block
connect hsuser/hsuser
declare
path varchar2(256) ;
path_pre varchar2(256) ;
mount_point varchar2(32) ;
store_name varchar2(32) ;
prop1 dbms_dbfs_content_properties_t ;
prop2 dbms_dbfs_content_properties_t ;
mycontent blob := empty_blob() ;
buffer varchar2(1050) ;
rawbuf raw(1050) ;
outcontent blob := empty_blob() ;
itemtype integer ;
pflag integer ;
filecnt integer ;
iter integer ;
offset integer ;
rawlen integer ;
begin
mount_point := '/tapemnt10' ;
store_name := 'tapestore10' ;
path_pre := mount_point ||'/file' ;
-- We create 10 empty files in the following loop
filecnt := 0 ;
loop
exit when filecnt = 10 ;
path := path_pre || to_char(filecnt) ;
mycontent := empty_blob() ;
prop1 := null ;
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.createFile(
path, prop1, mycontent) ; -- Create the file
commit ;
filecnt := filecnt + 1 ;
end loop ;
-- We populate the newly created files with content
-- in the following loop
pflag := dbms_dbfs_content.prop_data +
dbms_dbfs_content.prop_std +
dbms_dbfs_content.prop_opt ;
buffer := 'Oracle provides an integrated management ' ||
'solution for managing Oracle database with '||
'a unique top-down application management ' ||
'approach. With new self-managing ' ||
'capabilities, Oracle eliminates time-' ||
'consuming, error-prone administrative ' ||
'tasks, so database administrators can ' ||
'focus on strategic business objectives ' ||
'instead of performance and availability ' ||
'fire drills. Oracle Management Packs for ' ||
'Database provide signifiCant cost and time-'||
'saving capabilities for managing Oracle ' ||
'Databases. Independent studies demonstrate '||
'that Oracle Database is 40 percent easier ' ||
'to manage over DB2 and 38 percent over ' ||
'SQL Server.';
rawbuf := utl_raw.cast_to_raw(buffer) ;
rawlen := utl_raw.length(rawbuf) ;
offset := 1 ;
filecnt := 0 ;
loop
exit when filecnt = 10 ;
path := path_pre || to_char(filecnt) ;
prop1 := null;
-- Append buffer to file
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.putpath(
path, prop1, rawlen,
offset, rawbuf) ;
commit ;
filecnt := filecnt + 1 ;
end loop ;
-- Clear out level 1 cache
dbms_dbfs_hs.flushCache(store_name) ;
commit ;
-- Do write operation on even-numbered files.
-- Do read operation on odd-numbered files.
filecnt := 0 ;
loop
exit when filecnt = 10;
path := path_pre || to_char(filecnt) ;
if mod(filecnt, 2) = 0 then
-- Get writable file
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.getPath(
path, prop2, outcontent, itemtype,
pflag, null, true) ;
buffer := 'Agile businesses want to be able to ' ||
'quickly adopt new technologies, whether '||
'operating systems, servers, or ' ||
'software, to help them stay ahead of ' ||
'the competition. However, change often ' ||
'introduces a period of instability into '||
'mission-critical IT systems. Oracle ' ||
'Real Application Testing-with Oracle ' ||
'Database 11g Enterprise Edition-allows ' ||
'businesses to quickly adopt new ' ||
'technologies while eliminating the ' ||
'risks associated with change. Oracle ' ||
'Real Application Testing combines a ' ||
'workload capture and replay feature ' ||
'with an SQL performance analyzer to ' ||
'help you test changes against real-life '||
'workloads, and then helps you fine-tune '||
'the changes before putting them into' ||
'production. Oracle Real Application ' ||
'Testing supports older versions of ' ||
'Oracle Database, so customers running ' ||
'Oracle Database 9i and Oracle Database ' ||
'10g can use it to accelerate their ' ||
'database upgrades. ';
rawbuf := utl_raw.cast_to_raw(buffer) ;
rawlen := utl_raw.length(rawbuf) ;
-- Modify file content
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_lob.write(outcontent, rawlen, 10, rawbuf);
commit ;
else
-- Read the file
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.getPath(
path, prop2, outcontent, itemtype, pflag) ;
end if ;
filecnt := filecnt + 1 ;
end loop ;
-- Delete the first 2 files
filecnt := 0;
loop
exit when filecnt = 2 ;
path := path_pre || to_char(filecnt) ;
-- Delete file
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.deleteFile(path) ;
commit ;
filecnt := filecnt + 1 ;
end loop ;
-- Move content staged in database to the tape store
dbms_dbfs_hs.storePush(store_name) ;
commit ;
end ;
/
Amazon S3ストアを構成および使用するプログラムの例を次に示します。
<...>で示される場所を有効な値に置き換えて、プログラムを正しく実行する必要があります。
関連項目:
メソッドおよびそのパラメータの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_DBFS_HSのドキュメントを参照してください
Rem Example to configure and use an Amazon S3 store.
Rem
Rem hsuser should be a valid database user who has been granted
Rem the role dbfs_role.
connect hsuser/hsuser
Rem The following block sets up a STORETYPE_AMAZONS3 store with
Rem DBMS_DBFS_HS acting as the store provider.
declare
storename varchar2(32) ;
tblname varchar2(30) ;
tbsname varchar2(30) ;
lob_cache_quota number := 0.8 ;
cachesz number ;
ots number ;
begin
cachesz := 50 * 1048576 ;
ots := 1048576 ;
storename := 's3store10' ;
tblname := 's3tbl10' ;
tbsname := '<TBS_3>' ; -- Substitute a valid tablespace name
-- Create the store.
-- Here tbsname is the tablespace used for the store,
-- tblname is the table holding all the store entities,
-- cachesz is the space used by the store to cache content
-- in the tablespace,
-- lob_cache_quota is the fraction of cachesz allocated
-- to level-1 cache and
-- ots is minimum amount of content that is accumulated
-- in level-2 cache before being stored in AmazonS3
dbms_dbfs_hs.createStore(
storename,
dbms_dbfs_hs.STORETYPE_AMAZONS3,
tblname, tbsname, cachesz,
lob_cache_quota, ots) ;
dbms_dbfs_hs.setstoreproperty(storename,
dbms_dbfs_hs.PROPNAME_SBTLIBRARY,
'<ORACLE_HOME/work/libosbws11.so>');
-- Substitute your ORACLE_HOME path
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_S3HOST,
's3.amazonaws.com') ;
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_BUCKET,
'oras3bucket10') ;
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_WALLET,
'LOCATION=file:<ORACLE_HOME>/work/wlt CREDENTIAL_ALIAS=a_key') ;
-- Substitute your ORACLE_HOME path
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_LICENSEID,
'<xxxxxxxxxxxxxxxx>') ; -- Substitute a valid SBT license id
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_HTTPPROXY,
'<http://www-proxy.mycompany.com:80/>') ;
-- Substitute valid value. If a proxy is not used,
-- then this property need not be set.
dbms_dbfs_hs.setstoreproperty(
storename,
dbms_dbfs_hs.PROPNAME_COMPRESSLEVEL,
'NONE') ;
dbms_dbfs_hs.createbucket(storename) ;
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.registerstore(
storename,
's3prvder10',
'dbms_dbfs_hs') ;
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.mountstore(
storename,
's3mnt10') ;
end ;
/
Rem The following code block does file operations
Rem using DBMS_DBFS_CONTENT on the store configured
Rem in the previous code block
connect hsuser/hsuser
declare
path varchar2(256) ;
path_pre varchar2(256) ;
mount_point varchar2(32) ;
store_name varchar2(32) ;
prop1 dbms_dbfs_content_properties_t ;
prop2 dbms_dbfs_content_properties_t ;
mycontent blob := empty_blob() ;
buffer varchar2(1050) ;
rawbuf raw(1050) ;
outcontent blob := empty_blob() ;
itemtype integer ;
pflag integer ;
filecnt integer ;
iter integer ;
offset integer ;
rawlen integer ;
begin
mount_point := '/s3mnt10' ;
store_name := 's3store10' ;
path_pre := mount_point ||'/file' ;
-- We create 10 empty files in the following loop
filecnt := 0 ;
loop
exit when filecnt = 10 ;
path := path_pre || to_char(filecnt) ;
mycontent := empty_blob() ;
prop1 := null ;
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.createFile(
path, prop1, mycontent) ; -- Create the file
commit ;
filecnt := filecnt + 1 ;
end loop ;
-- We populate the newly created files with content
-- in the following loop
pflag := dbms_dbfs_content.prop_data +
dbms_dbfs_content.prop_std +
dbms_dbfs_content.prop_opt ;
buffer := 'Oracle provides an integrated management ' ||
'solution for managing Oracle database with '||
'a unique top-down application management ' ||
'approach. With new self-managing ' ||
'capabilities, Oracle eliminates time-' ||
'consuming, error-prone administrative ' ||
'tasks, so database administrators can ' ||
'focus on strategic business objectives ' ||
'instead of performance and availability ' ||
'fire drills. Oracle Management Packs for ' ||
'Database provide signifiCant cost and time-'||
'saving capabilities for managing Oracle ' ||
'Databases. Independent studies demonstrate '||
'that Oracle Database is 40 percent easier ' ||
'to manage over DB2 and 38 percent over ' ||
'SQL Server.';
rawbuf := utl_raw.cast_to_raw(buffer) ;
rawlen := utl_raw.length(rawbuf) ;
offset := 1 ;
filecnt := 0 ;
loop
exit when filecnt = 10 ;
path := path_pre || to_char(filecnt) ;
prop1 := null;
-- Append buffer to file
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.putpath(
path, prop1, rawlen,
offset, rawbuf) ;
commit ;
filecnt := filecnt + 1 ;
end loop ;
-- Clear out level 1 cache
dbms_dbfs_hs.flushCache(store_name) ;
commit ;
-- Do write operation on even-numbered files.
-- Do read operation on odd-numbered files.
filecnt := 0 ;
loop
exit when filecnt = 10;
path := path_pre || to_char(filecnt) ;
if mod(filecnt, 2) = 0 then
-- Get writable file
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.getPath(
path, prop2, outcontent, itemtype,
pflag, null, true) ;
buffer := 'Agile businesses want to be able to ' ||
'quickly adopt new technologies, whether '||
'operating systems, servers, or ' ||
'software, to help them stay ahead of ' ||
'the competition. However, change often ' ||
'introduces a period of instability into '||
'mission-critical IT systems. Oracle ' ||
'Real Application Testing-with Oracle ' ||
'Database 11g Enterprise Edition-allows ' ||
'businesses to quickly adopt new ' ||
'technologies while eliminating the ' ||
'risks associated with change. Oracle ' ||
'Real Application Testing combines a ' ||
'workload capture and replay feature ' ||
'with an SQL performance analyzer to ' ||
'help you test changes against real-life '||
'workloads, and then helps you fine-tune '||
'the changes before putting them into' ||
'production. Oracle Real Application ' ||
'Testing supports older versions of ' ||
'Oracle Database, so customers running ' ||
'Oracle Database 9i and Oracle Database ' ||
'10g can use it to accelerate their ' ||
'database upgrades. ';
rawbuf := utl_raw.cast_to_raw(buffer) ;
rawlen := utl_raw.length(rawbuf) ;
-- Modify file content
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_lob.write(outcontent, rawlen, 10, rawbuf);
commit ;
else
-- Read the file
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.getPath(
path, prop2, outcontent, itemtype, pflag) ;
end if ;
filecnt := filecnt + 1 ;
end loop ;
-- Delete the first 2 files
filecnt := 0;
loop
exit when filecnt = 2 ;
path := path_pre || to_char(filecnt) ;
-- Delete file
-- Please refer to DBMS_DBFS_CONTENT documentation
-- for details about this method
dbms_dbfs_content.deleteFile(path) ;
commit ;
filecnt := filecnt + 1 ;
end loop ;
-- Move content staged in database to Amazon S3 store
dbms_dbfs_hs.storePush(store_name) ;
commit ;
end ;
/
データベース・ファイルシステム・リンクを使用すると、通常とは異なる場所にSecureFiles LOBを格納できます。
ここでは、次の項目について説明します。
DBFSリンクを使用すると、LOBが通常格納されるセグメントとは異なる場所にSecureFiles LOBを透過的に格納できます。かわりに、LOBへのリンクはセグメント内に格納します。
セグメント内のリンクは、アクセスされたときにDBFSを使用してLOBを特定するパスを参照する必要があります。つまり、LOBは、別のファイルシステム、テープ・システム、クラウド、またはDBFSを使用してアクセスできる任意の場所に格納できます。
セグメントの外部に格納されているSecureFiles LOBにユーザーまたはアプリケーションがDBFSリンクを使用してアクセスしようとすると、試行された操作や、LOBを保持しているDBFSストアの特性に応じて、動作が異なる場合があります。
読取り
LOBがデータベース内のローカル領域にまだキャッシュされていない場合、LOBが保持されているDBFSコンテンツ・ストアでPROPNAME_STREAMABLEパラメータの設定に基づいてストリーミング・アクセスが許可されていれば、このコンテンツ・ストアからLOBを直接読み取ることができます。コンテンツ・ストアでストリーミング・アクセスが許可されていない場合、データベース内のローカル領域にLOB全体が最初に読み込まれ、将来のアクセスに備えてここに一定期間格納されます。
書込み
LOBがデータベース内のローカル領域にまだキャッシュされていない場合、LOBは最初にデータベースに読み込まれ、必要に応じて変更されてから、該当するLOBのDBFSリンクに定義されているDBFSコンテンツ・ストアに書き戻されます。
削除:
DBFSリンクを介して格納されているSecureFiles LOBが削除されると、DBFSリンクは表から削除されますが、LOB自体はDBFSコンテンツ・ストアから削除されません。または、これは、該当するDBFSコンテンツ・ストアの特性/設定によってはより複雑になります。
DBFSリンクでは、SecureFiles LOBをDBFS階層ストア(DBFS HS)と組み合せて使用することにより、階層ストレージ管理(HSM)を実装できます。HSMは、データベースが使用頻度の低いまたは未使用のデータを、高速でコストが高い小さいストレージから、速度が遅く低コストで容量の大きいストレージに移動するためのプロセスです。
データベース・ファイルシステム・リンクでは、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ストアに移行した後もキャッシュ済コピーとして保持し続けることもサポートしています。保存ポリシーに準拠してこれらのコピーをパージするかどうかは、アプリケーションによって決まります。
API DBMS_LOB.COPY_DBFS_LINK(DSTLOB, SRCLOB, FLAGS)には、リンクされたSecureFiles LOBをコピーする機能が用意されています。
デフォルトでは、LOBはこの操作中にDBFS HSMストアから取得されません。これは、DBFSパス名(ソース側)をエクスポートしてインポート(宛先側)する参照によるコピー操作です。flags引数を使用すると、宛先ではデータベース内にローカル・コピーを持ち、DBFS HSMストア内のLOBデータを参照するよう命令できます。
DBFSリンクはソース表から挿入先の表にコピーできます。
次のコードを使用して、ソース表内のSecureFiles LOBに格納されているDBFSリンクを挿入先の表にコピーします。
CREATE TABLE ... AS SELECT (CTAS)およびINSERT TABLE ... AS SELECT (ITAS)
オンライン再定義では、再定義される表のSecureFiles LOBで格納されたDBFSリンクがコピーされます。
オンライン再定義では、再定義される表のSecureFiles LOBで格納されたDBFSリンクがコピーされます。
DBFSリンクでは、データがデータベースにキャッシュされていない場合でも、リンクされたSecureFiles LOBから読み取ることができます。
データが実際に格納されているコンテンツ・ストアからデータを読み取り、SecureFiles LOBセグメントからデータが読み取られているかのように、そのデータをユーザーのアプリケーションにストリーミングして戻すことができます。これにより、DBMS_LOB.COPY_FROM_DBFS_LINK()を最初にコールする必要なく、DBFSリンクのデータにシームレスにアクセスできます。
特定のSecureFiles LOBで透過的読取りを使用できるかどうかは、データが存在するDBFS_CONTENTストアで決定されます。この機能は、DBFS_SFSストアで常に有効で、デフォルトではDBFS_HSストアで有効です。DBFS_HSストアで透過的読取りを無効にするには、PROPNAME_STREAMABLEパラメータをFALSEに設定します。
関連項目:
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』
DBMS_DBFS_HSパッケージは、データの記憶域としてテープまたはAmazon S3 Webサービスを使用できるようにするサービス・プロバイダです。
ここでは、次の項目について説明します。
DBMS_DBFS_HS PL/SQLパッケージの定数は非常に細目にわたって説明されています。
DBMS_DBFS_HSパッケージ PL/SQLの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
DBMS_DBFS_HSパッケージには多くのメソッドがあります。
表7-1は、DBMS_DBFS_HS PL/SQLパッケージのメソッドをまとめています。このパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
表7-1 DBMS_DBFS_HS PL/SQLパッケージのメソッド
| メソッド | 説明 |
|---|---|
|
コンテンツがない外部ストレージ・デバイスで作成されたファイルを削除します。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
DBFS HSストアを作成します。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
ストアに関連付けられたコマンド(メッセージ)を削除します。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
以前に作成したDBFS HSストアを削除します。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
レベル1のキャッシュをレベル2のキャッシュにフラッシュし、レベル1の領域を増やします。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
データベース内のストアのプロパティの値を取り出します。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
ストアで使用されているデータベース・キャッシュのパラメータを再構成します。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
ストアに対するコマンド(メッセージ)を登録し、外部ストレージ・デバイスのメディア・マネージャに送信します。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』。 |
|
外部ストレージ・デバイスのメディア・マネージャにコマンド(メッセージ)を送信します。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
名前/値プロパティと登録済の階層ストアを関連付けます。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
|
ローカルにキャッシュ済のデータをアーカイブ・ストアにプッシュします。 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
BFS階層ストアには、複数のタイプのビューがあります。
DBFS階層ストア用のビューには複数のタイプがあります。
関連項目:
これらのビューの列およびデータ型の詳細は、『Oracle Databaseリファレンス』を参照してください
ここでは、次の項目について説明します。
DBFS階層ストアで使用可能なビューは複数あります。
DBFS階層ストアの次のビューを使用できます。
DBA_DBFS_HS
このビューには、すべてのデータベース・ファイルシステム(DBFS)階層ストアが表示されます
DBA_DBFS_HS_PROPERTIES
このビューには、すべてのデータベース・ファイルシステム(DBFS)階層ストアの変更可能プロパティが表示されます。
DBA_DBFS_HS_FIXED_PROPERTIES
このビューには、すべてのデータベース・ファイルシステム(DBFS)階層ストアの変更不可プロパティが表示されます。
DBA_DBFS_HS_COMMANDS
このビューには、すべてのデータベース・ファイルシステム(DBFS)階層ストアの登録済ストア・コマンドが表示されます。
DBFS階層ストアで使用可能なビューは複数あります。
USER_DBFS_HS
このビューには、現在のユーザーが所有するすべてのデータベース・ファイルシステム(DBFS)階層ストアが表示されます。
USER_DBFS_HS_PROPERTIES
このビューには、現在のユーザーが所有するすべてのデータベース・ファイルシステム(DBFS)階層ストアの変更可能プロパティが表示されます。
USER_DBFS_HS_FIXED_PROPERTIES
このビューには、現在のユーザーが所有するすべてのデータベース・ファイルシステム(DBFS)階層ストアの変更不可プロパティが表示されます。
USER_DBFS_HS_COMMANDS
このビューには、現在のユーザーが所有するすべてのデータベース・ファイルシステム(DBFS)階層ストアの登録済ストア・コマンドがすべて表示されます。
USER_DBFS_HS_FILES
このビューには、データベース・ファイルシステム(DBFS)階層ストア内で現在のユーザーが所有するファイルと、バックエンド・デバイス上でのそれらの位置が表示されます。