熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORACLE 鎖

2022-06-13   來源: Oracle 

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

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.