站長資訊網
最全最豐富的資訊網站

oracle中insert會鎖表嗎

oracle中insert會鎖表;當oracle執行insert等DML語句時,會在所操作的表上申請一個鎖,兩個insert語句同時試圖向一個表進行操作時,就會造成會話被堵塞,等待其他會話提交或回滾,因而造成死鎖。

oracle中insert會鎖表嗎

本教程操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。

oracle中insert會鎖表嗎

oracle中insert會鎖表

當ORACLE執行insert等DML語句時,會首先自動在所要操作的表上申請一個TM鎖,當TM鎖獲得后,再自動申請TX類型的鎖。當兩個或多個會話在表的同一條記錄上執行DML語言時,第一個會話在記錄上加鎖,其它的會話處于等待狀態,一直到第一個會話提交后TX鎖釋放,其它的會話才可以加鎖。

考慮是因為兩個insert語句同時試圖向一個表中插入PK或unique值相同的數據,而造成其中會話被阻塞,等待其它會話提交或回滾,因而造成死鎖。

這種情況,只要其中任何一個session提交,另外一個就會報出ORA-00001:違反唯一性約束條件,死鎖終止;或者其中一個session回滾,另外一個即可正常執行。

在oracle中,鎖表的原因是當一個程序執行了對一個表的insert,并且還未commite時,另一個程序也對同一個表進行insert,則此時就會發生資源正忙的異常,也就是鎖表。

主要的鎖表原因有:

(1) A程序執行了對 tableA 的 insert ,并還未 commite時,B程序也對tableA 進行insert 則此時會發生資源正忙的異常 就是鎖表

(2)鎖表常發生于并發而不是并行(并行時,一個線程操作數據庫時,另一個線程是不能操作數據庫的,cpu 和i/o 分配原則)

減少鎖表的概率方法:

(1)減少insert 、update 、delete 語句執行 到 commite 之間的時間。具體點批量執行改為單個執行、優化sql自身的非執行速度

(2)如果異常對事物進行回滾

鎖表原因可能是修改了行數據,忘了提交,也會造成鎖表。

擴展知識:

鎖表建議先查原因再做決定。

1鎖表查詢的代碼有以下的形式:

select count(*) from v$locked_object; select * from v$locked_object;

2.查看哪個表被鎖

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;

3查看是哪個session引起的

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;

推薦教程:《Oracle視頻教程》

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久噜噜久久久精品66| 99久久人妻精品免费一区| 人妻少妇精品系列| 苍井空亚洲精品AA片在线播放| 亚洲精品国产精品乱码不卡√| 日韩欧美亚洲国产精品字幕久久久 | 最新国产精品精品视频| 国产观看精品一区二区三区| 美女免费精品高清毛片在线视| 2021免费日韩视频网| 日韩欧毛片免费视频 | 99aiav国产精品视频| 久久99精品免费视频| 亚洲av午夜成人片精品电影| 日韩精品系列产品| 日韩电影免费在线观看网站| 无码欧精品亚洲日韩一区夜夜嗨| 亚洲精品福利网泷泽萝拉| 久久精品中文无码资源站| 99精品视频99| 久久99精品久久久久久久不卡| 99久热re在线精品996热视频| 麻豆国产在线精品国偷产拍| 久久夜色精品国产噜噜噜亚洲AV | 99久久这里只精品国产免费| 无码国产精品一区二区免费式影视 | 国产精品尹人在线观看| 国产精品毛片一区二区| 久久e热在这里只有国产中文精品99| 国产精品国产高清国产av | 久久精品国产精品青草app| 免费日韩在线视频| 日韩字幕一中文在线综合| 日韩影片在线观看| 国产成人精品免费视频大全| 国产精品视频不卡| 成人区精品一区二区不卡| 亚洲中文久久精品无码ww16 | 含羞草国产亚洲精品岁国产精品| 九九热线精品视频16| 精品久久中文网址|