實體儲存體結構

您可以在作業系統層次檢視 Oracle 資料庫的實體資料庫結構。

實體儲存體結構簡介

RDBMS 的一個特性是邏輯資料結構 (例如表格、視觀表和實體儲存體結構 (例如檔案) 的索引) 的獨立性。

因為實體與邏輯結構是分開的,所以您可以管理實體資料儲存體,而不會影響邏輯結構的存取。例如,重新命名資料庫檔案並不會重新命名其中儲存的表格。

Oracle 資料庫是一組將 Oracle 資料儲存在永久儲存體中的檔案。從 Oracle Database 21c 開始,唯一的支援架構是多雲端用戶容器資料庫 (CDB)。一個 CDB 包含一或多個 PDB。

本節討論當您發出 CREATE DATABASE 敘述句來建立 CDB 時所產生的資料庫檔案:

資料庫執行處理是一組記憶體結構,可用來管理 CDB 中的資料庫檔案。下圖顯示執行處理與其所管理檔案之間的關係。

圖 1:資料庫執行處理與資料庫檔案

cncpt223.gif 圖解描述

另請參閱:

儲存資料庫檔案的機制

有幾種機制可用來配置和管理這些檔案的儲存體。

機制包括:

資料庫可以使用先前儲存體機制的組合。例如,資料庫可以將伺服器參數檔儲存在傳統檔案系統中、將資料庫檔案儲存在 PMEM Filestore 中,然後將重做日誌檔存檔至叢集檔案系統。

另請參閱:

Oracle Managed Files 和使用者管理的檔案

Oracle Managed Files 是一個檔案命名策略,可讓您指定資料庫物件的作業,而非檔案名稱。例如,您可以建立一個表格空間,而不需要指定其資料檔的名稱。

Oracle Managed Files 可讓管理員不需要直接管理資料庫中的作業系統檔案。Oracle ASM 需要 Oracle Managed Files。

注意:此功能不會影響建立或命名管理檔案 (例如追蹤檔、稽核檔及警示日誌)。

使用使用者管理的檔案,您可以直接管理資料庫中的作業系統檔案。您可以決定檔案結構和命名。例如,當您建立表格空間時,會設定表格空間資料檔的名稱與路徑。

透過初始化參數,您可以為特定類型的檔案指定檔案系統目錄。Oracle Managed Files 功能可確保資料庫會建立唯一的檔案,並在不再需要時將其刪除。資料庫會在內部使用標準檔案系統介面,為儲存在快速復原區域中的資料檔和暫存檔、控制檔以及復原相關檔案建立和刪除檔案。

Oracle Managed Files 不排除現有的功能。您可以在手動管理舊檔案時建立新檔案。因此,資料庫可以混用 Oracle Managed Files 與使用者管理的檔案。

另請參閱:

Oracle Automatic Storage Management (Oracle ASM)

Oracle ASM 是適用於 Oracle AI Database 檔案的高效能、易於管理的儲存解決方案。Oracle ASM 是磁碟區管理程式,並提供專門用於資料庫的檔案系統。

Oracle ASM 與傳統的檔案系統和儲存體管理程式相比,提供了多項優點,包括:

若要使用 Oracle ASM,您可以使用分割與鏡射的偏好設定,為 Oracle AI Database 配置分割的磁碟。Oracle ASM 負責管理磁碟空間、將 I/O 負載分散到所有的可用資源以最佳化效能,您不需進行手動 I/O 調整。例如,您可以增加資料庫的磁碟大小,或將資料庫的部分移至新裝置,而不需要關閉資料庫。

Oracle ASM 儲存體元件

Oracle AI Database 可以將資料檔儲存為 Oracle ASM 磁碟群組中的 Oracle ASM 檔案。在磁碟群組中,Oracle ASM 會公開資料庫檔案的檔案系統介面。

下圖顯示使用 Oracle ASM 之資料庫中的儲存體元件之間的關係。此圖說明 Oracle ASM 檔案與資料檔之間的關係,雖然 Oracle ASM 可以儲存其他類型的檔案。群眾的註腳表示法代表一對多關係。

圖 2:Oracle ASM 元件

cncpt267.gif 圖解描述

圖 14-2 說明下列 Oracle ASM 概念:

另請參閱:Oracle Automatic Storage Management Administrator's Guide,瞭解有關 Oracle ASM 的詳細資訊

Oracle ASM 執行環境

