Oracle系列之二 體系結構概述

2021-08-31 20:38:02 字數 2209 閱讀 7651

一、概述

大型軟體需要有好的架構支撐,此處描述oracle體系結構,從執行期的程序/執行緒、記憶體體系結構和靜態的檔案描述。本來我想按照五種架構檢視的執行架構和資料架構來寫的,但是想想怕這麼寫不夠嚴謹,所以還是按照kyte大叔的分類來寫吧。

二、資料庫和例項

資料庫是磁碟上儲存的檔案的集合。

例項是執行期的一組後台程序/執行緒和共享記憶體的集合。注意此處是後台程序,專用伺服器不屬於後台程序,但是為什麼共享伺服器屬於呢?oracle執行時候以多程序還是以多執行緒的形式執行,跟不同作業系統的實現版本有關的,linux上是多程序,window上是多執行緒。後續以多程序術語描述其執行期程序/執行緒,大家知道不同os實現不同就行。

資料庫可以同時有多個例項連線,而例項在生存週期內只能管理一次資料庫。

別的dbms中的資料庫的概念跟oracle中資料庫的概念本身就有些不同,mysql建立乙個資料庫是乙個很簡短的過程,而oracle卻很漫長,為何?

三、專用伺服器和共享伺服器

客戶端,如sqlplus發起一次客戶請求,服務端會有程序來接受並處理客戶的請求。監聽連線請求的是tns監聽程式,但是在監聽到客戶連線請求後,後續的互動過程tns監聽程式就不在干預。按照後續處理方式的不同,處理客戶請求的程序分為專用伺服器(dedicated server)和共享伺服器(shared server)。

專用伺服器連線時,為每乙個使用者連線請求啟動乙個程序,並處理這個客戶端後續所有的請求,看起來就像這個客戶端獨佔了到伺服器的乙個通道一樣。

共享伺服器連線下,客戶端跟共享伺服器是多對多的方式進行互動,乙個客戶端的的請求可能由多個伺服器來處理,乙個伺服器程序可以處理多個客戶端的請求,當然每次請求由乙個伺服器程序處理,每個伺服器程序每次只能處理乙個客戶請求。當請求發到排程程式時候,排程程式把請求放入到sga的請求佇列,等待空閒的共享伺服器來請求佇列獲取請求並進行處理。處理後,會把結果放入到sga中的響應佇列,排程程式拿響應資訊返回給響應的客戶端。

四、客戶端連線伺服器的過程

客戶端連線伺服器的時候,會根據連線識別符號,也叫tns服務名到%orcle_home%\network\admin\ tnsname.ora 檔案查詢對應的主機ip和埠號以及協議,然後發起連線

c:> sqlplus scott/tiger@orc11gr2
此處連線標示符為orc11gr2,到我的目錄下查詢到的連線資訊為:

orc11gr2 =

(description =

(address = (protocol = tcp)(host = yymt)(port = 1522))

(connect_data =

(server = dedicated)

(service_name = orc11gr2)))

如果連線的時候沒有連線描述符則到登錄檔如下路徑下查詢oracle_sid的鍵值

hkey_local_machine\software\oracle\key_oradb11g_home1
找到對應的主機和埠後,就發起乙個連線請求,此處為tcp請求,發給伺服器上的tns監聽程式,監聽程式接收到請求後,根據是共享伺服器還是專用伺服器來進行不同的後續處理。

這個連線識別符號也可以用其他方式來解析,如oracle internet目錄,這是乙個分布式ldap伺服器等,起作用相當於解析主機名的dns。不過tnsname.ora通常只適用於大多數中到小型安裝,這種情況下這個配置檔案的副本不是太多。

4.1、專用伺服器連線

如果是專用伺服器連線,監聽程式則建立乙個新的程序來處理後續的客戶請求。建立的程序就是專用伺服器程序。

4.2、共享伺服器連線

如果是共享伺服器連線,監聽程式則返回乙個排程程式的埠號給客戶端,客戶端後續請求都通過該埠號跟排程程式通訊。當請求發到排程程式時候,排程程式把請求放入到sga的請求佇列,等待空閒的共享伺服器來請求佇列獲取請求並進行處理。處理後,會把結果放入到sga中的響應佇列,排程程式拿響應資訊返回給響應的客戶端。

乙個資料庫伺服器可以同時存在專用伺服器連線和共享伺服器連線。總體的運**況如下:

通過什麼方式知道當前資料庫是共享伺服器連線還是專用伺服器連線呢?

1、新連線乙個sqlplus客戶端前後系統裡oracle相關程序或執行緒的數量

2、其他的方法呢?

Oracle 體系結構二 記憶體結構

oracle例項由共享記憶體塊 sga 以及大量的後台程序構成。sga必須包含的資料結構 可選的資料結構 使用者會話還需要伺服器端的記憶體。此記憶體是不共享的pga。每個會話都有自己專用的pga。資料庫緩衝區快取 資料庫緩衝區快取是oracle用來執行sql的工作區域。在更新資料時,使用者的會話不直...

oracle體系結構

oracle由例項和資料庫組成 例項是由sga system global area 和一系列後台程序組成的,其中sga最主要劃分為共享池 shared pool 資料緩衝區 db cache 和日誌緩衝區 log buffer 後台程序包括pmon smon lckn reco ckpt dbwr...

oracle體系結構

一.oracle資料庫的後台程序 dbwr 資料庫寫程序,負責將更改的資料從資料庫緩衝區寫入資料檔案 smon 系統監控,檢查資料庫的狀態,恢復資料庫的例項 pmon 程序監控,負責oracle程序失敗時資源清理釋放 chpt 檢查點程序,每當緩衝區資料寫入檔案時,更新控制檔案的資料庫狀態資訊 ar...