现在一个项目,  是用jdbc 连接
问题:
 有个时候,点击某些页面出现获不到连接情况, 导致大不开页面,不得不重启!
(出现此现象不经常,偶尔, 估计是某些地方没关闭连接原因!)
但一个项目页面这么多, 无从去找, 现在oracle中提供查找锁可精确到表不知道能不能查出更详细点的或者是因哪条sql语句导致?? 各位 有何高见!急!!!

解决方案 »

  1.   

    有没有可能是限定的事务数过小?
    或者没有带上自动commit
      

  2.   

    事物数,50,  这个跟数量没有直接关联的吧, 如果没关闭,  多少都会死掉, 只是时间问题!!!
    有带自动的commit的!!!
      

  3.   

    这个SQL可以查出被锁的对象和被锁的SQL语句。产生锁的SQL语句期待高人解决!select 
    UO.OBJECT_NAME as "been locked object", 
    SE.SID as "been locked session", 
    SA.SQL_TEXT as "been locked SQL"
    from v$locked_object lb, v$session se, v$sqlarea sa, user_objects uo
    where LB.SESSION_ID = SE.SID
    and SE.SQL_ID = SA.SQL_ID
    and UO.OBJECT_ID = LB.OBJECT_ID
      

  4.   

    1、先从v#lock,v$session,all_objects三个视图中关联出sid和serial#两个字段
    2、执行alter语句删除被锁的进程:alter system kill 'sid,serial#';
      

  5.   

    分两步:
    第一步、找到产生锁的事物:
    select sess.sid,
       sess.serial#,
       lo.oracle_username,
       lo.os_user_name,
       ao.object_name,
       lo.locked_mode
       from v$locked_object lo,
       dba_objects ao,
       v$session sess
    where ao.object_id = lo.object_id and lo.session_id = sess.sid;第二步、找到其对应SQL_TEXT(引用第一步的SID):
    select t3.SQL_TEXT
      from v$session t1, v$locked_object t2,v$sqltext t3
     where t1.sid = t2.SESSION_ID
       and t1.SQL_ADDRESS = t3.ADDRESS
       and t1.SID = 1983 
       ORDER BY T3.PIECE ASC;当然有外部工具就更容易,例如PL/SQL dev直接通过Tools查看session即可。