天天看點

Oracle Database 19c 技術架構(一)

Oracle官方文檔中給出的Oracle Database 19c技術架構圖,可以看出制作者的用心和精心。同時本文可以作為學習Oracle體系結構很好的教材!值得大家收藏!

Oracle官方文檔中給出的Oracle Database 19c技術架構圖,可以看出制作者的用心和精心。不翻譯一下真是對不起作者!

同時本文可以作為學習Oracle體系結構很好的教材!值得大家收藏!

01、資料庫伺服器(Database Server)

Oracle Database 19c 技術架構(一)

一個Oracle資料庫至少由一個資料庫執行個體和一個資料庫組成。資料庫執行個體部分處理記憶體和程序,資料庫部分則由稱為資料檔案的實體檔案組成,并且可以是非容器資料庫或多租戶容器資料庫。Oracle資料庫在其運作期間還會使用多個資料庫系統檔案。

單執行個體資料庫體系結構由一個資料庫執行個體和一個資料庫組成。資料庫和資料庫執行個體之間存在一對一的關系。可以在同一台伺服器上安裝多個單執行個體資料庫。每個資料庫都有單獨的資料庫執行個體。此配置對于在同一台計算機上運作不同版本的Oracle資料庫很有用。

Oracle Real Application Clusters (Oracle RAC) 資料庫的體系結構是由在分開的多台伺服器計算機上運作的多個執行個體組成。它們都共享同一個資料庫。伺服器群集在一端表現為單個伺服器,而在另一端則為最終使用者和應用程式。此配置旨在實作高可用性,可伸縮性和高端的性能。

監聽器是一個資料庫伺服器程序。它接收用戶端請求,建立與資料庫執行個體的連接配接,然後将用戶端連接配接移交給伺服器程序。監聽器可以在資料庫伺服器上本地運作,也可以遠端運作。典型的Oracle RAC環境是遠端運作的。

02、資料庫執行個體(Database Instance)

Oracle Database 19c 技術架構(一)

資料庫執行個體包含一組Oracle資料庫背景程序和記憶體結構。主要的記憶體結構是系統全局區 (SGA) 和程式全局區 (PGA)。背景程序對資料庫中存儲的資料(資料檔案)進行操作,并使用記憶體結構完成其工作。資料庫執行個體僅存在于記憶體中。

Oracle資料庫還建立伺服器程序,以代表用戶端程式處理與資料庫的連接配接,并執行用戶端程式的工作。例如,解析和運作SQL語句,以及檢索結果并将結果傳回給用戶端程式。這些類型的伺服器程序也稱為前台程序。

注意:更多詳細資訊,請看如下内容:Oracle Database Instance.

03、系統全局區(System Global Area)

Oracle Database 19c 技術架構(一)

系統全局區域 (SGA) 是包含一個Oracle資料庫執行個體的資料和控制資訊的存儲區域。資料庫所有的伺服器程序和背景程序共享方式使用SGA。啟動資料庫執行個體時,将會顯示SGA配置設定的記憶體量。SGA包含以下資料結構:

•共享池 (Shared pool):在多個使用者之間共享各種的緩存結構;例如,共享池存儲已解析的SQL,PL/SQL代碼,系統參數和資料字典資訊。共享池幾乎涉及資料庫中發生的每個操作。例如,如果使用者執行SQL語句,則Oracle資料庫将通路共享池。

•閃回緩沖區 (Flashback buffer):是SGA中的可選元件。啟用閃回資料庫後,将啟動稱為恢複寫程式 (RVWR) 的背景程序。RVWR定期将修改後的塊從緩沖區高速緩存複制到閃回緩沖區,然後将閃回資料庫資料從閃回緩沖區寫入閃回資料庫日志,以循環方式重用。

•資料庫高速緩沖區 (Database buffer cache):是存儲從資料檔案讀取的資料塊副本的記憶體區域。緩沖區是主記憶體位址,緩沖區管理器在其中臨時緩存目前或最近使用的資料塊。并發連接配接到資料庫執行個體的所有使用者共享對資料庫高速緩沖區的通路。

