CHILD_NUMBER O
------------ -
0 N
1 Y
/***********************观察父游标address,hash_value,sql_id ******************/
/***********************观察子游标address,hash_value,child_number,sql_id,child_address ******************/
/************************从
Oracle 10g 之后,sql_id既可以唯一确定一个父游标,sql_id,child_number唯一确定一个子游标*****/
SQL> SELECT address,hash_value,sql_id FROM v$sqlarea WHERE sql_id='gu68ka2qzx3hh';
ADDRESS HASH_VALUE SQL_ID
---------------- ---------- -------------
000000009F8CBB58 2919140880 gu68ka2qzx3hh
SQL> SELECT address,hash_value,child_number, sql_id,child_address
2 FROM v$sql WHERE sql_id='gu68ka2qzx3hh';
ADDRESS HASH_VALUE CHILD_NUMBER SQL_ID CHILD_ADDRESS
---------------- ---------- ------------ ------------- ----------------
000000009F8CBB58 2919140880 0 gu68ka2qzx3hh 0000000093696D00
000000009F8CBB58 2919140880 1 gu68ka2qzx3hh 0000000093767F58
六、总结
1、硬解析通常是由于不可共享的父游标造成的,如经常变动的SQL语句,或动态SQL或未使用绑定变量等
2、解决硬解析的办法则通常是使用绑定变量来解决
3、与父游标SQL文本完全一致的情形下,多个相同的SQL语句可以共享一个父游标
4、SQL文本、执行环境完全一致的情形下,子游标能够被共享,否则如果执行环境不一致则生成新的子游标
|