-- Script Code為什么沒共享
define sql_id = 'bs391f0yq5tpw';set serveroutput onDECLAREv_count number;v_sql varchar2(500);v_sql_id varchar2(30) := '&sql_id';
BEGINv_sql_id := lower(v_sql_id);dbms_output.put_line(chr(13)||chr(10));dbms_output.put_line('sql_id: '||v_sql_id);dbms_output.put_line('------------------------');FOR c1 in(select column_name from dba_tab_columnswhere table_name ='V_$SQL_SHARED_CURSOR'and column_name not in ('SQL_ID', 'ADDRESS', 'CHILD_ADDRESS', 'CHILD_NUMBER', 'REASON', 'CON_ID')order by column_id)LOOPv_sql := 'select count(*) from V_$SQL_SHARED_CURSORwhere sql_id='||''''||v_sql_id||''''||'and '||c1.column_name||'='||''''||'Y'||'''';execute immediate v_sql into v_count;IF v_count > 0THENdbms_output.put_line(' - '||rpad(c1.column_name,30)||' count: '||v_count);END IF;END LOOP;
END;
/
很清晰了,綁定變量不匹配
BIND_MISMATCH:綁定元數據與現有的子游標不匹配
ROLL_INVALID_MISMATCH:超過了滾動無效窗口。這是由DBMS_STATS的滾動無效功能引起的。因為它的無效窗口已經超過了,所以子游標不能被共享
BIND_LENGTH_UPGRADEABLE:綁定長度可升級,并且無法共享,因為一個綁定變量大小小于正在插入的新值(在早期版本中被標記為BIND_MISMATCH)。