•資料庫智能閃存緩存 (Database Smart Flash):是Solaris或Oracle Linux上運作的資料庫的資料庫高速緩沖區的可選記憶體擴充。它為資料庫中的資料塊提供了2級緩存。針對讀取密集型的線上事務處理 (OLTP) 工作負載,以及資料倉庫 (DW) 中的即席查詢 (Ad Hoc) 和批量資料修改工作,它可以提升這兩種工作的響應時間和總體吞吐量。資料庫智能閃存緩存駐留在一個或多個閃存裝置上,這些裝置是使用閃存的固态儲存設備。資料庫智能閃存緩存通常比其他主記憶體更經濟,并且比磁盤驅動器快一個數量級。

•重做日志緩沖區 (Redo log buffer):是SGA中的循環緩沖區,用于儲存有關對資料庫所做的更改的資訊。這些資訊存儲在重做條目中。重做條目包含重建(或重做)通過資料操作語言 (DML),資料定義語言 (DDL) 或内部操作對資料庫所做的更改所必需的資訊。如有必要,可将重做條目用于資料庫恢複。

•大池 (Large pool):是一個可選的記憶體區域,用于大于共享池的記憶體配置設定。大池可以為如下内容提供更大的記憶體配置設定:共享伺服器的使用者全局區域 (UGA),Oracle XA接口(用于事務與多個資料庫進行互動的地方),并行執行語句的消息緩沖區,用于Recovery Manager (RMAN) I/O 從屬程序的緩沖區和延遲插入。

•記憶體中列式存儲(In-Memory Area):是一個可選元件,使對象(表,分區和其他類型)可以以稱為列格式的新格式存儲在記憶體中。與傳統的磁盤格式相比,此格式使掃描,聯接和聚合的執行速度快得多,進而為OLTP和DW環境提供了快速的報告和DML性能。相對于在傳回包含多列的少量行上運作的OLTP,此功能對在運作傳回包含少量列的多行的分析應用程式特别有用。

•記憶體優化池(Memoptimize Pool):是一個可選元件,可為基于鍵的查詢提供高性能和可伸縮性。Memoptimize池包含兩部分,即memoptimize緩沖區和哈希索引。快速查詢 (Fast Lookup) 使用memoptimize池中的哈希索引結構提供對給定表中塊的快速通路 (啟用MEMOPTIMIZE FOR READ選項) 以永久固定在緩沖區高速緩存中,以避免磁盤 I/O。Memoptimize池中的緩沖區與資料庫緩沖區完全分開。哈希索引是在配置Memoptimized Rowstore 時建立的,并由Oracle資料庫自動維護。

•共享I / O池(Shared I/O SecureFiles):用于SecureFile大對象 (LOB) 上的大型 I/O 操作。LOB是一組資料類型,旨在儲存大量資料。SecureFile是一個LOB存儲參數,允許重複資料删除,加密和壓縮。

•流池(Streams pool):由Oracle Streams,Data Pump和GoldenGate內建的捕獲和應用流程使用。Streams池存儲緩沖的隊列消息,并且為Oracle Streams捕獲程序和應用程序提供記憶體。除非您進行特定配置,否則Streams池的大小從零開始。使用Oracle Streams時,池大小會根據需要動态增加。

•Java池(Java pool):用于Java虛拟機 (JVM) 中所有特定于會話的Java代碼和資料。Java池記憶體的使用方式不同,具體取決于Oracle資料庫的運作模式。

•固定的SGA(Fixed SGA):是SGA的一個組成部分,一個内部整理區域,其大小因平台而異,并随發行版本的不同而變化。其中包含有關資料庫和資料庫執行個體的狀态的一般資訊以及程序之間進行通信的資訊(固定SGA包含一組指向SGA其他元件的變量以及包含各種參數值的變量)。固定SGA的大小是我們無法控制的,通常很小。可以将此區域視為SGA的引導區,Oracle在内部使用此東西來查找SGA的其他部分。SGA的固定區域包含數千個原子變量,小型資料結構(例如鎖存器和指向SGA其他區域的指針)。這些變量以及它們的資料類型,大小和記憶體位址都列在固定表 X$KSMFSV 中。

注意:更多詳細資訊,請看如下内容:Overview of the System Global Area (SGA).

04、程式全局區(Program Global Area)

