以下脚本可以用于诊断ORA-01000打开游标过多错误:
set linesize 140 pagesize 1400 select to_char(100 * sess / calls, '999999999990.00') || '%' cursor_cache_hits, to_char(100 * (calls - sess - hard) / calls, '999990.00') || '%' soft_parses, to_char(100 * hard / calls, '999990.00') || '%' hard_parses from ( select value calls from v$sysstat where name = 'parse count (total)' ), ( select value hard from v$sysstat where name = 'parse count (hard)' ), ( select value sess from v$sysstat where name = 'session cursor cache hits' ) / select a.name, b.value from v$statname a, v$mystat b where a.statistic# = b.statistic# and lower(a.name) like '%cursor ca%' / select sum(a.value), b.name,a.sid from v$sesstat a, v$statname b where a.statistic# = b.statistic# and b.name = 'opened cursors current' group by rollup (b.name,a.sid) order by 1 / select a.value, s.username, s.sid, s.serial# from v$sesstat a, v$statname b, v$session s where a.statistic# = b.statistic# and s.sid=a.sid and b.name = 'session cursor cache count' order by 1 / select sid, count(*) from v$open_cursor group by sid order by 2 / Exec DBMS_WORKLOAD_REPOSITORY.create_snapshot(); exec dbms_lock.sleep(300); Exec DBMS_WORKLOAD_REPOSITORY.create_snapshot(); @?/rdbms/admin/awrrpt upload the awr report or select dbms_workload_repository.awr_report_text(l_dbid => dbid, l_inst_num => instance_number, l_bid => mid - 1, l_eid => mid) from (select vd.dbid, vi.instance_number, mid from v$database vd, v$instance vi, (select max(snap_id) mid from dba_hist_snapshot dhs)) /