12.2 既存のLOB列の変更
ALTER TABLE
文を使用すると、LOB列の記憶域特性を変更できます。
- ALTER TABLE BNF
この項では、Backus Naur (BNF)表記法のALTER TABLE
の構文について説明します。この構文の一部は、LOB固有のパラメータに焦点を当てるために簡略化されています。 - ALTER TABLE MODIFYとALTER TABLE MOVE LOB
この項では、ALTER TABLE MODIFY
およびALTER TABLE MOVE LOB
の使用時の記憶域特性を比較します。 - ALTER TABLE SecureFiles LOBの機能
この項では、ALTER TABLE
文と連携するSecureFiles LOBの機能について説明します。
親トピック: 永続LOB: 高度なDDL
12.2.1 ALTER TABLE BNF
この項では、Backus Naur (BNF)表記法のALTER TABLE
の構文について説明します。この構文の一部は、LOB固有のパラメータに焦点を当てるために簡略化されています。
ALTER TABLE [ schema.]table ... [ ... | column_clauses | ... | move_table_clause] ...;
<column_clauses> ::= ... | [ modify_LOB_storage_clause | rename_lob_storage_clause ] ...
<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
}. . .
<rename_lob_storage_clause> ::= RENAME LOB(LOB_item) <LOB_RENAME_PARAMETERS>
<LOB_RENAME_PARAMETERS> ::= [ PARTITION | SUBPARTITION | ] <OLD_SEGMENT_NAME> TO <NEW_SEGMENT_NAME>
<move_table_clause> ::= MOVE ...[ ... | LOB_storage_clause | ...] ...
<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列の変更
12.2.2 ALTER TABLE MODIFYとALTER TABLE MOVE LOB
この項では、ALTER TABLE MODIFY
およびALTER TABLE MOVE LOB
の使用時の記憶域特性を比較します。
既存のストレージ特性には2種類の変更があります。
- 記憶域特性に加える変更には、データへのアクセス方法にのみ適用され、既存のLOBデータ全体を移動する必要がないものがあります。このような変更には、
ALTER TABLE
BNFのmodify_LOB_storage_clause
を使用するALTER TABLE MODIFY LOB
構文を使用します。既存のLOBデータ全体を移動する必要のない変更の例には、RETENTION
、PCTVERSION
、CACHE
、NOCACHELOGGING
、NOLOGGING
またはSTORAGE
設定、LOBデータで使用される領域の縮小、未使用セグメントの割当て解除があります。関連項目:
ALTER TABLE - 記憶域特性を変更する場合は、データの格納方法を変更する必要があるため、既存のLOBデータ全体を移動する必要があります。このような変更には、
ALTER TABLE MODIFY LOB
構文のかわりにALTER TABLE MOVE LOB
構文を使用します。これは、前者がSecureFiles LOB列に対してパラレル操作を実行し、リソースを効率的に使用できるようにするためです。ALTER TABLE MOVE LOB
構文は、ALTER TABLE
BNFのLOB_storage_clause
で表される任意のLOB記憶域句を処理でき、LOBデータを新しい場所に移動します。既存のLOBデータ全体を移動する必要がある変更の例には、
TABLESPACE
、ENABLE/DISABLE STORAGE IN ROW
、CHUNK
、COMPRESSION
、DEDUPLICATION
およびENCRYPTION
の設定があります。ALTER TABLE MOVE LOB
のかわりに、オンライン再定義を使用してこれらの機能を1つ以上有効にすることができます。ALTER TABLE
と同じく、SecureFiles LOB列のオンライン再定義もパラレルで実行できます。
関連項目:
ALTER TABLE
文の詳細は、「ALTER TABLE」を参照してください。DBMS_REDEFINITION
パッケージの詳細は、「DBMS_REDEFINITION」を参照してください。
親トピック: 既存のLOB列の変更
12.2.3 ALTER TABLE SecureFiles LOB機能
この項では、ALTER TABLE
文と連携するSecureFiles LOBの機能について説明します。
- 拡張LOB圧縮を使用したALTER TABLE
拡張LOB圧縮をALTER TABLE
文とともに使用すると、この構文によってLOB列の圧縮モードが変更されます。この項の例では、特定の圧縮シナリオでALTER TABLE
文を発行する方法を示します。 - 拡張LOB重複除外を使用したALTER TABLE
拡張LOB重複除外をALTER TABLE
文とともに使用すると、この構文によってLOB列の重複除外モードが変更されます。 - SecureFiles暗号化を使用したALTER TABLE
この項の例では、SecureFiles暗号化を有効にするためにALTER TABLE文を発行する方法を示します。
親トピック: 既存のLOB列の変更
12.2.3.1 拡張LOB圧縮を使用したALTER TABLE
拡張LOB圧縮構文をALTER TABLE
文とともに使用すると、LOB列の圧縮モードが変更されます。この項の例では、特定の圧縮シナリオでALTER TABLE
文を発行する方法を示します。
例: SecureFiles LOB列の変更によるLOW圧縮の有効化
ALTER TABLE t1 MOVE LOB(a) STORE AS SECUREFILE(COMPRESS LOW)
例: SecureFiles LOB列の変更による圧縮の無効化
ALTER TABLE t1 MOVE LOB(a) STORE AS SECUREFILE(NOCOMPRESS)
例: SecureFiles LOB列の変更によるHIGH圧縮の有効化
ALTER TABLE t1 MOVE LOB(a) STORE AS SECUREFILE(COMPRESS HIGH);
例: SecureFiles LOB列の変更による1つのパーティションでの圧縮の有効化
ALTER TABLE t1 MOVE PARTITION p1 LOB(a) STORE AS SECUREFILE(COMPRESS HIGH);
12.2.3.2 拡張LOB重複除外を使用したALTER TABLE
拡張LOB重複除外構文をALTER TABLE
文とともに使用すると、LOB列の重複除外モードが変更されます。
重複除外を有効にする前に、GET_LOB_DEDUPLICATION_RATIO
関数を使用して、既存のLOBに対してこの機能を有効にすることで保存できる領域を見積ることができます。この関数を使用して、BasicFiles LOBをSecureFiles LOBに移行する前に、重複除外を有効にして節約できる領域を見積ることもできます。これにより、重複除外を有効にするために情報に基づいた決定を行うことができます。『PL/SQLパッケージおよびタイプ・リファレンス』の「GET_LOB_DEDUPLICATION_RATIO関数」を参照してください。
免責事項: 重複除外率は、LOB列のサンプリングされた行に基づいて計算される概算値です。表全体に対して重複除外を有効にしたときに節約できる実際の領域は、異なる場合があります。
この項の例に、特定の重複除外シナリオでALTER TABLE
文を発行する方法を示します。
例: SecureFiles LOB列の変更による重複除外の無効化
ALTER TABLE t1 MOVE LOB(a) STORE AS SECUREFILE(KEEP_DUPLICATES);
例: SecureFiles LOB列の変更による重複除外の有効化
ALTER TABLE t1 MOVE LOB(a) STORE AS SECUREFILE(DEDUPLICATE);
例: SecureFiles LOB列の変更による1つのパーティションでの重複除外の有効化
ALTER TABLE t1 MOVE PARTITION p1 LOB(a) STORE AS SECUREFILE(DEDUPLICATE);
12.2.3.3 SecureFiles暗号化を使用したALTER TABLE
この項の例では、SecureFiles暗号化を有効にするためにALTER TABLE文を発行する方法を示します。
SecureFiles暗号化でALTER
TABLE
文を使用する場合は、次の点を考慮してください。
ALTER
TABLE
文は、SecureFiles暗号化を有効化および無効化します。ALTER TABLE
文でREKEY
オプションを使用すると、新しいキーまたはアルゴリズムでLOB列を暗号化することもできます。DECRYPT
オプションは、暗号化された列をクリアテキストの形式に変換します。
次の例に、特定の暗号化シナリオでALTER TABLE
文を発行する方法を示します。
例: AES256
暗号化に基づいた暗号化によるSecureFiles LOB列の変更
ALTER TABLE t1 MOVE LOB(a) STORE AS SECUREFILE(ENCRYPT USING 'AES256');
例: パスワード・キーに基づいた暗号化によるSecureFiles LOB列の変更
ALTER TABLE t1 MOVE LOB(a) STORE AS SECUREFILE(ENCRYPT USING 'AES256' IDENTIFIED BY foo);
例: 暗号化キーの再生成によるSecureFiles LOB列の変更
ALTER TABLE t1 REKEY USING 'AES256';