oracle redo与undo_笔记5:在索引上设置NOLOGGING
在索引上设置NOLOGGING
使用NOLOGGING选项有两种方法。前一种,是把NOLOGGING关键字嵌在SQL命令中。另一种方法是在段(索引或表)上设置NOLOGGING属性,从而隐式地采用NOLOGGING模式来执行某些操作。例如,可以把一个索引或表修改为默认采用NOLOGGING模式。这说明,以后重建这个索引不会生成日志(其他索引和表本身可能还会生成redo,但是这个索引不会),使用刚刚创建的表T,你会注意到:
sys@ORCL>create index t_idx on t(object_name);
Index created.
sys@ORCL>variable redo number
sys@ORCL>exec :redo :=get_stat_val('redo size');
PL/SQL procedure successfully completed.
sys@ORCL>alter index t_idx rebuild;
Index altered.
sys@ORCL>exec dbms_output.out put_linc e((get_stat_val('redo size')-:redo) || 'bytes of redo generated...');
3039092bytes of redo generated...
PL/SQL procedure successfully completed.
这个索引采用LOGGING模式(默认),重建这个索引会生成3MB的重做日志。不过,可以如下修改这个索引:
sys@ORCL>alter index t_idx nologging;
Index altered.
sys@ORCL>exec :redo :=get_stat_val('redo size');
PL/SQL procedure successfully completed.
sys@ORCL>alter index t_idx rebuild;
Index altered.
sys@ORCL>exec dbms_output.put_line((get_stat_val('redo size')-:redo) || 'bytes of redo generated...');
41812bytes of redo generated...
PL/SQL procedure successfully completed.
现在它只生成41KB的redo。但是,现在这个索引没有得到保护(unprotected),如果它所在的数据文件失败而必须从一个备份恢复,我们就会丢失这个索引数据。现在索引是不可恢复的,所以需要做一个备份。或者,DBA也可以干脆重建索引,因为完全可以从表数据直接重建索引。
oracle redo与undo_笔记5:关于NOLOGGING操作,需要注意以下几点http://www.52ij.com/jishu/5262.html
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5263.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
