update语句的执行步骤及commit语句的执行顺序
update语句的执行步骤和其他DML语句的执行步骤是一样的包含insert 、delete语句等,执行步骤如下:
一、如果数据和回滚数据不在数据库高速缓存区中,则oracle服务器进程将把他们从数据文件中读取到数据库高速缓存区中。
二、oracle服务器进程在要修改的数据行上加锁(行一级的锁)
三、oracle服务器进程将数据的变化信息和回滚段所需要的信息都记录在重做日志缓冲区中
四、oracle服务器进程将回滚所需的原始值和对数据所做的修改都写入数据库高速缓冲区。之后在数据库高速缓存区中所有的这些数据块都将被标记为脏缓冲区,因为此时内外存的数据是不一致的。
五、然后由DBWR后台进程负责将数据库高速缓存区中的脏缓存区中的数据写到数据文件中,实现内外存的数据一致。至于DBWR后台进程的执行时间点是有oracle系统的设置所决定的,包含在一下情况时触发DBWR进程执行数据的写入。
(1)缓冲区的数量超过了所设定的限额
(2)所设定的时间间隔已到
(3)当有进程需要高速缓存区,但是此时又没有空闲的高速缓存区时。
(4)当校验点发生时
(5)当某个表被删除drop或者被截断truncate时
(6)当某个表空间被设置为只读状态时
(7)当使用类似alter tablespace users begin backup的命令对表空间进行联机备份时
(8)当某个临时表空间被设置为只脱机状态或正常状态时
commit语句的执行顺序:
一、服务器进程将提交的记录连同产生的SCN码一起写到重做日志缓存区中
二、LGWR进程将把重做日志缓存区中一直到所提交的记录的所有记录连续的写到重做日志文件中。在此之后,oracle服务器就可以保证即使在系统崩溃的情况下所有提交的数据也可以得到恢复
三、oracle通知用户进程提交操作已经完成
四、服务器进程将修改数据库高速缓存区中的相关数据的状态并释放资源和打开锁(实际上就是修改数据库高速缓存区中的脏缓存区)
此时这些数据可能并没有写入数据文件中,这些数据缓存区被标记为脏缓存区。高速缓存区中 的数据由DBWR进程写入数据文件中。
LGWR进程在下列情况下将重做日志缓存区中的数据写入重做日志文件:
(1)当某个事务被提交时
(2)当重做日志缓存区中的变化的记录超过1M时
(3)当缓存区的容量超过1/3时
(4)在DBWR进程将数据库高速缓存去中修改过的数据块写入数据文件之前
(5)每3秒钟
注:从LGWR进程的触发事件看,LGWR进程的执行一定在DBWR进程的执行之前,这样才能保证数据恢复的完整性。
update语句的执行步骤及commit语句的执行顺序的更多相关文章
- sql语句执行步骤详解
		
目录 一.准备工作 二.SQL逻辑查询语句执行顺序 三.SQL书写习惯 一.准备工作 先来一段伪代码,首先你能看懂么? SELECT DISTINCT <select_list> FROM ...
 - Oracle SQL语句执行步骤
		
转自:http://www.cnblogs.com/quanweiru/archive/2012/11/09/2762345.html Oracle中SQL语句执行过程中,Oracle内部解析原理如下 ...
 - ORACLE中查询语句的执行顺及where部分条件执行顺序测试
		
Oracle中的一些查询语句及其执行顺序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查询条件: 1)LIKE:模糊查询,需要借助两个通配符, ...
 - veridata实验例(5)在更改主键列值,update操作将被分成两个语句
		
veridata实验例(5)更改主键列值,update操作将被分成两个语句 续接"veridata实验举例(4)验证veridata查找出updata.delete操作导致的不同步现象&qu ...
 - Oracle COMMIT语句的处理顺序
		
