ORA-00031: 标记要删去的会话

今天做数据清洗,在做数据操作的时候突然发现了一个小问题需要立即停止在运行的存储过程。于是狂点取消,结果是停下来了,但是发现表被锁起来了,而且是TM锁(表级)。郁闷!!一KILL就给我来个ORA-00031: 标记要删去的会话。郁闷!到网上狂搜解决办法,发现出现这问题的同僚还蛮多。呵~在这写下解决办法:

第一:确认有那些锁,并的出相应的SID和SERIAL#。以便KILL

SELECT /*+ rule */
s.username,
decode(l.type, 'TM', 'TABLE LOCK', 'TX', 'ROW LOCK', NULL) LOCK_LEVEL,
o.owner,
o.object_name,
o.object_type,
s.sid,
s.serial#,
s.terminal,
s.machine,
s.program,
s.osuser
FROM v$session s, v$lock l, dba_objects o
WHERE l.sid = s.sid
AND l.id1 = o.object_id(+)
AND s.username is NOT NULL

第二:使用kill语句

alter system kill session 'SID,SERIAL#'

第二步的过程时间会根据数据量的大小而定,我开始以为这个语句没用,而且用一次给我抛一次ORA-00031: 标记要删去的会话的异常。我的800W条数据大概等了十几份钟吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值