有一个表A
ID是主键
Name CHAR(16)
begintime DATE
endtime DATE
ISTRUE INTEGER
更新时
UPDATE A set Name ='5324',Istrue='1'
,starttime=to_date('2011-03-17 22:00:00','yyyy-mm-dd hh24:mi:ss')
,endtime=to_date('2011-03-18 00:00:00','yyyy-mm-dd hh24:mi:ss')
where ID=158当时在SQL Window里面一直执行,也不报错,也不提交。请问是什么原因?
该如何让它更新成功那?
ID是主键
Name CHAR(16)
begintime DATE
endtime DATE
ISTRUE INTEGER
更新时
UPDATE A set Name ='5324',Istrue='1'
,starttime=to_date('2011-03-17 22:00:00','yyyy-mm-dd hh24:mi:ss')
,endtime=to_date('2011-03-18 00:00:00','yyyy-mm-dd hh24:mi:ss')
where ID=158当时在SQL Window里面一直执行,也不报错,也不提交。请问是什么原因?
该如何让它更新成功那?
UPDATE A set Name ='5324',Istrue='1'
,starttime=to_date('2011-03-17 22:00:00','yyyy-mm-dd hh24:mi:ss')
,endtime=to_date('2011-03-18 00:00:00','yyyy-mm-dd hh24:mi:ss')
where ID=158;commit;
,starttime=to_date('2011-03-17 22:00:00','yyyy-mm-dd hh24:mi:ss')
,endtime=to_date('2011-03-18 00:00:01','yyyy-mm-dd hh24:mi:ss')
where ID=158;
commit;
s.SERIAL#,
l.LMODE,
lo.ORACLE_USERNAME,
lo.OS_USER_NAME,
s.MACHINE,
s.TERMINAL,
ao.owner,
ao.object_name,
s.ACTION,
s.EVENT,
s.SERVICE_NAME,
s.LOGON_TIME
from v$lock l,
v$locked_object lo,
all_objects ao,
dba_objects do,
v$session s
where l.SID = s.SID
and lo.SESSION_ID = s.SID
and l.ID1 = do.object_id
and lo.OBJECT_ID = do.object_id
and ao.object_id = lo.OBJECT_ID
and lo.PROCESS = s.PROCESS
用这个语句查询哪些表被锁了
然后alter system kill session 'SID,SERIAL'杀掉锁表的进程就行
--肯定是你请求的数据行正被其他dml操作所占用着,而那个语句一直没有提交,
--所以导致了你的更新语句处于等待状态
如何查看是否在占着,以及如何去结束其他的dml?
WHERE object_id =
(
SELECT OBJECT_ID FROM all_objects WHERE object_name = 'A'
) 试试看