행위

ORACLE NOLOGGING

DB CAFE

ORACLE LOGGING VS NOLOGGING

  1. LOGGING 과 NOLOGGING 은 CREATE TABLE 구문과 함께 지정할 수 있는 선택적인 파라미터.
  2. LOGGING 이라는 용어는 오라클 리두 로그를 의미하는 것으로 데이터베이스 내의 데이터에 대한 모든 변경 사항을 기록하기 위해 사용.
  3. CREATE TABLE 구문에 NOLOGGING 이 지정되면 NOLOGGING 으로 테이블이 만들어진다.
    1. NOLOGGING 으로 만들어진 테이블은 LOGGING 테이블보다 좀 더 적은 리두 로그 기록을 필요로 한다.
    2. NOLOGGING 으로 만들어진 테이블에 INSERT, UPDATE, DELETE 등의 작업을 수행하면 리두 로그가 전혀 생성되지 않을 것이라고 생각하기 쉽지만 이는 사실이 아니다.
    3. NOLOGGING 으로 만들어진 테이블에 리두 로그 생성이 억제되는 것은 사실이지만 로그 생성을 억제하는 것은 특정한 작업에 한정되어 있으며 이러한 특정한 작업은 아래의 리스트와 같다.
  4. 아래의 리스트를 제외하면 NOLOGGING 으로 만들어진 테이블의 모든 작업은 리두 로그를 생성하게 된다.
    1. CREATE TABLE AS SELECT (CTAS)
    2. SQL*LOADER DIRECT PATH 로그
    3. DIRECT PATH 힌트 추가 (/* + APPEND */ 힌트)
  5. 리두 로그 기록을 완벽하게 피하는 방법은 전역 임시 테이블을 이용하는 방법 뿐이다.
  • 오라클 레퍼런스

For additional information, refer to the SQL statement in which you set or reset logging characteristics for a particular database object.

Specify LOGGING if you want the creation of a database object, as well as subsequent inserts into the object, to be logged in the redo log file.

Specify NOLOGGING if you do not want these operations to be logged.

For a nonpartitioned object, the value specified for this clause is the actual physical attribute of the segment associated with the object.

For partitioned objects, the value specified for this clause is the default physical attribute of the segments associated with all partitions specified in the CREATE statement (and in subsequent ALTER ... ADD PARTITION statements), unless you specify the logging attribute in the PARTITION description.

If the object for which you are specifying the logging attributes resides in a database or tablespace in force logging mode, then Oracle Database ignores any NOLOGGING setting until the database or tablespace is taken out of force logging mode.

If the database is run in archivelog mode, then media recovery from a backup made before the LOGGING operation re-creates the object. However, media recovery from a backup made before the NOLOGGING operation does not re-create the object.

The size of a redo log generated for an operation in NOLOGGING mode is significantly smaller than the log generated in LOGGING mode.

In NOLOGGING mode, data is modified with minimal logging (to mark new extents INVALID and to record dictionary changes). When applied during media recovery, the extent invalidation records mark a range of blocks as logically corrupt, because the redo data is not fully logged. Therefore, if you cannot afford to lose the database object, then you should take a backup after the NOLOGGING operation.

NOLOGGING is supported in only a subset of the locations that support LOGGING. Only the following operations support the NOLOGGING mode


추가 정보는 특정 데이터베이스 오브젝트에 대한 로깅 특성을 설정하거나 재설정하는 SQL 문을 참조하십시오.

데이터베이스 객체 생성 및 객체에 대한 후속 삽입이 리두 로그 파일에 기록되도록하려면 LOGGING을 지정합니다.

이러한 작업을 기록하지 않으려면 NOLOGGING을 지정합니다.

분할되지 않은 개체의 경우이 절에 지정된 값은 개체와 연결된 세그먼트의 실제 물리적 속성입니다.

파티션 된 객체의 경우 PARTITION 설명에 로깅 속성을 지정하지 않는 한이 절에 지정된 값은 CREATE 문 (및 후속 ALTER ... ADD PARTITION 문)에 지정된 모든 파티션과 관련된 세그먼트의 기본 물리적 속성입니다.

로깅 속성을 지정하는 객체가 강제 로깅 모드의 데이터베이스 또는 테이블 스페이스에있는 경우 Oracle 데이터베이스는 데이터베이스 또는 테이블 스페이스가 강제 로깅 모드에서 해제 될 때까지 모든 NOLOGGING 설정을 무시합니다.

데이터베이스가 아카이브 로그 모드에서 실행되는 경우 LOGGING 작업 이전에 만들어진 백업에서 미디어를 복구하면 개체가 다시 생성됩니다.

그러나 NOLOGGING 작업 전에 만들어진 백업에서 미디어를 복구하면 개체가 다시 생성되지 않습니다.

NOLOGGING 모드에서 작업을 위해 생성 된 리두 로그의 크기는 LOGGING 모드에서 생성 된 로그보다 훨씬 작습니다.

NOLOGGING 모드에서 데이터는 최소한의 로깅으로 수정됩니다 (새 익스텐트를 INVALID로 표시하고 사전 변경 사항을 기록하기 위해).

매체 복구 중에 적용하면 범위 무효화 레코드는 리두 데이터가 완전히 로그되지 않았기 때문에 블록 범위를 논리적으로 손상된 것으로 표시합니다.

따라서 데이터베이스 개체를 잃을 여유가 없다면 NOLOGGING 작업 후 백업을 수행해야합니다.

NOLOGGING은 LOGGING을 지원하는 위치의 하위 집합에서만 지원됩니다.

다음 작업 만 NOLOGGING 모드를 지원합니다.

  • CREATE TABLE AS SELECT
  • SQL*LOADER 직접 경로 로그
  • DIRECT PATH (/* + APPEND */ 힌트)