oracle游标为什么没有共享,统计一下原因
- IT业界
- 2025-09-18 10:48:01

-- Script Code为什么没共享 define sql_id = 'bs391f0yq5tpw'; set serveroutput on DECLARE v_count number; v_sql varchar2(500); v_sql_id varchar2(30) := '&sql_id'; BEGIN v_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_columns where 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) LOOP v_sql := 'select count(*) from V_$SQL_SHARED_CURSOR where sql_id='||''''||v_sql_id||''''||' and '||c1.column_name||'='||''''||'Y'||''''; execute immediate v_sql into v_count; IF v_count > 0 THEN dbms_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)。
oracle游标为什么没有共享,统计一下原因由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“oracle游标为什么没有共享,统计一下原因”