天天看點

oracle internal services閱讀總結1

1、oracle核心層級

oracle核心由多層組成,主要層級在圖1.1中展示。每一層依賴于它下一層的服務,但有時候也會以任何順序直接調用任何一層。然而,控制層從來不會向上傳遞堆棧,除了傳回調用結果的時候。

下面先看oracle核心各層圖:

the oracle call interface(OCI): oracle調用接口是用戶端程式連接配接oracle的最底層。這個接口有明文規定并且提供大部分oracle功能的通路,包括像對象遷移,複雜事務和會話的控制。進階請求的應用可直接調用OCI,這些在oracle其他開發工具中是不提供的。

the user program interface(UPI):OCI是基于使用者程式接口(upi)的,有些UPI功能還不能通過OCI使用。一些oracle的工具實際上可以直接的調用UPI接口。預編譯程式也可以調用UPI,但是間接的調SQLLIB 庫。預編譯程式時未公開的OCI的替代品。

the oracle program interface(OPI):使用者程式接口(UPI)是用戶端調用堆棧的最底層,oracle程式接口(OPI)是伺服器段調用堆棧的最高層。在大多數配置中,使用NET8連接配接 UPI 和 OPI 。然而,在單任務可執行檔案中,是沒有間隙的。UPI的調用對應着直接調用OPI。

the comilation layer(KK):這是oracle核心的最高層。這一層負責解析和優化SQL語句,編譯PL/SQL程式塊。

execution layer(KX):這一層負責處理綁定變量和執行SQL,PL/SQL。。。同時負責觸發器,PL/SQL執行時的遞歸調用。

distributed execution layer(K2):分布式執行層為分布式事務建立了事務分支,并且處理和管理兩段式送出。

the network program interface(NPI):遠端對象被SQL語句引用,網絡程式接口(NPI)發送已經分解的語句元件到遠端資料庫執行個體并且接受資料。

the security layer(KZ):這層被編譯和執行層調用來 确認請求對象和系統權限。

the query layer(KQ) :這一層為上層提供資料行,特殊情況下,這個查詢層負責緩存資料字典中的資料行。為安全層(security layer) 和 編譯層(compilation layers)是用。

the recursive program interface(RPI):遞歸程式接口被用來填充緩存從資料字典讀取的資料,行緩沖區遞歸SQL語句 被以封開調用上下文的形式執行,但是并不在編譯層(compilation layer)執行。

the access layer(KA):通路層負責通路資料段,這是核心下半部分的第一層。

the data layer(KD):這一層負責管理和解釋在資料庫段裡的資料塊,就像表,叢集,索引等。

the transaction layer(KT):這一層負責配置設定事務的復原段,資料塊中相關事務清單的改變,undo資料生成的復原段資料塊的改變,事務控制特性 如 :儲存點 和 一緻性讀。。這個事務層(KT)也負責空間管理,包括段空閑清單 和 表空間區配置設定的管理。

the cache layer(KC):緩存層管理資料庫的緩沖區高速緩存。它利用作業系統獨立的功能實作到資料檔案的I/O讀寫。為本地通路緩沖區高速緩存提供并發控制功能,提供oracle并行伺服器的并行緩存管理的執行個體鎖功能,其他主要負責控制日志寫入日志緩存區,日志寫入日志檔案。緩存層同樣緩存控制檔案資訊。

the services layer(KS):服務層提供最低層次的服務,被用于高層次。像是錯誤捕獲,debug,跟蹤,參數控制,記憶體服務等等。特别的,服務層負責一般的并發控制,像latch,等待事件,隊列鎖和執行個體鎖。這服務層也負責管理背景和使用者程序會話,對象狀态,内部程序資訊,系統統計資訊 的 資料結構。

the lock management layer(KJ):這一層負責鎖實作的同步,并行服務資料庫之間的交流。

the generic layer(KG):普通層提供了更高層次(像連結清單)  的 普通資料結構。更有興趣的是 庫緩存和 共享池(或會話記憶體)的記憶體配置設定堆。

the operating system dependencies(S):oracle使用作業系統的功能來實作I/O。程序排程,記憶體管理和其他的操作。實作的細節有作業系統決定。是以這些細節被分離為一個單獨的層。