ORACLE NOLOGGING研究
熟悉oracle的人都知道。通过设置oracle的nologging选项,能够使某些操作高速完毕,风险是数据库备份可能失效。能够使用nologging的操作有非常多,搜集资料整理例如以下:
1.索引的创建和ALTER(重建)。
2.表的批量INSERT(通过/*+append */提示使用“直接路径插入“。
或採用SQL*Loader直接路径载入)。表数据生成少量redo,可是全部索引改动会生成大量redo(虽然表不生成日志,但这个表上的索引却会生成redo。)。
3.Lob操作(对大对象的更新不必生成日志)。
4.通过create table as select创建表。
5.各种alter table操作,如move和split。
6. dml操作始终生成redo,对于lob字段例外(与lob字段的undo方式有关)
以下,我们来使用一下:
首先是归档模式下:
SQL> show user
USER is "YUE"
SQL> @redo.sql STATISTIC# USERNAME NAME VALUE
---------- ------------------------------ -------------------- ----------
178 YUE redo size 684 SQL> create table t2 as select * from t1; Table created. SQL> @redo.sql STATISTIC# USERNAME NAME VALUE
---------- ------------------------------ -------------------- ----------
178 YUE redo size 8573344 SQL> create table t3 nologging as select * from t1; Table created. SQL> @redo.sql STATISTIC# USERNAME NAME VALUE
---------- ------------------------------ -------------------- ----------
178 YUE redo size 8725596
再来看一下非归档模式下:
SQL> @redo.sql STATISTIC# USERNAME NAME VALUE
---------- ------------------------------ -------------------- ----------
178 YUE redo size 1392 SQL> create table t4 as select * from t1; Table created. SQL> @redo.sql STATISTIC# USERNAME NAME VALUE
---------- ------------------------------ -------------------- ----------
178 YUE redo size 191000 SQL> create table t5 nologging as select * from t1; Table created. SQL> @redo.sql STATISTIC# USERNAME NAME VALUE
---------- ------------------------------ -------------------- ----------
178 YUE redo size 297176
由此可见,在非归档模式下。对于上述操作。oracle无论nologging是否指定,都尽量不生成redo。
那么,上面全部的能够nologging的操作具有什么共性那?
本人,觉得。全部这些操作都是生成新的数据块或者直接覆盖老数据块的全部内容,比如 insert append操作,是在高水位线上直接插入数据。这也就解释了为什么insert append操作相应的index会生成redo,由于对index的改动即不是新建块也不是覆盖老块的全部内容。
DML操作在nologging模式下之所以生成日志。是由于dml操作的不一定是新块或者覆盖老块全部内容。
而对lob的dml能够不生成redo。是由于lob的dml操作始终是在新块上保存编辑后数据。
ORACLE NOLOGGING研究的更多相关文章
- Oracle NoLogging Append 方式减少批量insert的redo_size
业务处理中,很多时候使用实表临时表处理中间结果,而实表的Insert操作缺省会记录redo log,针对此问题收集相关测试总结信息如下: [转] 常见dml.ddl语句使用nologging选项所生成 ...
- oracle nologging用法
一.oracle日志模式分为(logging,force logging,nologging) 默认情况是logging,就是会记录到redo日志中,force logging是强制记录日志,nolo ...
- oracle nologging用法(转)
一.oracle日志模式分为(logging,force logging,nologging) 默认情况是logging,就是会记录到redo日志中,force logging是强制记录日志,nolo ...
- 转载:oracle 启动过程--oracle深入研究
Oracle数据库的启动-nomount状态深入解析 通常所说的Oracle Server主要由两个部分组成:Instance和Database.Instance是指一组后台进程(在Windows上是 ...
- Oracle进阶研究问题收集
1. buffer busy waits http://www.itpub.net/thread-1801066-1-4.html 2. 深入理解oracle log buffer http://ww ...
- oracle rowid 研究
SQL> create table tab01(id integer,val varchar(4)); Table created. SQL> insert into tab01 valu ...
- Oracle DBA面试突击题
一份ORACLE DBA面试题 一:SQL tuning 类 1:列举几种表连接方式 答: Oracle的多表连接算法有Nest Loop.Sort Merge和Hash Join三大类,每一类又可以 ...
- oracle 有用站点
使用oradebug修改数据库scn – 提供专业ORACLE技术咨询和支持@Phone13429648788 - 惜分飞 Solaris上使用DTrace进行动态跟踪 老熊的三分地-Oracle及数 ...
- oracle 常用博客网址
使用oradebug修改数据库scn – 提供专业ORACLE技术咨询和支持@Phone13429648788 - 惜分飞 Solaris上使用DTrace进行动态跟踪 老熊的三分地-Oracle及数 ...
随机推荐
- AMD 与 CMD 区别
作者:玉伯链接:https://www.zhihu.com/question/20351507/answer/14859415来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...
- 基于Angular4+ server render(服务端渲染)开发教程
目标: 1.更好的 SEO,方便搜索爬虫抓取页面内容 2.更快的内容到达时间(time-to-content) 影响: 1.用户:比原来更快的看到渲染的页面,提升用户体验 2.开发人员:某些代码可能需 ...
- JavaScript 获取星期几函数
function getDayofWeek() { var day = ""; var time = new Date(); ...
- Windows phone开发数据绑定系列(1)--了解数据绑定
(部分内容参考MSDN文档) 数据绑定是在应用程序UI与业务逻辑之间建立连接的过程.通过数据绑定的方式实现了后台数据和前台UI元素的关联, 为用户提供了更好地交互体验. 数据绑定一般有以下几种体现方式 ...
- mysql数据库知识点总结
一.数据库的基本操作 --------------------------------------------------------------数据库的安装以后更新----------------- ...
- Spring学习笔记之aop动态代理(3)
Spring学习笔记之aop动态代理(3) 1.0 静态代理模式的缺点: 1.在该系统中有多少的dao就的写多少的proxy,麻烦 2.如果目标接口有方法的改动,则proxy也需要改动. Person ...
- vue axios 请求带token设置
API axios.js import axios from "axios"; let AUTH_TOKEN=(function(){ return localStorage.ge ...
- WM消息大全
消息名 消息值 说明 WM_CREATE 0x0001 应用程序创建一个窗口 WM_DESTROY 0x0002 一个窗口被销毁 WM_MOVE 0x0003 移动一个窗口 WM_SIZE 0x000 ...
- jquery radio、 checkbox、 select 操作
转载:http://www.haorooms.com/post/checkandselect $("input[id^='code']");//id属性以code开始的所有inpu ...
- logging模块-logging.basicConfig、logger.setLevel、handler.setLevel优先级
logging.basicConfig < handler.setLevel < logger.setLevel 1.脚本中没有配置logger.setLevel会使用handler.se ...