Oracle Database 19c 技術架構(一)

程式全局區域(PGA)是一個非共享的記憶體區域,其中包含專門由伺服器和背景程序使用的資料和控制資訊。Oracle資料庫建立伺服器程序,以代表用戶端程式處理與資料庫的連接配接。在專用伺服器環境中,為每個伺服器和啟動的背景程序建立一個PGA。每個PGA都由堆棧空間,哈希區域,位圖合并區域和使用者全局區域(UGA)組成。當終止與之關聯的伺服器或背景程序時,将釋放PGA。

•在共享伺服器環境中,多個用戶端使用者共享伺服器程序。UGA被移入大型池,而PGA僅具有堆棧空間,哈希區域和位圖合并區域。

•在專用伺服器會話中,PGA由以下元件組成:

  ‣SQL工作區 (SQL work areas):排序區供排序資料的函數使用,例如ORDER BY和GROUP BY。

  ‣會話記憶體 (Session memory):此使用者會話資料存儲區配置設定給會話變量,例如登入資訊和資料庫會話所需的其他資訊。OLAP池管理OLAP資料頁,這些資料頁等效于資料塊。

  ‣私有SQL區域 (Private SQL area):此區域儲存有關已解析的SQL語句的資訊以及其他特定于會話的資訊以供處理。當伺服器程序執行SQL或PL / SQL代碼時,該程序使用私有SQL區域存儲綁定變量值,查詢執行狀态資訊和查詢執行工作區。相同或不同會話中的多個私有SQL區域可以指向SGA中的單個執行計劃。持久區域 (persistent area) 包含綁定變量值。運作時區域 (runtime area) 包含查詢執行狀态資訊。遊标是專用SQL區域中特定區域的名稱或句柄。您可以将遊标視為用戶端上的指針,以及伺服器端上的狀态。因為遊标與私有SQL區域緊密相關,是以有時可以互換使用這些術語。

  ‣堆棧空間 (Stack space):堆棧空間是配置設定用于儲存會話變量和數組的記憶體。

  ‣散列區域 (hash area):此區域用于執行表的散列連接配接。

  ‣位圖合并區域 (bitmap merge area):此區域用于合并從多個位圖索引的掃描中檢索到的資料。

注意:更多詳細資訊,請看如下内容:Overview of the Program Global Area (PGA).

05、背景程序(Background processes)

Oracle Database 19c 技術架構(一)

背景程序是資料庫執行個體的⼀部分,它執⾏操作資料庫和使多個⽤戶的性能⼤化 所需的維護任務。每個背景程序執⾏⼀個獨特的任務,但與其他程序⼀起⼯作。啟動 資料庫執行個體時,Oracle資料庫會⾃動建立背景程序。存在的背景程序取決于資料庫中 正在使⽤的功能。啟動資料庫執行個體時,必要的背景程序将⾃動啟動。您可以根據需要 稍後啟動可選的背景程序。

所有典型的資料庫配置中都存在必要的的背景程序。預設情況下,這些程序使⽤ 初始化參數⽂件中的低配置,開始在讀/寫模式的資料庫執行個體中運⾏。隻讀資料庫實 例将禁⽤其中⼀些程序。必要的背景程序包括程序監控程序 (PMON),程序管理器進 程 (PMAN),監聽器注冊程序 (LREG),系統監控程序 (SMON),資料庫寫程序 (DBWn),檢查點程序 (CKPT),可管理性監控程序 (MMON),可管理性監控器精簡進 程 (MMNL),恢複程式程序 (RECO) 和⽇志寫程序 (LGWR)。

⼤多數可選的背景程序特定于任務或功能。⼀些常⻅的可選過程包括歸檔程序 (ARCn),作業隊列協調程序 (CJQ0),恢複寫⼊程序 (RVWR),閃回資料存檔程序 (FBDA) 和空間管理協調程序 (SMCO)。

從屬程序是代表其他程序執⾏⼯作的背景程序。例如,分派程序 (Dnnn) 和共享 伺服器程序 (Snnn)。

注意:獲得完整的程序清單,請看如下内容:Background Processes.

本篇内容先更新到這,後續還會有更精彩的内容,我會繼續更新,歡迎大家閱讀~

繼續閱讀