探索系列_神人steve adams之著oracle8i interal service(一)

wisdomone1發表於2010-04-17
   好久就耳聞steve adams的大名,它的拓疆之作oracle8i internal service在oracle行業,眾人皆曉。自己也學習oracle這麼久了,萌發了學習一點oracle底層的東西,
用它開啟自己對於oracle聖殿之門,再合適不過。本系列不再逐字細譯,僅理出一些有用的要點出來,提升能力,也希望可以對大家有所用處.


oracle核心層

插述oracle核心層一些主要的層
 
層的名稱                      簡稱      譯文
oracle call interface         oci       oracle呼叫介面
user program interface        upi       使用者程式介面
----------------------------------------------------&gtnet 8
oracle program interface      opi       oracle程式介面
compilation layer             kk        編譯層
execution layer               kx        執行層
destributed execution layer   k2        分散式執行層
network program interface     npi       網路程式介面
security layer                kz        安全層
query layer                   kq        查詢層
recursive program interface   rpi       遞迴程式介面
access layer                  ka        訪問層
data layer                    kd        資料層
transaction layer             kt        事務層
cache layer                   kc        快取層
services layer                ks        服務層
lock management layer         kj        鎖管理層
generic layer                 kg        一般(通用)層
operating system dependencies s         作業系統依賴層
---注:簡稱以k開頭,表示kernel,簡稱第二個字母表示層的名稱第一個英文字母(不全是喲)
  
   大師簡約進行了oracle核心層的功能概述:
oracle核心由許多層組成;每層依賴於它下面層的一些服務,應用可以直接呼叫每個層,以任何順序。但是,
控制並不是傳遞給堆疊(stack),除了呼叫返回(call)的情形

   與以上規則不相符的一個例子就是:資料層和事務層。有時需要執行,對於索引塊分裂或者區空間分配的遞迴事務,
遞迴呼叫也會發生在觸發器執行或儲存程式單元中sql語句的執行。
但是,除了與核心層的互動(反饋),或者在相同會話,也可能是同一個呼叫的上下文環境之中的編譯層,
一般皆是構建獨立的上下文環境,會為每個頂層配置stack(堆)

    每個層都有一個縮寫(請參考我上面的列表)。比如,kc是kernel cache layer縮寫。同理,組成每個層的模組也有簡稱,
比如,kcr是cache layer層的重作管理模組.這些模組名字的簡稱一般以它們資料結構和函式呼叫的字首表示。
比如,kcrfal是重作分配閂.大家理解了這些,以前神秘莫測的oracle命名規則這下就容易理解多了吧。

    oci
      它是客戶端程式與oracle互動最低階的一種工具或介面,oci的文件相當完備,透過它可以實現oracle大多功能,包括:
物件導航,複雜事務以及會話控制之類的高階特性。想使用這些高階特性的應用必須直接使用oci.


    upi
    使用者程式介面
       它是oci的基礎。它具備一些oci不曾包含的工具,一些oracle工具直接呼叫upi介面。預編譯程式也會直接呼叫upi,
但是一種未經公開的,替代oci介面,名為sqllib庫的,卻可以間接呼叫.
  
   
   opi  oracle程式介面
     它是客戶端呼叫堆疊的最低階的層(最低層),卻是伺服器端堆疊的最高層.在大多數配置中,net8會把upi和opi之間的空隙填補起來.但是,在單一任務執行之中,是沒有空隙的,
upi呼叫會直接對應opi呼叫


   kk 編譯層 compilation layer
     oracle核心專屬的最高層,它主要負責sql語句和pl/sql塊的解析及最佳化.


   kx  執行層
     處理sql及pl/sql的繫結和執行.也負責對執行觸發器時所產生的遞迴呼叫的執行,及pl/sql語句塊的sql執行

   k2  分散式處理層
     建立分散式事務對應的事務分支,同時處理2pc的管理
  
   npi  網路程式介面
     當sql中引用了遠端物件,它會發放與sql之上解壓物件元件給遠端資料庫例項並且接受處理過的資料

   kz 安全層
     編譯層和執行層會呼叫它,驗證所需物件和系統物件是否合理

   kq  查詢層
     為更高的層提供記錄,特別用於快取資料字典的記錄,安全和編譯層會用到它

   rpi  遞迴程式介面
      生成資料字典的字典快取。row cache(行快取)遞迴sql語句在獨立的呼叫環境中執行,而不在編譯層中被解析和最佳化

   ka  訪問層
      管理如何訪問資料庫的段。它是oracle核心中間的第一層


   kd  資料層
      負責管理和解析資料庫中,比如:表,clusters,索引之類的段所對應的資料塊

  
   kt  事務層
      負責分配回滾段的事務如何分配,資料塊中itl的改變,產生的撤消對於回滾段的相應變更,讀一致性,事務控制工具(比如儲存點)。也負責空間分配,包括這樣兩個層次:段級空閒空間分配和表空間區分配


   kc  快取層
       管理資料庫緩衝快取。它使用作業系統提供一些具備資料檔案i/o功能的工具,可以併發訪問cache buffers,也可以
       基於ops透過pcm(並行快取管理)例項鎖工具訪問ops。其它一些功能,比如:控制如何產生redo,重作資訊如何寫入
       log file.也快取控制檔案的資訊


   ks  服務層
       它為所有更高的層提供低階的服務,比如:錯誤處理,除錯,診斷工具,還有引數控制及記憶體服務。特別強調的是,
       它負責管理像latch,等待事件,排隊鎖及例項鎖的並行控制.也負責後臺資料結構和使用者程式及會話的管理工作,還有一些狀態物件,ipc,系統統計資訊.



   kj  鎖管理層
        在ops的多個例項中,它負責管理用於同步和通訊的鎖



   kg  通用層
        管理比如連結列表,這些通用的資料結構,主要用於更高層.最重要(我們最感趣的就是),library cache和用於
        共享池及會話記憶體的記憶體分配的堆疊



   s  作業系統相關的層
        oracle利用os的i/o功能(工具),程式排程,記憶體管理,以及其它一些操作。因為這些操作的細節皆與os相關,故
        相關實現細節分割成一個獨立的層
     

  
  

  


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-660018/,如需轉載,請註明出處,否則將追究法律責任。

相關文章