
SQL 语句处理分两个或三个阶段, 每个语句从用户进程传给服务器进程进行分析然后执行。
如果是select 语句, 则还需要将结果返回给用户。
1. 分析( Parse)
29
29
分析是SQL语句处理的第一步。主要进行:
l 检查语法和根据字典来检查表名、列名。
l 确定用户执行语句的权限。
l 为语句确定最优的执行计划。
l 从SQL 区中找出语句。
2. 执行(Execute)
Oracle 执行阶段执行的是被分析过的语 句 。对于UPDATE、DELETE 语句, Oracle 先锁住有
关的行。Oracle 还要查找数据是否在数据缓冲区里。如果不在还得从数据文件中将数据读到数
据缓冲区里来。
3. 检索(Fetch )
如 果 是 select 语句, 还要进行检索操作。执行结束, 将数据返回给用户。
4. Select 语句处理:
一 般select 语句处理要经过下面步骤:
执 行顺序是:
1) 建立光标。
2) 分析语句。
3) 定义输出: 指定位置, 类型, 结果集的数据类型。
4) 绑定变量: 如果查询使用变量的话, Oracle 就要知道变量的值。
5) 是否能并行运行。
6) 执行查询。
7) 检索出数据。
8) 关闭光标。
5. DML 语句处理:
一 般INSERT,UPADTE,DELETE 语句处理要经过下面步骤:
执 行顺序是:
1)建 立 光 标 : Oracle建立一个隐含的光标。
2)分 析 语 句 。
3)绑 定变量: 如果语句用了变量, Oracle 要知道变量的值。
4)看 语 句 是否能以并行方式运行( 如果有多个服务器时)。
5)执 行语句。
6)通 知用户, 语句已执行完毕。
7)关 闭光标。
§ 1.4.2 COMMIT语句处理顺序
当 事务提交时, Oracle 分配一个唯一的顺序号SCN(System Change Number)给事务。数据库恢
复总是基于该SCN 号来进行处理。SCN 号是记录在控制文件、数据文件、块头及重做日志文
件中。
1. COMMIT处理步骤:
Oracle 在下面情况提交事务:
l 发出一个COMMIT语句。
l 执行DDL语句时。
l 离开Oracle 时。
Oracle处理COMMIT的顺序是:
1) 服务器为每个COMMIT 产生一个SCN。使改变永久化。
2) LGWR进程将日志缓冲区数据并带有SCN 一起写到重做日志文件。
3) 服务器释放表级和行级锁。
4) 用户被提示COMMIT 完成。
5) 服务器使事务已完成。
Oracle处理ROLLBACK的顺序是:
当 下面情况发生时执行回滚:
l 发出ROLLBACK 命令。
l 服务器进程放弃地终止。
l 会话被DBA终止。
ROLLBACK 是对数据库的操作进行撤消, 步骤有:
1)服 务 器 进程不做任何的改变。
2)服务器释放表级和行级锁。
3) 服务器使事务已完成。
