oracle数据库一个表被锁定,Oracle数据库表被锁问题处理

717ba02437b71449812e97d4b22dfe8f.png

在操作Oracle数据库的时候,有时候会由于操作不当等引起数据库表被锁定,锁定后表不能修改,在前端直接反应就是业务无法正常操作,在pl/sql Developer工具的的菜单“tools”里面的“sessions”可以查询现在存在的会话,但是我们很难找到哪个会话被锁定了,想找到所以被锁的对象就更难了,此时我们经常不知所措,不知怎么给这些表解锁,由于手忙脚乱匆忙作出处理,小问题变成大问题。

其实出现此类问题此时不要慌,按照查找问题---解决问题的思路可以顺利解决,首先找出哪个会话被锁,然后将此会话Kill掉,不用担心数据损坏,未提交的业务将自动回退,具体方法如下:

--------------------------------查看被锁的表--------------------------

[oracle@orcl]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 6 10:26:09 2018

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

SQL> conn /as sysdba

Connected.

---------------查看那个用户那个进程照成死锁---------------

SQL>select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

SQL> select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

USERNAME                     SID         SERIAL#     LOGON_TIM

------------------------------     ----------      ----------      ---------

************                        59               4587          06-NOV-18

--------------------------------杀掉锁表的进程----------------------

SQL> alter system kill session '59,4587';

System altered.

----------------------------确认被锁定的表被释放---------------------------

SQL> select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

no rows selected

SQL>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值