Login | About Us | Join | Contact
Search
77
Entered by KidRac at 12:10:13 on 2002-11-13

Contact Information

Name:   Company:
Email:   Mobile Number:
 

Background Information

RDBMS Version:   Tools Version: (or application name/version)
OS Version:  
Hardware Details:   Other:
 

Question:

Answers

 

Jonathan Lewis | 14:01:04 | 2002-11-13 -CLOSEABLE
NOLOGGING is restricted to a very limited set of commands, such as
alter table move
alter index rebuild
(which answers part (b)).

The /*+ APPEND */ hint instructs Oracle that it should not generate UNDO (rollback) for the table - instead it should lock the table so that the highwater mark cannot be moved by other users, insert into blocks above the highwater mark, and then jump the highwater mark on commit. Since no-one else can see the space above the highwater mark, no-one needs to be able to rollback - i.e. there is no need for UNDO, and since the table is NOLOGGING, there is no 'pure' redo.
However, index entries go into the correct location in the index - you can't put new index entries "where no-one can see them" - consequently other users have to be able to roll back those entries - which means you have to generate UNDO for the index - and the UNDO has to be protected by redo. /*+ APPEND */ has no effect on indexes. In theory, I guess oracle could decide to NOT generate redo for the index at this point - but since it is piggybacking ordinary array inserts, and since the operation is generating redo for UNDO, I guess Oracle decided that there was no point in writing special code to bypass the redo.