背景
銀行數據庫異地遷移,再次涉及到數據庫的備份與恢復。其實之前已瞭解過oracle的相關體系結構,但沒有自己作總結,導致今天恢復時又有點卡殼。因此,寫下此文記錄oracle的存儲體系,包括物理存儲體系和邏輯存儲體系。
物理存儲體系
ORACLE的物理存儲體系指一堆實際存在的文件,如下所示,主要包括參數文件、控制文件、數據文件等。
參數文件(parameter file,pfile):
ORACLE中的參數文件是一個包含一系列參數以及參數對應值的操作系統文件,可以分爲兩種類型。它們是在數據庫實例啓動時候加載的,決定了數據庫的物理結構、內存、數據庫的限制及系統大量的默認值、數據庫的各種物理屬性、指定數據庫控制文件名和路徑等信息,是進行數據庫設計和性能調優的重要文件。
初始化參數文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直採用PFILE方式存儲初始化參數,該文件爲文本文件。
服務器參數文件(Server Parameter Files),從Oracle 9i開始,Oracle引入了SPFILE文件,該文件爲二進制格式,不能通過手工修改。
ORACLE實例啓動時,先讀取spfileXXX.ora(二進制)文件啓動,若此文件不存在,則讀取initT24APDB.ora(文本文件)。若還不存在,則讀取oracle默認的init.ora文件進行啓動。
文件路徑默認爲:$ORACLE_HOME/dbs。
控制文件(control file):
包含與數據庫本身相關的數據,即物理數據庫結構信息。這些文件對數據庫至關重要。沒有這些文件,就無法打開數據文件以訪問數據庫中的數據。
包含指向數據庫其餘部分的指針(包括重做日誌文件,數據文件,歸檔日誌文件等的位置),存儲重要的序列號和時間戳,存儲RMAN備份的詳細信息。控制文件一旦受損,那實例會立馬終止,一般對數據文件的保護採用多路複用機制,就是冗餘多份在不同物理位置。
通過spfile可以查看ORACLE數據庫的控制文件路徑。
數據文件(data file):
包含數據庫的用戶或應用程序數據,以及元數據和數據字典。
聯機重做日誌文件(online redo log):
用於進行數據庫的實例恢復。如果數據庫服務器發生崩潰,但未丟失任何數據文件,那麼實例便可使用這些文件中的信息恢復數據庫。
歸檔重做日誌文件(archive redo log)
ARCn進程將聯機重做日誌文件會備份歸檔到這類文件中去,歸檔日誌文件保留了數據更改的完整歷史信息。
邏輯存儲體系
ORACLE邏輯存儲系統用於描述oracle內部組織和管理數據的方式,如邏輯上將數據庫劃分爲一個或多個表空間,表空間又包含各種段,等等。其結構如下圖所示。
方案(schema)
schema是數據庫用戶擁有的數據庫對象的集合。方案對象是直接引用數據庫數據的邏輯結構。方案對象包括諸如表、視圖、序列、存儲過程、同義詞、索引、集羣和數據庫鏈接等結構。通常,方案對象包括應用程序在數據庫中創建的所有內容。具體來說,一個ORACLE用戶對應一個schema。當你用命令:
CREATE USER ZAVIER IDENTIFIED BY "123456";
創建了一個USER,也就生成一個schema。
數據庫(database)
數據庫通過dbca命令創建或配置。一個實例可以有多個數據庫,但每次只能load一個數據庫。其區別爲:
實例 instance = 進程 + 進程所使用的內存(SGA)
數據庫 database = 物理操作系統文件或磁盤(disk)的集合(redo文件+control文件+data文件+臨時文件)
表空間(tablespace)
數據庫分爲多個邏輯存儲單元,這些單元稱爲“表空間”,用於將相關邏輯結構組合在一起。例如,表空間一般會將應用程序的所有對象分成一組,以簡化一些管理操作。您可以使用一個表空間存放應用程序數據,使用另一個存放應用程序索引。如下命令可以創建表空間:
CREATE TABLESPACE ZAVIER_SPACE LOGGING DATAFILE '/mnt/data/orcl/ZAVIER_T24.dbf' SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;
段segment、區extend、塊block
數據庫對象(例如表和索引)以段的形式存儲在表空間中。每個段都包含一個或多個區。區由相鄰的數據塊組成,這意味着每個區只能存在於一個數據文件中。數據塊是數據庫中最小的I/O 單元。
數據庫從操作系統(OS) 請求數據塊集時,OS 會將數據塊集映射到存儲設備上的實際文件系統或磁盤塊。因此,不必瞭解數據庫中任何數據的物理地址。這還意味着可以在多個磁盤上條帶化或鏡像一個數據文件。
可以在創建數據庫時設置數據塊的大小。對大多數數據庫而言,默認的8 KB 塊大小是足夠的。當數據庫支持擁有大型表和索引的數據倉庫應用程序時,最好設置較大的塊大小。
當數據庫支持執行隨機讀寫的事務處理應用程序時,最好指定較小的塊大小。塊大小的最大值取決於OS。Oracle 塊大小的最小值爲2 KB,這個值很少使用。
小結:
- 段存在於表空間中;
- 段是區的集合;
- 區是數據庫的集合;
- 數據庫會映射到磁盤塊;
總結
按照oracle官網說明,ORACLE設計物理存儲結構與邏輯存儲結構分離,使得對物理存儲管理不會影響邏輯數據的訪問。例如,可以對物理文件進行改名/改路徑之類的。
Because physical and logical structures are separate, you can manage physical storage of data without affecting access to logical structures. For example, renaming a database file does not rename the tables stored in it.