データベースの稼働状況を診断共有するサイト パフォーマンスセラピー
Statspackとは Statspack設定 statspackでの情報収集 statspackレポートの出力 便利スクリプト Oracleチューニング講座


                                  
第20章 NOLOGGINGとは
表、索引、パーティション、表領域を作成する際に、REDOログ・ファイルに記録する(LOGGING)か、記録しない(NOLOGGING)を指定でき、NOLOGGINGを指定することで表や索引作成などの処理効率を上げることができます。
本章ではNOLOGGINGについて説明します。

NOLOGGINGのメリット
NOLOGGINGモードを指定すると、最小限のREDO情報(データ・ディクショナリに対する変更情報)しか作成されません。これにより、次のような利点があります。
■REDOログ・ファイルの領域を節約できる。
■表や索引などの作成に関する時間を削減できる。
よって、表や索引を効率よく作成するには、NOLOGGINGモードを指定します。

しかし、表や索引を作成する際にNOLOGGINGモードを設定すると、SQL*Loaderを使用した後続のダイレクト・ロードおよびダイレクト・ロードINSERT操作もロギングされなくなりますので、ご注意ください。
また、表や索引作成時にNOLOGGINGモードを省略した場合は、表領域で設定されているロギング属性になります。

NOLOGGINGを使用できる条件
NOLOGGINGは、ダイレクト・ロード系の処理でのみ使用できます。

■ダイレクト・ロード系の処理
NOLOGGINGモードはユーザーが操作できるすべての操作に対して適応されるわけではありません。NOLOGGINGモードを使用できるのは、以下の操作のみです。
・ダイレクト・ロード(SQL*Loader)
・ダイレクト・パス・インサート
・CREATE TABLE 表名 AS SELECT
・CREATE INDEX
・ALTER TABLE 表名 MOVE PARTITION、SPLIT PARTITION
・ALTER INDEX 索引名 MOVE PARTITION、SPLIT PARTITION、REBUILD、REBUILD PARTITION

また、NOLOGGINGモードで作成されたスキーマ・オブジェクトであっても、作成後のUPDATEやDELETE、従来型のINSERTは通常どおりREDOが生成されます。

以下NOLOGGINGモードを使用した際の処理速度を検証した例を記します。

例)NOLOGGINGモードを使用した際の処理速度を検証する。
SQL> SELECT count(empno) FROM emp;

COUNT(EMPNO)
------------
114688

SQL> SET TIMING ON → SQL*PlusのTIMING機能を使用。1/100秒単位で表示される。

SQL> CREATE INDEX emp_empno ON emp(empno) LOGGING;

索引が作成されました。

経過: 00:00:04.68
SQL>
SQL> DROP INDEX emp_empno;

索引が削除されました。

SQL> CREATE INDEX emp_empno ON emp(empno) NOLOGGING;

索引が作成されました。

経過: 00:00:00.68 → この例では、4秒短縮された。

SQL> SELECT index_name,logging FROM user_indexes
2 WHERE index_name = 'EMP_EMPNO';

INDEX_NAME LOGGING
--------------------------- ---------------
EMP_EMPNO NO ← NOLOGGINGが有効

user_tablesビューやuser_indexesのlogging列でNOLOGGINGの設定が有効かどうか確認することが可能です。

以上でNOLOGGINGについての説明は終了です。
処理効率を上げる必要がある場合などに参考にしていただければと思います。
第21章では、自動共有メモリー管理について説明します。


               
                                  第21章 自動共有メモリー管理とは