Oracle ASM 執行處理是管理 Oracle ASM 磁碟的特殊 Oracle 執行處理。

Oracle ASM 與資料庫執行處理都需要共用 Oracle ASM 磁碟群組中磁碟的存取權。Oracle ASM 執行處理會管理磁碟群組的描述資料,並提供檔案配置資訊給資料庫執行處理。資料庫執行處理會直接將 I/O 導向 Oracle ASM 磁碟,而不需要透過 Oracle ASM 執行處理。

Oracle ASM 執行處理的建立方式與資料庫執行處理使用的技術相同。例如,Oracle ASM 執行處理有一個系統全域區域 (SGA) 和類似於資料庫執行處理的背景處理作業。不過,Oracle ASM 執行處理無法掛載資料庫,而且執行的工作比資料庫執行處理少。圖 14-3 顯示具有一個 Oracle ASM 執行處理和兩個資料庫執行處理的單一節點組態,每個執行處理與不同的單一執行處理資料庫相關聯。Oracle ASM 執行處理會管理描述資料,並為儲存兩個資料庫資料的 Oracle ASM 檔案提供空間配置。一個 Oracle ASM 磁碟群組有四個 Oracle ASM 磁碟,另一個磁碟有兩個磁碟。兩個資料庫執行處理都可以存取磁碟群組。

圖 3:Oracle ASM 執行處理與資料庫執行處理

cncpt266.gif 圖解描述

另請參閱:Oracle Automatic Storage Management Administrator's Guide 以進一步瞭解 Oracle ASM

Oracle 永久記憶體檔案庫 (PMEM 檔案庫)

PMEM 是位元組可定址的永久記憶體。Oracle 永久記憶體檔案存放區 (PMEM 檔案存放區) 可以儲存資料檔、線上重做日誌檔以及控制檔。

查詢可以從 PMEM 直接讀取位元組,而不需要先將區塊移轉至資料庫緩衝區快取。此高效能機制可避免資料備援和不必要的 I/O。注意: PMEM 檔案存放區無法儲存追蹤檔、稽核檔或伺服器參數檔。PMEM 支援的檔案類型與 Oracle ASM 的類型類似。

直接對應的緩衝區快取

在傳統的儲存金字塔中,PMEM 位於 DRAM (非永久) 和 Flash (非揮發性) 之間。

圖 4:儲存金字塔

pmem.png 圖解描述

資料庫緩衝區快取位於 DRAM 中。Oracle 處理作業會對 PMEM 檔案存放區中對應至資料庫緩衝區快取的區塊擁有可直接位元組調整的存取。當您將資料檔放置在 PMEM 檔案存放區時,系統會自動呼叫對應機制。

Oracle AI Database 使用內部演算法來決定是否將資料區塊從 PMEM 檔案存放區移轉至 DRAM。移轉的典型原因包括 DML 修改、讀取一致性,以及快速存取熱門資料區塊。

另請參閱:「 DRAM 與 PMEM 緩衝區」

PMEM 檔案存放區的檔案系統介面

PMEM 檔案存放區會在使用者空間 (FUSE) 中實行名為 Filesystem 的協定。

FUSE 讓無權限的作業系統使用者 (例如 Oracle AI Database 軟體擁有者) 能夠建立及管理檔案系統及其中的目錄與檔案。例如,您可以使用 cp、rm 和 ls 等指令。

典型的檔案系統使用原始儲存體作為後備存放區,而 PMEM 檔案存放區則是從 PMEM DAX 檔案系統中的原生作業系統檔案取得儲存體。這個檔案稱為備份檔,在作業系統中是以檔案形式顯示。PMEM Filestore 會細分備份檔案中的儲存體,並將其呈現為本機檔案系統。

另請參閱:

PMEM 檔案存放區的使用者介面

若要建立 PMEM 檔案存放區,請使用 CREATE PMEM FILESTORE 命令。

PMEM 檔案存放區會在建立後自動掛載。PMEM 檔案存放區會顯示在指定的掛載點之下,就像是原生檔案系統一樣。

PMEM_FILESTORE 初始化參數指定當資料庫執行處理啟動時,會自動掛載的 PMEM 檔案存放區。此參數設為一組排序的字串。參數值清單中的第一個字串是掛載 PMEM Filestore 的目錄。第二個字串是備份檔案。

