教您如何檢查oracle死鎖
oracle死鎖問(wèn)題一直困擾著我們,下面就教您一個(gè)oracle死鎖的檢查方法,如果您之前遇到過(guò)oracle死鎖方面的問(wèn)題,不妨一看。
一、數(shù)據(jù)庫(kù)死鎖的現(xiàn)象
程序在執(zhí)行的過(guò)程中,點(diǎn)擊確定或保存按鈕,程序沒(méi)有響應(yīng),也沒(méi)有出現(xiàn)報(bào)錯(cuò)。
二、oracle死鎖的原理
當(dāng)對(duì)于數(shù)據(jù)庫(kù)某個(gè)表的某一列做更新或刪除等操作,執(zhí)行完畢后該條語(yǔ)句不提交,另一條對(duì)于這一列數(shù)據(jù)做更新操作的語(yǔ)句在執(zhí)行的時(shí)候就會(huì)處于等待狀態(tài),此時(shí)的現(xiàn)象是這條語(yǔ)句一直在執(zhí)行,但一直沒(méi)有執(zhí)行成功,也沒(méi)有報(bào)錯(cuò)。
三、oracle死鎖的定位方法
通過(guò)檢查數(shù)據(jù)庫(kù)表,能夠檢查出是哪一條語(yǔ)句被死鎖,產(chǎn)生死鎖的機(jī)器是哪一臺(tái)。
1)用dba用戶執(zhí)行以下語(yǔ)句
- select username,lockwait,status,machine,program from v$session where sid in
- (select session_id from v$locked_object)
如果有輸出的結(jié)果,則說(shuō)明有死鎖,且能看到死鎖的機(jī)器是哪一臺(tái)。字段說(shuō)明:
Username:死鎖語(yǔ)句所用的數(shù)據(jù)庫(kù)用戶;
Lockwait:死鎖的狀態(tài),如果有內(nèi)容表示被死鎖。
Status: 狀態(tài),active表示被死鎖
Machine: 死鎖語(yǔ)句所在的機(jī)器。
Program: 產(chǎn)生死鎖的語(yǔ)句主要來(lái)自哪個(gè)應(yīng)用程序。
2)用dba用戶執(zhí)行以下語(yǔ)句,可以查看到被死鎖的語(yǔ)句。
- select sql_text from v$sql where hash_value in
- (select sql_hash_value from v$session where sid in
- (select session_id from v$locked_object))
【編輯推薦】