この章では、SQLパラメータのBASICFILE
によって示される元のLOB実装を補足するものとして導入されたSecureFilesの使用方法について説明します。この章の内容は次のとおりです。
この項では、LOB型の列を含む表の設計に使用される、LOB記憶域の特性について説明します。リリース11.1より、記憶域キーワードのSECUREFILE
がCREATE
TABLE
文に含まれる場合に、新しいLOB記憶域パラダイムがデータベースで使用されるようになりました。古い記憶域パラダイムは、SECUREFILE
キーワードが使用されない場合、またはBASICFILE
キーワードが使用される場合に有効です。BASICFILE
(元のLOB記憶域パラダイム)は、デフォルトの記憶域です。データベース管理者は、init.ora
内の次の初期化パラメータを使用して、前述の設定を変更できます。
SecureFileは、自動セグメント領域管理(ASSM)表領域でのみ作成できます。次のパラメータに関する説明は、SECUREFILE
パラメータを使用するLOB記憶域パラダイムに該当します。
関連項目: 『Oracle Database SQL言語リファレンス』のCREATE TABLE 文に関する項 |
この新しいLOB機能には、新しい記憶域パラメータが必要です。これらすべての新規パラメータについては、次の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 ]
| 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
}
条件:
互換性モードが10gに設定されている場合、LOB STORAGE句は、10gで使用されていたものと同じです(BASICFILE
キーワードは無効)。互換性モードが11g(またはそれ以上)に設定されている場合、デフォルトで元のリリース11.1より前のLOB機能が有効になり、完全な機能のためにこのパラメータが指定されます。
SecureFile記憶域パラダイムおよび機能を使用するには、SECUREFILE
記憶域パラメータを明示的に指定します。SecureFileは、自動セグメント領域管理(ASSM)表領域でのみ作成できます。
BASICFILE
LOBの場合、いずれかのSECUREFILE
オプションを指定すると、エラーが発生します。
SecureFilesに対する11gの互換性モードでは、このパラメータ名によって使用される保存ポリシーが指定されます。値がMAX
の場合、セグメントで使用される領域がMAXSIZE
パラメータで指定されるサイズに到達するまで、旧バージョンのLOBデータ・ブロックを保存するように指定されます。MAXSIZE
が指定されない場合、MAX
はAUTO
と同様に機能します。
値がMIN
の場合は、指定した保存時間(秒)が使用されることを意味します。値がNONE
の場合は、保存期間がなく、必要であるとみなされる方法で領域を再利用できることを意味します。値がAUTO
の場合は、時間と領域の両方の面で必要性を考慮し、可能なかぎり効率的に記憶域を管理するようにシステムが設定されます。
BASICFILE
LOBとともに使用されるRETENTION
パラメータの詳細は、次の項を参照してください。
LOBセグメントで使用可能な領域の量を、指定したサイズに制限します。上限に達した場合、時間要件にかかわらず、必要に応じて、旧バージョンのディスク領域から新規のLOBデータが取得されます。
データベース・オブジェクトを作成してオブジェクトへの挿入を実行し、REDOログ・ファイルにログを記録する場合、LOGGING
を指定してください。デフォルトはLOGGING
です。
これらの操作をログに記録しない場合は、NOLOGGING
を指定します。
パーティション化されていないオブジェクトでは、この句に指定された値はオブジェクトに関連付けられたセグメントの実際の物理属性です。パーティション化されたオブジェクトでは、PARTITION
の説明にロギング属性を指定しないかぎり、この句に指定された値はCREATE
文(および後続のALTER...ADD PARTITION
文)で指定されるすべてのパーティションに関連付けられたセグメントのデフォルトの物理属性です。
FILESYSTEM_LIKE_LOGGING
は、SecureFilesがメタデータのみをログに記録することを意味します。このオプションはBasicFilesでは使用できません。この設定はファイル・システムをジャーナルするメタデータと同様で、障害の平均リカバリ時間を削減できます。SecureFile LOBのLOGGING
設定は、ファイル・システムのデータ・ジャーナルと同様です。LOGGING
設定およびFILESYSTEM_LIKE_LOGGING
設定は、SecureFilesにより完全なトランザクション・ファイル・システムを提供します。
CACHE
とNOLOGGING
は同時にサポートされていません。CACHE
とFILESYSTEM_LIKE_LOGGING
は同時にサポートされていません。
FILESYSTEM_LIKE_LOGGING
は、サーバー障害の後のデータの完全なリカバリを可能にします。
注意: LOBセグメントでは、NOLOGGING 設定およびFILESYSTEM_LIKE_LOGGING 設定を使用すると、バックアップ操作中にデータがディスクで変更される可能性があり、読取り非一貫性が発生します。これを防ぐには、LOGGING をLOB記憶域に設定してLOBセグメントに対する変更をREDOログ・ファイルに保存する必要があります。 |
同一のLOBがある場合、重複除外の対象となります。重複除外を使用可能にすることにより、コピー操作によるデータの重複を回避できます。
重複検出は、LOBセグメント内で発生します。パーティション化およびサブパーティション化されたLOB列の場合、パーティションまたはサブパーティションにまたがって重複検出することはできません。
重複除外は、パーティション・レベルで指定できます。lob_storage_clause
を使用して、パーティションごとにパーティション化された表を指定できます。
重複除外は、SecureFilesに対してのみ適用できます。
DBMS_LOB.SETOPTIONS
を使用して、LOBごとに重複除外を有効化または無効化できます。
SECUREFILE
およびLOBレベルの重複除外のある表を作成します。
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( DEDUPLICATE CACHE );
SECUREFILE
LOB列を含み、1つのパーティションに対してのみLOB重複除外が有効化されている表を作成します。p1
パーティションに属する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) );
SECUREFILE
LOB列を含み、重複除外が無効化されている表を作成します。重複除外が無効化されている状態で、LOBが作成されます。
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( KEEP_DUPLICATES CACHE );
SecureFile列を含み、1つのパーティション以外、この列に対してSecureFile重複除外が有効化されている表を作成します。p2
に属するもの以外のすべての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) );
SecureFile圧縮は、表または索引圧縮を伴わず、またその逆も伴いません。
サーバー全体のデフォルトのSecureFile圧縮アルゴリズムが使用されます。
MEDIUM
およびHIGH
オプションを使用して、異なる圧縮度を指定できます。圧縮度が高くなればなるほど、待機時間が長くなります。HIGH
設定ではより多くの作業が発生しますが、データの圧縮が向上します。デフォルトは、MEDIUM
です。
圧縮は、パーティション・レベルで指定できます。lob_storage_clause
を使用して、パーティションごとにパーティション化された表を指定できます。
SecureFile圧縮は、サーバー側で実行され、LOBデータへのランダムな読取りおよび書込みを可能にします。utl_compress
などのクライアント側の圧縮ユーティリティでは、ランダム・アクセスは得られません。
DBMS_LOB.SETOPTIONS
を使用して、LOBごとに圧縮を有効および無効化できます。
LOB圧縮は、SECUREFILE
LOBに対してのみ適用できます。
SECUREFILE
圧縮されたLOB列を含んだ表を作成します。デフォルトの圧縮レベルはMEDIUM
です。
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( COMPRESS CACHE NOLOGGING );
高い圧縮度のSECUREFILE
LOB列を含んだ表を作成します。
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( COMPRESS HIGH CACHE );
SECUREFILE
LOB列を含み、1つのパーティションに対してのみLOB圧縮が有効化されている表を作成します。p1
パーティションに属する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) );
SECUREFILE
LOB列を含み、LOB圧縮が無効化されている表を作成します。
CREATE TABLE t1 ( a CLOB) LOB(a) STORE AS SECUREFILE ( NOCOMPRESS CACHE );
LOB列で暗号化が有効化または無効化されている表を作成します。現在のTDE(透過的データ暗号化)構文を使用して、暗号化がLOBデータ型に拡張されます。LOBは、SECUREFILE
パラメータを使用して作成する必要があります。
暗号化は、ブロック・レベルで実行されます。
encrypt_algorithmは、暗号化アルゴリズムの名前を示します。有効なアルゴリズムには、次のものがあります。
3DES168
AES128
AES192
(デフォルト)
AES256
列の暗号化キーは、(指定されている場合は)PASSWORD
から導出されます。
SALT
はLOB暗号化のデフォルトです。NO
SALT
はサポートされていません。
LOB列内のすべてのLOBが暗号化されます。
DECRYPT
は、LOBをクリアテキストのままにします。
LOBは、列ごとのみで暗号化されます(透過的データ暗号化と同様)。LOB列内のすべてのパーティションが暗号化されます。
キー管理により、暗号化または復号化が制御されます。
LOBの暗号化は、SECUREFILE
LOBに対してのみ実行できます。
透過的データ暗号化は、従来のインポートおよびエクスポート・ユーティリティまたはトランスポータブル表領域ベースのエクスポートではサポートされていません。かわりに、暗号化された列でデータ・ポンプ・インポートおよびエクスポート・ユーティリティを使用してください。
関連項目: TDEを使用したOracle Walletの作成および使用方法は、『Oracle Database Advanced Security管理者ガイド』の「Oracle Wallet Managerの使用方法」を参照してください。 |
SECUREFILE
LOB列を含み、AES128
を使用してLOB暗号化が有効化されている表を作成します。
CREATE TABLE t1 ( a CLOB ENCRYPT USING 'AES128') LOB(a) STORE AS SECUREFILE ( CACHE );
SECUREFILE
LOB列を含み、すべてのパーティションに対して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) );
SECUREFILE
LOB列を含み、パスワードを使用してLOB暗号化キーが作成されている表を作成します。デフォルトでは、AES192
ビット暗号化が使用されます。
CREATE TABLE t1 ( a CLOB ENCRYPT IDENTIFIED BY foo) LOB(a) STORE AS SECUREFILE ( CACHE );
暗号化オプションを文のLOB_deduplicate_clause
セクションで設定するため、次の例は同じ結果になります。
CREATE TABLE t1 (a CLOB) LOB(a) STORE AS SECUREFILE ( CACHE ENCRYPT IDENTIFIED BY foo );
暗号化が無効化されているSECUREFILE
LOBを作成します。
CREATE TABLE t1 ( a CLOB ) LOB(a) STORE AS SECUREFILE ( CACHE DECRYPT );
ALTER
TABLE
文またはオンライン再定義を含んだLOB記憶域を、DBMS_REDEFINITION
パッケージを使用して変更できます。作成時にLOBの暗号化、圧縮または重複除外を有効化していない場合、この3つのパラメータに対する変更をディスク領域で効率的に行うために、オンライン再定義を使用して作成後にそれらを有効化することをお薦めします。
関連項目:
|
キーワードは太字で表されています。
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) (LOB_deduplicate_clause [LOB_deduplicate_clause ] ) <LOB_deduplicate_clause> ::= { storage_clause | PCTVERSION integer | RETENTION [ { MAX | MIN integer | AUTO | NONE } ] | FREEPOOLS integer | REBUILD FREEPOOLS | LOB_deduplicate_clause | LOB_compression_clause | LOB_encryption_clause | { CACHE | { { NOCACHE | CACHE READS } [ logging_clause ] } } | allocate_extent_clause | shrink_clause | deallocate_unused_clause } [ storage_clause | PCTVERSION integer | RETENTION | FREEPOOLS integer | REBUILD FREEPOOLS | modify_LOB_sharing_clause | LOB_compression_clause | LOB_encryption_clause | { CACHE | { NOCACHE | CACHE READS } [ logging_clause ] } | shrink_clause | deallocate_unused_clause ]...
次の場合、これらのキーワードがこの文に対して定義されます。
DEDUPLICATE
オプションを使用して、LOB列内の2つ以上の行の同一LOBデータ間で、すべて同じデータ・ブロックが共有されるように指定できます。データベースは同一の内容のLOBを単一のコピーに結合し、記憶域を削減して記憶域管理を簡素化します。このオプションの逆は、KEEP_DUPLICATES
です。
ALTER
TABLE
構文は、LOBレベルの重複除外を有効化または無効化します。
この構文は、LOB列の重複除外モードを変更します。
既存のLOBに対する重複除外は、待機時間を大幅に増やします。
DBMS_LOB.SETOPTIONS
を使用して、LOBごとに重複除外を有効化または無効化できます。
重複除外は、表レベルまたはパーティション・レベルで指定できます。複数のパーティション化されたLOBにまたがって重複除外を実行することはできません。
重複除外は、SecureFilesに対してのみ適用できます。
SECUREFILE
LOBの重複除外を無効化します。
ALTER TABLE t1 MODIFY LOB(a) ( KEEP_DUPLICATES );
SECUREFILE
LOBに対するLOBレベルの重複除外を有効化します。
ALTER TABLE t1 MODIFY LOB(a) ( DEDUPLICATE );
1つのパーティション内のSECUREFILE
LOB列に対するLOBレベルの重複除外を有効化します。
ALTER TABLE t1 MODIFY PARTITION p1 LOB(a) ( DEDUPLICATE );
この構文は、LOB列の圧縮モードを変更します。
既存のLOBに対する圧縮は、待機時間を大幅に増大します。
DBMS_LOB.SETOPTIONS
を使用して、LOBごとに圧縮を有効化または無効化できます。
圧縮は、表レベルまたはパーティション・レベルで指定できます。
MEDIUM
およびHIGH
オプションを使用して、異なる圧縮度を指定できます。圧縮度が高くなればなるほど、待機時間が長くなります。HIGH
設定ではより多くの作業が発生しますが、データの圧縮が向上します。デフォルトは、MEDIUM
です。
LOB圧縮は、SecureFilesに対してのみ適用できます。
SECUREFILE
LOBの圧縮を無効化します。
ALTER TABLE t1 MODIFY LOB(a) ( NOCOMPRESS );
高い圧縮度でのSECUREFILE
LOBの圧縮を有効化します。
ALTER TABLE t1 MODIFY LOB(a) ( COMPRESS HIGH );
1つのパーティション内のSECUREFILE
LOB列に対するLOB圧縮を有効化します。
ALTER TABLE t1 MODIFY PARTITION p1 LOB(a) ( COMPRESS HIGH );
ALTER
TABLE
を使用して、SECUREFILE
LOBのLOB暗号化を有効化または無効化します。また、この構文を使用して、新しいキーまたはアルゴリズムを使用してLOB列に再度キーを付けることもできます。
ENCRYPT
/DECRYPT
オプションは、SecureFile列内のすべてのLOBの暗号化を有効化または無効化します。
SALT
はLOB暗号化のデフォルトです。NO
SALT
はサポートされていません。
DECRYPT
オプションは、暗号化された列をクリアテキストの形式に変換します。
キー管理により、暗号化または復号化が制御されます。
LOBは、列ごとのみで暗号化されます。パーティション化されたLOBは、すべてのパーティションが暗号化されているか暗号化されていないかのいずれかです。
LOB暗号化は、SecureFilesに対してのみ適用できます。
3DES168
を使用して、LOBの暗号化を有効化します。
ALTER TABLE t1 MODIFY ( a CLOB ENCRYPT USING '3DES168');
次の例は、3DES168
を使用したLOBの暗号化です。
ALTER TABLE t1 MODIFY LOB(a) (ENCRYPT USING '3DES168');
SECUREFILE
LOB列の暗号化を有効化し、パスワードを使用して暗号化キーを作成します。
ALTER TABLE t1 MODIFY ( a CLOB ENCRYPT IDENTIFIED BY foo);
新しいキーを使用してLOB列を再暗号化するには、表に再度キーを付けます。
ALTER TABLE t1 REKEY USING '3DES168';
SecureFiles用の列の設定パッケージはアウトライン化されています。
LOBは、重複除外、暗号化および圧縮のためのLOB列の設定を継承します。また、LOBロケータAPIを使用してLOBレベルごとに設定することもできます。ただし、LONG APIを使用して、これらのLOB設定を設定することはできません。これらの機能に関するDBMS_LOB
パッケージの追加事項については、次の項で説明します。
関連項目: 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_LOB パッケージに関する項 |
db_securefile
パラメータは、init.ora
ファイルで設定されます。
パラメータ名: db_securefile
パラメータ型: テキスト
許容値: {
ALWAYS
| FORCE | PERMITTED
|
NEVER | IGNORE
}
デフォルト値: PERMITTED
説明: このパラメータを使用して、データベース管理者は、SECUREFILE
LOBの作成の許可(PERMITTED
)、今後のSECUREFILE
LOBの作成の禁止(NEVER
)、今後作成されるすべてのLOBがSECUREFILE
LOBとなるように強制(FORCE
)、SECUREFILE
LOBを作成してBASICFILE
LOBにフォールバック(ALWAYS
)、またはSECUREFILE
LOBの禁止とSECUREFILE
オプションを使用したBASICFILE
LOBの強制により発生するエラーの無視(IGNORE
)のいずれかを指定できます。
NEVER
が指定された場合、SECUREFILE
LOBとして指定されたLOBはすべて、BASICFILE
LOBとして作成されます。すべてのSECUREFILE
特定の記憶域オプションおよび機能(圧縮、暗号化、重複除外など)で例外が発生します。指定されていない記憶域オプションには、BASICFILE
LOBのデフォルト値が使用されます。
ALWAYS
は、すべてのLOBをSECUREFILE
LOBとして作成しようとしますが、SECUREFILE
が明示的に指定されていないかぎり、ASSM
表領域にないLOBをBASICFILE
LOBとして作成します。指定されるBASICFILE
LOB記憶域オプションはいずれも無視され、指定されていないすべての記憶域オプションには、SECUREFILE
のデフォルト値が使用されます。
FORCE
が指定された場合、システムで作成されるすべてのLOBは、SECUREFILE
LOBとして作成されます。LOBがMSSM
表領域で作成される場合、エラーが発生します。指定されるBASICFILE LOB記憶域オプションはいずれも無視され、指定されていないすべての記憶域オプションには、SECUREFILE
のデフォルト値が使用されます。
IGNORE
が指定された場合、SECUREFILE
キーワードおよびすべてのSECUREFILE
オプションは無視されます。
動的: パラメータは動的で、スコープはALTER
SYSTEM
です。
例: ALTER SYSTEM SET db_securefile = 'ALWAYS';
このドキュメントで説明されているすべての機能は、互換性を11.0.0.0.0以上に設定した場合に有効になります。11.0.0.0.0に設定した後は、ダウングレードできません。
BASICFILE
LOBフォーマットは、11.0.0.0.0の互換性でサポートされます。
BASICFILE
LOBをSECUREFILE
LOBにアップグレードする場合、データのアップグレードに通常使用される一般的な方法(CTAS / ITAS、オンライン再定義、エクスポート/インポート、列間でのコピー、またはビューおよび新規列の使用など)でアップグレードする必要があります。これらのソリューションの多くは、入力LOB列のデータで使用されるディスク領域を2回使用することを意味します。ただし、パーティション化して、これらの操作をパーティションごとに実行することにより、必要なディスク領域を少なくすることができる場合もあります。
この項では、LOB列の移行の方法について説明します。
BasicFile LOB列の移行処理中にREDO領域が生成されると、パフォーマンスが低下することがあります。移行処理中の表に対するREDOがログに記録されるのは、表にLOGGING
が設定されている場合のみです。
また、BasicFile LOBからSecureFileへ変換中の列に対するREDOがログに記録されるのは、SecureFile LOB列の記憶特性がLOGGING
に指定されている場合のみです。LOB列のロギング設定(LOGGING
またはNOLOGGING
)は、LOBが作成された表領域から継承されます。
移行中のREDO領域の生成を回避するには、NOLOGGING
記憶域パラメータを新しいSecureFile LOB列に指定する必要があります。移行の完了後に、LOGGING
をオンにしてください。
オンライン再定義のメソッドは、BasicFile LOBをSecureFileに移行する場合にのみお薦めします。これは、表レベルまたはパーティション・レベルで指定できます。
また、オンライン再定義を使用して表を移行できます。オンライン再定義には表をオフラインにする必要がないメリットがありますが、表で使用している領域に等しいか、それよりも大きな追加の空き領域が必要です。次に、オンライン再定義を使用した表の移行の例を示します。
例4-1 オンライン再定義の例
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 need 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) 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;
パラレル実行に十分なリソースがあるシステムでは、BASICFILE
LOB列のSECUREFILE
LOB列への再定義は、次の条件下でパラレルに実行できます。
挿入先の表がパーティション化されていない場合:
挿入先の表にLOB列を格納するために使用されるセグメントが、自動セグメント領域管理(ASSM)が使用可能になっている(現在のデフォルトおよびSecureFilesの要件)ローカル管理表領域に属している。
1つのLOB列から1つのLOB列への単純なマッピングが存在し、挿入先の表には1つのLOB列のみがある。
挿入先の表がパーティション化されている場合:
パーティション化に通常使用されるパラレル実行方法が適用されます。挿入先の表がパーティション化されている場合、オンライン再定義がパラレルに実行されます。
オンライン再定義をパラレル実行するには、前の項の例4-1「オンライン再定義の例」の接続文の後に次の文を追加してください。
ALTER SESSION FORCE PARALLEL DML;