V$PMEM_FILESTORE 顯示有關 PMEM 檔案存放區的描述資料。例如,您可以檢視掛載點的目錄路徑、備份檔案的檔案路徑,以及檔案存放區大小。

另請參閱:Oracle AI Database Administrator's Guide,瞭解如何建立和管理 PMEM 檔案存放區

資料檔總覽

在作業系統層次,Oracle AI Database 會將資料儲存在稱為資料檔的結構中。每個 Oracle 資料庫 (不論是 CDB 或 PDB) 都必須至少有一個資料檔。

資料檔的使用

Oracle AI Database 實際將表格空間資料儲存在資料檔中。

每個未分割的綱要物件和物件的每個分割區都儲存在其本身的區段中,而此區段僅屬於一個表格空間。例如,非分割表格的資料儲存在單一區段中,而單一區段則是儲存在同一個表格空間中。表格空間與資料檔極為相關,但有很重要的差異:

下圖顯示表格空間、資料檔以及區段之間的關係。

圖 5:資料檔與表格空間

cncpt037.gif 圖解描述

另請參閱:

永久與暫時資料檔

永久表格空間包含永久綱要物件。永久表格空間中的物件會儲存在資料檔中。

暫時表格空間只包含階段作業期間的綱要物件。本機管理的暫時表格空間含有暫存檔案 (暫存檔),這些暫存檔是專門用來將資料儲存於雜湊、排序以及其他作業的特殊檔案。當記憶體中的空間不足時,暫存檔也會儲存結果集資料。

暫存檔與永久資料檔類似,但有下列例外:

另請參閱:

線上和離線資料檔

每個資料檔皆為線上 (可用) 或離線 (無法使用)。

您可以將個別資料檔或暫存檔離線或讓它們上線,以變更其可用性。資料庫必須先讓離線資料檔上線,才能存取這些資料檔。

您可能會因為許多原因而離線取得資料檔,包括執行離線備份或區塊損毀。如果資料庫無法寫入資料檔,則資料庫會自動將該資料檔設為離線。

與資料檔一樣,表格空間本身就是離線或線上。當您在線上表格空間中將資料檔離線時,表格空間本身會維持在線上狀態。如果表格空間本身離線,您可以將表格空間的所有資料檔暫時無法使用。

從 Oracle Database 12c 開始,您可以在資料庫開啟並存取檔案時,使用 ALTER DATABASE MOVE DATAFILE 敘述句將線上資料檔從一個實體檔案移至另一個實體檔案。您可以使用此技術來達成下列目標:

另請參閱:

資料檔結構

Oracle AI Database 會為表格空間建立資料檔,方法是配置指定的磁碟空間大小加上資料檔標頭的負荷。執行 Oracle AI Database 的作業系統會先清除檔案中的舊資訊與授權,再將其配置給資料庫。

資料檔標頭包含資料檔的相關描述資料,例如資料檔的大小與 checkpoint SCN 。每個標頭都包含一個絕對檔案編號,可唯一識別資料庫內的資料檔,以及一個相對檔案編號 (可唯一識別表格空間內的資料檔)。

Oracle AI Database 首次建立資料檔時,配置的磁碟空間會格式化,但不會包含使用者資料。不過,資料庫會保留空間,以便保留未來關聯表格空間區段的資料。當資料在表格空間中成長時,Oracle AI Database 會使用資料檔中的可用空間來配置區段的擴充區塊。

下圖說明資料檔中不同類型的空間。您可以使用擴充區塊,這表示它們包含區段資料或自由,這表示它們可以重複使用。一段時間後,更新和刪除表格空間內的物件可以建立空白空間的口袋,讓新資料無法單獨重複使用。此類型的空白空間稱為分散的可用空間。

圖 6:資料檔中的空間

cncpt273.gif 圖解描述

另請參閱:Oracle AI Database Administrator's Guide,瞭解如何檢視資料檔資訊

控制檔總覽

資料庫控制檔是小型的二進位檔案,僅與一個 CDB 相關聯。

每個 CDB 都有一個唯一的控制檔,但允許多個相同的複本。PDB 沒有個別的控制檔。

控制檔的使用

Oracle AI Database 使用控制檔來尋找資料庫檔案,並管理一般資料庫的狀態。

控制檔包含下列資訊:

控制檔可作為下列用途:

