探索系列_神人steve adams之著oracle8i interal service(一)
好久就耳聞steve adams的大名,它的拓疆之作oracle8i internal service在oracle行業,眾人皆曉。自己也學習oracle這麼久了,萌發了學習一點oracle底層的東西,
用它開啟自己對於oracle聖殿之門,再合適不過。本系列不再逐字細譯,僅理出一些有用的要點出來,提升能力,也希望可以對大家有所用處.
oracle核心層
插述oracle核心層一些主要的層
層的名稱 簡稱 譯文
oracle call interface oci oracle呼叫介面
user program interface upi 使用者程式介面
---------------------------------------------------->net 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相關,故
相關實現細節分割成一個獨立的層
用它開啟自己對於oracle聖殿之門,再合適不過。本系列不再逐字細譯,僅理出一些有用的要點出來,提升能力,也希望可以對大家有所用處.
oracle核心層
插述oracle核心層一些主要的層
層的名稱 簡稱 譯文
oracle call interface oci oracle呼叫介面
user program interface upi 使用者程式介面
---------------------------------------------------->net 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 探索系列_神人steve adams之著oracle8i interal service(二)Oracle
- 探索系列_神人steve adams之著oracle8i interal service(三)Oracle
- 探索系列_神人steve adams之著oracle8i interal service(四)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(五)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(六)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(七)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(八)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(九)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十一)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十二)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十三)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十四)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十五)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十六)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十七)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十八)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(十九)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(二十)Oracle
- 探索系列——神人steve adams之著oracle8i interal service(二十一)Oracle
- Steve Adams的《Oracle8i internal services for waits, latches, locks》試譯OracleAI
- script--by Steve Adams
- script--by Steve Adams--hidden_parameters.sqlSQL
- Android探索之Service全面回顧及總結Android
- 探索C#之系列目錄導航C#
- 探索JAVA系列(一)探祕Java反射(Reflect)Java反射
- 沒閒著系列 18
- 螞蟻金服 Service Mesh 實踐探索
- Weex 探索系列(一)初識和環境搭建
- 探索es6系列之—-Generator生成器函式函式
- Android之ServiceAndroid
- 前端獵奇系列之探索Python來反補JavaScript——上篇前端PythonJavaScript
- React 系列一 之 TodoListReact
- [ Office 365 開發系列 ] Graph Service
- Android Service 服務(一)—— ServiceAndroid
- [微信小程式系列] 動畫案例之圓點沿著圓圈運動微信小程式動畫
- k8s之Service詳解-Service使用K8S
- Windows API 之 Windows ServiceWindowsAPI