



全文預覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Oracle數(shù)據(jù)庫中的鎖機制研究本文通過對Oracle數(shù)據(jù)庫鎖機制的研究,首先介紹了Oracle數(shù)據(jù)庫鎖的種類,并描述了實際應用中遇到的與鎖相關(guān)的異常情況,特別對經(jīng)常遇到的由于等待鎖而使事務(wù)被掛起的問題進行了定位及解決,并對死鎖這一比較嚴重的現(xiàn)象,提出了相應的解決方法和具體的分析過程。數(shù)據(jù)庫是一個多用戶使用的共享資源。當多個用戶并發(fā)地存取數(shù)據(jù)時,在數(shù)據(jù)庫中就會產(chǎn)生多個事務(wù)同時存取同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就可能會讀取和存儲不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。加鎖是實現(xiàn)數(shù)據(jù)庫并發(fā)控制的一個非常重要的技術(shù)。當事務(wù)在對某個數(shù)據(jù)對象進行操作前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務(wù)就對該數(shù)據(jù)對象有了一定的控制,在該事務(wù)釋放鎖之前,其他的事務(wù)不能對此數(shù)據(jù)對象進行更新操作。在數(shù)據(jù)庫中有兩種基本的鎖類型:排它鎖(Exclusive Locks,即X鎖)和共享鎖(Share Locks,即S鎖)。當數(shù)據(jù)對象被加上排它鎖時,其他的事務(wù)不能對它讀取和修改。加了共享鎖的數(shù)據(jù)對象可以被其他事務(wù)讀取,但不能修改。數(shù)據(jù)庫利用這兩種基本的鎖類型來對數(shù)據(jù)庫的事務(wù)進行并發(fā)控制。在實際應用中經(jīng)常會遇到的與鎖相關(guān)的異常情況,如由于等待鎖事務(wù)被掛起、死鎖等現(xiàn)象,如果不能及時地解決,將嚴重影響應用的正常執(zhí)行,而目前對于該類問題的解決缺乏系統(tǒng)化研究和指導,本文在總結(jié)實際經(jīng)驗的基礎(chǔ)上,提出了相應的解決方法和具體的分析過程。Oracle數(shù)據(jù)庫的鎖類型根據(jù)保護的對象不同,Oracle數(shù)據(jù)庫鎖可以分為以下幾大類:DML鎖(data locks,數(shù)據(jù)鎖),用于保護數(shù)據(jù)的完整性;DDL鎖(dictionary locks,字典鎖),用于保護數(shù)據(jù)庫對象的結(jié)構(gòu),如表、索引等的結(jié)構(gòu)定義;內(nèi)部鎖和閂(internal locks and latches),保護數(shù)據(jù)庫的內(nèi)部結(jié)構(gòu)。DML鎖的目的在于保證并發(fā)情況下的數(shù)據(jù)完整性,本文主要討論DML鎖。在Oracle數(shù)據(jù)庫中,DML鎖主要包括TM鎖和TX鎖,其中TM鎖稱為表級鎖,TX鎖稱為事務(wù)鎖或行級鎖。當Oracle執(zhí)行DML語句時,系統(tǒng)自動在所要操作的表上申請TM類型的鎖。當TM鎖獲得后,系統(tǒng)再自動申請TX類型的鎖,并將實際鎖定的數(shù)據(jù)行的鎖標志位進行置位。這樣在事務(wù)加鎖前檢查TX鎖相容性時就不用再逐行檢查鎖標志,而只需檢查TM鎖模式的相容性即可,大大提高了系統(tǒng)的效率。TM鎖包括了SS、SX、S、X等多種模式,在數(shù)據(jù)庫中用06來表示。不同的SQL操作產(chǎn)生不同類型的TM鎖。如表1所示。在數(shù)據(jù)行上只有X鎖(排他鎖)。在 Oracle數(shù)據(jù)庫中,當一個事務(wù)首次發(fā)起一個DML語句時就獲得一個TX鎖,該鎖保持到事務(wù)被提交或回滾。當兩個或多個會話在表的同一條記錄上執(zhí)行DML語句時,第一個會話在該條記錄上加鎖,其他的會話處于等待狀態(tài)。當?shù)谝粋€會話提交后,TX鎖被釋放,其他會話才可以加鎖。當Oracle數(shù)據(jù)庫發(fā)生TX鎖等待時,如果不及時處理常常會引起Oracle數(shù)據(jù)庫掛起,或?qū)е滤梨i的發(fā)生,產(chǎn)生ORA-60的錯誤。這些現(xiàn)象都會對實際應用產(chǎn)生極大的危害,如長時間未響應,大量事務(wù)失敗等。TX鎖等待的分析在介紹了有關(guān)地Oracle數(shù)據(jù)庫鎖的種類后,下面討論如何有效地監(jiān)控和解決鎖等待現(xiàn)象,及在產(chǎn)生死鎖時如何定位死鎖的原因。監(jiān)控鎖的相關(guān)視圖 數(shù)據(jù)字典是Oracle數(shù)據(jù)庫的重要組成部分,用戶可以通過查詢數(shù)據(jù)字典視圖來獲得數(shù)據(jù)庫的信息。和鎖相關(guān)的數(shù)據(jù)字典視圖如表2所示。TX鎖等待的監(jiān)控和解決在日常工作中,如果發(fā)現(xiàn)在執(zhí)行某條SQL時數(shù)據(jù)庫長時間沒有響應,很可能是產(chǎn)生了TX鎖等待的現(xiàn)象。為解決這個問題,首先應該找出持鎖的事務(wù),然后再進行相關(guān)的處理,如提交事務(wù)或強行中斷事務(wù)。死鎖的監(jiān)控和解決在數(shù)據(jù)庫中,當兩個或多個會話請求同一個資源時會產(chǎn)生死鎖的現(xiàn)象。死鎖的常見類型是行級鎖死鎖和頁級鎖死鎖,Oracle數(shù)據(jù)庫中一般使用行級鎖。下面主要討論行級鎖的死鎖現(xiàn)象。當Oracle檢測到死鎖產(chǎn)生時,中斷并回滾死鎖相關(guān)語句的執(zhí)行,報ORA-00060的錯誤并記錄在數(shù)據(jù)庫的日志文件alertSID.log中。同時在user_dump_dest下產(chǎn)生了一個跟蹤文件,詳細描述死鎖的相關(guān)信息。在日常工作中,如果發(fā)現(xiàn)在日志文件中記錄了ora-00060的錯誤信息,則表明產(chǎn)生了死鎖。這時需要找到對應的跟蹤文件,根據(jù)跟蹤文件的信息定位產(chǎn)生的原因。如果查詢結(jié)果表明,死鎖是由于bitmap索引引起的,將IND_T_PRODUCT_HIS_STATE索引改為normal索引后,即可解決死鎖的問題。表1 Oracle的TM鎖類型鎖模式鎖描述解釋SQL操作0none1NULL空Select2SS(Row-S)行級共享鎖,其他對象只能查詢這些數(shù)據(jù)行Select for update、Lock for update、Lock row share3SX(Row-X)行級排它鎖,在提交前不允許做DML操作Insert、Update、Delete、Lock row share4S(Share)共享鎖Create index、Lock share5SSX(S/Row-X)共享行級排它鎖Lock share row exclusive6X(Exclusive)排它鎖Alter table、Drop able、Drop index、Truncate table 、Lock exclusive表2 數(shù)據(jù)字典視圖說明視圖名描述主要字段說明v$session查詢會話的信息和鎖的信息。sid,serial#:表示會話信息。program:表示會話的應用程序信息。row_wait_obj#:表示等待的對象。和dba_objects中的object_id相對應。v$session_wait查詢等待的會話信息。sid:表示持有鎖的會話信息。Seconds_in_wait:表示等待持續(xù)的時間信息Event:表示會話等待的事件。v$lock列出系統(tǒng)中的所有的鎖。Sid:表示持有鎖的會話信息。Type:表示鎖的類型。值包括TM和TX等。ID1:表示鎖的對象標識。lmode,request:表示會話等待的鎖模式的信息。用數(shù)字06表示,和表1相對應。dba_locks對v$lock的格式化視圖。Session_id:和v$lock中的Sid對應。Lock_type:和v$lock中的type對應。Lock_ID1: 和v$lock中的ID1對應。Mode_held,mode_requested:和v$lock中的lmode,request相對應。v$locked_object只包含DML的鎖信息
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 升學合同協(xié)議書范本圖片
- 項目巡查方案模板(3篇)
- 律師派駐公司方案(3篇)
- 10萬千瓦風電項目規(guī)劃設(shè)計方案(參考)
- DB3415-T 83-2024 電動汽車室外充電樁防雷規(guī)范
- 邏輯推理的情境應用分析試題及答案
- 計算機四級嵌入式領(lǐng)域的研究試題及答案
- Access信息管理技巧試題及答案
- 全面解析2025計算機二級ACCESS考試試題及答案
- 球場護欄安裝合同協(xié)議書
- 中國風水滴石穿成語故事模板
- 福建省廈門市集美區(qū)2023屆小升初語文試卷(含解析)
- 《陸上風電場工程設(shè)計概算編制規(guī)定及費用標準》(NB-T 31011-2019)
- (高清版)TDT 1001-2012 地籍調(diào)查規(guī)程
- 2024屆陜西省西安市碑林區(qū)鐵一中學數(shù)學七年級第二學期期末考試試題含解析
- 直腸損傷查房
- 腦卒中后遺癥康復護理查房課件
- 無人機駕駛員培訓計劃及大綱
- 圓錐破碎機技術(shù)協(xié)議
- 年產(chǎn)4億片阿奇霉素片的精烘包及車間設(shè)計
- 模具工裝檢具加工申請單
評論
0/150
提交評論