不是这个问题。就几百条数据。 update 表名 set 字段=‘1’ where 字段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 = 表名;估计是在等待锁导致慢吧。更新慢时,看看是否有其他语句锁住了该表。
运用alter session set SQL_TRACE=true,生成跟踪文件. 然后用tkprof 生成导出,查看问题所在.
--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#; 看看哪些表被锁了的语句
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 = 表名;估计是在等待锁导致慢吧。更新慢时,看看是否有其他语句锁住了该表。
然后用tkprof 生成导出,查看问题所在.
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#;
看看哪些表被锁了的语句