Oracle Database 19c 技術架構(一)

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.

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章