RE: ORA-1578...block corrupted...error is normal...a block...had a NOLOGGING...operation performed against

  • From: "Allen, Brandon" <Brandon.Allen@xxxxxxxxxxx>
  • To: "Hemant K Chitale" <hkchital@xxxxxxxxxxxxxx>
  • Date: Tue, 23 Aug 2005 14:05:09 -0700

Hemant,
 
Where in the documentation do you see a description of this different treatment 
of the NOLOGGING clause for CREATE vs. ALTER statements?
 
My understanding from the documentation, including that which you have included 
in your email below, is that when specifying NOLOGGING during either the CREATE 
or ALTER of an object, the creation/alteration of the object as well as any 
future direct loads/inserts are minimally logged.  If you see something 
contrary to this in the documentation, please provide a link.
 
Thanks,
Brandon
 
P.S.  in case anyone else tries to look it up - the correct Metalink note # is 
147474.1
 

-----Original Message-----
From: Hemant K Chitale [mailto:hkchital@xxxxxxxxxxxxxx]
Sent: Tuesday, August 23, 2005 8:56 AM
To: jkstill@xxxxxxxxx; Allen, Brandon
Cc: cmarquez@xxxxxxxxxxxxxxxx; oracle-l@xxxxxxxxxxxxx
Subject: Re: ORA-1578...block corrupted...error is normal...a block...had a 
NOLOGGING...operation performed against



Jared,

You ARE right.  You really don't need to retest it.  
When an object is NOLOGGING is used in the CREATE statement, it is the actual 
first load that the create does
that is NOLOGGING.  All subsequent DML is logged.
When an object is ALTERed to NOLOGGING,  only certain statements (eg APPEND) 
that support NOLOGGING
are NOLOGGed.
Read the extract that Allen has quoted "Direct Loader .. and direct path 
insert".  It specifically talks of Direct
operations  NOT regular DML.  Regular DML is always always LOGged.

Again, quoting from the 9i SQL Reference  on the logging clause :  This also 
says " .. subseqent direct .. direct ..."
NOT regular DML.

=========================================================================


logging_clause





Purpose

The logging_clause lets you specify whether creation of a database object will 
be logged in the redo log file (LOGGING) or not (NOLOGGING).

This clause also specifies whether subsequent Direct Loader (SQL*Loader) and 
direct-path INSERT operations against the object are logged (LOGGING) or not 
logged (NOLOGGING).

You can specify the logging_clause in the following statements: 

*       CREATE TABLE and ALTER TABLE: for logging of the table, one of its 
partitions, a LOB segment, or the overflow segment of an index-organized table 
(see CREATE TABLE <file://statements_73a.htm#2095335>  and ALTER TABLE 
<file://statements_32a.htm#2054899> ). 

*       CREATE INDEX and ALTER INDEX: for logging of the index or one of its 
partitions (see CREATE INDEX <file://statements_510a.htm#2062405>  and ALTER 
INDEX <file://statements_18a.htm#2050160> ). 

*       CREATE MATERIALIZED VIEW and ALTER MATERIALIZED VIEW: for logging of 
the materialized view, one of its partitions, or a LOB segment (see CREATE 
MATERIALIZED  <file://statements_63a.htm#2063795> VIEW and ALTER MATERIALIZED  
<file://statements_111a.htm#2050951> VIEW). 

*       CREATE MATERIALIZED VIEW LOG and ALTER MATERIALIZED VIEW LOG: for 
logging of the materialized view log or one of its partitions (see CREATE 
MATERIALIZED VIEW  <file://statements_64a.htm#2064651> LOG and ALTER 
MATERIALIZED  <file://statements_112a.htm#2051598> VIEW LOG.) 

*       CREATE TABLESPACE and ALTER TABLESPACE: to set or modify the default 
logging characteristics for all objects created in the tablespace (see CREATE  
<file://statements_74a.htm#2063129> TABLESPACE and ALTER  
<file://statements_33a.htm#2093898> TABLESPACE.) 


You can also specify LOGGING or NOLOGGING for the following operations: 

*       Rebuilding an index (using CREATE INDEX ... REBUILD) 

*       Moving a table (using ALTER TABLE ... MOVE) 

=========================================================================

Data Dictionary Updates are always logged.  Regular DML is always logged.

Note 17474.1 , from Oracle7 and Oracle8  days is still the best reference.

   The following operations can make use of no-logging mode: 

        direct load (SQL*Loader) 
        direct-load INSERT 
        CREATE TABLE ... AS SELECT 
        CREATE INDEX 
        ALTER TABLE ... MOVE PARTITION 
        ALTER TABLE ... SPLIT PARTITION 
        ALTER INDEX ... SPLIT PARTITION 
        ALTER INDEX ... REBUILD 
        ALTER INDEX ... REBUILD PARTITION 
        INSERT, UPDATE, and DELETE on LOBs in NOCACHE NOLOGGING mode stored out 
of line



At 11:40 PM Tuesday, Jared Still wrote:


I will rerun my tests and post the results to the list.

If there is a flaw in my testing procedure someone here
is sure to spot it.

Won't be able to do so until this afternoon however.

Jared



Hemant K Chitale
http://web.singnet.com.sg/~hkchital




Privileged/Confidential Information may be contained in this message or 
attachments hereto. Please advise immediately if you or your employer do not 
consent to Internet email for messages of this kind. Opinions, conclusions and 
other information in this message that do not relate to the official business 
of this company shall be understood as neither given nor endorsed by it.

Other related posts: