この章では、元のBasicFiles LOB実装を拡張するものとして導入されたSecureFiles LOBの使用方法について説明します。
この章の内容は次のとおりです。
Oracle Database 11gリリース1以降、新しいLOB記憶域アーキテクチャであるSecureFilesが導入されました。SecureFiles LOBは、記憶域キーワードSECUREFILE
がCREATE
TABLE
文に表れる場合に作成されます。元のLOB記憶域アーキテクチャであるBasicFiles LOBがデフォルトの記憶域です。CREATE
TABLE
文において、キーワードSECUREFILE
が使用されない場合、またはキーワードBASICFILE
が使用された場合に有効になります。
次の項では、LOB型の列を含む表の設計、作成および変更時に使用される、LOB記憶域の特性について説明します。データベース管理者は、init.ora
ファイルのdb_securefile
の初期化パラメータを使用して、初期設定を変更できます。
CREATE TABLE
文を使用して、圧縮、重複除外または暗号化を有効にしておくことをお薦めします。これらの機能をALTER TABLE
文で有効にすると、表のすべてのSecureFiles LOBデータの読取り、変更および書込みが実行され、長時間に渡る可能性がある操作中にデータベースで表がロックされます。
この項の内容は次のとおりです。
SecureFilesインテリジェント圧縮は、Oracle Advanced Compressionオプションで使用可能で、SecureFiles LOBデータをシームレスに分析して圧縮し、ディスク領域を節約します。
SecureFilesインテリジェント圧縮を実行するには、Oracle Advanced Compressionオプションのライセンスが必要です。詳細は、『Oracle Databaseライセンス情報』を参照してください。
SecureFilesインテリジェント重複除外は、Oracle Advanced Compressionオプションで使用可能で、LOB列またはパーティション内で重複するLOBデータをOracle Databaseで自動検出できるようにし、データのコピーを1つのみ格納することにより領域を節約できます。
SecureFilesインテリジェント重複除外を実行するには、Oracle Advanced Compressionオプションのライセンスが必要です。詳細は、『Oracle Databaseライセンス情報』を参照してください。
Oracle Streamsでは、重複除外されるSecureFiles LOBがサポートされないことにも注意してください。
SecureFilesインテリジェント暗号化は、Oracle Advanced Securityオプションで使用可能で、新しいLOB暗号化機能が導入されています。データは透過的データ暗号化(TDE)使用して暗号化され、データの安全な格納だけでなく、ランダムな読取りおよび書込みアクセスが可能です。
SecureFilesインテリジェント暗号化を実行するには、Oracle Advanced Securityオプションのライセンスが必要です。詳細は、『Oracle Databaseライセンス情報』を参照してください。
SecureFiles LOBは、自動セグメント領域管理(ASSM)で管理される表でのみ作成できます。次のパラメータに関する説明は、SECUREFILE
パラメータを使用するLOB記憶域パラダイムに該当します。詳細は、『Oracle Database SQL言語リファレンス』のCREATE TABLE
文に関する項を参照してください。
CREATE TABLE
文を使用して、圧縮、重複除外または暗号化を有効にしておくことをお薦めします。これらの機能をALTER TABLE
文で有効にすると、表のすべてのSecureFiles LOBデータの読取り、変更および書込みが実行され、長時間に渡る可能性がある操作中にデータベースで表がロックされます。
SHRINK
オプションはSecureFiles LOBではサポートされていません。
SecureFiles LOBでは、新しい記憶域パラメータが導入されています。これらは、例4-1のCREATE
TABLE
のBNFに導入されています。パラメータの詳細は、「SecureFiles LOB用のCREATE TABLEのパラメータ」を参照してください。
例4-1 CREATE TABLE用のBNF
キーワードは太字で表されています。
CREATE [ GLOBAL TEMPORARY ] TABLE
[ schema.]table OF
[ schema.]object_type
[ ( relational_properties ) ]
[ ON COMMIT { DELETE | PRESERVE } ROWS ]
[ OID_clause ]
[ OID_index_clause ]
[ physical_properties ]
[ table_properties ] ;
<relational_properties> ::=
{ column_definition
| { out_of_line_constraint
| out_of_line_ref_constraint
| supplemental_logging_props
}
}
[, { column_definition
| { out_of_line_constraint
| out_of_line_ref_constraint
| supplemental_logging_props
}
]...
<column_definition> ::=
column data_type [ SORT ]
[ DEFAULT expr ]
[ ENCRYPT encryption_spec ]
[ ( inline_constraint [ inline_constraint ] ... )
| inline_ref_constraint
]
<data_type> ::=
{ Oracle_built_in_datatypes
| ANSI_supported_datatypes
| user_defined_types
| Oracle_supplied_types
}
<Oracle_built_in_datatypes> ::=
{ character_datatypes
| number_datatypes
| long_and_raw_datatypes
| datetime_datatypes
| large_object_datatypes
| rowid_datatypes
}
<large_object_datatypes> ::=
{ BLOB | CLOB | NCLOB| BFILE }
<table_properties> ::=
[ column_properties ]
[ table_partitioning_clauses ]
[ CACHE | NOCACHE ]
[ parallel_clause ]
[ ROWDEPENDENCIES | NOROWDEPENDENCIES ]
[ enable_disable_clause ]
[ enable_disable_clause ]...
[ row_movement_clause ]
[ AS subquery ]
<column_properties> ::=
{ object_type_col_properties
| nested_table_col_properties
| { varray_col_properties | LOB_storage_clause }
[ (LOB_partition_storage
[, LOB_partition_storage ]...
)
]
| XMLType_column_properties
}
[ { object_type_col_properties
| nested_table_col_properties
| { varray_col_properties | LOB_storage_clause }
[ ( LOB_partition_storage
[, LOB_partition_storage ]...
)
]
| XMLType_column_properties
}
]...
<LOB_partition_storage> ::=
PARTITION partition
{ LOB_storage_clause | varray_col_properties }
[ LOB_storage_clause | varray_col_properties ]...
[ ( SUBPARTITION subpartition
{ LOB_storage_clause | varray_col_properties }
[ LOB_storage_clause
| varray_col_properties
]...
)
]
<LOB_storage_clause> ::=
LOB
{ (LOB_item [, LOB_item ]...)
STORE AS [ SECUREFILE | BASICFILE ] (LOB_storage_parameters)
| (LOB_item)
STORE AS [ SECUREFILE | BASICFILE ]
{ LOB_segname (LOB_storage_parameters)
| LOB_segname
| (LOB_storage_parameters)
}
}
<LOB_storage_parameters> ::=
{ TABLESPACE tablespace
| { LOB_parameters [ storage_clause ]
}
| storage_clause
}
[ TABLESPACE tablespace
| { LOB_parameters [ storage_clause ]
}
]...
<LOB_parameters> ::=
[ { ENABLE | DISABLE } STORAGE IN ROW
| CHUNK integer
| PCTVERSION integer
| RETENTION [ { MAX | MIN integer | AUTO | NONE } ]
| FREEPOOLS integer
| LOB_deduplicate_clause
| LOB_compression_clause
| LOB_encryption_clause
| { CACHE | NOCACHE | CACHE READS } [ logging_clause ] } }
]
<logging_clause> ::=
{ LOGGING | NOLOGGING | FILESYSTEM_LIKE_LOGGING
}
<storage_clause> ::=
STORAGE
({ INITIAL integer [ K | M ]
| NEXT integer [ K | M ]
| MINEXTENTS integer
| MAXEXTENTS { integer | UNLIMITED }
| PCTINCREASE integer
| FREELISTS integer
| FREELIST GROUPS integer
| OPTIMAL [ integer [ K | M ]
| NULL
]
| BUFFER_POOL { KEEP | RECYCLE | DEFAULT }
}
[ INITIAL integer [ K | M ]
| NEXT integer [ K | M ]
| MINEXTENTS integer
| MAXEXTENTS { integer | UNLIMITED }
| MAXSIZE { { integer { K | M | G | T | P } } | UNLIMITED }
| PCTINCREASE integer
| FREELISTS integer
| FREELIST GROUPS integer
| OPTIMAL [ integer [ K | M ]
| NULL
]
| BUFFER_POOL { KEEP | RECYCLE | DEFAULT }
]...
)
<LOB_deduplicate_clause> ::=
{ DEDUPLICATE
| KEEP_DUPLICATES
}
<LOB_compression_clause> ::=
{ COMPRESS [ HIGH | MEDIUM | LOW ]
| NOCOMPRESS }
<LOB_encryption_clause> ::=
{ ENCRYPT [ USING 'encrypt_algorithm' ]
[ IDENTIFIED BY password ]
| DECRYPT
}
<XMLType_column_properties> ::=
XMLTYPE [ COLUMN ] column
[ XMLType_storage ]
[ XMLSchema_spec ]
<XMLType_storage> ::=
STORE AS
{ OBJECT RELATIONAL
| [ SECUREFILE | BASICFILE ] { CLOB | BINARY XML }
[ { LOB_segname [ (LOB_parameters) ]
| LOB_parameters
}
]
<varray_col_properties> ::=
VARRAY varray_item
{ [ substitutable_column_clause ]
STORE AS [ SECUREFILE | BASICFILE ] LOB
{ [ LOB_segname ] (LOB_parameters)
| LOB_segname
}
| substitutable_column_clause
}
表4-1は、CREATE TABLE
文のパラメータをまとめたものです。
表4-1 CREATE TABLE文のパラメータ
パラメータ | 説明 |
---|---|
|
LOBの元のアーキテクチャを指定するパラメータ。圧縮、重複除外または暗号化機能をサポートしないBasicFiles LOBを作成します。 |
|
パフォーマンスを改善し、圧縮、重複除外および暗号化機能もサポートするアーキテクチャであるSecureFiles LOBを指定するパラメータ。 |
|
LOBに対してアクセスまたは変更を行うときに、Oracle Databaseが使用するデータ・サイズです。これはBasicFiles LOBで使用され、SecureFiles LOBの場合は後方互換性のために提供されるアドバイザ・サイズです。 |
|
指定した方法でLOBデータの旧バージョンをLOB列に格納するように設定します。 |
|
LOBで使用可能な記憶域の上限。 |
|
BasicFiles LOBの |
LOGGING、NOLOGGINGまたはFILESYSTEM_LIKE_LOGGING |
ロギング・オプション。 |
|
パーティション表で |
|
使用中のBasicFiles LOBデータ領域全体のうち、旧バージョンのLOBデータ・ページが占めることのできる割合を指定します。SecureFiles LOBには使用されません。 |
|
SecureFilesインテリジェント圧縮をオンまたはオフにします。 |
|
SecureFilesインテリジェント重複除外をオンまたはオフにします。 |
|
SecureFilesインテリジェント暗号化をオンまたはオフにします。 |
互換性モードが10gに設定されている場合、LOB STORAGE句は、10gで使用されていたものと同じです(BASICFILE
キーワードは無効)。互換性モードが11g(またはそれ以上)に設定されている場合、デフォルトで元のリリース11.1より前のLOB機能が有効になり、完全な機能のためにこのパラメータが指定されます。
SecureFiles LOB記憶域アーキテクチャおよび機能を使用するには、SECUREFILE
記憶域パラメータを明示的に指定します。SecureFiles LOBは、自動セグメント領域管理(ASSM)で管理される表領域でのみ作成できます。
BasicFiles LOBの場合、いずれかのSecureFiles LOBオプションを指定すると、エラーが発生します。
CHUNK
は1つ以上のOracleブロックです。SecureFiles LOBでは、CHUNK
はアドバイザ・サイズで、後方互換性の目的で提供されます。BasicFiles LOBでは、LOBを格納する表を作成する際にチャンク・サイズを指定できます。LOB値に対してアクセスまたは変更を行うときに、Oracle Databaseが使用するデータ・サイズに対応します。
Oracle Database Release 11gでは、このパラメータ名で保存ポリシーが指定されます。値がMAX
の場合、セグメントで使用される領域がMAXSIZE
パラメータで指定されるサイズに到達するまで、旧バージョンのLOBデータ・ブロックを保存するように指定されます。MAXSIZE
が指定されない場合、MAX
はAUTO
と同様に機能します。
値がMIN
の場合、旧バージョンのLOBデータ・ブロックを指定した時間(秒)保存するように指定されます。値がNONE
の場合は、保存期間がなく、必要であるとみなされる方法で領域を再利用できることを意味します。値がAUTO
の場合は、時間と領域の両方の面で必要性を考慮し、可能なかぎり効率的に記憶域を管理するようにシステムが設定されます。
BasicFiles LOBで使用されるRETENTION
パラメータの詳細は、「BasicFiles LOB用のRETENTIONパラメータ」を参照してください。
LOBセグメントで使用可能な領域の量を、指定したサイズに制限します。上限に達した場合、時間要件にかかわらず、必要に応じて、旧バージョンのLOBデータ・ブロックのプールから新規のLOBデータ・ブロックが取得されます。
BasicFiles LOBのFREELIST
グループの数を指定します(データベースが自動UNDOモードの場合)。11gの互換モードでは、このパラメータはSecureFiles LOBの作成時に無視されます。
LOBを作成してLOBへの挿入を実行し、REDOログ・ファイルにログを記録する場合、LOGGING
を指定します。デフォルトはLOGGING
です。
これらの操作をログに記録しない場合は、NOLOGGING
を指定します。
パーティション化されていないオブジェクトでは、この句に指定された値はオブジェクトに関連付けられたセグメントの実際の物理属性です。パーティション・オブジェクトの場合、この句に指定する値は、PARTITION
記述でロギング属性を指定しないかぎり、CREATE
文(および後続のALTER
... ADD PARTITION
文)で指定するすべてのパーティションに関連付けられたセグメントのデフォルトの物理属性となります。
FILESYSTEM_LIKE_LOGGING
は、メタデータのみをログに記録することを意味します。このオプションはBasicFiles LOBでは使用できません。この設定はファイルシステムをジャーナルするメタデータと同様で、障害の平均リカバリ時間を削減できます。SecureFiles LOBのLOGGING
設定は、ファイルシステムのデータ・ジャーナルと同様です。LOGGING
設定およびFILESYSTEM_LIKE_LOGGING
設定は、SecureFiles LOBにより完全なトランザクション・ファイルシステムを提供します。
SecureFiles LOBでは、NOLOGGING
設定はFILESYSTEM_LIKE_LOGGING
に内部変換されます。
FILESYSTEM_LIKE_LOGGING
は、サーバー障害の後のデータの完全なリカバリを可能にします。
「BasicFiles LOB用のLOGGING/NOLOGGINGパラメータ」および「読取り一貫性の保証」を参照してください。
注意: LOBセグメントでは、NOLOGGING 設定およびFILESYSTEM_LIKE_LOGGING 設定を使用すると、バックアップ操作中にデータがディスクで変更される可能性があります。これにより、読取り非一貫性が発生します。これを防ぐには、LOGGING をLOB記憶域に設定してLOBセグメントに対する変更をREDOログ・ファイルに保存する必要があります。 |
このパラメータは、パーティション表でNULL
セグメントに割り当てられるプロセス空きリストの数、または空きリスト・グループの数をそれぞれ指定します。11gまでの互換性モードでは、これらのパラメータはSecureFiles LOBの作成時に無視されます。
このパラメータでは、使用中のBasicFiles LOBデータ領域全体のうち、旧バージョンのBasicFiles LOBデータ・ページが占めることのできる割合を指定します。11gの互換モードでは、このパラメータはSecureFiles LOBの作成時に無視されます。
COMPRESS
オプションでは、SecureFilesインテリジェント圧縮をオンにし、NOCOMPRESS
ではオフにします。表または索引圧縮を設定しても、SecureFilesインテリジェント圧縮には影響しないことに注意してください。
SecureFilesインテリジェント圧縮を実行するには、Oracle Advanced Compressionオプションのライセンスが必要です。詳細は、『Oracle Databaseライセンス情報』を参照してください。
DEDUPLICATE
オプションではSecureFilesインテリジェント重複除外が有効化され、LOB列、パーティション、またはサブパーティションの複数行で同一のSecureFiles LOBデータにおいて同じデータ・ブロックを共有する必要があることを示します。データベースは同一の内容のSecureFiles LOBを単一のコピーに結合し、記憶域を削減して記憶域管理を簡素化します。このオプションの逆は、KEEP_DUPLICATES
です。
SecureFilesインテリジェント重複除外を実行するには、Oracle Advanced Compressionオプションのライセンスが必要です。詳細は、『Oracle Databaseライセンス情報』を参照してください。
この項では、CREATE TABLE
文で使用されるSecureFilesインテリジェント圧縮について説明します。この項の内容は次のとおりです。
SecureFilesインテリジェント圧縮では、表または索引圧縮を有効にできません。同様に、表および索引圧縮でもSecureFilesインテリジェント圧縮を有効にできません。
LOW、MEDIUM
およびHIGH
オプションでは、異なる圧縮レベルを使用できます。圧縮度が高くなればなるほど、待機時間が長くなります。HIGH
設定ではより多くの作業が発生しますが、データの圧縮が向上します。デフォルトは、MEDIUM
です。
LOW
圧縮オプションでは、ファイル圧縮でよく見られるCPUコストの大部分を軽減する非常に軽量の圧縮アルゴリズムが導入されています。LOW
レベルで圧縮されたSecureFiles LOBにより、SecureFiles LOB記憶域を効率的に選択できるようになりました。LOW
で圧縮されたSecureFiles LOBは、一般的にBasicFiles LOBよりもCPU時間と記憶域を消費せず、ディスクI/Oも減るためアプリケーションの実行を高速化できます。
圧縮は、パーティション・レベルで指定できます。lob_storage_clause
では、、パーティションごとにパーティション化された表の圧縮を指定できます。
SecureFiles LOB圧縮は、サーバー側で実行され、LOBデータへのランダムな読取りおよび書込みを可能にします。utl_compress
などのクライアント側の圧縮ユーティリティでは、ランダム・アクセスは得られません。
メソッドDBMS_LOB.SETOPTIONS()
を使用して、SecureFiles LOBごとに圧縮を有効および無効化できます。「SETOPTIONS()」を参照してください。
LOB圧縮は、SecureFiles LOBに対してのみ適用できます。
次の表に、特定の圧縮シナリオでCREATE TABLE
文を発行する方法を示します。
例4-2 LOW圧縮を使用したSecureFiles LOB列の作成
CREATE TABLE t1 (a CLOB) LOB(a) STORE AS SECUREFILE( COMPRESS LOW CACHE NOLOGGING );
例4-3 MEDIUM(デフォルト)圧縮を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( COMPRESS CACHE NOLOGGING );
例4-4 HIGH圧縮を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( COMPRESS HIGH CACHE );
この項では、CREATE TABLE
文で使用されるSecureFiles LOB重複除外について説明します。この項の内容は次のとおりです。
同一のLOBがある場合、重複除外の対象となります。重複除外を使用可能にすることにより、コピー操作によるデータの重複を回避できます。
重複検出は、LOBセグメント内で発生します。パーティション化およびサブパーティション化されたLOB列の場合、パーティションまたはサブパーティションにまたがって重複検出することはできません。
重複除外は、パーティション・レベルで指定できます。lob_storage_clause
を使用して、パーティションごとにパーティション化された表を指定できます。
重複除外は、SecureFiles LOBに対してのみ適用できます。
DBMS_LOB.SETOPTIONS
を使用して、LOBごとに重複除外を有効化または無効化できます。
次の例に、特定の重複除外シナリオでCREATE TABLE
文を発行する方法を示します。
例4-7 重複除外を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( DEDUPLICATE CACHE );
例4-8 無効化された重複除外を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( KEEP_DUPLICATES CACHE );
例4-9 1つのパーティションで重複除外を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( REGION VARCHAR2(20), a BLOB) LOB(a) STORE AS SECUREFILE ( CACHE ) PARTITION BY LIST (REGION) ( PARTITION p1 VALUES ('x', 'y') LOB(a) STORE AS SECUREFILE ( DEDUPLICATE ), PARTITION p2 VALUES (DEFAULT) );
例4-10 1つのパーティションで無効化された重複除外を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( REGION VARCHAR2(20), ID NUMBER, a BLOB) LOB(a) STORE AS SECUREFILE ( DEDUPLICATE CACHE ) PARTITION BY RANGE (REGION) SUBPARTITION BY HASH(ID) SUBPARTITIONS 2 ( PARTITION p1 VALUES LESS THAN (51) lob(a) STORE AS a_t2_p1 (SUBPARTITION t2_p1_s1 lob(a) STORE AS a_t2_p1_s1, SUBPARTITION t2_p1_s2 lob(a) STORE AS a_t2_p1_s2), PARTITION p2 VALUES LESS THAN (MAXVALUE) lob(a) STORE AS a_t2_p2 ( KEEP_DUPLICATES ) (SUBPARTITION t2_p2_s1 lob(a) STORE AS a_t2_p2_s1, SUBPARTITION t2_p2_s2 lob(a) STORE AS a_t2_p2_s2) );
この項では、CREATE TABLE
文で使用されるSecureFiles LOB暗号化について説明します。この項の内容は次のとおりです。
現在の透過的データ暗号化(TDE)構文を使用して、暗号化がLOBデータ型で有効になります。LOBは、SECUREFILE
パラメータを使用して作成する必要があります。
暗号化は、ブロック・レベルで実行されます。
encrypt_algorithm
は、暗号化アルゴリズムの名前を示します。有効なアルゴリズムは、AES192
(デフォルト)、3DES168
、AES128
およびAES256
です。
列の暗号化キーは、(指定されている場合は)PASSWORD
から導出されます。
SALT
はLOB暗号化のデフォルトです。NO
SALT
はサポートされていません。
LOB列内のすべてのLOBが暗号化されます。
DECRYPT
は、LOBをクリアテキストのままにします。
LOBは、TDEと同様に列ごとのみで暗号化されます。LOB列内のすべてのパーティションが暗号化されます。
キー管理により、暗号化または復号化が制御されます。
LOBの暗号化は、SecureFiles LOBに対してのみ実行できます。
TDEは、従来のインポートおよびエクスポート・ユーティリティまたはトランスポータブル表領域ベースのエクスポートではサポートされていません。かわりに、暗号化された列でデータ・ポンプ・インポートおよびエクスポート・ユーティリティを使用してください。
関連項目: TDEを使用したOracle Walletの作成および使用方法は、『Oracle Database Advanced Security管理者ガイド』の「Oracle Wallet Managerの使用方法」を参照してください。 |
次の表に、特定の暗号化シナリオでCREATE TABLE
文を発行する方法を示します。
例4-11 特定の暗号化アルゴリズムを使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB ENCRYPT USING 'AES128') LOB(a) STORE AS SECUREFILE ( CACHE );
例4-12 すべてのパーティションで暗号化を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( REGION VARCHAR2(20), a BLOB) LOB(a) STORE AS SECUREFILE ( ENCRYPT USING 'AES128' NOCACHE FILESYSTEM_LIKE_LOGGING ) PARTITION BY LIST (REGION) ( PARTITION p1 VALUES ('x', 'y'), PARTITION p2 VALUES (DEFAULT) );
ALTER
TABLE
文またはオンライン再定義を含んだLOB記憶域を、DBMS_REDEFINITION
パッケージを使用して変更できます。『PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
表の作成時に、圧縮、重複除外または暗号化を有効にしておくことをお薦めします。ALTER
TABLE
を使用してこれらの機能を有効にすると、読取り、変更および書込みコマンドでSecureFiles LOB列全体が変更され、長時間に渡る可能性があるこの操作中に、表のロックが保持されます。
SHRINK
オプションはSecureFiles LOBではサポートされていません。
作成時にLOBの暗号化、圧縮または重複除外を有効化していない場合、これらのパラメータに対する変更をディスク領域で効率的に行うために、オンライン再定義を使用して作成後にそれらを有効化することをお薦めします。
例4-1のALTER TABLE
のBNFでは、新しいパラメータが導入されています。パラメータの詳細は、「SecureFiles LOB用のCREATE TABLEのパラメータ」を参照してください。
ALTER TABLE
文の詳細は、「BasicFiles LOBからSecureFiles LOBへの列の移行」および『Oracle Database SQL言語リファレンス』を参照してください。
例4-15 ALTER TABLE用のBNF
キーワードは太字で表されています。
ALTER TABLE [ schema.]table [ alter_table_properties | column_clauses | constraint_clauses | alter_table_partitioning | alter_external_table_clauses | move_table_clause ] [ enable_disable_clause | { ENABLE | DISABLE } { TABLE LOCK | ALL TRIGGERS } [ enable_disable_clause | { ENABLE | DISABLE } { TABLE LOCK | ALL TRIGGERS } ]... ] ; <column_clauses> ::= { { add_column_clause | modify_column_clause | drop_column_clause } [ add_column_clause | modify_column_clause | drop_column_clause ]... | rename_column_clause | modify_collection_retrieval [ modify_collection_retrieval ]... | modify_LOB_storage_clause [ modify_LOB_storage_clause ] ... | alter_varray_col_properties [ alter_varray_col_properties ] } <modify_LOB_storage_clause> ::= MODIFY LOB (LOB_item) ( modify_LOB_parameters ) <modify_LOB_parameters> ::= { storage_clause | PCTVERSION integer | FREEPOOLS integer | REBUILD FREEPOOLS | LOB_retention_clause | LOB_deduplicate_clause | LOB_compression_clause | { ENCRYPT encryption_spec | DECRYPT } | { CACHE | { NOCACHE | CACHE READS } [ logging_clause ] } | allocate_extent_clause | shrink_clause | deallocate_unused_clause } ...
表4-2は、CREATE TABLE
文のパラメータをまとめたものです。
表4-2 ALTER TABLE文のパラメータ
パラメータ | 説明 |
---|---|
|
指定した方法でLOBデータの旧バージョンをLOB列に格納するように設定します。 |
|
SecureFiles LOB圧縮をオンまたはオフにします。 |
|
SecureFiles LOB重複除外をオンまたはオフにします。 |
|
SecureFiles LOB暗号化をオンまたはオフにします。 |
DEDUPLICATE
オプションを使用して、LOB列内の2つ以上の行の同一LOBデータ間で、同じデータ・ブロックが共有されるように指定できます。データベースは同一の内容のLOBを単一のコピーに結合し、記憶域を削減して記憶域管理を簡素化します。このオプションの逆は、KEEP_DUPLICATES
です。
この項では、ALTER TABLE
文で使用されるSecureFiles LOB圧縮について説明します。この項の内容は次のとおりです。
この構文は、LOB列の圧縮モードを変更します。
DBMS_LOB.SETOPTIONS
を使用して、LOBごとに圧縮を有効化または無効化できます。
圧縮は、表レベルまたはパーティション・レベルのいずれかで指定できます。
LOW、MEDIUM
およびHIGH
オプションでは、異なる圧縮レベルを使用できます。圧縮度が高くなればなるほど、待機時間が長くなります。HIGH
設定ではより多くの作業が発生しますが、データの圧縮が向上します。デフォルトは、MEDIUM
です。解凍が簡単で、非常に迅速です。「CREATE TABLE圧縮」を参照してください。
LOB圧縮は、SecureFiles LOBに対してのみ適用できます。
次の表に、特定の圧縮シナリオでALTER TABLE
文を発行する方法を示します。
この項では、ALTER TABLE
文に関連するSecureFiles LOB重複除外について説明します。この項の内容は次のとおりです。
ALTER
TABLE
構文は、LOBレベルの重複除外を有効化または無効化できます。
この構文は、LOB列の重複除外モードを変更します。
DBMS_LOB.SETOPTIONS
を使用して、LOBごとに重複除外を有効化または無効化できます。
重複除外は、表レベルまたはパーティション・レベルで指定できます。複数のパーティション化されたLOBにまたがって重複除外を実行することはできません。
重複除外は、SecureFiles LOBに対してのみ適用できます。
次の例に、特定の重複除外シナリオでALTER TABLE
文を発行する方法を示します。
この項では、ALTER TABLE
文で使用されるSecureFiles LOB暗号化について説明します。この項の内容は次のとおりです。
ALTER
TABLE
を使用して、SecureFiles LOBのLOB暗号化を有効化または無効化します。この構文では、新しいキーまたはアルゴリズムを使用してLOB列に再度キーを付けることもできます。
ENCRYPT
/DECRYPT
オプションは、指定したSecureFiles LOB列内のすべてのLOBの暗号化を有効化または無効化します。
SALT
はLOB暗号化のデフォルトです。NO
SALT
はサポートされていません。
DECRYPT
オプションは、暗号化された列をクリアテキストの形式に変換します。
キー管理により、暗号化または復号化が制御されます。
LOBは、列ごとのみで暗号化されます。パーティション化されたLOBは、すべてのパーティションが暗号化されるか暗号化されないかのいずれかです。
LOB暗号化は、SecureFiles LOBに対してのみ適用できます。
次の表に、特定の暗号化シナリオでALTER TABLE
文を発行する方法を示します。
例4-23 特定のアルゴリズムに基づいた暗号化によるSecureFiles LOB列の変更
3DES168
を使用して、LOBの暗号化を有効化します。
ALTER TABLE t1 MODIFY ( a CLOB ENCRYPT USING '3DES168');
これは、3DES168
を使用してLOBの暗号化を有効化する2番目の例です。
ALTER TABLE t1 MODIFY LOB(a) (ENCRYPT USING '3DES168');
この項では、データベース・ファイルシステム・リンクについて説明します。この章の内容は、次のとおりです。
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コンテンツ・ストアの特性/設定によってはより複雑になります。
データベース・ファイルシステム・リンクでは、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リンクを作成すると、実行可能な操作およびその実行方法に影響があります。Oracle Database 11gR2より前から存在している一部のDBMS_LOB
操作では、LOBがDBFSリンクの場合に例外が発生します。アプリケーションでは、これらをコールする前にDBMS_LOB.COPY_FROM_LINK()
をコールして、DBFSリンクをLOBで置き換える必要があります。完了したら、DBMS_LOB.MOVE_TO_DBFS_LINK()
を使用して、更新済のLOBを必要に応じてDBFSに戻すことができます。Oracle Database 11gR2より前から存在しているその他の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データを参照するよう命令できます。
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
に設定します。
初期化パラメータdb_securefile
パラメータは、init.ora
ファイルで設定されます。
パラメータdb_securefile
の型はtext
です。許容値は、ALWAYS
、PERMITTED
(デフォルト)NEVER
またはIGNORE
です。db_securefile
パラメータは動的で、スコープはALTER
SYSTEM
です。
db_securefile
パラメータを使用して、データベース管理者はSecureFiles LOBの作成を許可(PERMITTED
)、SecureFiles LOBの作成を禁止(NEVER
)、SecureFiles LOBの作成は試行するがBasicFiles LOBに戻す(ALWAYS
)、またはSecureFiles LOBを禁止して、BasicFiles LOBでSecureFiles LOBオプションを強制することで発生するすべてのエラーを無視(IGNORE
)のいずれかを行うことができます。
NEVER
が指定された場合、SecureFiles LOBとして指定されたLOBはすべて、BasicFiles LOBとして作成されます。すべてのSecureFiles LOB特定の記憶域オプションおよび機能(圧縮、暗号化、重複除外など)で例外が発生します。指定されていない記憶域オプションには、BasicFiles LOBのデフォルト値が使用されます。
ALWAYS
では、すべてのLOBをSecureFiles LOBとして作成しようとしますが、SECUREFILE
パラメータが明示的に指定されていないかぎり、ASSM
表領域にないLOBをBasicFiles LOBとして作成します。指定されるBasicFiles LOB記憶域オプションはいずれも無視され、指定されていないすべての記憶域オプションには、SecureFiles LOBのデフォルト値が使用されます。
IGNORE
が指定された場合、SECUREFILE
キーワードおよびすべてのSecureFiles LOBオプションは無視されます。
このドキュメントで説明されているすべての機能は、互換性を11.2.0.0.0
以上に設定した場合に有効になります。11.2.0.0.0
に設定した後は、ダウングレードはできません。
BasicFiles LOBをSecureFiles LOBにアップグレードする場合、データのアップグレードに通常使用される一般的な方法(CTAS/ITAS、オンライン再定義、エクスポート/インポート、列間でのコピー、またはビューおよび新規列の使用など)を使用する必要があります。これらのソリューションの多くは、入力LOB列のデータで使用されるディスク領域を2回使用する必要があります。ただし、パーティション化して、これらの操作をパーティションごとに実行することにより、必要なディスク領域を減らすことができます。
この項では、LOB列の移行の方法について説明します。
BasicFiles LOB列の移行処理中にREDO領域が生成されると、パフォーマンスが低下することがあります。移行処理中の表に対するREDOがログに記録されるのは、表にLOGGING
が設定されている場合のみです。
また、BasicFiles LOBからSecureFiles LOBへ変換中の列に対するREDOがログに記録されるのは、SecureFiles LOB列の記憶特性がLOGGING
に指定されている場合のみです。LOB列のロギング設定(LOGGING
またはNOLOGGING
)は、LOBが作成された表領域から継承されます。
移行中のREDO領域の生成を回避するには、NOLOGGING
記憶域パラメータを新しいSecureFiles LOB列に指定する必要があります。移行の完了後に、LOGGING
をオンにしてください。
BasicFiles LOBからSecureFiles LOBへの移行では、メソッドとしてオンラインの再定義のみをお薦めします。これは表レベルまたはパーティション・レベルで実行できます。
また、オンライン再定義を使用して表を移行できます。オンライン再定義には表をオフラインにする必要がないメリットがありますが、表で使用している領域に等しいか、それよりも大きな追加の空き領域が必要です。例4-27に、オンライン再定義を使用して表を移行する方法を示します。
例4-27 オンライン再定義の例
REM Grant privileges required for online redefinition. GRANT EXECUTE ON DBMS_REDEFINITION TO pm; GRANT ALTER ANY TABLE TO pm; GRANT DROP ANY TABLE TO pm; GRANT LOCK ANY TABLE TO pm; GRANT CREATE ANY TABLE TO pm; GRANT SELECT ANY TABLE TO pm; REM Privileges required to perform cloning of dependent objects. GRANT CREATE ANY TRIGGER TO pm; GRANT CREATE ANY INDEX TO pm; CONNECT pm DROP TABLE cust; CREATE TABLE cust(c_id NUMBER PRIMARY KEY, c_zip NUMBER, c_name VARCHAR(30) DEFAULT NULL, c_lob CLOB ); INSERT INTO cust VALUES(1, 94065, 'hhh', 'ttt'); -- Creating Interim Table -- There is no requirement to specify constraints because they are -- copied over from the original table. CREATE TABLE cust_int(c_id NUMBER NOT NULL, c_zip NUMBER, c_name VARCHAR(30) DEFAULT NULL, c_lob CLOB ) LOB(c_lob) STORE AS SECUREFILE (NOCACHE FILESYSTEM_LIKE_LOGGING); DECLARE col_mapping VARCHAR2(1000); BEGIN -- map all the columns in the interim table to the original table col_mapping := 'c_id c_id , '|| 'c_zip c_zip , '|| 'c_name c_name, '|| 'c_lob c_lob'; DBMS_REDEFINITION.START_REDEF_TABLE('pm', 'cust', 'cust_int', col_mapping); END; / DECLARE error_count pls_integer := 0; BEGIN DBMS_REDEFINITION.COPY_TABLE_DEPENDENTS('pm', 'cust', 'cust_int', 1, TRUE,TRUE,TRUE,FALSE, error_count); DBMS_OUTPUT.PUT_LINE('errors := ' || TO_CHAR(error_count)); END; / EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('pm', 'cust', 'cust_int'); -- Drop the interim table DROP TABLE cust_int; DESC cust; -- The following insert statement fails. This illustrates -- that the primary key constraint on the c_id column is -- preserved after migration. INSERT INTO cust VALUES(1, 94065, 'hhh', 'ttt'); SELECT * FROM cust;
パラレル実行に十分なリソースがあるシステムでは、BasicFiles LOB列のSecureFiles LOB列への再定義は、次の条件下でパラレルに実行できます。
挿入先の表がパーティション化されていない場合:
挿入先の表にLOB列を格納するために使用されるセグメントが、自動セグメント領域管理(ASSM)が使用可能になっている(現在のデフォルトおよびSecureFiles LOBの要件)ローカル管理表領域に属している。
1つのLOB列から1つのLOB列への単純なマッピングが存在し、挿入先の表には1つのLOB列のみがある。
挿入先の表がパーティション化されている場合:
パーティション化に通常使用されるパラレル実行方法が適用されます。挿入先の表がパーティション化されている場合、オンライン再定義がパラレルに実行されます。
オンライン再定義をパラレル実行するには、前の項の例4-27「オンライン再定義の例」の接続文の後に次の文を追加してください。
ALTER SESSION FORCE PARALLEL DML;
この項では、SecureFiles LOBで使用されるPL/SQLパッケージについて説明します。
この項の内容は次のとおりです。
LOBは重複除外、暗号化および圧縮に関するLOB列設定を継承し、LOBロケータAPIを使用して特定のLOBインスタンスに構成することもできます。LOB設定の構成にLONG
APIが使用できないことに注意してください。次の項は、これらの機能に対応するためPL/SQL DBMS_LOB
パッケージに行われた追加および変更を説明します。詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_LOB
パッケージに関する項を参照してください。
表4-3に示すCONSTANT PLS_INTEGER
型の定数では、DBFSリンクのインタフェースをサポートしています。PL/SQL DBMS_LOB
パッケージで使用される定数の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
表4-3 一部のDBMS_LOB定数
定数 | 説明 |
---|---|
DBFS_LINK_NEVER |
DBFSリンクの状態値 |
DBFS_LINK_YES |
DBFSリンクの状態値 |
DBFS_LINK_NO |
DBFSリンクの状態値 |
DBFS_LINK_CACHE |
|
DBFS_LINK_NOCACHE |
|
DBFS_LINK_PATH_MAX_SIZE |
DBFSパラメータの最大長( |
CONTENTTYPE_MAX_SIZE |
コンテンツ・タイプの最大1バイトのASCII文字( |
表4-4は、PL/SQLパッケージDBMS_LOB
のメソッドに加えられた変更をまとめたものです。SecureFiles LOBパラダイムをサポートできるように、既存のメソッドの多くが強化されており、複数の新しいメソッドが追加されています。
Oracle Database 11gR2より前から存在している一部のDBMS_LOB
操作では、LOBがDBFSリンクの場合に例外が発生することに注意してください。アプリケーションでは、これらをコールする前にCOPY_FROM_LINK()
をコールして、DBFSリンクをLOBで置き換える必要があります。完了したら、MOVE_TO_DBFS_LINK()
を使用して、更新済のLOBを必要に応じてDBFSに戻すことができます。Oracle Database 11gR2より前から存在しているその他のDBMS_LOB
操作は、ストリーミングをサポートするファイルシステムにDBFSリンクが存在する場合に、透過的に動作します。ストリーミングがサポートされていないか無効の場合、これらの操作は失敗することに注意してください。
表4-4 DBMS_LOBメソッド
メソッド | 説明 |
---|---|
|
特定のLOBの設定済のオプションを取得します。 |
|
特定のLOBで新しいオプションを設定します。 |
|
LOBがSecureFiles LOBかどうかを判別します。 |
|
指定したLOBデータをデータベースからDBFS HSMストアに移動します。 |
|
指定したLOBデータをDBFS HSMストアからデータベースにコピーします。 |
|
既存のDBFSを新しいLOBにコピーします。 |
|
LOBのDBFSパス名を戻します。 |
|
LOBとDBFSパス名を関連付けます。 |
|
LOBのリンクの状態を戻します。 |
|
DBFSリンクを作成するための一意のファイル・パス名を戻します。 |
|
LOBデータのコンテンツ・タイプ文字列を戻します。 |
|
LOBデータのコンテンツ・タイプ文字列を取得します。 |
|
ソースLOBのコンテンツを宛先LOBに追加します。 |
|
2つのLOBの全体または一部を比較します。 |
|
|
|
|
|
ソースLOBの全体または一部を宛先LOBにコピーします。 |
|
LOBの全体または一部を消去します。 |
|
LOBの指定したフラグメントを削除します。 |
|
データのフラグメントをLOBに挿入します。 |
|
LOBのフラグメントをLOB内の場所間で移動します。 |
|
LOBのフラグメントを新しいデータで置き換えます。 |
|
|
|
|
|
|
|
LOBからデータを読み取ります。 |
|
LOBのフラグメントを戻します。 |
|
指定した長さまでLOBを切り捨てます。 |
|
LOBにデータを書き込みます。 |
|
データをLOBの終わりに追加します。 |
この関数では、各SecureFiles LOBの圧縮、重複除外および暗号化の設定を取得します。オプションの型に基づいて事前定義された定数に対応する整数が戻されます。
これらの機能が無効になっているSecureFiles LOB列全体では、圧縮または重複除外をオンまたはオフに切り替えることはできません。
この関数の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。対応するOCI LOB関数OCILobGetContentType()
の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。
このプロシージャは圧縮、重複除外および暗号化機能を設定します。各LOBベースの機能の設定を可能にし、デフォルトLOB設定を上書きします。このコールでは、変更を永続化させる際にサーバーへのラウンド・トリップが発生します。
これらの機能が有効になっていないSecureFiles LOB列では、圧縮または重複除外をオンまたはオフに切り替えることができません。GETOPTIONS()
およびSETOPTIONS()
は、個々のSecureFiles LOBに対して動作します。特定のSecureFiles LOBで機能をオフに切り替えたり、SETOPTIONS()
によってすでにオフにされた機能をオンに切り替えはできますが、表の作成時にSecureFiles LOBに指定されていないオプションをオンに切り替えることはできません。
この関数の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。対応するOCI LOB関数OCILobSetContentType()
の詳細は、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。
このファンクションは、渡されるLOBロケータがSecurefiles LOB用の場合にTRUE
を戻します。そうでなければ、FALSE
を戻します。
この関数の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
MOVE_TO_DBFS_LINK()
では、指定したLOBデータを(データベースから)DBFS HSMストアに配置します。LOBが格納済の場合、MOVE_TO_DBFS_LINK()
は移動が正常に終了したかのように暗黙的に返されます。この場合、DBFS_LINK_NOCACHE
が指定されるか、デフォルトのflags
値が設定されると、LOBデータはデータベースから削除されます。
同じflags
を持つ同じLOBでMOVE_TO_DBFS_LINK()
を複数回コールしても効果はありません。格納済のLOBでMOVE_TO_DBFS_LINK()
をコールすると、flags
の設定に応じて、LOBはキャッシュ(MOVE_TO_DBFS_LINK_CACHE
)されるか、削除(DBFS_LINK_NOCACHE
)されます。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
COPY_FROM_DBFS_LINK()
では、指定したLOBデータをDBFS HSMストアからデータベースに取得します。
LOBが正常に取得されると、COPY_FROM_DBFS_LINK
では暗黙的に成功が返されます。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
COPY_DBFS_LINK()
では、取得を中断することなく宛先LOBがソースLOBと同じDBFSパス名を参照します。オプションのフラグ・パラメータにより、LOBが宛先に読み取られます。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
GET_DBFS_LINK()
では、指定されたLOBのDBFSパス名を戻します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
SET_DBFS_LINK
: 指定されたLOBを指定されたDBFSパス名にリンクします。
GET_DBFS_LINK_STATE
は、指定されたLOBに対する現行のリンクの状態を取得します。
指定されたLOBの現行のリンクの状態を戻します。LOBがリンクされていない場合、状態はDBFS_LINK_NEVER
に設定されます。LOBがリンクされている場合、状態はDBFS_LINK_YES
に設定されます。LOBがDBFS HSMストアから取得されている場合、状態はDBFS_LINK_NO
に設定されます。LOBがリンク済だがデータがデータベースに残っている場合、cachedはTRUE
に設定されます。データがリンクの作成後に削除された場合、cachedはFALSE
に設定され、状態がDBFS_LINK_NEVER
の場合はNULL
に設定されます。pathname
引数は、DBFS HSMストアでLOBの識別に使用されるDBFSパス名に設定されます。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
DBFS_LINK_GENERATE_PATHNAME()
では、DBFSリンクを作成するための一意のファイル・パス名を戻します。
アーカイブに使用できるグローバルに一意なファイル・パス名を戻します。これは、このファンクションの各種LOBまたはLOBの各バージョンを対象としたすべてのコールで、グローバルに一意であることが保証されています。同一のLOBおよびバージョンでは、常に同じ名前になります。
SETCONTENTTYPE()
では、LOB内のデータに対するコンテンツ・タイプ文字列を設定します。
SecureFiles LOBに関連付けられた既存のcontenttype
をクリアするには、contenttype
を空の文字列に設定してSETCONTENTTYPE()
を呼び出します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
GETCONTENTTYPE()
は、LOB内のデータに対するコンテンツ・タイプ文字列が設定されている場合に取得します。
SecureFiles LOBにcontenttype
が関連付けられていない場合、GETCONTENTTYPE()
はNULL
を戻します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
リンクされたSecureFiles LOBでAPPEND()
がコールされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
DBFSリンクであるLOBでCOMPARE()
がコールされると、リンクされたLOBは、可能な場合はDBFSからストリーミングされ、可能でない場合は例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
CONVERTTOBLOB
がコールされ、ソースLOBがリンク済の場合、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
CONVERTTOCLOB
がコールされ、ソースLOBがリンク済の場合、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
ソースLOBがリンクされると、データは、可能な場合はDBFSからストリーミングされ、可能でない場合は例外が発生します。宛先LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
削除するLOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
BLOB
がリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
CLOB
がリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、データは、可能な場合はDBFSからストリーミングされ、可能でない場合は例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、データは、可能な場合はDBFSからストリーミングされ、可能でない場合は例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
LOBがリンクされると、例外が発生します。
詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。