oracle行鎖怎么設(shè)置 oracle 表鎖 行鎖

ORACLE 鎖

ORACLE數(shù)據(jù)庫(kù)是現(xiàn)今數(shù)據(jù)庫(kù)領(lǐng)域應(yīng)用最廣泛的 同時(shí)它也是一個(gè)龐大的系統(tǒng) 全面了解它 玩轉(zhuǎn)它不但需要一定的理論知識(shí) 更需要開(kāi)發(fā)經(jīng)驗(yàn)與工程經(jīng)驗(yàn) 本人是ORACLE一愛(ài)好者 以下是本人對(duì)ORACLE鎖的一些經(jīng)驗(yàn) 希望能與大家共同分享 預(yù)備知識(shí) DDL(DATABASE DEFINITION LANGUAGE) 數(shù)據(jù)庫(kù)定義語(yǔ)言 如create table drop table DML(DATABASE MODIFICATION LANGUAGE):數(shù)據(jù)庫(kù)修改語(yǔ)言 如insert delete update 參考資料 Oracle Administrator s Guide Release Oracle Tuning Release ORACLE鎖具體分為以下幾類(lèi) 按用戶與系統(tǒng)劃分 可以分為自動(dòng)鎖與顯示鎖自動(dòng)鎖 當(dāng)進(jìn)行一項(xiàng)數(shù)據(jù)庫(kù)操作時(shí) 缺省情況下 系統(tǒng)自動(dòng)為此數(shù)據(jù)庫(kù)操作獲得所有有必要的鎖 顯示鎖 某些情況下 需要用戶顯示的鎖定數(shù)據(jù)庫(kù)操作要用到的數(shù)據(jù) 才能使數(shù)據(jù)庫(kù)操作執(zhí)行得更好 顯示鎖是用戶為數(shù)據(jù)庫(kù)對(duì)象設(shè)定的 按鎖級(jí)別劃分 可分為共享鎖與排它鎖共享鎖 共享鎖使一個(gè)事務(wù)對(duì)特定數(shù)據(jù)庫(kù)資源進(jìn)行共享訪問(wèn)——另一事務(wù)也可對(duì)此資源進(jìn)行訪問(wèn)或獲得相同共享鎖 共享鎖為事務(wù)提供高并發(fā)性 但如拙劣的事務(wù)設(shè)計(jì)+共享鎖容易造成死鎖或數(shù)據(jù)更新丟失 排它鎖 事務(wù)設(shè)置排它鎖后 該事務(wù)單獨(dú)獲得此資源 另一事務(wù)不能在此事務(wù)提交之前獲得相同對(duì)象的共享鎖或排它鎖 按操作劃分 可分為DML鎖 DDL鎖+DML鎖又可以分為 行鎖 表鎖 死鎖 行鎖 當(dāng)事務(wù)執(zhí)行數(shù)據(jù)庫(kù)插入 更新 刪除操作時(shí) 該事務(wù)自動(dòng)獲得操作表中操作行的排它鎖 表級(jí)鎖 當(dāng)事務(wù)獲得行鎖后 此事務(wù)也將自動(dòng)獲得該行的表鎖(共享鎖) 以防止其它事務(wù)進(jìn)行DDL語(yǔ)句影響記錄行的更新 事務(wù)也可以在進(jìn)行過(guò)程中獲得共享鎖或排它鎖 只有當(dāng)事務(wù)顯示使用LOCK TABLE語(yǔ)句顯示的定義一個(gè)排它鎖時(shí) 事務(wù)才會(huì)獲得表上的排它鎖 也可使用LOCK TABLE顯示的定義一個(gè)表級(jí)的共享鎖(LOCK TABLE具體用法請(qǐng)參考相關(guān)文檔) 死鎖 當(dāng)兩個(gè)事務(wù)需要一組有沖突的鎖 而不能將事務(wù)繼續(xù)下去的話 就出現(xiàn)死鎖 如事務(wù) 在表A行記錄# 中有一排它鎖 并等待事務(wù) 在表A中記錄# 中排它鎖的釋放 而事務(wù) 在表A記錄行# 中有一排它鎖 并等待事務(wù); 在表A中記錄# 中排它鎖的釋放 事務(wù) 與事務(wù) 彼此等待 因此就造成了死鎖 死鎖一般是因拙劣的事務(wù)設(shè)計(jì)而產(chǎn)生 死鎖只能使用SQL下:alter system kill session sid serial# 或者使用相關(guān)操作系統(tǒng)kill進(jìn)程的命令 如UNIX下kill sid 或者使用其它工具殺掉死鎖進(jìn)程 +DDL鎖又可以分為 排它DDL鎖 共享DDL鎖 分析鎖 排它DDL鎖 創(chuàng)建 修改 刪除一個(gè)數(shù)據(jù)庫(kù)對(duì)象的DDL語(yǔ)句獲得操作對(duì)象的 排它鎖 如使用alter table語(yǔ)句時(shí) 為了維護(hù)數(shù)據(jù)的完成性 一致性 合法性 該事務(wù)獲得一排它DDL鎖 共享DDL鎖 需在數(shù)據(jù)庫(kù)對(duì)象之間建立相互依賴(lài)關(guān)系的DDL語(yǔ)句通常需共享獲得DDL鎖 如創(chuàng)建一個(gè)包 該包中的過(guò)程與函數(shù)引用了不同的數(shù)據(jù)庫(kù)表 當(dāng)編譯此包時(shí) 該事務(wù)就獲得了引用表的共享DDL鎖 分析鎖 ORACLE使用共享池存儲(chǔ)分析與優(yōu)化過(guò)的SQL語(yǔ)句及PL/SQL程序 使運(yùn)行相同語(yǔ)句的應(yīng)用速度更快 一個(gè)在共享池中緩存的對(duì)象獲得它所引用數(shù)據(jù)庫(kù)對(duì)象的分析鎖 分析鎖是一種獨(dú)特的DDL鎖類(lèi)型 ORACLE使用它追蹤共享池對(duì)象及它所引用數(shù)據(jù)庫(kù)對(duì)象之間的依賴(lài)關(guān)系 當(dāng)一個(gè)事務(wù)修改或刪除了共享池持有分析鎖的數(shù)據(jù)庫(kù)對(duì)象時(shí) ORACLE使共享池中的對(duì)象作廢 下次在引用這條SQL/PLSQL語(yǔ)句時(shí) ORACLE重新分析編譯此語(yǔ)句 內(nèi)部閂鎖內(nèi)部閂鎖 這是ORACLE中的一種特殊鎖 用于順序訪問(wèn)內(nèi)部系統(tǒng)結(jié)構(gòu) 當(dāng)事務(wù)需向緩沖區(qū)寫(xiě)入信息時(shí) 為了使用此塊內(nèi)存區(qū)域 ORACLE首先必須取得這塊內(nèi)存區(qū)域的閂鎖 才能向此塊內(nèi)存寫(xiě)入信息 以上是 本人對(duì)ORACLE鎖的一些總結(jié) 不足之處還望大家海涵 同時(shí)也希望大家多提出自己對(duì)ORACLE鎖的一些看法 lishixinzhi/Article/program/Oracle/201311/16769

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括察哈爾右翼前網(wǎng)站建設(shè)、察哈爾右翼前網(wǎng)站制作、察哈爾右翼前網(wǎng)頁(yè)制作以及察哈爾右翼前網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,察哈爾右翼前網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到察哈爾右翼前省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

oracle數(shù)據(jù)庫(kù)怎么鎖表

oracle數(shù)據(jù)庫(kù)分行級(jí)鎖和表級(jí)鎖。用select * from table-name for update完成行級(jí)鎖。用delete或update完成表級(jí)鎖。你鎖定的資源 別人會(huì)等待你的提交語(yǔ)句或回退語(yǔ)句完成以后再繼續(xù)進(jìn)行。

oracle如何實(shí)現(xiàn)行級(jí)鎖

如果當(dāng)前有用戶在對(duì)某行數(shù)據(jù)進(jìn)行修改登操作,oracle會(huì)在這行數(shù)據(jù)上添加行級(jí)鎖,期間,所有用戶對(duì)該行數(shù)據(jù)只能查詢(xún),不可修改,如果比如說(shuō)執(zhí)行update操作,需等待該修改操作事務(wù)提交或者回滾之后,才行。

分享文章:oracle行鎖怎么設(shè)置 oracle 表鎖 行鎖
路徑分享:http://muchs.cn/article16/hgsgdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、云服務(wù)器外貿(mào)建站、網(wǎng)站營(yíng)銷(xiāo)微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)