zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

分享7个实用脚本--Oracle数据库游标数总结

2023-03-14 22:23:08 时间

今天偷个懒,总结一下Oracle游标数的一些常用sql,下面一起来看看吧~

1. 查看系统游标数(最大游标数)

  1. select value from v$parameter where name = 'open_cursors'
  2. show parameter open_cursors; 

分享7个实用脚本--Oracle数据库游标数总结

2. 查看当前打开的游标数目

  1. select count(*) from v$open_cursor; 

分享7个实用脚本--Oracle数据库游标数总结

3. 查看游标使用情况

  1. select o.sid, osuser, machine,o.sql_id,o.sql_text,o.cursor_type, count(*) num_curs 
  2.  from v$open_cursor o, v$session s 
  3.  where user_name = 'GLOGOWNER' 
  4.  and o.sid = s.sid 
  5.  group by o.sid, osuser, machine,o.sql_id,o.sql_text,o.cursor_type 
  6.  order by num_curs desc; 

分享7个实用脚本--Oracle数据库游标数总结

4. 修改Oracle最大游标数

根据游标占用情况分析访问数据库的程序在资源释放上是否正常,如果程序释放资源没有问题,则加大游标数。

  1. alter system set open_cursors=2000 scope=both

分享7个实用脚本--Oracle数据库游标数总结

5. 各用户的打开游标总数

  1. SELECT A.USER_NAME, COUNT(*) FROM V$OPEN_CURSOR A GROUP BY A.USER_NAME;  

分享7个实用脚本--Oracle数据库游标数总结

6. 查找数据库各用户各个终端的缓存游标数

  1. SELECT AA.USERNAME, AA.MACHINE, SUM(AA.VALUE) 
  2.  FROM (SELECT A.VALUE, S.MACHINE, S.USERNAME 
  3.  FROM V$SESSTAT A, V$STATNAME B, V$SESSION S 
  4.  WHERE A.STATISTIC# = B.STATISTIC# 
  5.  AND S.SID = A.SID 
  6.  AND B.NAME = 'session cursor cache count') AA 
  7.  GROUP BY AA.USERNAME, AA.MACHINE 
  8.  ORDER BY AA.USERNAME, AA.MACHINE; 

分享7个实用脚本--Oracle数据库游标数总结

7. 查找数据库各用户各个终端的打开游标数

  1. SELECT AA.USERNAME, AA.MACHINE, SUM(AA.VALUE) 
  2.  FROM (SELECT A.VALUE, S.MACHINE, S.USERNAME 
  3.  FROM V$SESSTAT A, V$STATNAME B, V$SESSION S 
  4.  WHERE A.STATISTIC# = B.STATISTIC# 
  5.  AND S.SID = A.SID 
  6.  AND B.NAME = 'opened cursors current') AA 
  7.  GROUP BY AA.USERNAME, AA.MACHINE 
  8.  ORDER BY AA.USERNAME, AA.MACHINE; 

分享7个实用脚本--Oracle数据库游标数总结