1、PARSE
1) 从共享池的库缓冲区中搜索,该语句是否曾经执行过,凡是执行过的SQL语句,Oracle会使用HASH函数进行计算,产生一个很小的文本记录。如果是第一次执行,则进入第二步。
2) 检查语法、权限等等(权限的信息是存放在Oracle的数据字典当中的),Oracle先从共享池的数据字典缓冲区中搜索,如果没有找到,再从数据文件(system表空间的数据文件)当中读取,然后存放在共享池的数据字典缓冲区中,以便共享。
3) 分析过程中,对访问到得表进行锁操作,目的是为了保护表的结构不被修改。
4) Oracle优化器会根据数据的存储结构(表的存储结构,索引)统计信息等。计算各种读取的代价,选择一条最佳路径(代价最低),生成执行计划,同时编译并存储在共享池的库缓冲区中,以便共享。
2、BIND
绑定变量
3、EXECUTE
先从数据缓冲区查找数据,如果没有,再从数据文件中读取数据到数据缓冲区,保存,以便共享。
4、FETCH
把结果返回给用户。
1) 从共享池的库缓冲区中搜索,该语句是否曾经执行过,凡是执行过的SQL语句,Oracle会使用HASH函数进行计算,产生一个很小的文本记录。如果是第一次执行,则进入第二步。
2) 检查语法、权限等等(权限的信息是存放在Oracle的数据字典当中的),Oracle先从共享池的数据字典缓冲区中搜索,如果没有找到,再从数据文件(system表空间的数据文件)当中读取,然后存放在共享池的数据字典缓冲区中,以便共享。
3) 分析过程中,对访问到得表进行锁操作,目的是为了保护表的结构不被修改。
4) Oracle优化器会根据数据的存储结构(表的存储结构,索引)统计信息等。计算各种读取的代价,选择一条最佳路径(代价最低),生成执行计划,同时编译并存储在共享池的库缓冲区中,以便共享。
2、BIND
绑定变量
3、EXECUTE
先从数据缓冲区查找数据,如果没有,再从数据文件中读取数据到数据缓冲区,保存,以便共享。
4、FETCH
把结果返回给用户。