用select  *  from    V$OPEN_CURSOR  查询当前游标数量, 为什么查出很多如下的游标: SELECT NULL AS table_cat, c.owner AS table_schem 而且很久释放不掉. 请问是什么原因

解决方案 »

  1.   

    没有close 吧,程序里
    找到游标名close cursorname;
      

  2.   

    V$OPEN_CURSOR  
    这个表本来就是记录正在打开的游标,什么可能删得掉呢?
      

  3.   

    我们产品中遇到过。
    如果很多很多的话,估计是jdbc的驱动有问题,更新一个最新的试试就ok了。
      

  4.   

    我现在把oracle的游标数改成1000了
      

  5.   

    以前也遇到过这样的问题,打开的游标数过大,后来查找原因:因为代码的问题,在一个循环里边的select太多了。
    我们代码里边没有涉及到游标,应该都是隐式游标,隐式游标是自动释放的。
    但是好像一下打开的太多了也不行,就像我们在一个循环里边select一样。
      

  6.   

    你每发一个查询(select ,update等),oracle都会产生CURSOR,不过这些由oracle 自动处理
    当你自己的程序因为打开的CURSOR太多又没有释放,而且又超过参数指定的数值就会提示错误:不能打开CURSOR
    通过V$OPEN_CURSOR 、v$session、v$sql我们可以找到CURSOR具体对应的sql脚本
    我想看到sql脚本,你就应该明白是你们的程序还是系统自己生成的CURSOR了
      

  7.   

    请问怎么样能看到具体的sql脚本呢我查出来的都是类似SELECT NULL AS table_cat, c.owner AS table_schem 这种语句,根本看不到具体的sql 啊
      

  8.   


    STATSPACK/v$session_wait+v$system_event分析数据库瓶颈,对问题语句再进行优化 
      

  9.   

    汗一个,对oracle这些不是很熟悉.楼上说的这些都不大懂.如果说我的程序里打开的游标数为800,正常吗