如果當(dāng)前有用戶在對(duì)某行數(shù)據(jù)進(jìn)行修改登操作,oracle會(huì)在這行數(shù)據(jù)上添加行級(jí)鎖,期間,所有用戶對(duì)該行數(shù)據(jù)只能查詢,不可修改,如果比如說(shuō)執(zhí)行update操作,需等待該修改操作事務(wù)提交或者回滾之后,才行。
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到鎮(zhèn)巴網(wǎng)站設(shè)計(jì)與鎮(zhèn)巴網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋鎮(zhèn)巴地區(qū)。
這種情況叫死鎖,與網(wǎng)絡(luò)質(zhì)量無(wú)關(guān)。
最大的可能就是程序的原因。
如A進(jìn)程修改a表的某條記錄,修改完a表后,會(huì)繼續(xù)修改b表的某條記錄,然后提交事務(wù)。
這個(gè)時(shí)候,B進(jìn)程在修改b表的那條記錄,修改完后要去修改a表的那條記錄,然后提交事務(wù)。
這樣,當(dāng)A修改完a尚未修改b,B修改完b尚未修改a的時(shí)候,就可能出現(xiàn)B進(jìn)程等待A進(jìn)程提交事務(wù),A進(jìn)程又在等待B進(jìn)程提交事務(wù),兩個(gè)進(jìn)程一直在等。
所以死鎖就出現(xiàn)了。
1、在sql語(yǔ)句后面加上for update可以獲得行鎖。
2、捕捉返回的sqlcode 和 sqlerrmc 可以得到返回值和錯(cuò)誤信息。
---
以上,希望對(duì)你有所幫助。
半專業(yè)回答:
1,
這是個(gè)疑問(wèn)句嗎
2,如果只是
讀操作是不會(huì)加鎖的
3,事務(wù)2
什么操作都不行
4,事務(wù)2
可以加共享鎖,不能加排他鎖
問(wèn)題補(bǔ)充回答
讀操作就是select
,任何時(shí)刻都可以,因?yàn)槭欠亲枞x,由undo機(jī)制實(shí)現(xiàn)
共享鎖是保證表結(jié)構(gòu)不能被更改,但是可以更改沒(méi)有加排他鎖的數(shù)據(jù)
共享鎖是表級(jí)的,排他鎖是行級(jí)的
oracle數(shù)據(jù)庫(kù)分行級(jí)鎖和表級(jí)鎖。用select * from table-name for update完成行級(jí)鎖。用delete或update完成表級(jí)鎖。你鎖定的資源 別人會(huì)等待你的提交語(yǔ)句或回退語(yǔ)句完成以后再繼續(xù)進(jìn)行。