ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一个关于redo size的实验

一个关于redo size的实验

原创 Linux操作系统 作者:david3389 时间:2009-05-23 23:25:40 0 删除 编辑

今天一个朋友问我,什么情况下insert不产生redo,这本来是个比较容易回答的问题,直接路径写,可本着任何问题都严谨回答的态度,我还是做了实验,得出来以下结论,试验过程不再赘述,就是比较v$mystat的redo size的变化。

结论:

archive mode
1.logging
 1.1 insert----have redo
 1.2 insert /*+ APPEND */----have redo
2.nologging
 2.1 insert----have redo
 2.3 insert /*+ APPEND */----do not have redo
在归档模式下,只有表是nologging,并且直接路径写才不会产生redo

noarchive mode
1.nologging
 1.1 insert----have redo
 1.2 insert /*+ APPEND */----do not have redo
2.logging
 2.1 insert----have redo
 2.2 insert /*+ APPEND */----do not have redo
在非归档模式下,无论表是否是nologging模式,直接路径写都不产生redo。

那么nologging和logging该怎么用?于是我做了以下测试

noarchive mode
1.create table t nologging as select * from all_objects----do not have redo
2.create table t as select * from all_objects----do not have redo

archive mode
1.create table t nologging as select * from all_objects ----do not have redo
2.create table t as select * from all_objects----have redo

那么nologging对于表到底起啥作用?在归档模式下,也就是大部分生产库上,如果要加速操作速度,并且不插入日志,你可以选择两种操作:
1.先create一个nologging的表,然后用insert /*+ APPEND */来插入数据。
2.如果要进行复制表的操作,那么直接create table t nologging即可。

nologging对索引也有作用,alter index test_1 nologging,能有啥用?在rebuild索引时,可以先将索引nologging,然后rebuild时就不会产生大量redo。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16628454/viewspace-600883/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-11-17

  • 博文量
    19
  • 访问量
    120163