



全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Oracle數(shù)據(jù)庫中的鎖機制研究本文通過對Oracle數(shù)據(jù)庫鎖機制的研究,首先介紹了Oracle數(shù)據(jù)庫鎖的種類,并描述了實際應(yīng)用中遇到的與鎖相關(guān)的異常情況,特別對經(jīng)常遇到的由于等待鎖而使事務(wù)被掛起的問題進行了定位及解決,并對死鎖這一比較嚴(yán)重的現(xiàn)象,提出了相應(yīng)的解決方法和具體的分析過程。數(shù)據(jù)庫是一個多用戶使用的共享資源。當(dāng)多個用戶并發(fā)地存取數(shù)據(jù)時,在數(shù)據(jù)庫中就會產(chǎn)生多個事務(wù)同時存取同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就可能會讀取和存儲不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。加鎖是實現(xiàn)數(shù)據(jù)庫并發(fā)控制的一個非常重要的技術(shù)。當(dāng)事務(wù)在對某個數(shù)據(jù)對象進行操作前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務(wù)就對該數(shù)據(jù)對象有了一定的控制,在該事務(wù)釋放鎖之前,其他的事務(wù)不能對此數(shù)據(jù)對象進行更新操作。在數(shù)據(jù)庫中有兩種基本的鎖類型:排它鎖(Exclusive Locks,即X鎖)和共享鎖(Share Locks,即S鎖)。當(dāng)數(shù)據(jù)對象被加上排它鎖時,其他的事務(wù)不能對它讀取和修改。加了共享鎖的數(shù)據(jù)對象可以被其他事務(wù)讀取,但不能修改。數(shù)據(jù)庫利用這兩種基本的鎖類型來對數(shù)據(jù)庫的事務(wù)進行并發(fā)控制。在實際應(yīng)用中經(jīng)常會遇到的與鎖相關(guān)的異常情況,如由于等待鎖事務(wù)被掛起、死鎖等現(xiàn)象,如果不能及時地解決,將嚴(yán)重影響應(yīng)用的正常執(zhí)行,而目前對于該類問題的解決缺乏系統(tǒng)化研究和指導(dǎo),本文在總結(jié)實際經(jīng)驗的基礎(chǔ)上,提出了相應(yīng)的解決方法和具體的分析過程。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ù)鎖或行級鎖。當(dāng)Oracle執(zhí)行DML語句時,系統(tǒng)自動在所要操作的表上申請TM類型的鎖。當(dāng)TM鎖獲得后,系統(tǒng)再自動申請TX類型的鎖,并將實際鎖定的數(shù)據(jù)行的鎖標(biāo)志位進行置位。這樣在事務(wù)加鎖前檢查TX鎖相容性時就不用再逐行檢查鎖標(biāo)志,而只需檢查TM鎖模式的相容性即可,大大提高了系統(tǒng)的效率。TM鎖包括了SS、SX、S、X等多種模式,在數(shù)據(jù)庫中用06來表示。不同的SQL操作產(chǎn)生不同類型的TM鎖。如表1所示。在數(shù)據(jù)行上只有X鎖(排他鎖)。在 Oracle數(shù)據(jù)庫中,當(dāng)一個事務(wù)首次發(fā)起一個DML語句時就獲得一個TX鎖,該鎖保持到事務(wù)被提交或回滾。當(dāng)兩個或多個會話在表的同一條記錄上執(zhí)行DML語句時,第一個會話在該條記錄上加鎖,其他的會話處于等待狀態(tài)。當(dāng)?shù)谝粋€會話提交后,TX鎖被釋放,其他會話才可以加鎖。當(dāng)Oracle數(shù)據(jù)庫發(fā)生TX鎖等待時,如果不及時處理常常會引起Oracle數(shù)據(jù)庫掛起,或?qū)е滤梨i的發(fā)生,產(chǎn)生ORA-60的錯誤。這些現(xiàn)象都會對實際應(yīng)用產(chǎn)生極大的危害,如長時間未響應(yīng),大量事務(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ù)庫長時間沒有響應(yīng),很可能是產(chǎn)生了TX鎖等待的現(xiàn)象。為解決這個問題,首先應(yīng)該找出持鎖的事務(wù),然后再進行相關(guān)的處理,如提交事務(wù)或強行中斷事務(wù)。死鎖的監(jiān)控和解決在數(shù)據(jù)庫中,當(dāng)兩個或多個會話請求同一個資源時會產(chǎn)生死鎖的現(xiàn)象。死鎖的常見類型是行級鎖死鎖和頁級鎖死鎖,Oracle數(shù)據(jù)庫中一般使用行級鎖。下面主要討論行級鎖的死鎖現(xiàn)象。當(dāng)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)生了死鎖。這時需要找到對應(yīng)的跟蹤文件,根據(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:表示會話的應(yīng)用程序信息。row_wait_obj#:表示等待的對象。和dba_objects中的object_id相對應(yīng)。v$session_wait查詢等待的會話信息。sid:表示持有鎖的會話信息。Seconds_in_wait:表示等待持續(xù)的時間信息Event:表示會話等待的事件。v$lock列出系統(tǒng)中的所有的鎖。Sid:表示持有鎖的會話信息。Type:表示鎖的類型。值包括TM和TX等。ID1:表示鎖的對象標(biāo)識。lmode,request:表示會話等待的鎖模式的信息。用數(shù)字06表示,和表1相對應(yīng)。dba_locks對v$lock的格式化視圖。Session_id:和v$lock中的Sid對應(yīng)。Lock_type:和v$lock中的type對應(yīng)。Lock_ID1: 和v$lock中的ID1對應(yīng)。Mode_held,mode_requested:和v$lock中的lmode,request相對應(yīng)。v$locked_object只包含DML的鎖信息
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)濟師考試重點回顧試題及答案
- 畢設(shè)繪本設(shè)計答辯
- 2025屆齊齊哈爾市富??h三年級數(shù)學(xué)第一學(xué)期期末綜合測試試題含解析
- 行政管理經(jīng)濟法實務(wù)試題及答案
- 確保市政工程考試復(fù)習(xí)高效的試題及答案
- 行政管理中的公共關(guān)系案例分析試題及答案
- 經(jīng)濟法考試的知識點概述試題及答案
- 水利水電工程哲學(xué)思考與實踐試題及答案
- 電子信息行業(yè)個人工資證明(8篇)
- 行政管理與公共關(guān)系的實踐模式題及答案
- (二模)2024~2025學(xué)年度蘇錫常鎮(zhèn)四市高三教學(xué)情況調(diào)研(二)物理試卷(含答案)
- 甘肅開放大學(xué)2024年《信息技術(shù)與信息管理》形考作業(yè)1-4答案
- 2024年大學(xué)生電子版三方協(xié)議書模板
- ISO9001-ISO14001-ISO45001三體系內(nèi)部審核檢查表
- 《陸上風(fēng)電場工程設(shè)計概算編制規(guī)定及費用標(biāo)準(zhǔn)》(NB-T 31011-2019)
- 天文學(xué)導(dǎo)論知到章節(jié)答案智慧樹2023年中國科學(xué)技術(shù)大學(xué)
- 文件傳閱記錄表
- 天津市建設(shè)工程造價咨詢服務(wù)項目和價格標(biāo)準(zhǔn)
- 基于單片機的飲水機溫度控制系統(tǒng)的設(shè)計
- 《巨人的花園》教學(xué)課件
- 《中國血栓性疾病防治指南》(完整版)
評論
0/150
提交評論