ORACLE數(shù)據(jù)庫是現(xiàn)今數(shù)據(jù)庫領域應用最廣泛的 同時它也是一個龐大的系統(tǒng) 全面了解它 玩轉(zhuǎn)它不但需要一定的理論知識 更需要開發(fā)經(jīng)驗與工程經(jīng)驗 本人是ORACLE一愛好者 以下是本人對ORACLE鎖的一些經(jīng)驗 希望能與大家共同分享 預備知識 DDL(DATABASE DEFINITION LANGUAGE) 數(shù)據(jù)庫定義語言 如create table drop table DML(DATABASE MODIFICATION LANGUAGE):數(shù)據(jù)庫修改語言 如insert delete update 參考資料 Oracle Administrator s Guide Release Oracle Tuning Release ORACLE鎖具體分為以下幾類 按用戶與系統(tǒng)劃分 可以分為自動鎖與顯示鎖自動鎖 當進行一項數(shù)據(jù)庫操作時 缺省情況下 系統(tǒng)自動為此數(shù)據(jù)庫操作獲得所有有必要的鎖 顯示鎖 某些情況下 需要用戶顯示的鎖定數(shù)據(jù)庫操作要用到的數(shù)據(jù) 才能使數(shù)據(jù)庫操作執(zhí)行得更好 顯示鎖是用戶為數(shù)據(jù)庫對象設定的 按鎖級別劃分 可分為共享鎖與排它鎖共享鎖 共享鎖使一個事務對特定數(shù)據(jù)庫資源進行共享訪問——另一事務也可對此資源進行訪問或獲得相同共享鎖 共享鎖為事務提供高并發(fā)性 但如拙劣的事務設計+共享鎖容易造成死鎖或數(shù)據(jù)更新丟失 排它鎖 事務設置排它鎖后 該事務單獨獲得此資源 另一事務不能在此事務提交之前獲得相同對象的共享鎖或排它鎖 按操作劃分 可分為DML鎖 DDL鎖+DML鎖又可以分為 行鎖 表鎖 死鎖 行鎖 當事務執(zhí)行數(shù)據(jù)庫插入 更新 刪除操作時 該事務自動獲得操作表中操作行的排它鎖 表級鎖 當事務獲得行鎖后 此事務也將自動獲得該行的表鎖(共享鎖) 以防止其它事務進行DDL語句影響記錄行的更新 事務也可以在進行過程中獲得共享鎖或排它鎖 只有當事務顯示使用LOCK TABLE語句顯示的定義一個排它鎖時 事務才會獲得表上的排它鎖 也可使用LOCK TABLE顯示的定義一個表級的共享鎖(LOCK TABLE具體用法請參考相關文檔) 死鎖 當兩個事務需要一組有沖突的鎖 而不能將事務繼續(xù)下去的話 就出現(xiàn)死鎖 如事務 在表A行記錄# 中有一排它鎖 并等待事務 在表A中記錄# 中排它鎖的釋放 而事務 在表A記錄行# 中有一排它鎖 并等待事務; 在表A中記錄# 中排它鎖的釋放 事務 與事務 彼此等待 因此就造成了死鎖 死鎖一般是因拙劣的事務設計而產(chǎn)生 死鎖只能使用SQL下:alter system kill session sid serial# 或者使用相關操作系統(tǒng)kill進程的命令 如UNIX下kill sid 或者使用其它工具殺掉死鎖進程 +DDL鎖又可以分為 排它DDL鎖 共享DDL鎖 分析鎖 排它DDL鎖 創(chuàng)建 修改 刪除一個數(shù)據(jù)庫對象的DDL語句獲得操作對象的 排它鎖 如使用alter table語句時 為了維護數(shù)據(jù)的完成性 一致性 合法性 該事務獲得一排它DDL鎖 共享DDL鎖 需在數(shù)據(jù)庫對象之間建立相互依賴關系的DDL語句通常需共享獲得DDL鎖 如創(chuàng)建一個包 該包中的過程與函數(shù)引用了不同的數(shù)據(jù)庫表 當編譯此包時 該事務就獲得了引用表的共享DDL鎖 分析鎖 ORACLE使用共享池存儲分析與優(yōu)化過的SQL語句及PL/SQL程序 使運行相同語句的應用速度更快 一個在共享池中緩存的對象獲得它所引用數(shù)據(jù)庫對象的分析鎖 分析鎖是一種獨特的DDL鎖類型 ORACLE使用它追蹤共享池對象及它所引用數(shù)據(jù)庫對象之間的依賴關系 當一個事務修改或刪除了共享池持有分析鎖的數(shù)據(jù)庫對象時 ORACLE使共享池中的對象作廢 下次在引用這條SQL/PLSQL語句時 ORACLE重新分析編譯此語句 內(nèi)部閂鎖內(nèi)部閂鎖 這是ORACLE中的一種特殊鎖 用于順序訪問內(nèi)部系統(tǒng)結構 當事務需向緩沖區(qū)寫入信息時 為了使用此塊內(nèi)存區(qū)域 ORACLE首先必須取得這塊內(nèi)存區(qū)域的閂鎖 才能向此塊內(nèi)存寫入信息 以上是 本人對ORACLE鎖的一些總結 不足之處還望大家海涵 同時也希望大家多提出自己對ORACLE鎖的一些看法 lishixinzhi/Article/program/Oracle/201311/16769
成都創(chuàng)新互聯(lián)服務項目包括察哈爾右翼前網(wǎng)站建設、察哈爾右翼前網(wǎng)站制作、察哈爾右翼前網(wǎng)頁制作以及察哈爾右翼前網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,察哈爾右翼前網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到察哈爾右翼前省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
oracle數(shù)據(jù)庫分行級鎖和表級鎖。用select * from table-name for update完成行級鎖。用delete或update完成表級鎖。你鎖定的資源 別人會等待你的提交語句或回退語句完成以后再繼續(xù)進行。
如果當前有用戶在對某行數(shù)據(jù)進行修改登操作,oracle會在這行數(shù)據(jù)上添加行級鎖,期間,所有用戶對該行數(shù)據(jù)只能查詢,不可修改,如果比如說執(zhí)行update操作,需等待該修改操作事務提交或者回滾之后,才行。
分享文章:oracle行鎖怎么設置 oracle 表鎖 行鎖
路徑分享:http://m.kartarina.com/article16/hgsgdg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、小程序開發(fā)、云服務器、外貿(mào)建站、網(wǎng)站營銷、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)