在資料庫使用期間,Oracle AI Database 會持續讀取和寫入控制檔,而且每當資料庫開啟時都必須可供寫入。例如,復原資料庫涉及從控制檔讀取資料庫中包含之所有資料檔的名稱。其他作業 (例如新增資料檔),則更新控制檔中儲存的資訊。

另請參閱:

多個控制檔

Oracle AI Database 可讓多個相同的控制檔同時開啟,並寫入同一個資料庫。透過在不同的磁碟上多工化控制檔,資料庫就可以達到備援的目的,進而避免發生單點失敗。注意:Oracle 建議您在不同的磁碟上維護多個控制檔複本。

如果控制檔變成無法使用,則資料庫執行處理會在嘗試存取損毀的控制檔時失敗。當有其他目前的控制檔複本時,您可以重新掛載資料庫並開啟該資料庫,而不需要媒體復原。不過,如果遺失資料庫的所有控制檔,資料庫執行處理就會失敗,而且需要進行媒體復原。如果因為目前的複本無法使用,而必須使用控制檔的舊版備份,媒體復原就無法直接執行。

另請參閱:

控制檔結構

關於資料庫的資訊儲存在控制檔的不同區段中。每個區段都是一組關於資料庫層面的記錄。

例如,控制檔中的一個區段會追蹤資料檔並包含一組記錄,每個資料檔各有一個記錄。每個區段都儲存在多個邏輯控制檔區塊中。記錄可以跨區段內的區塊。

控制檔包含下列類型的記錄:

您可以查詢動態效能視觀表 (亦稱為 V$ 視觀表),以檢視儲存在控制檔中的資訊。例如,您可以查詢 V$DATABASE 以取得資料庫名稱和 DBID。不過,只有資料庫能夠修改控制檔中的資訊。

讀取和寫入控制檔區塊與讀取和寫入資料區塊不同。對於控制檔,Oracle AI Database 會直接從磁碟讀取和寫入程式整體區域 (PGA)。每個處理作業都會為控制檔區塊配置特定數量的 PGA 記憶體。

另請參閱:

線上重做日誌總覽

要復原的最重要結構是線上重做日誌,它是由兩個或兩個以上的預先配置檔案所組成,用來在發生變更時儲存資料庫的變更。線上重做日誌會記錄對資料檔的變更。

使用線上重做日誌

資料庫會維護線上重做日誌檔來防止資料遺失。尤其是在執行處理失敗後,線上重做日誌檔可讓 Oracle AI Database 復原尚未寫入資料檔的已確認資料。

伺服器處理作業會將每一筆交易同步地寫入重做日誌緩衝區,LGWR 處理作業接著會寫入至線上重做日誌。線上重做日誌的內容包括未確認的交易,以及綱要與物件管理敘述句。

當資料庫對還原區段進行變更時,資料庫也會將這些變更寫入線上重做日誌。因此,線上重做日誌一律會包含永久物件的還原資料。您可以設定資料庫將暫時物件的所有還原資料儲存在暫時的還原區段中,這樣可以節省空間並提升效能,或者讓資料庫將永久和暫時還原資料儲存在線上重做日誌中。

Oracle AI Database 僅使用線上重做日誌進行復原。不過,管理員可以在 Oracle LogMiner 公用程式中透過 SQL 介面查詢線上重做日誌檔。重做日誌檔是一些有用的資料庫活動歷史資訊來源。

另請參閱:

Oracle AI Database 如何寫入線上重做日誌

資料庫執行處理的線上重做日誌稱為重做繫線。

在單一執行處理組態中,只有一個執行處理會存取資料庫,因此只會顯示一個重做繫線。不過,在 Oracle Real Application Clusters (Oracle RAC) 組態中,多個執行處理會同時存取資料庫,每個執行處理都有自己的重做繫線。每個執行處理的個別重做繫線可避免競爭單一組的線上重做日誌檔。

線上重做日誌是由兩個或兩個以上的線上重做日誌檔所組成。Oracle AI Database 至少需要兩個檔案,以保證在清除或封存其他檔案時,一律可以寫入一個檔案。

另請參閱:Oracle Real Application Clusters Administration and Deployment Guide,瞭解 Oracle RAC 中的線上重做日誌群組

線上重做日誌切換

Oracle AI Database 一次只使用一個線上重做日誌檔,用於儲存從重做日誌緩衝區寫入的記錄。

日誌寫入器處理作業 (LGWR) 處理作業主動寫入的線上重做日誌檔稱為目前的線上重做日誌檔。

