oracle中dml操作,Oracle的DML操作过程
DML操作,Oracle所有进程配合执行的过程成!
用户将DML操作的语句通过进程传输给sga中的buffer cache,然后在buffer cache中对所更改的数据块进行更新操作,然后首先由logwr进程将此操作前的数据库传输给undo,将操作玩的数据传输给redo,此过程比较快(redo log为连续写)
然后再由dbwn进程将buffer cache中的脏数据块写入data file这个过程有间隔,这个间隔有ckpt进程来决定。
ckpt进程是如下运行的:
每隔3秒或更频繁写一次,写入控制文件和数据头文件,记录DBWN从SGA写入磁盘的块的位置(SCN(system change number) 系统更改号)
然后ckpt进程每次执行完之后,立刻通知dbwn进程,将现有的脏数据块写入data file
当dbwn进程将脏数据块写入data file后再产生一个检查点(checkpoint)
然后ckpt再次将scn更新到控制文件和data file的头文件中的scn之后,继续通知dbwn将buffer cache中的脏数据块写入到data file和dbwn创建检查点后继续等待ckpt进程的通知
如此循环,便是oracle的dml操作的过程!
后期补充:
另一位网友的介绍:
1、事务开始;
2、在buffer cache中找到需要的数据块,如果没有找到,则从数据文件中载入buffer cache中;
3、事务修改buffer cache的数据块,该数据被标识为“脏数据”,并被写入log buffer中;
4、事务提交,LGWR进程将log buffer中的“脏数据”写入redo log file中;
5、当发生checkpoint,CKPT进程更新所有数据文件的文件头中的信息,DBWn进程则负责将Buffer Cache中的脏数据写入到数据文件中。
附:checkpoint由ckpt进程触发oracle进行checkpoint动作,将data buffer中的脏块(已经写在redo里记录但是没有写到datafile里的)的内容写入到data file里并释放站用的空间,由dbw后台进程完成,并修改controlfile和datafile的scn.
一般手工执行(alter system checkpoint)是由于要删除某个日志但是该日志里还有没有同步到data file里的内容,就需要手工check point来同步数据,然后就可以drop logfile group n.
相关阅读:
oracle中dml操作,Oracle的DML操作过程相关推荐
- dml操作mysql_数据库DML操作(DCL了解)
DQL:SELECT * FROM 表名 DML(数据操作语言,它是对表记录的操作(增.删.改)!) 1. 插入数据 * INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1 ...
- 在oracle中游标的操作,Oracle中的游标和函数详解
Oracle中的游标和函数详解 1.游标 游标是一种 PL/SQL 控制结构:可以对 SQL 语句的处理进行显示控制,便于对表的行数据 逐条进行处理. 游标并不是一个数据库对象,只是存留在内存中. 操 ...
- oracle中的open,Oracle中常用SQL操作
学习sql有一段时间了,发现在我建了一个用来测试的表(没有建索引)中出现了许多的重复记录.后来总结了一些删除重复记录的方法,在Oracle中,可以通过唯一rowid实现删除重复记录:还可以建临时表来实 ...
- Oracle中字符操作函数实例
--连接函数 select concat('hello','宋健') from dual; --左端大写 select initcap('helloworld') from dual; --在字符串中 ...
- oracle中创建游标,oracle 存储过程创建游标
Oracle与Sql Server差异点详解 1.create函数或存储过程异同点 Oracle 创建函数或存储过程一般是 create or replace -- SQL SERVER 则是在创建之 ...
- 在Oracle中使用脏读,ORACLE 事务处理
ORACLE事务整理: 1.为什么要有事务的存在? 对数据库的访问是一个多用户且存在高并发的操作,如多用户在某一时间点上对同一条数据实行更新操作,导致数据严重混乱.不一致.破坏了数据的完整和安全性. ...
- oracle中常见索引,Oracle中的索引详解(整理)
一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name ...
- oracle中using用法,Oracle中Using用法
Oracle中Using用法 1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数 ...
- oracle中判断空,Oracle中判断空游标的方法
1.声明包 create or replace package TAL_TEST is -- Author : ADMINISTRATOR -- Created : 2012/12/9 15:15:3 ...
最新文章
- Google C++命名规范
- 害怕抑郁症?该系统通过日常交流就能判断你是否有病
- FireFox火狐浏览器与IE兼容问题 - 透明滤镜 DIV滚动条
- 全球与中国抗脑啡肽酶抗体市场发展规模及前景战略建议报2022
- Access数据库查询练习专用数据库 -手机号码归属地Access数据库_MobileDB(10万条记录)...
- 通过Windows API 创建窗口的过程理解windows消息机制
- C语言学习,关于fflush 和setvbuf
- ASP.NET MVC3 Action Filters详解(一)
- sqlserver高可用方案_PowerJob 的自实现高可用方案,妙妙妙
- 用excel做logistic回归分析_利用SPSS进行Logistic回归分析
- 2014省赛----神奇算式(填空)
- 第十五周 内部排序一(2)验证交换排序
- 你可能不知道微软悄悄关闭Win10分页显示程序的Sets功能
- 2022-04-14每日刷题打卡
- Web安全之:WebShell的获取与查杀
- 【青春记忆】叹!雪……
- 应用“真心话大冒险”项目总结
- juju debug hacks (by quqi99)
- 互联网金融系列-支付清算体系介绍-上
- 使用YOLOV7训练BDD100K数据集(数据格式转化+训练全流程)