logging_clause
目的
logging_clause
を使用すると、特定のDML操作をREDOログ・ファイルに記録するか(LOGGING
)、記録しないか(NOLOGGING
)を指定できます。
logging_clause
は次の文に指定できます。
-
CREATE
TABLE
およびALTER
TABLE
: 表、表のパーティション、LOBセグメント、または索引構成表のオーバーフロー・セグメントのログを記録する場合(「CREATE TABLE」および「ALTER TABLE」を参照)。ノート:
LOB列に指定されたロギングは、表レベルで設定されたロギングとは異なる場合があります。表レベルで
LOGGING
を指定し、LOB列にNOLOGGING
を指定する場合は、実表の行に対するDMLの変更は記録されますが、LOBデータに対するDMLの変更は記録されません。 -
CREATE
INDEX
およびALTER
INDEX
: 索引または索引のパーティションのログを記録する場合(「CREATE INDEX」および「ALTER INDEX」を参照)。 -
CREATE
MATERIALIZED
VIEW
およびALTER
MATERIALIZED
VIEW
: マテリアライズド・ビュー、マテリアライズド・ビューのパーティションの1つまたはLOBセグメントのログを記録する場合(「CREATE MATERIALIZED VIEW」および「ALTER MATERIALIZED VIEW」を参照)。 -
CREATE
MATERIALIZED
VIEW
LOG
およびALTER
MATERIALIZED
VIEW
LOG
: マテリアライズド・ビュー・ログまたはマテリアライズド・ビュー・ログのパーティションの1つのログを記録する場合(「CREATE MATERIALIZED VIEW LOG」および「ALTER MATERIALIZED VIEW LOG」を参照)。 -
CREATE
TABLESPACE
およびALTER
TABLESPACE
: 表領域に作成されたすべてのオブジェクトに対するデフォルトのロギング特性を設定または変更する場合(「CREATE TABLESPACE」および「ALTER TABLESPACE」を参照)。 -
CREATE
PLUGGABLE
DATABASE
およびALTER
PLUGGABLE
DATABASE
: プラガブル・データベース(PDB)に作成されたすべての表領域のデフォルトのロギング特性を設定または変更する場合(CREATE PLUGGABLE DATABASEおよびALTER PLUGGABLE DATABASEを参照)。
次の操作にも、LOGGING
またはNOLOGGING
を指定できます。
-
索引の再構築(
CREATE
INDEX
...REBUILD
を使用) -
表の移動(
ALTER
TABLE
...MOVE
を使用)
構文
logging_clause::=
セマンティクス
この項では、logging_clause
のセマンティクスについて説明します。詳細は、特定のデータベース・オブジェクトに対してロギング特性を設定または再設定するSQL文の説明を参照してください。
-
LOGGING
を指定すると、データベース・オブジェクトの作成、およびその後のオブジェクトへの挿入をREDOログ・ファイルに記録します。 -
NOLOGGING
を指定すると、データベース・オブジェクトの作成、およびその後の従来型INSERTをREDOログ・ファイルに記録します。ダイレクト・パス・インサートは記録されません。-
非パーティション・オブジェクトの場合、この句に指定する値は、オブジェクトに関連付けられたセグメントの実際の物理属性となります。
-
パーティション・オブジェクトの場合、この句に指定する値は、
PARTITION
記述でロギング属性を指定しないかぎり、CREATE
文(および後続のALTER
...ADD
PARTITION
文)で指定するすべてのパーティションに関連付けられたセグメントのデフォルトの物理属性となります。 -
SecureFiles LOBでは、
NOLOGGING
設定はFILESYSTEM_LIKE_LOGGING
に内部変換されます。 -
CACHE
NOLOGGING
は、BasicFiles LOBに対しては許可されません。
-
-
FILESYSTEM_LIKE_LOGGING
句は、SecureFiles LOBセグメントのログを記録する場合にのみ有効です。この設定は、BasicFiles LOBには指定できません。メタデータ変更のログのみを記録する場合は、この設定を指定します。この設定は、障害からリカバリする平均時間を短縮するファイル・システムのメタデータ・ジャーナリングに似ています。SecureFiles LOBのLOGGING
設定は、ファイル・システムのデータ・ジャーナルに似ています。LOGGING
とFILESYSTEM_LIKE_LOGGING
の両方の設定によって、SecureFileを使用した完全なトランザクション・ファイル・システムが実現します。
ノート:
LOBセグメントの場合は、NOLOGGING
設定とFILESYSTEM_LIKE_LOGGING
設定を使用すると、バックアップ操作中にディスク上でデータが変更され、バックアップの一貫性が損われる可能性があります。この状況を回避するには、LOB記憶域にLOGGING
を設定し、LOBセグメントに対する変更がREDOログ・ファイルに保存されるようにします。または、データベースをFORCE
LOGGING
モードに変更し、すべてのLOBセグメントに対する変更がREDOログ・ファイルに保存されるようにします。
ロギング属性を指定しているオブジェクトが強制ロギング・モードのデータベースまたは表領域に存在している場合、そのデータベースまたは表領域が強制ロギング・モードから別のモードに変わるまで、NOLOGGING
設定は無視されます。
データベースをARCHIVELOG
モードで実行している場合、LOGGING
操作の前に取ったバックアップからのメディア・リカバリによって、オブジェクトが再作成されます。ただし、NOLOGGING
操作の前に取ったバックアップからのメディア・リカバリでは、オブジェクトは再作成されません。
NOLOGGING
モードでの操作で生成されるREDOログのサイズは、LOGGING
モードで生成されるログより非常に小さくなります。
NOLOGGING
モードでは、データの変更時に、(新しいエクステントをINVALID
としてマーク設定し、ディクショナリの変更を記録するために)最小限のログが記録されます。メディア・リカバリ中にNOLOGGINGが適用された場合、REDOデータのログ記録が中断されるため、エクステント無効化レコードでは、一定のブロック範囲に「論理的に無効」というマークが付きます。このため、損失してはならないデータベース・オブジェクトの場合は、NOLOGGING
操作の後にバックアップを取る必要があります。
NOLOGGING
は、LOGGING
をサポートする場所のサブセットのみでサポートされます。次の操作でのみ、NOLOGGING
モードがサポートされます。
DML:
-
INSERT
文またはMERGE
文のいずれかの結果として実行されるダイレクト・パスINSERT
(シリアルまたはパラレル)。NOLOGGING
は、MERGE
文の結果として実行されるUPDATE
操作には適用できません。 -
ダイレクト・ローダー(SQL*Loader)
DDL:
-
CREATE
TABLE
...AS
SELECT
(NOLOGGING
モードでは、表の作成は記録されますが、ダイレクト・パス・インサートは記録されません。) -
CREATE
TABLE
...LOB_storage_clause
...LOB_parameters
...CACHE
|NOCACHE
|CACHE
READS
-
ALTER
TABLE
...LOB_storage_clause
...LOB_parameters
...CACHE
|NOCACHE
|CACHE
READS
(新しく作成したLOB列のロギングを指定する場合) -
ALTER
TABLE
...modify_LOB_storage_clause
...modify_LOB_parameters
...CACHE
|NOCACHE
|CACHE
READS
(既存のLOB列のロギングを変更する場合) -
ALTER
TABLE
...MOVE
-
ALTER
TABLE
... (データ移動を伴うすべてのパーティション操作)-
ALTER
TABLE
...ADD
PARTITION
(ハッシュ・パーティションのみ) -
ALTER
TABLE
...MERGE
PARTITIONS
-
ALTER
TABLE
...SPLIT
PARTITION
-
ALTER
TABLE
...MOVE
PARTITION
-
ALTER
TABLE
...MODIFY
PARTITION
...ADD SUBPARTITION
-
ALTER
TABLE
...MODIFY
PARTITION
...COALESCE
SUBPARTITION
-
-
CREATE
INDEX
-
ALTER
INDEX
...REBUILD
-
ALTER
INDEX
...REBUILD
[SUB]PARTITION
-
ALTER
INDEX
...SPLIT
PARTITION
LOB以外のオブジェクトの場合、この句を指定しないと、オブジェクトが存在する表領域のロギング属性がオブジェクトのデフォルトのロギング属性になります。
LOBに対してこの句を省略した場合は、次のようになります。
-
CACHE
を指定した場合は、LOGGING
が使用されます(CACHE
NOLOGGING
は指定できないため)。 -
NOCACHE
またはCACHE
READS
を指定した場合は、表が存在する表領域の属性がデフォルトのロギング属性として使用されます。
NOLOGGING
は、内部に(行データとともに表に)格納されたLOBには適用されません。LOBに対するNOLOGGING
を4000バイト未満の値に指定し、STORAGE
IN
ROW
を使用禁止にしていなかった場合、NOLOGGING
の指定は無視され、LOBデータは他の表データと同様に扱われます。