难以琢磨的redo log (什么情况下产生redo)
来源:互联网 发布:js数组和对象的区别 编辑:程序博客网 时间:2024/04/29 01:20
这段时间想弄明白什么情况下对表的操作会产生日志,以及想避免产生日志时需要做哪些动作;
首先select *from v$sysstat twhere t.class=2;找到name为redo size的行的STATISTIC#;
然后创建一张表,在上面做DML ,查看select * from v$sysstat t where t.STATISTIC#=刚才找到的那个值; 根据两次的value查看是否产生以及产生多少redo;
做了很多实验,发现:
在nologging表上用/*+ append */提示时,产生很少的redo; 在logging表上用/*+ append */提示时,也产生很少的redo;
于是就在网上查资料,看到了一篇不错的,摘录在此,以便参考(http://www.askmaclean.com/archives/oracle%e4%b8%ad%e5%8f%af%e4%bb%a5nologging%e6%89%a7%e8%a1%8c%e7%9a%84%e6%93%8d%e4%bd%9c.html#comments):
TABLE MODE INSERT MODE ARCHIVELOG MODE RESULT
——————— ——————- ————————— ———-
LOGGING APPEND ARCHIVE LOG REDO GENERATED
NOLOGGING APPEND ... NO REDO
LOGGING NO APPEND ... REDO GENERATED
NOLOGGING NO APPEND ... REDO GENERATED
LOGGING APPEND NOARCHIVE LOG MODE NO REDO
NOLOGGING APPEND ... NO REDO
LOGGING NO APPEND ... REDO GENERATED
NOLOGGING NO APPEND ... REDO GENERATED
redo重做日志是Oracle数据库恢复(recovery)的基础;但在很多情况下可以通过禁用重做日志的产生来加速SQL语句的完成,也就是我们所说的可nologging化的操作,这些操作大多是或串行的或并行的数据载入。
那么哪些操作是允许被nologging化的呢?首先需要注意的是普通的DML操作,即:常规insert,update,和delete(以及merge)总是不能被nologging执行的。但以下SQL语句则可以以nologging选项执行:
- direct load (SQL*Loader)
- direct load INSERT (using APPEND hint)
- CREATE TABLE … AS SELECT
- CREATE INDEX
- ALTER TABLE … MOVE PARTITION
- ALTER TABLE … SPLIT PARTITION
- ALTER INDEX … SPLIT PARTITION
- ALTER INDEX … REBUILD
- ALTER INDEX … REBUILD PARTITION
- INSERT, UPDATE, and DELETE on LOBs in NOCACHE NOLOGGING mode stored out of line
以上列出的语句,其产生undo和redo重做日志几乎可以完全禁绝。因为都是数据载入语句(或者装载索引)其所产生的新的区间(new extent)在执行过程中被标记为无效的(invalid),同时仅有少量的由数据字典变更引起的重做日志会产生。
- 难以琢磨的redo log (什么情况下产生redo)
- 产生的redo统计
- Oracle 的Redo Log
- redo log的管理
- redo synch writes在什么情况下发生
- oracle nologging什么场景才能减少redo日志的产生
- redo log
- Redo log
- Redo Log
- redo log
- redo log
- InnoDB的Redo Undo Log
- oracle的redo log在各场景下的恢复
- REDO LOG 与 UNDO LOG的区别
- redo log和undo log的区别
- 测试4——shrink和move产生的redo log量的比较
- redo
- redo
- Internal Server Error The server encountered an internal error or misconfiguration and was unable to
- 时间戳转化为今天什么什么时间,昨天什么什么时间【ios】
- window核心编程--堆
- java编程学习方法建议
- VS2010 ATL 控件开发
- 难以琢磨的redo log (什么情况下产生redo)
- SQl语名的学习
- Kinect实现简单的三维重建
- java native方法及JNI实例
- Ubuntu中各种软件安装方法。(不定期更新)
- The server encountered an internal error or misconfiguration and was ...
- CPU内存管理和linux内存分页机制
- java.lang.String字符串类
- 正确的在GridView中使用Bitmap图像