SQ死鎖及死鎖的解決
1、模擬死鎖的場景:
登入sqlplus,如下輸入命令不提交。
2、在開啟一個sqlplus,如下輸入命令:
此時在PL/SQL Developer中輸入一下命令,查詢出來鎖。
然後輸入以下命令,查詢出來sid和serial#:
然後輸入以下命令,殺死死鎖:alter
system kill session ‘sid,serial#’
殺死完成後,再回頭看看,剛才鎖住的sql,如下所示:
已經執行完成了!
登入sqlplus,如下輸入命令不提交。
點選(此處)摺疊或開啟
-
C:\Windows\System32>sqlplus /nolog
-
-
SQL*Plus: Release 12.1.0.1.0 Production on 星期六 11月 7 16:02:00 20
-
-
Copyright (c) 1982, 2013, Oracle. All rights reserved.
-
-
SQL> conn / as sysdba
-
已連線。
-
SQL> conn scott/windows
-
已連線。
-
SQL> delete from emp;
-
-
已刪除 12 行。
-
- SQL>
點選(此處)摺疊或開啟
-
Microsoft Windows [版本 6.1.7601]
-
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
-
-
C:\Windows\System32>sqlplus /nolog
-
-
SQL*Plus: Release 12.1.0.1.0 Production on 星期六 11月 7 16:55:03 2015
-
-
Copyright (c) 1982, 2013, Oracle. All rights reserved.
-
-
SQL> conn scott/windows
-
已連線。
- SQL> delete from emp;
點選(此處)摺疊或開啟
-
select /*+ RULE */
-
ls.osuser os_user_name,
-
ls.username user_name,
-
decode(ls.type,
-
'RW',
-
'Row wait enqueue lock',
-
'TM',
-
'DML enqueue lock',
-
'TX',
-
'Transaction enqueue lock',
-
'UL',
-
'User supplied lock') lock_type,
-
o.object_name object,
-
decode(ls.lmode,
-
1,
-
null,
-
2,
-
'Row Share',
-
3,
-
'Row
-
Exclusive',
-
4,
-
'Share',
-
5,
-
'Share Row Exclusive',
-
6,
-
'Exclusive',
-
null) lock_mode,
-
o.owner,
-
ls.sid,
-
ls.serial# serial_num,
-
ls.id1,
-
ls.id2
-
from sys.dba_objects o,
-
(select s.osuser,
-
s.username,
-
l.type,
-
l.lmode,
-
s.sid,
-
s.serial#,
-
l.id1,
-
l.id2
-
from v$session s, v$lock l
-
where s.sid = l.sid) ls
-
where o.object_id = ls.id1
-
and o.owner <> 'SYS'
- order by o.owner, o.object_name;
點選(此處)摺疊或開啟
-
SELECT /*+ rule */
-
lpad(' ', decode(l.xidusn, 0, 3, 0)) || l.oracle_username User_name,
-
o.owner,
-
o.object_name,
-
o.object_type,
-
s.sid,
-
s.serial#
-
FROM v$locked_object l, dba_objects o, v$session s
-
WHERE l.object_id = o.object_id
-
AND l.session_id = s.sid
- ORDER BY o.object_id, xidusn DESC
點選(此處)摺疊或開啟
-
Microsoft Windows [版本 6.1.7601]
-
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
-
-
C:\Windows\System32>sqlplus /nolog
-
-
SQL*Plus: Release 12.1.0.1.0 Production on 星期六 11月 7 17:43:49 2015
-
-
Copyright (c) 1982, 2013, Oracle. All rights reserved.
-
-
SQL> conn / as sysdba
-
已連線。
-
SQL> alter system kill session '129,17';
-
-
系統已更改。
-
-
SQL> alter system kill session '134,71';
-
-
系統已更改。
-
- SQL>
點選(此處)摺疊或開啟
-
Microsoft Windows [版本 6.1.7601]
-
版權所有 (c) 2009 Microsoft Corporation。保留所有權利。
-
-
C:\Windows\System32>sqlplus /nolog
-
-
SQL*Plus: Release 12.1.0.1.0 Production on 星期六 11月 7 16:55:03 2015
-
-
Copyright (c) 1982, 2013, Oracle. All rights reserved.
-
-
SQL> conn scott/windows
-
已連線。
-
SQL> delete from emp;
-
-
已刪除 12 行。
-
- SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22275400/viewspace-1825262/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 面試:什麼是死鎖,如何避免或解決死鎖;MySQL中的死鎖現象,MySQL死鎖如何解決面試MySql
- MySQL 死鎖解決MySql
- MySQL解決死鎖MySql
- 什麼是死鎖?如何解決死鎖?
- 常見的死鎖情況及解決方法
- 例項詳解 Java 死鎖與破解死鎖Java
- SQL SERVER死鎖查詢,死鎖分析,解鎖,查詢佔用SQLServer
- 死鎖
- MySQL死鎖分析與解決之路MySql
- 作業系統(5) 死鎖的概念 死鎖產生的必要條件 死鎖的處理策略 預防死鎖 避免死鎖 死鎖的檢測和解除 銀行家演算法作業系統演算法
- 解決Oracle死鎖問題步驟Oracle
- mysql慢查詢,死鎖解決方案MySql
- LiteOS:SpinLock自旋鎖及LockDep死鎖檢測
- 面試官:什麼是死鎖?怎麼排查死鎖?怎麼避免死鎖?面試
- 死鎖概述
- 檢視oracle死鎖程式並結束死鎖Oracle
- MySQL:一個死鎖分析 (未分析出來的死鎖)MySql
- 死鎖和可重入鎖
- MySQL 死鎖和鎖等待MySql
- 鎖的使用與死鎖的避免
- Mysql使用kill命令解決死鎖問題MySql
- SQLServer的死鎖分析(1):頁鎖SQLServer
- MySQL死鎖系列-線上死鎖問題排查思路MySql
- 死鎖是什麼?如何預防和避免死鎖?
- Java 中的死鎖Java
- SQL Server 的死鎖SQLServer
- 記憶體混亂及解決方法和死鎖問題記憶體
- 死鎖問題排查過程-間隙鎖的復現以及解決
- GCD 死鎖原因GC
- 死鎖案例二
- 死鎖案例三
- 併發:死鎖
- 遭遇ITL死鎖
- 死鎖-舉例
- 死鎖案例分析
- MySQL併發時經典常見的死鎖原因及解決方法MySql
- 剖析6個MySQL死鎖案例的原因以及死鎖預防策略MySql
- 如何避免死鎖和活鎖? - simar
- mysql行鎖和死鎖檢測MySql