當資料庫停止寫入一個線上重做日誌檔並開始寫入另一個線上重做日誌檔時,就會發生日誌切換。一般而言,當目前的線上重做日誌檔已滿且必須繼續寫入時,就會發生切換。不過,您可以設定定期發生日誌切換,不管目前的線上重做日誌檔是否已填滿,然後手動強制進行日誌切換。

日誌寫入器以循環方式寫入線上重做日誌檔。當日誌寫入器填入最後一個可用的線上重做日誌檔時,處理作業會寫入第一個日誌檔,並重新啟動週期。圖 14-7 說明重做日誌的循環寫入。

圖 7:線上重做日誌檔的重複使用

admin054.gif 圖解描述

圖 14-7 中的數字顯示 LGWR 寫入每個線上重做日誌檔的順序。當日誌切換和日誌寫入器開始寫入時,資料庫會指派一個新的日誌序號給每個檔案。當資料庫重複使用線上重做日誌檔時,此檔案會接收下一個可用的日誌序號。

視存檔模式而定,已填入的線上重做日誌檔可以重複使用:

在某些情況下,記錄寫入器可能會阻止重複使用現有的線上重做日誌檔。執行處理復原需要有作用中線上重做日誌檔,執行處理復原不需要有非作用中線上重做日誌檔。此外,有可能正在清除線上重做日誌檔。

另請參閱:

線上重做日誌檔的多個複本

Oracle AI Database 可在不同位置自動維護兩個或兩個以上的相同線上重做日誌複本。

線上重做日誌群組是由線上重做日誌檔與其冗餘複本所組成。每個相同的複本都是線上重做日誌群組的成員。每個群組都是由數字所定義,例如群組 1、群組 2 等等。

維護線上重做日誌群組的多個成員,可避免重做日誌的遺失。理想的方式是,成員的位置應該位於不同的磁碟上,因此某個磁碟的失敗並不會造成整個線上重做日誌的遺失。

在圖 14-8 中,A_LOG1 和 B_LOG1 是群組 1 的相同成員,而 A_LOG2 和 B_LOG2 是群組 2 的相同成員。群組中的每個成員的大小必須相同。LGWR 會並行寫入群組 1 (成員 A_LOG1 和 B_LOG1),然後同時寫入群組 2 (成員 A_LOG2 和 B_LOG2),接著寫入群組 1,依此類推。LGWR 一律不會同時寫入至不同群組的成員。

圖 8:多份線上重做日誌檔複本

cncpt270.gif 圖解描述

備註:Oracle 建議您多工處理線上重做日誌。如果需要復原,遺失的日誌檔可能會災難性。當您對線上重做日誌進行多工處理時,資料庫必須增加其所執行之 I/O 的數量。視您的系統而定,此額外 I/O 可能會影響整體資料庫效能。

另請參閱:

存檔的重做日誌檔

存檔重做日誌檔是線上重做日誌群組中已滿成員的複本。

存檔重做日誌檔不會被視為資料庫的一部分。而是由資料庫建立並寫入使用者指定位置的線上重做日誌檔,複本就是離線複本。

存檔重做日誌檔是備份與復原策略的重要部分。您可以使用存檔重做日誌檔來執行下列作業:

產生存檔重做日誌檔的作業稱為存檔。此為自動或手動作業。只有在資料庫處於 ARCHIVELOG 模式時才有可能。

存檔重做日誌檔包含重做項目與線上重做日誌群組之相同成員的日誌序號。在線上重做日誌檔的多個複本中,檔案 A_LOG1 和 B_LOG1 是群組 1 的相同成員。如果資料庫處於 ARCHIVELOG 模式,且已啟用自動存檔功能,則存檔器處理作業 (ARCn) 會將其中一個檔案存檔。如果 A_LOG1 已損毀,則程序可以封存 B_LOG1。存檔重做日誌包含從您啟用存檔功能開始,所存在之每個重做日誌群組的複本。

另請參閱:

線上重做日誌的結構

線上重做日誌檔包含重做記錄。

重做記錄是由一組變更向量所組成,每個向量都描述了對資料區塊所做的變更。例如,更新 employees 表格中的薪資會產生一個重做記錄,描述表格之資料區段區塊的變更、還原區段資料區塊,以及還原區段的交易表格。

重做記錄包含變更的所有相關描述資料,包括:

另請參閱:「資料區塊概要」