12.1 新規LOB列の作成
LOB記憶域特性は、CREATE TABLE
文またはALTER TABLE ADD COLUMN
文を使用してLOB列を作成するときに指定できます。
ほとんどのユーザーには、これらの記憶域特性のデフォルト値で十分です。ただし、LOB記憶域を微調整する場合は、この項で説明するガイドラインを考慮してください。
表内のLOBを定義する場合、各永続LOB列の表領域および記憶特性を明示的に指定できます。大型のLOBの場合は、別の表領域を使用するのが一般的です。SecureFilesはLOBのデフォルト記憶域であるため、SECUREFILE
キーワードはオプションですが、次の例ではわかりやすくするために示されています。この例では、SecureFiles LOBは自動セグメント領域管理(ASSM)で管理される表領域でのみ作成できるため、TABLESPACE lobtbs1
はASSMで管理されることを前提としています。
CREATE TABLE lobtab1 (n NUMBER, c CLOB)
lob (c) STORE AS SECUREFILE sfsegname
( TABLESPACE lobtbs1
ENABLE STORAGE IN ROW
CACHE LOGGING
RETENTION AUTO
COMPRESS
STORAGE (MAXEXTENTS 5)
);
BasicFiles LOBを作成するには、前述の例のSECUREFILE
キーワードをBASICFILE
キーワードに置き換え、SecureFilesに固有のCOMPRESS
キーワードを削除します。
USER_LOBS
、ALL_LOBS
およびDBA_LOBS
は、LOB列に固有の情報を提供します。
ノート:
永続LOBの格納にはSecureFiles LOBを使用することをお薦めします。そのため、この章では、SecureFiles記憶域のみに焦点を当てます。永続LOBの文脈では、LOBとは、他に示されていないかぎり、SecureFiles LOBを意味します。ノート:
BFILE
に対して指定できる表領域または記憶域特性はありません。これらはデータベースには格納されません。
LOBデータ・セグメント名の割当て
前述の例に示すように、LOBデータ・セグメントの名前(この例ではsfsegname
)を指定すると、作業環境がより明確になります。USER_LOBS
、ALL_LOBS
およびDBA_LOBS
のLOBデータ・ディクショナリ・ビューを問い合せると、システムが生成した名前ではなく、選択したLOBデータ・セグメントが表示されます。
- CREATE TABLE BNF
CREATE TABLE
文は、SecureFiles、BasicFiles LOB記憶域またはその両方に固有のパラメータを使用してLOB記憶域と連携して機能します。 - ENABLEまたはDISABLE STORAGE IN ROW
LOB列には、実際のLOB値の場所を参照するロケータが格納されます。この項では、表の行の記憶域を有効化または無効化する方法について説明します。 - CACHE、NOCACHEおよびCACHE READS
この項では、LOBを含む表の作成時に従うガイドラインについて説明します。 - LOGGINGおよびFILESYSTEM_LIKE_LOGGING
LOGGING
パラメータは、他の表操作に適用するのと同じ方法でLOBに適用できます。 - RETENTIONパラメータ
SecureFiles LOBのRETENTION
パラメータでは、旧バージョンのLOBデータ・ブロックの管理方法を指定します。 - SecureFilesの圧縮、重複除外および暗号化
この項では、BasicFilesでサポートされている機能に加えて、SecureFilesでサポートされている機能について説明します。 - BasicFile固有のパラメータ
この項では、BasicFilesに固有の記憶域パラメータについて説明します。 - LOBセグメントの最初のエクステントの制限
この項では、SecureFilesおよびBasicFilesの最初のエクステント要件について説明します。 - SecureFiles LOB用のCREATE TABLE LOB記憶域パラメータの概要
この項の表は、SecureFiles LOB記憶域に関連するCREATE TABLE
文のパラメータを示しています。
親トピック: 永続LOB: 高度なDDL
12.1.1 CREATE TABLE BNF
CREATE TABLE
文は、SecureFiles、BasicFiles LOB記憶域、またはその両方に固有のパラメータを使用してLOB記憶域と連携して機能します。
Backus Naur (BNF)表記法のCREATE TABLE
の構文は次のとおりです。これらの部分はLOB固有のパラメータに焦点を当てるために簡略化されています。
例12-1 CREATE TABLE用のBNF
CREATE ... TABLE [schema.]table ...;
<column_definition> ::= column [datatype]...
<datatype> ::= ... | BLOB | CLOB | NCLOB | BFILE | ...
<column_properties> ::= ... | LOB_storage_clause | ... | LOB_partition_storage |...
<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 STORAGE IN ROW [{4000|8000}]
| 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 ] } }
]
<LOB_retention_clause> ::=
{RETENTION [ MAX | MIN integer | AUTO | NONE ]}
<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
}
<LOB_partition_storage> ::=
{PARTITION partition
{ LOB_storage_clause | varray_col_properties }...
[ (SUBPARTITION subpartition
{ LOB_partitioning_storage | varray_col_properties }...
)
]
}
<LOB_partitioning_storage> ::=
{LOB (LOB_item) STORE AS [BASICFILE | SECUREFILE]
[ LOB_segname [ ( TABLESPACE tablespace | TABLESPACE SET tablespace_set ) ]
| ( TABLESPACE tablespace | TABLESPACE SET tablespace_set )
]
}
親トピック: 新規LOB列の作成
12.1.2 ENABLEまたはDISABLE STORAGE IN ROW
LOB列には、実際のLOB値の位置を参照するロケータが格納されます。この項では、表の行の記憶域を有効化または無効化する方法について説明します。
実際のLOB値は、表の作成時に指定された列プロパティ、およびLOBのサイズに応じて、表の行(表内)または表の行の外(表外)に格納されます。ENABLE | DISABLE STORAGE IN ROW
句を使用して、LOBを表内または表外に格納するかどうかを指定します。小さいLOBにはパフォーマンス上の利点があるため、デフォルトはENABLE STORAGE IN ROW
です。
ENABLE STORAGE IN ROW
ENABLE STORAGE IN ROW
が設定されている場合、最小インライン・サイズは4000で、最大は8000です。この最大値には、LOB値および制御情報が含まれます。LOBのデフォルトのインライン・サイズは4000です。
IN ROW
に格納されている場合、
- Exadataプッシュダウンは、SecureFilesの圧縮および暗号化を使用する場合など、LOBに対して有効です。
- インメモリーは、SecureFilesの圧縮および暗号化されていないLOBに対して有効です。
約32kより大きいLOBは表外に格納されます。ただし、制御情報は引き続き行に格納されるため、アウトラインLOBデータを高速に読み取ることができます。
LOBとして格納されたVARCHAR2(32K)およびVARRAYでは、このインライン構文の増加はサポートされていません。
DISABLE STORAGE IN ROW
行にLOBを格納すると行のサイズが大きくなるため、一部の例では、DISABLE STORAGE IN ROW
を選択することをお薦めします。この場合、全表スキャン、複数行アクセス(レンジ・スキャン)、LOB列以外の列への多数のUPDATE/SELECT
などの実表の処理を頻繁に行う場合、パフォーマンスが低下します。
親トピック: 新規LOB列の作成
12.1.3 CACHE、NOCACHEおよびCACHE READS
この項では、LOBを含む表の作成時に従うガイドラインについて説明します。
次の表のガイドラインに従って、キャッシュ・オプションを使用します。
表12-1 CACHE、NOCACHEおよびCACHE READSオプションの使用
キャッシュ・モード | 読取りの頻度 | バッファ・キャッシュの動作 |
---|---|---|
NOCACHE (デフォルト)
|
1回または時々 | LOB値はバッファ・キャッシュに入れられません。 |
CACHE READS |
頻繁 | LOB値は、読取り中のみバッファ・キャッシュに入れられ、書込み中には入れられません。 |
CACHE |
書込み直後にLOBを読取り | LOBページは、読取りおよび書込み操作中にバッファ・キャッシュに配置されます。半構造化データを格納するには、CACHE オプションをオンにすることを検討してください。
|
注意:
アプリケーションでLOBへの書込みが頻繁に行われる場合、CACHE
オプションを使用すると、LOB以外の他のページがバッファ・キャッシュから途中でエージ・アウトされる可能性があります。
親トピック: 新規LOB列の作成
12.1.4 LOGGINGおよびFILESYSTEM_LIKE_LOGGING
LOGGING
パラメータは、他の表操作に適用するのと同じ方法でLOBに適用できます。
このパラメータのデフォルト値はLOGGING
です。SecureFilesの場合、FILESYSTEM_LIKE_LOGGING
パラメータはNOLOGGING
オプションと同等です。
LOGGING
オプションを設定すると、Oracle Databaseによって、変更のREDO
およびUNDO
ログを生成する最も効率的な方法が決定されます。LOGGING
パラメータを有効にしておくことをお薦めします。
バルク・ロードおよび挿入には、FILESYSTEM_LIKE_LOGGING
またはNOLOGGING
オプションが役立ちます。LOBにデータをロードする際、REDO
ログを必要とせず、失敗したロードを再開できる場合は、LOBデータ・セグメントの記憶域特性をFILESYSTEM_LIKE_LOGGING
に設定します。これによって、データの初期ロードのパフォーマンスが向上します。データのロードの完了後は、ALTER TABLE
文を使用して、LOBデータ・セグメントのLOB記憶域特性を通常のLOB操作用に変更することをお薦めします。たとえば、キャッシュ・オプションをLOGGING
オプションとともにCACHE
またはCACHE READS
に設定します。
関連項目:
データベース・レベルでのロギング動作のオーバーライドの詳細は、FORCE LOGGING設定の優先順位を参照してくださいノート:
BasicFilesの場合、CACHE NOLOGGING
オプションを指定するとエラーになります。
親トピック: 新規LOB列の作成
12.1.5 RETENTIONパラメータ
SecureFile LOBのRETENTION
パラメータでは、旧バージョンのLOBデータ・ブロックの管理方法を指定します。
他のデータ型とは異なり、SecureFiles LOBの古いバージョンのLOBデータ・ブロックはLOBセグメント自体に格納され、読取り一貫性操作をサポートするために使用されます。対応する旧バージョンのLOBデータ・ブロックがないと、以前のSCNでのLOBの読取りがORA-1555
で失敗する場合があります。次のガイドラインに従って、RETENTION
パラメータを設定します。
表12-2 RETENTIONパラメータの動作
RETENTIONパラメータ値 | 動作 |
---|---|
MAX |
旧バージョンのLOBデータ・ブロックがLOBセグメント全体を占めるようにします。これにより、領域使用量が問題にならない場合に、ORA-1555 の問題が発生する可能性が最小限に抑えられます。この設定では、旧バージョンのLOBデータ・ブロックが原因でLOBセグメントが増加する可能性があります。MAXSIZE 属性を設定しない場合、MAX はAUTO と同様に動作します。
|
MIN |
旧バージョンのLOBデータ・ブロックの保存期間をn 秒に制限します。この設定では、保存期間を秒数でn として指定する必要もあります。旧バージョンのLOBデータ・ブロックでも、LOBセグメントが大きくなる可能性があります。
|
AUTO |
Oracle Databaseは、可能なかぎり効率的に領域を管理し、時間と領域の両方のニーズを重み付けします。 |
NONE | 読取り一貫性のために古いバージョンのLOBデータ・ブロックが必要ない場合は、この値を設定します。これは、領域使用率の点で最も効率的な設定です。 |
未設定(DEFAULTに設定) | UNDO_RETENTION 設定を使用すると、動的または手動で設定できます。UNDO_RETENTION パラメータが正の値に設定されると、同じ保存期間の値でRETENTION パラメータをMIN に設定することと同じになります。UNDO_RETENTION パラメータがゼロ(0)に設定されると、RETENTION パラメータをNONE に設定することと同じです。
|
SecureFiles LOBのSHRINK
機能は、RETENTION
パラメータの設定に関係なく、LOBデータ・ブロックの旧バージョンを部分的に削除してエクステントを解放します。したがって、SHRINK
機能は、RETENTION
パラメータがNONE
に設定されている場合にのみ使用することをお薦めします。
次のSQLコード・スニペットは、LOBセグメントのRETENTION
パラメータの決定に役立ちます。
SELECT RETENTION_TYPE, RETENTION_VALUE FROM USER_LOBs WHERE ...;
親トピック: 新規LOB列の作成
12.1.6 SecureFilesの圧縮、重複除外および暗号化
この項では、BasicFilesでサポートされている機能に加えて、SecureFilesでサポートされている機能について説明します。
SecureFiles LOB記憶域は、BasicFiles LOB記憶域オプションでは使用できない次の3つの機能をサポートしています。
- 圧縮
- 重複除去
- 暗号化
CREATE TABLE
文を使用して、圧縮、重複除外および暗号化を有効にしておくことをお薦めします。
注意:
表または列レベルの圧縮または暗号化を有効にしても、LOBデータは圧縮または暗号化されません。LOBデータを圧縮または暗号化するには、LOB_storage_clause
で指定して、SecureFilesの圧縮または暗号化を使用します。
ノート:
ALTER TABLE
文を使用して、圧縮、重複除外および暗号化機能を有効にできます。ただし、ALTER TABLE
文を使用してこれらの機能を有効にすると、SecureFiles LOB記憶域のすべてのデータの読取り、変更および書込みが実行されます。これによって、長時間かかる可能性がある操作の際にデータベースで表のロックが発生する可能性があります。ALTER TABLE
文には、この問題の回避に役立つオンライン機能があります。
拡張LOB圧縮
拡張LOB圧縮では、ディスク領域を節約してパフォーマンスを改善するため、SecureFiles LOBデータを透過的に分析して圧縮します。
ライセンス要件: 拡張LOB圧縮を実装するには、Oracle Advanced Compressionオプションのライセンスが必要です。
拡張LOB圧縮でCREATE
TABLE
文を使用する場合は、次の点を考慮してください。
-
拡張LOB圧縮は、サーバー側で実行され、LOBデータへのランダムな読取りおよび書込みを可能にします。
utl_compress
などのクライアント側の圧縮ユーティリティでは、ランダム・アクセスは得られません。 -
拡張LOB圧縮では、表または索引圧縮を有効にできません。逆に、表および索引圧縮でも拡張LOB圧縮を有効にできません。
-
LOW
、MEDIUM
およびHIGH
オプションでは、異なる圧縮レベルを使用できます。圧縮率が高くなれば、発生する待機時間も長くなります。HIGH
設定ではより多くの作業が発生しますが、データの圧縮が向上します。デフォルトは、MEDIUM
です。LOW
圧縮オプションでは、ファイル圧縮でよく見られるCPUコストの大部分を軽減する非常に軽量の圧縮アルゴリズムが使用されます。LOW
レベルで圧縮されたSecureFiles LOBにより、SecureFiles LOB記憶域を効率的に選択できるようになりました。LOW
で圧縮されたSecureFiles LOBは、一般的にBasicFiles LOBよりもCPU時間と記憶域を消費せず、ディスクI/Oも減るためアプリケーションの実行を高速化できます。 -
圧縮は、パーティション・レベルで指定できます。
CREATE
TABLE
lob_storage_clause
では、パーティションごとにパーティション化された表の圧縮を指定できます。 -
DBMS_LOB.SETOPTIONS
プロシージャを使用して、SecureFiles LOBごとに圧縮を有効化および無効化できます。
次の例に、特定の圧縮シナリオでCREATE TABLE
文を発行する方法を示します。
例12-2 LOW圧縮を使用したSecureFiles LOB列の作成
CREATE TABLE t1 (a CLOB) LOB(a) STORE AS SECUREFILE( COMPRESS LOW CACHE NOLOGGING );
例12-3 MEDIUM (デフォルト)圧縮を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( COMPRESS CACHE NOLOGGING );
例12-4 HIGH圧縮を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( COMPRESS HIGH CACHE );
例12-5 圧縮を無効化したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( NOCOMPRESS CACHE );
例12-6 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 ( COMPRESS ), PARTITION p2 VALUES (DEFAULT) );
拡張LOB重複除外
拡張LOB重複除外は、LOB列またはパーティション内で重複するLOBデータをOracle Databaseで自動検出できるようにし、データのコピーを1つのみ格納することにより領域を節約できます。
ライセンス要件: 拡張LOB重複除外を実行するには、Oracle Advanced Compressionオプションのライセンスが必要です。
CREATE
TABLE
および拡張LOB重複除外を使用する場合は、次のことを考慮してください。
-
同一のLOBがある場合、重複除外の対象となります。重複除外を使用可能にすることにより、コピー操作によるデータの重複を回避できます。
-
重複検出は、LOBセグメント内で発生します。パーティション化およびサブパーティション化されたLOB列の場合、パーティションまたはサブパーティションにまたがって重複を検出することはできません。
-
重複除外は、パーティション・レベルで指定できます。
CREATE
TABLE
lob_storage_clause
を使用して、パーティションごとにパーティション化された表を指定できます。 -
DBMS_LOB.SETOPTIONS
プロシージャを使用して、LOBごとに重複除外を有効化または無効化できます。
次の例に、特定の重複除外シナリオでCREATE TABLE
文を発行する方法を示します。
例12-7 重複除外を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( DEDUPLICATE CACHE );
例12-8 重複除外を無効化したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( KEEP_DUPLICATES CACHE );
例12-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) );
例12-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) );
SecureFiles暗号化
SecureFiles暗号化では、LOBの新たな暗号化機能について説明します。データは透過的データ暗号化(TDE)使用して暗号化され、データの安全な格納だけでなく、ランダムな読取りおよび書込みアクセスが可能です。
ライセンス要件: SecureFiles暗号化を実行するには、Oracle Advanced Securityオプションのライセンスが必要です。
SecureFiles暗号化でCREATE TABLE
文を使用する場合は、次の点を考慮してください。
-
SecureFiles暗号化では、データがLOBセグメントに行内に格納されているか表外に格納されているかに関係なく、SecureFile LOB列に格納されているデータが暗号化されます。表または列レベルの暗号化では、LOBセグメント内の表外に格納されているデータは暗号化されないことに注意してください。
-
SecureFiles暗号化では、ウォレットまたはハードウェア・セキュリティ・モデル(HSM)を使用して暗号化キーを保持します。ウォレットの設定は、透過的データ暗号化(TDE)および表領域暗号化について説明されている設定と同じであるため、SecureFiles暗号化を使用する前に完了してください。
関連項目:
TDEでのOracleウォレットの作成および使用の詳細は、Oracle Database Advanced Securityガイドを参照してください。
-
encrypt_algorithm
は、暗号化アルゴリズムの名前を示します。有効なアルゴリズムは、AES192
(デフォルト)、AES128
およびAES256
です。 -
列の暗号化キーは、(指定されている場合は)
PASSWORD
から導出されます。 -
LOB暗号化のデフォルトは
SALT
です。NO SALT
はサポートされていません。 -
SecureFiles暗号化は、表レベルでのみ列単位でサポートされ、パーティション・レベルではサポートされません。したがって、LOB列内のすべてのパーティションが暗号化されます。
-
DECRYPT
は、LOBをクリアテキストのままにします。 -
キー管理により、暗号化または復号化が制御されます。
-
TDEは、従来のインポート
および
エクスポート・ユーティリティまたはトランスポータブル表領域ベースのエクスポート
ではサポートされていません。かわりに、暗号化された列には、データ・ポンプ
expdb
およびimpdb
ユーティリティを使用してください。
次の例に、特定の暗号化シナリオでCREATE TABLE
文を発行する方法を示します。
例12-11 特定の暗号化アルゴリズムを使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB ENCRYPT USING 'AES128') LOB(a) STORE AS SECUREFILE ( CACHE );
例12-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) );
例12-13 パスワード・キーに基づいた暗号化を使用したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB ENCRYPT IDENTIFIED BY foo) LOB(a) STORE AS SECUREFILE ( CACHE );
暗号化オプションを文のLOB_encryption_clause
セクションで設定するため、次の例は同じ結果になります。
CREATE TABLE t1 (a CLOB) LOB(a) STORE AS SECUREFILE ( CACHE ENCRYPT IDENTIFIED BY foo );
例12-14 暗号化を無効化したSecureFiles LOB列の作成
CREATE TABLE t1 ( a CLOB ) LOB(a) STORE AS SECUREFILE ( CACHE DECRYPT );
親トピック: 新規LOB列の作成
12.1.7 BasicFile固有のパラメータ
この項では、BasicFiles固有の記憶域パラメータについて説明します。
次の記憶域パラメータは、BasicFilesに固有のものです。
注意:
すべてのLOBのニーズにSecureFiles LOBを使用することをお薦めします。PCTVERSION
BasicFiles LOBが変更されると、新しいバージョンのBasicFiles LOBページが作成され、前のバージョンのBasicFiles LOB値の読取り一貫性操作がサポートされます。PCTVERSION
パラメータは、使用中のBasicFiles LOBデータ領域全体のうち、旧バージョンのBasicFiles LOBデータ・ページが占めることのできる割合です。旧バージョンのBasicFiles LOBデータ・ページの占める割合が使用中のBasicFiles LOB領域に対してPCTVERSION
量を超え始めると、すぐにOracle Databaseにより旧バージョンの部分が解放され再利用されます。PCTVERSION
パラメータには、次の事前設定値があります。
- デフォルト: 10%
- 最小: 0
- 最大: 100
アプリケーションで、BasicFiles LOB列の大量の読取りと並行して複数のBasicFiles LOBを更新する必要がある場合は、PCTVERSION
パラメータに20%などの大きい値を使用することを検討してください。アプリケーションで永続BasicFiles LOBインスタンスが作成されて1回のみ書き込まれ、その後は主に読取り専用となる場合、更新頻度は低くなります。この場合、PCTVERSION
パラメータに5%以下などの小さい値を使用することを検討してください。既存のBasicFiles LOBが読取り専用であることがわかっている場合、古いバージョンのデータに必要なページがないため、PCTVERSION
パラメータを0%に設定して問題ありません。
ノート:
PCTVERSION
パラメータとRETENTION
パラメータは、BasicFiles LOBに対して相互に排他的です。つまり、PCTVERSION
パラメータまたはRETENTION
パラメータのどちらか一方を指定できますが、両方は指定できません。
CHUNK
チャンクとは1つまたは複数のOracleブロックです。LOBを含む表を作成する場合に、BasicFiles LOB用のチャンク・サイズを指定できます。これは、LOB値に対してアクセスまたは変更を行うときに、Oracle Databaseが使用するデータ・サイズに対応します。チャンクの一部はシステム関連の情報を格納し、残りはLOB値を格納します。チャンク・サイズの取得に使用するAPIは、LOB値を格納するLOBチャンクで使用される領域容量を返します。次のAPIを使用すると、チャンク・サイズを取得できます。
- PL/SQLの
DBMS_LOB.GETCHUNKSIZE
プロシージャ - OCIの
OCILobGetChunkSize()
関数
LOB列の作成時にCHUNK
パラメータの値を指定した後は、LOBを移動せずに値を変更することはできません。CHUNK
パラメータは、最も頻繁にアクセスまたは書込みが行われるデータ・サイズに設定できます。LOBへのアクセスは、大きいデータ・チャンクで行う方が効率的です。LOBの記憶域特性を明示的に指定する場合は、LOBデータ・セグメント記憶域のINITIAL
パラメータおよびNEXT
パラメータをCHUNK
サイズより大きいサイズに設定してください。
SecureFilesでは、CHUNK
サイズは、アドバイザ・サイズで、後方互換性のために使用します。
FREEPOOLS
BasicFiles LOBのFREELIST
グループの数を指定します(データベースが自動UNDOモードの場合)。リリース12cまでの互換モードでは、このパラメータはSecureFiles LOBの作成時に無視されます。
FREELISTSまたはFREELIST GROUPS
パーティション表でNULL
セグメントに割り当てられるプロセス空きリスト、または空きリスト・グループの数をそれぞれ指定します。リリース12cまでの互換性モードでは、これらのパラメータはSecureFiles LOBの作成時に無視されます。
親トピック: 新規LOB列の作成
12.1.8 LOBセグメントの最初のエクステントの制限
この項では、SecureFilesおよびBasicFilesの最初のエクステント要件について説明します。
SecureFiles LOBセグメントの最初のエクステント
SecureFiles LOBセグメントは、自動セグメント領域管理(ASSM)でローカル管理表領域にのみ作成できます。最初のエクステントに必要なブロック数は、リリースによって異なります。21cより前では、最初のエクステントに16ブロック以上が必要です。21c以降では、compatibleパラメータが20.1.0.0.0以上の場合、数値は32です。以前のリリースで作成されたセグメントは、引き続き新しいリリースで機能します。ただし、自動的にはアップグレードされません。
最初のエクステントの実際のサイズは、データベースblock_sizeによって異なります。表領域が均一エクステントを使用するように構成されている場合、エクステントは前述の数より大きくする必要があります。たとえば、block_size = 8k
の場合、均一エクステント・サイズは21c以前では128K以上、21cでは互換性のあるパラメータが設定された256K以上である必要があります。表領域がこの数より小さい均一エクステントを使用するように構成されている場合、LOBセグメントの作成は失敗します。
BasicFile LOBセグメントの最初のエクステント
BasicFile LOBセグメントは、ディクショナリ管理表領域またはローカル管理表領域に作成できます。セグメントには、最初のエクステントに3つ以上のブロックが必要です。これは、データベースblock_sizeに基づいて様々なエクステント・サイズに変換されます。表領域が3つ未満のブロックを格納する均一エクステントを使用するように構成されている場合、LOBセグメントの作成は失敗します。
親トピック: 新規LOB列の作成
12.1.9 SecureFiles LOB用のCREATE TABLE LOB記憶域パラメータの概要
この項の表は、SecureFiles LOB記憶域に関連するCREATE TABLE
文のパラメータをまとめたものです。
表12-3 LOBに関連するCREATE TABLE文のパラメータ
パラメータ | 説明 |
---|---|
SecureFiles LOB記憶域を指定します。 Oracle Database 12c以降では、パラメータ |
|
BasicFiles LOB記憶域、LOBの元のアーキテクチャを示します。 BasicFiles LOB記憶域タイプを使用するには、明示的にパラメータ BasicFiles LOBの場合、いずれかのSecureFiles LOBオプションを指定すると、エラーが発生します。 |
|
読取り一貫性をサポートするために、旧バージョンのLOBデータを格納するための保存方針を指定します。使用可能な値は、 |
|
LOBで使用可能な記憶域の上限を指定します。デフォルト・サイズは4000ですが、最大で8000にできます。 上限に達した場合、時間要件にかかわらず、必要に応じて、旧バージョンのLOBデータ・ブロックのプールから新規のLOBデータ・ブロックが取得されます。 |
|
CACHE、NOCACHE、CACHE READS |
LOBデータがバッファ・キャッシュに格納されるタイミングを指定します。
デフォルトは |
LOBへの変更に対してREDOおよびUNDOを生成するかどうかを指定します。
デフォルトは |
|
デフォルトは |
|
デフォルトは |
|
デフォルトは |
親トピック: 新規LOB列の作成