高可用性环境中无日志记录操作的影响
记录的操作必须为每个更改数据或撤消块生成重做,nologging操作指示数据库操作未记录在联机重做日志文件中。 即使仍然有少量无效重做记录写入在线重做日志文件,nologging操作也会跳过相应插入数据的重做生成。 由于以下原因,nologging可能非常有益:
*写入重做的数据大大减少
*可以大大减少插入大表或索引或LOB的时间
*为并行创建大型表或索引而提高了性能
-创建表...按选择(CTAS)
-创建索引
-ALTER TABLE ...移动分区
-ALTER TABLE ...分割分区
-ALTER INDEX ...分割分区
-ALTER INDEX ...重建
-ALTER INDEX ...重建分区
-在NOCACHE NOLOGGING中对非内部LOB进行INSERT,UPDATE和DELETE
SQL> create table TEST.T nologging as select num_rows from dba_tables;
Table created.
SQL> select count(*) from test.t;
COUNT(*)
----------
1517
SQL> create index my_index on TEST.T(NUM_ROWS) nologging;
Index created.
SELECT NAME, UNRECOVERABLE_CHANGE#,
TO_CHAR (UNRECOVERABLE_TIME,'DD-MON-YYYY HH:MI:SS')
FROM V$DATAFILE;
UNRECOVERABLE_CHANGE# TO_CHAR(UNRECOVERABLE_TIME,'DD'
--------------------- -------------------------------------------
/oracle/oracle/oradata/oracle/orcl/system01.dbf
451816 13-NOV-2007 02:53:21
/oracle/oracle/oradata/oracle/orcl/undotbs10.dbf
/oracle/oracle/oradata/oracle/orcl/trade_121.dbf
451733 13-NOV-2007 02:50:13
一旦重做应用(或介质恢复)处理了无效重做,它将标记备用数据库中所有相应的数据块已损坏,此外,当对引用这些数据块的任何数据执行查询时,备用数据库将在物理备用数据库上遇到损坏的块。
ORA-01578:ORACLE数据块损坏(文件#3,块#514)
ORA-01110:数据文件3:'/oracle/oracle/oradata/oracle/orcl/trade_121.dbf'
ORA-26040:使用NOLOGGING选项加载了数据块
但是,NOLOGGING适用于介质恢复或相应对象的恢复不重要的配置。
感谢和问候,
维诺德·萨达南丹(Vinod Sadanandan)
甲骨文数据库管理员