Oracle COMMIT语句相信大家都有一定的了解,下面就为您介绍Oracle COMMIT语句的处理步骤,希望对您能有所帮助. Oracle COMMIT语句处理顺序 当事务提交时,Oracle分 ...
 - java执行多条SQL语句
		
一次执行多条SQL的技术要点如下: DatabaseMetaData接口是描述有关数据库的整体综合信息,由于DatabaseMetaData是接口,所以没有构造方法,故不能使用new来创建Databa ...
 - MySql(五)SQL优化-优化SQL语句的一般步骤
		
MySql(五)SQL优化-优化SQL语句的一般步骤 一.优化SQL语句的一般步骤 1.1 通过show status命令了解各种SQL的执行频率 1.2 定位执行效率较低的SQL语句 1.3 通过e ...
 - 打开黑盒:从 MySQL架构设计出发,看它是如何执行一条 SQL语句的
		
1.把MySQL当个黑盒子一样执行SQL语句 我们的系统采用数据库连接池的方式去并发访问数据库,然后数据库自己其实也会维护一个连接池,其中管理了各种系统跟这台数据库服务器建立的所有连接 当我们的系统只 ...
 - oracle 查询最近执行过的 SQL语句(转载)
		
oracle 查询最近执行过的 SQL语句 (2014-06-09 18:02:43) 转载▼ 分类: Database oracle 查询最近执行过的 SQL语句 select sql_text ...
 
随机推荐
- linux学习笔记之线程
			
线程同步机制:http://www.cnblogs.com/zheng39562/p/4270019.html 一.基础知识 1:基础知识. 1,线程需要的信息有:线程ID,寄存器,栈,调度优先级和策 ...
 - jQuery + css 公告从左往右滚动
			
$(function() { // 公告滚动 $(".notice-content").textScroll(); }); /** * 从右往左滚动文字 * @returns {u ...
 - HTML5 drawImage 使用问题
			
使用Image遇到的问题: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
 - 在Windows XP下手动安装Apache+MySQL+PHP环境 要点
			
在整个wamp环境搭建中,本质的工作如下: 1,配置系统对php中dll文件能默认处于调用状态.在windos下,对dll文件系统默认处于调用状态的,有两种采用的方式.第一种是:把需要调用dll文件复 ...
 - 使用notepad++学习python爬虫,print网页中文乱码问题
			
今天学习使用python爬虫的时候发现爬到的网页中文会乱码,一直网上搜索解决办法,一个一个试验过去,发现还是乱码,然后我就开始使用其它方法测试,用python自带的编辑器打开是正常的,发现是notep ...
 - Apache+php+mysql win7 64位安装的几个注意事项
			
网上一堆安装教程,所以不赘述具体安装过程,只说注意事项.新手推荐phpstudy 如果想单个安装,那么以下是我两三年内多次在win winserver环境下配置Apache环境的一点注意事项,下载连接 ...
 - MYSQL  维护表的常用 5 方法
			
方法 1. analyze table: 本语句用于分析和存储表的关键字分布.在分析期间,使用一个读取锁定对表进行锁定.这对于MyISAM, BDB和InnoDB表有作用. 方法 2. CHECK T ...
 - MYSQL auto_increment 、default 关键字
			
1. auto_increment: innoDB 中 表中只可以有一个列是auto_increment的,这个列还一定要是索引. create table T(X int auto_incremen ...
 - Amzon MWS API开发之 请求报告
			
时间一晃而过又过了两周,博客园更新的速度确实有点慢,今天我要分享的是对请求报告的调用. 在文档中,相信大家也看了下面这个流程图吧? 相关流程,在文档中也有细说,我就不一一去Copy了:http://d ...
 - Java实现二叉搜索树的添加,前序、后序、中序及层序遍历,求树的节点数,求树的最大值、最小值,查找等操作
			
什么也不说了,直接上代码. 首先是节点类,大家都懂得 /** * 二叉树的节点类 * * @author HeYufan * * @param <T> */ class Node<T ...