只有以下四种SQL语句可以使用NOLOGGING选项:
1、CREATE TABLE ... AS SELECT ...
2、CREATE INDEX
3、ALTER INDEX ... REBUILD
4、DIRECT PATH INSERT
对于create table table_name ... as select ... :
create table bb logging as select * from aa : 大量的redo + 有undo
create table bb nologging as select * from aa : 少量的redo + 无undo
对于insert语句:
表logging + 记录非append : 大量的redo + 有undo
表logging + 记录 append : 大量的redo + 无undo
表nologging + 记录非append : 大量的redo + 有undo
表nologging + 记录 append : 少量的redo + 无undo
============================================================================================================================
ORACLE Nologging相关知识
http://blog.csdn.net/huanghui22/article/details/1337420
晶晶实验二十二之 直接路径插入篇
append 数据不需要经过buffer cache , , 直接在hwm以上insert 到数据文件 , 不产生undo信息 , 利用hwm回滚,回滚后hwm不回退
append 索引需要经过buffer cache, 但是是写入hwm之下的部分
查看高水位点:select blocks, empty_block from dba_tables where table_name='T1' and owner='';
查看头文件和头块号,用来转储: select header_file,header_block from dba_segments where segment_name='T1' and owner='';
查看块分布:select extent_id ,file_id,block_id,blocks from dba_extents where segment_name='T1' and owner='';