用oracle数据库发现我们库表中会不定时的有表出现update或者delete需要很久时间。这个是怎么回事,要如何查呢?

解决方案 »

  1.   

    不是这个问题。就几百条数据。 update 表名 set 字段=‘1’ where 字段2= ‘2’ 就这么简单的语句。我先各位大侠我怀疑锁表了或者是什么的。有没有提供准确点的查一些这个锁了或者性能了的系统视图语句
      

  2.   

    --查看被锁定的对象和会话信息
    SELECT b.Object_Name, c.Sid, c.Serial# 
                FROM V$locked_Object a, Dba_Objects b, V$session c 
               WHERE a.Object_Id = b.Object_Id 
                 AND a.Session_Id = c.Sid
                 AND b.Object_Name = 表名;估计是在等待锁导致慢吧。更新慢时,看看是否有其他语句锁住了该表。
      

  3.   

    运用alter session set SQL_TRACE=true,生成跟踪文件.
    然后用tkprof 生成导出,查看问题所在.
      

  4.   

    --1.查出锁定object的session的信息以及被锁定的object名
    SELECT L.SESSION_ID SID,
           S.SERIAL#,
           L.LOCKED_MODE,
           L.ORACLE_USERNAME,
           L.OS_USER_NAME,
           S.MACHINE,
           S.TERMINAL,
           O.OBJECT_NAME,
           S.LOGON_TIME
      FROM V$LOCKED_OBJECT L, ALL_OBJECTS O, V$SESSION S
     WHERE L.OBJECT_ID = O.OBJECT_ID
       AND L.SESSION_ID = S.SID
     ORDER BY SID, S.SERIAL#;
    看看哪些表被锁了的语句
      

  5.   

    登录oracle管理器,在会话中查看正在进行的操作,看那个操作和你要操作的表一样,中断它
      

  6.   

    也有可能  JOB 的 原因 
      

  7.   

    我查了下,是都有没有锁表。但是执行dml操作就是很慢