8月4日,信服云數據庫解決方案專家Simon Zeng在信服云《Tech Talk · 云技術有話聊》系列直播課上分享了《Oracle數據庫基礎&架構原理解析》,詳細介紹了Oracle基礎架構、Oracle數據庫常見架構及技術原理、深信服DMP技術解析等內容,以下是他分享的內容摘要。
數據庫簡介
數據庫,DataBase(簡稱DB),是按照一定格式存儲數據的一系列文件的組合。換言之,數據庫也是存儲數據文件的倉庫,這些文件存儲了具有特定格式的數據。常見的數據庫有MySQL、Oracle、SQL Server、DB2等。
數據庫不是單獨使用的,它總是和其他應用程序一起來組成一個完整的系統。但數據庫在里面是占據了最主要的實際的應用地位。
數據庫管理系統,Database Management System(簡稱DBMS)。數據庫管理系統是專門對數據庫中的數據進行增、刪、改、查。
最早的關系型數據庫是在 1980 年開始起步, 2010 年一直到現在乃至未來,數據庫都呈現出云原生、一體化分布式、多模、HTAP等趨勢。數據的類型也發生了變化,包含了結構化、圖數據、文本數據等。
目前數據庫整體發展是從單節點到集群再到分布式,這也體現了整個云計算時代的發展歷程。
數據庫基礎原理
Oracle內存架構和內存實例架構包括了SGA(系統全局區)跟 PGA(程序全局區) 。SGA是內存的一個集合點,它包括了共享池、Streams池、大型池、 Java 池、數據庫的緩沖池等。每一個都是為了數據庫的運行更快、性能更好、更安全去設計的,還會設計大量的監控進程,來保證數據庫的運行。包括系統進程、監控器數據庫寫進程、日志寫進程等,這就形成了內存結構和實例結構。
數據庫中實際存在的文件,每個文件的作用都不同。所以,要從物理文件出發,包括控制文件數據、聯機重做日志文件、參數文件、備份歸檔文件、還有口令文件等,去理解每一個文件的具體作用,這樣當出現問題的時候,就知道從哪個維度去找問題。
Oracle數據庫邏輯架構的方案包括了表和索引。表空間是跟物理架構相關聯的一個表空間,跟數據文件相對應,表空間往下會分得更細,比如說段區數據塊、數據塊,最后又跟操作系統的 OS 塊又分布在一起,所以,看似沒有關聯的數據,但是在操作系統層面又產生了強烈的關聯。
SYSTEM 和 SYSAUX 這兩個表空間是最常用也是最重要的兩個表空間。如果這兩個表空間出現了問題,數據庫會產生大量的問題。所以這些表空間的狀態一定是聯機狀態,而且在表空間存放的是它的一個核心功能。比如數據字典,其實是系統的核心表;輔助的表空間,包括數據庫的管理組件,都是放在這兩個表空間里。一旦這兩個表空間發生損壞,整個數據庫就會發生宕機,無法使用。經常遇到的數據庫恢復問題,經常和數據庫的這兩個表空間有關。
數據庫對象以段形式存儲在表空間中。每個段包含一個或多個區。區由相鄰的數據塊組成,這意味著每一個區只可以存在于一個數據文件中。數據塊是數據庫中最小的 I/O 單元。數據庫從操作系統 (OS) 請求數據塊集時,OS 會將數據塊集映射到存儲設備上的實際文件系統或磁盤塊。因此,用戶不必了解數據庫中任何數據塊的物理地址。這還意味著一個數據文件可以條帶化或鏡像在多個磁盤上。
對于數據庫層面來說,權限是基本也是很重要的一環,是保證數據庫安全穩定運行的一個因素。Oracle數據庫用戶和權限管理包含系統權限和對象權限。
系統權限是指用戶可使用每一個系統權限執行特定的數據庫操作或對數據庫操作分類。例如,創建表空間的權限就是一個系統權限。系統權限可由管理員授予,或者由可以顯式授予管理權限的用戶授予。共有一百多種不同的系統權限,很多系統權限都包含 ANY 子句。
對象權限是指用戶可以使用對象權限對特定對象(如表、視圖、序列、過程、函數或程序包)執行特定的操作。在沒有特定權限的情況下,用戶只能訪問他們自己擁有的對象。對象權限可以由對象的所有者或管理員授予,也可以由顯式授予了對象授予權限的用戶授予。
數據庫架構原理
Oracle數據庫常見架構包括單機、HA(雙機熱備)和RAC (真正應用集群)。單機是指一臺服務器、一臺數據庫。HA 是有一臺數據庫正在跑,另外一臺數據庫處于接管的這種狀態,屬于隨時接管的,這叫雙機熱備。RAC 體系架構是共享存儲的計算服務器,加上高速互聯的網絡,然后再跟用戶這邊發生聯系,形成一個RAC的體系架構。
Oracle RAC架構
RAC是Oracle高可用的一種部署模式,傳統方式部署非常復雜,涉及ASM、Grid Infrastructure等系統和部署組件,需要手動執行上百個步驟,而現在DMP已將此過程實現自動化,整體創建流程如下:
(1)由DMP提供的數據庫鏡像創建DBVM
(2)DMP申請集群VIP、SCAN VIP、共享盤等集群配置資源
(3)給DBVM節點掛載共享盤,更新集群信息
(4)開始執行數據庫創建并構建RAC
全程只需要用戶指定規格、磁盤容量、網卡等基本信息,便無需額外的手動操作。
Oracle DG架構
Oracle DataGuard,簡稱DG,是Oracle自帶的數據同步功能,基本原理是將日志文件從原數據庫傳輸到目標數據庫,然后在目標數據庫上應用這些日志文件,從而使目標數據庫與源數據庫保持同步,是一種數據庫級別的高可用性方案,Oracle 11G之后的DG又稱為ADG,即Active DataGuard。
DG的日志傳輸方式有兩種,一是利用ARCH進程進行傳輸,二是LGWR進程進行,使用ARCH進行日志傳輸,只能以異步的方式傳輸,而不能同步傳輸,可能有丟數據的風險。
LGWR進程進行日志傳輸,又分為兩種情況,其一是同步傳輸,其二是異步;同步傳輸時,LGWR必須等待寫入本地日志文件傳輸到standby端之后,Primary Database上的事務才可以提交,此種方式會對主庫造成嚴重的性能影響。利用LGWR的異步傳輸時,LGWR只需成功寫入本地日志文件即可,不需要等待傳輸到standby端,因此,不會對主庫的性能造成太大影響。
Oracle OGG架構
Oracle GoldenGate,簡稱OGG,是一種基于日志的結構化數據復制軟件,它通過解析源數據庫在線日志或歸檔日志獲得數據的變化,再將這些變化應用到目標數據庫,從而實現源數據庫與目標數據庫的同步;
OGG可以在異構的IT基礎結構(包括幾乎所有常用操作系統平臺和數據庫平臺)之間實現數據亞秒一級的實時復制,從而在應急系統、在線報表、實時數據倉庫供應、交易跟蹤、數據同步、集中/分發、容災、數據庫升級和移植、雙業務中心等多個場景下應用。
深信服數據庫方案介紹
深信服數據庫方案支持 Oracle 數據庫、 SQL Server 和 MySQL三種數據庫。它融合了以上提到的復雜原理到基礎的架構平臺上,包括部署監控、巡檢、主備備份切換、主備搭建等,使得操作更簡單。
用戶如果自己搭建一套 Oracle 數據庫,必須要懂網絡、存儲、操作系統,才能夠搭建一套完整的 Oracle RAC數據庫。而這往往耗時費力,一個專業的 DBA 都需要花上幾天時間。
在深信服的數據庫方案里,通過把所有內容集中在虛擬層里面,在界面上操作點擊分配,把共享存儲、共享網絡、共享資源全部一次性劃分好,用戶不用去考慮后臺的配置和運行進程。
在一套 RAC 里面,深信服做過大量的測試,在數據量不多的前提下,比如200- 300G 的數據量,搭建完成一套 RAC只需半小時。
此外,深信服數據庫方案還有集群的自愈能力,節點在故障條件下自動主從切換,結合云平臺資源聯動進行底層修復,實現故障自愈,重組集群關系,解放運維人力,節約運維成本,提高系統的高可用能力。
以上就是本期直播關于《Oracle數據庫基礎&架構原理解析》的分享,關注“深信服”科技公眾號,可以觀看本期直播回放。