oracle各类型SQL的操作流程
2014-05-10 22:30
176 查看
SELECT
•Select * from test where object_id=200在体系中是如何运转的。
•1. 在PGA中把此条SQL语句hash成一个值;
•2. 接下来根据此hash值到SGA的共享池中去匹配,如果没有,首先查询自己的语句语法是否正确,语义是否正确,是否有权限。如果都通过则通过CBO解析生成执行计划(如走索引还是全表)。
•3. 如果是走索引,到数据缓存区找到object_id=200的索引,根据索引rowid找到记录,如果数据缓存区找不到,则到数据文件中找到,并展示给用户。
UPDATE
•Update test set object_id = 100 where object_id = 200; 在体系中是如何运转的。
•更新object_id=200的记录首先要查到object_id=200的记录,检查object_id=200是否在数据缓存中,不在则从磁盘中读取到数据缓存中。
•在回滚表空间的相应回滚段事务表上分配事务槽,从而在回滚表空间分配到空间。该动作需要记录redo日志。
•在数据缓存区中创建object_id=200的前镜像,前镜像数据也会写进磁盘的数据文件(undo表空间的数据文件),从缓存区写进磁盘有CKPT决定,当然这些动作都要记录redo日志。
•前面的步骤做完了,才允许object_id=200改为object_id=100,记录redo日志。
•此时用户如果执行了提交,日志缓存区立即记录这个提交信息,然后将回滚段事务标记为非激活INACTIVE状态,表示允许重写。
如果执行了回滚,Oracle需要从回滚段中将前镜像object_id=200的数据读出来,修改数据缓存区,完成回滚,记录redo日志。
delete运作流程?
相关文章推荐
- 配置 Oracle 11g侦听器来使用SQL操作ST_Geometry(DLL路径问题)
- Oracle中运用PL/SQL操作COM工具-1
- Oracle(八)PL/SQL 流程控制(多图高清~)
- Oracle下SQL基本操作(一)
- ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句
- Oracle篇章系列一:sqlplus概念认知及其启动关闭数据库和用户操作
- Oracle中使用PL/SQL操作COM对象
- oracle 备份操作流程
- NULL值的处理和逻辑操作||分组函数(从实践中学习Oracle SQL 第五章 第六章)
- java操作oracle分页sql
- Oracle:SQL语句--对表的操作——修改列的数据类型( 即 修改字段的数据类型)
- [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)
- oracle 中--怎么查看当前表空间在作什么操作?--查锁,死锁,当前执行时间长的Sql语句,没提交的事务,对象为哪些进程所用
- Oracle中使用PL/SQL操作COM对象
- Oracle SQL语句操作数字:取整、四舍五入及格式化
- 第0章:oracle_sql语句之基本操作
- Oracle PL\SQL操作(一)
- oracle sqlplus基本操作
- oracle pl/sql的操作大全
- 在Oracle中使用PL/SQL操作COM对象