oracle数据库中表被锁,Oracle数据库表被锁问题处理
Oracle數據庫表被鎖問題處理
半仙 自動化運維
在操作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>
總結
以上是生活随笔為你收集整理的oracle数据库中表被锁,Oracle数据库表被锁问题处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美丽说与蘑菇街有什么区别
- 下一篇: 大数据中如何批量获取指定地址的经纬度信息