一、游标:游标可以理解为SQL语句的一个句柄,也叫SQL语句的指针,游标指向一条SQL语句,ORACLE会话要执行一条SQL时,首先要打开游标。
二、SQL解析的过程:
硬解析步骤:
1.对SQL语句进行语法检查,看是否有语法错误
2.通过数据字典,检查SQL语句中涉及的对象和列是否存在
3.检查SQL语句的用户是否对涉及的对象有权限
4.通过优化器创建一个最优的执行计划。这个过程会根据数据字典中对象的统计信息来计算多个执行计划的cost,从而得到一个最优的执行计划。这一步涉及到大量的数据运算,从而消耗大量的CPU资源。(library cache最主要的目的就是通过软解析来减少这个步骤);
5.将该游标产生的执行计划,SQL文本等装载进library cache中的heap中
软解析:
所谓软解析,就是因为相同文本的SQL语句存在于library cache中,所以本次SQL语句的解析就可以去掉硬解析的多个步骤。从而节省大量的资源的消耗
软软解析:
所谓的软软解析,就是没有任何解析过程。当设置了session_cached_cursors参数时,当某个session第三次执行相同的SQL语句时,则会把该SQL语句的游标缓存到PGA中。这样当该session在执行该SQL语句时,会直接从PGA中取出执行计划,从而跳过解析的所有步骤