OraclePLSQL中不能for update的解决办法

问题描述:在PL SQL中能够select * from products,但是不能select * from products for update;
问题产生的原因是session被锁住了,导致不能修改记录。

A说 (16:05):
B,问一下,我在pl sql中能select 但是不能select 后加上for update,这个是由于 记录锁着了吧
A 说 (16:05):
怎么样解决这个问题啊,我都不能修改了。
B 说 (16:05):

A说 (16:06):
怎么样解决这个问题呢?
B说 (16:07):
select SESSION_ID from v$locked_object l join dba_objects o on (l.OBJECT_ID=o.object_id) where o.object_name='table_name'
B 说 (16:07):
找到session id
B 说 (16:08):
select * from v$session where sid=?
B 说 (16:08):
查看这个session的情况
B 说 (16:08):
如果这个session 不是服务器的session
B 说 (16:09):
alter system kill session (sid,serial)
B 说 (16:09):
小心操作哦, 杀掉服务器的session就完蛋了
A 说 (16:09):
哦。。。。
A 说 (16:10):
完蛋是指什么啊?会把服务器搞停了?
B 说 (16:10):
就是用户可能会报错吧
B 说 (16:11):
你看看这个session的详细信息就知道是不是web应用的session了
A 说 (16:11):
select SESSION_ID from v$locked_object l join dba_objects o on (l.OBJECT_ID=o.object_id) where o.object_name='auctions'
A 说 (16:11):
没有查出记录啊
B 说 (16:11):
大写 AUCTIONS
A 说 (16:12):
select * from v$session where sid=308
A说 (16:12):
那怎么样知道是不是web应用的session呢?
A 说 (16:13):
哦,看到了,应该是我的pl sql客户端的
B 说 (16:15):
你看看session的OSUSER,MACHINE
B 说 (16:15):
PROGRAM
B 说 (16:15):
这些字段
B 说 (16:15):
我想可能是你自己的某个session 或者是他们在整理拍品
A 说 (16:20):
alter system kill session (308,7242)
  ORA-00026: missing or invalid session ID
308是sid,7242是serial#字段的值。
我这上面有哪里写错了吗?
A说 (16:22):
哦,B, 是这样啊: alter system kill session '308,7242';

你可能感兴趣的:(sql,Web,应用服务器)