oracle 表死锁

     oracle 表死锁

      一般数据库中存储过程无法编辑,包无法编辑,导致的原因基本都是因为表的死锁,简述检查过程及解决办法。

1、检查是否有表死锁

SELECT   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#
    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
    AND O.OWNER='DB_USER_NAME' ; --用户名,大写



2、停止任务回话

alter system kill session '817,49';  -- 817 49 是上图检查结果


3、job问题造成

在网络看到job有也有可能导致表死锁,摘录如下:

  1.查看正在运行的job:    

   select * fromdba_jobs_running;

   2.查询job对应的s.sid,s.serial#:

   select s.sid,s.serial# fromv$session s where s.sid in (select sid from dba_jobs_running);

   3.停止任务会话:

   alter system kill session'sid,serial;

   4.断开JOB。

   5.最后删除在执行的JOB。

   注意:任务会话结束后,任务不一定就停止运行了,必须删除JOB。再通过查询死锁表语句查看是否有锁表,

  假如没有,此时应该可以对存储过程或者包重新编辑了,或者在调用脚本杀除锁表会话。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值