前言
在學習oracle中,體系結構是重中之重,掌握的越深入越好。在實際工作遇到疑難問題,其實都可以歸結到體系結構中來解釋,所以我們根據下面的示圖瞭解一下oracle體系結構。其中oracle內存結構不在複述,參照文章http://nijianlong.blog.51cto.com/2913232/1091537。
1.oracle服務器
①提供一個開發的、全面的、完整的信息管理平臺。
②oracle實例和oracle數據庫組成。
注:一個實例只能對應一個數據庫
一個數據庫可以由多個實例(RAC)
2.oracle實例
①實例爲用戶同數據庫交互的媒介
②只能打開一個數據庫
③由內存結構(SGA、PGA)和用戶進程
後臺進程
實例中的後臺進程執行用於處理並行用戶請求所需的通用功能,而不會損害系統的完整性和性能。它們把爲每個用戶運行的多個 Oracle 程序所處理的功能統一起來。後臺進程執行 I/O 並監控其它 Oracle 進程以增加並行性,從而使性能和可靠性更加優越。
根據配置情況,Oracle 實例可以包括多個後臺進程,但是每個實例都包括下面五個必需的後臺進程:
① 數據庫寫入程序 (DBW0) 負責將更改的數據從數據庫緩衝區高速緩存寫入數據文件。
② 日誌寫入程序 (LGWR) 將重做日誌緩衝區中註冊的更改寫入重做日誌文件。
③ 系統監控程序 (SMON) 檢查數據庫的一致性,如有必要還會在數據庫打開時啓動數據庫的恢復。
④過程監視器 (PMON) 負責在一個 Oracle 進程失敗時清理資源
⑤檢查點進程 (CKPT) 負責在每當緩衝區高速緩存中的更改永久地記錄在數據庫中時,更新控制文件和數據文件中的數據庫狀態信息。
3.連接Oracle Server
用於連接例程的進程
用戶在給 Oracle 提交 SQL 語句之前,必須同實例連接起來。
① 用戶啓動 SQL*Plus 之類的工具,或者運行使用 Oracle Forms 之類的工具開發的應用程序。這個應用程序或者工具就在用戶進程中執行。
② 在最基本的配置中,當用戶登錄到 Oracle 服務器時,運行 Oracle 服務器的計算機上就會創建一個進程。這個進程稱爲服務器進程。服務器進程代表在客戶機上運行的用戶進程與 Oracle 實例通信。服務器進程代表用戶執行SQL 語句。
連接
連接是用戶進程和 Oracle 服務器之間的通信路徑。數據庫用戶可以用下面三種方式之一連接到 Oracle 服務器:
① 用戶登錄到運行 Oracle 實例的操作系統上,然後啓動訪問該系統中的數據庫的應用程序或工具。通信路徑是使用主機操作系統上的交互進程通信機制建立的。
② 用戶在本地計算機上啓動應用程序或工具,然後通過網絡連接到運行 Oracle實例的計算機。在這項稱爲客戶機-服務器的配置中,網絡軟件用於用戶和Oracle 服務器之間進行的通信。
③ 在三層連接中,用戶計算機通過網絡與應用程序或網絡服務器進行通信,而該應用程序或網絡服務器又通過網絡與運行 Oracle 實例的計算機連接。例如,用戶在網絡計算機上運行瀏覽器來使用位於服務器上的應用程序,這個 服務器從在 UNIX 主機上運行的 Oracle 數據庫中檢索數據。
會話
會話是用戶與 Oracle 服務器的一種特定連接。當用戶由 Oracle 服務器驗證時會話開始,當用戶退出或出現異常終止時會話結束。對某個具體的數據庫用戶來說,如果他從很多工具、應用程序或者終端同時登錄,則可能有很多併發會話。除了一些專用數據庫管理工具以外,啓動數據庫會話還要求 Oracle 服務器可供使用。
4.oracle數據庫
①數據信息的組合
②三種類型文件
- 數據文件
- 控制文件
- 日誌文件
一個 Oracle 數據庫是一個數據單位的集合。 主要目的是爲了儲存和讀取信息,Oracle 數據庫可以分爲邏輯(logical)結構和物理(physical)結構。
物理結構指數據庫中的操作系統文件的集合,包含以下三種文件:
數據文件(data file) 包含數據庫中實際數據。數據包含在用戶定義的表中,而且數據文件還包含數據詞典(data dictionary),
一個數據庫中至少包含一個數據文件。數據文件的特性有: 一個數據文件只能被一個數據庫使用;當數據庫空間不足時,數據文件具有自動擴展的特性;一個或者多個數據文件構成數據庫的邏輯存儲單元叫做表空間(tablespace).
重作日誌(Redo logs) 包含對數據庫的修改記錄,可以在數據失敗後恢復。一個數據需要至少兩個重作日誌文件。
控制文件(Control files) 包含維護和檢驗數據庫一致性的信息。例如:控制文件用來檢驗數據文件和重作日誌文件。
物理結構:
物理結構包括三種文件:
- 控制文件
- 數據文件
- 日誌文件
oracle邏輯結構
- 數據如何使用服務空間
- 表空間、段、區、塊的組成層次
5.用戶進程(user process)
一個請求連接到oracle服務器的程序
- 必須首先建立一個連接
- 並不直接與oracle服務器交互
6.服務器進程(server process)
一個與Oracle服務器直接交互的程序
- 負責執行返回結果
- 專用服務器(dedicated)或共享服務器(shared server)
7.後臺進程(Background Processes)
- 必須的後臺進程
DWRn PMON CKPT LGWR SMON
- 可選的後臺進程
ARCn LMDn QMNn CJQ0 LMON RECO Dnnn LMS Snnn LCKn Pnnn