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 ...
随机推荐
- 求一组数字序列的分布情况(java)
最近需要做一个正态分布的函数图像所以要处理一段double序列 写了这个算法 先上效果图: 核心思想: 1先根据步长计算每一个区间 2循环进行判断序列中每个数属于哪个区间 3用一个数组来保存每一个区 ...
- java数据导出成 EXCEL
/** * * @param out 输出流 * @param maplist 数据 * @param title 标题 * @param headers 表头 * @param keys 表头对应的 ...
- 关于cookie的使用
cookie的属性 domain:域名,即cookie所能使用的范围,当然当前域下可以在当前域下cookie,还有一个就是该域名的父级域名(子级的域名下是可以访问父级域名下的cookie,父级域名是不 ...
- 使用HTML5的页面资源预加载(Link prefetch)功能加速你的页面加载速度
不管是浏览器的开发者还是普通web应用的开发者,他们都在做一个共同的努力:让Web浏览有更快的速度感觉.有很多已知的技术都可以让你的网站速度变得更快:使用CSS sprites,使用图片优化工具,使用 ...
- 【转】【可用】Android 登录判断器,登录成功后帮你准确跳转到目标activity
我们在使用应用时肯定遇到过这样的情景,打开应用,并不是需要我们登录,你可以浏览应用中的大部分页面,但是当你想看某个详情页的时候,点击后突然跳转到了登录页面,好,我们输入账号密码,点击登录,登录成功,跳 ...
- rsync 安装使用详解
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.它的特性如下:可以镜像保存整个目录树和文件系统.可以很容易做到保持原来文件的权限.时间.软硬链接 ...
- python GUI学习——Tkinter
支持python的常见GUI工具包: Tkinter 使用Tk平台 很容易得到 半标准 wxpython 基于wxWindows.跨平台越来越流行 Python Win 只能在Windows上使用 使 ...
- Android小代码——设置全屏
1: public class MainActivity extends Activity { 2: @Override 3: public void onCreate(Bundle savedIns ...
- Oracle EBS-SQL (MRP-5):重起MRP Manager.sql
UPDATE fnd_concurrent_processes SET process_status_code = 'K' WHERE process_status_code not in ('K', ...
- SQL 查找某个字段的首字母
执行以下SQL语句 SELECT ,--或得首字母出现的位置 ),--要替换的字符串 ),''),--替换后的结果 OrderId, * FROM dbo.OrderSync 得到结果如下