1.Oracle數據庫系統結構概述
Oracle數據庫由存放在磁盤上的數據庫(DB)和對磁盤上的數據庫進行管理的數據庫管理系統(DBMS)兩部分構成,分別對應着數據庫的存儲結構和軟件結構。
Oracle數據庫的存儲結構(Storage Structure)分為物理存儲結構和邏輯存儲結構兩種,分別描述了在操作系統中和數據庫系統內部數據的組織管理方式。其中,物理存儲結構表現為操作系統中一系列文件)邏輯存儲結構是對物理存儲結構的邏輯組織與管理。
Oracle數據庫的軟件結構,即Oracle實例(Instance),包括內存結構與后台進程結構兩部分。
具體關系如下圖所示:
用戶的所有操作都是通過實例完成的,首先在內存結構中進行,在一定條件下由數據庫的后台進程結構寫入數據庫的物理存儲結構做永久保存。
2.Oracle數據庫存儲結構
oracle 數據庫的存儲結構分為物理存儲結構和邏輯存儲結構兩種。物理存儲結構主要用於描述oracle 數據庫外部數據的存儲,即在操作系統層面中如何組織和管理數據,與具體的操作系統有關。邏輯存儲結構主要描述oracle 數據庫內部數據的組織和管理方式,即在數據庫管理系統的層面中如何組織和管理數據,與操作系統沒有關系。
物理存儲結構具體表現為一系列的操作系統文件,是可見的;而邏輯存儲結構時候物理存儲結構的抽象體現,是不可見的,可以通過查詢數據庫數據字典了解邏輯結構信息。
物理存儲結構主要指的是存儲在磁盤上的數據文件、控制文件、重做日志文件、歸檔文件等。 邏輯存儲結構包括表空間、段、區和塊4種。
oracle 數據庫的物理存儲結構與邏輯存儲結構既相互獨立又相互聯系,如下圖:
從物理角度上看,數據庫由數據文件構成,數據存儲在數據文件中,從邏輯角度上看,數據庫是由表空間構成的,數據存儲在表空間中。一個表空間包含一個或者多個數據文件,但一個數據文件只能屬於一個表空間。
物理存儲結構
控制文件
(1)控制文件是ORALCE數據庫中最重要的物理文件,用於描述整個數據庫的結構信息。
控制文件是一個二進制文件,由ORACLE進程讀/寫,在數據庫運行於維護階段,數據文件及重做日志文件的結構變化信息都記錄在控制文件中。
Oracle建議最少有兩個控制文件,通過多路鏡像技術,將其分散到不同的物理磁盤中。
(2)一個控制文件包括:
DB名稱和標識
DB創建的時間
表空間名稱
數據文件和重做日志文件的名稱和位置
當前重做日志文件的序號
檢查點的信息
回退段的開始和結束
重做日志的歸檔信息
備份信息
(3)V$CONTROLFILE: 列出了與實例有關的所有控制文件的名稱和狀態
SHOW PARAMETERS CONTROL_FILES: 列出控制文件的名稱、狀態和位置
數據文件
(1)數據文件用於存儲數據庫中的所有數據,一個數據庫由多個數據文件構成。
(2) 與數據文件相關的數據字典主要有:
v$datafile
dba_data_files
(3). 數據文件默認情況下都是以.dbf結尾的文件,默認情況下與控制文件同一個目錄.
重做日志文件
(1)重做日志文件用於記錄對數據庫的變更操作,在用戶對數據庫的操作出現故障時,可使用該文件進行恢復,以保證數據庫系統的安全.
(2)重做日志文件是成組使用的,即日志文件組,每個數據庫應至少有兩個重做日志文件組,采用循環寫的方式工作。每個組可以有一個或多個日志文件,同一組日志文件可進行鏡像,且鏡像的日志文件應存儲在不同的物理磁盤中.
(3)查看重做日志文件信息
V$log:查詢重做日志文件組的基本信息。
V$logfile:查詢重做日志文件的信息。
歸檔日志文件
1、數據庫運行模式
(1) 非歸檔模式noarchivelog
(2) 歸檔模式archivelog
Oracle數據庫邏輯結構
Oracle的邏輯結構是一種層次結構。主要由:表空間、段、區和數據塊等概念組成。邏輯結構是面向用戶的,用戶使用Oracle開發應用程序使用的就是邏輯結構。數據庫存儲層次結構及其構成關系,結構對象也從數據塊到表空間形成了不同層次的粒度關系。
一個或多個連續的oracle 數據塊構成區,一個或多個區構成段,一個或多個段構成表空間,所有表空間構成數據庫。
數據塊(Data Block)
數據庫塊大小是在Oracle創建數據庫或表空間時設定的,數據塊的大小在創建后是不可以修改的。
數據塊是Oracle讀寫數據的基本單位,也是輸入/輸出操作的最小單位.
數據塊的大小必須是服務器操作系統塊大小的整數倍。
(盤)區(Extent)
1.概念
也稱為數據區,是物理上一組連續的數據塊構成的邏輯存儲單元。
盤區是段中數據增長的基本單位,即是ORACLE存儲空間分配與回收的最小單位。
一個或多個盤區組成一個段,當一個段的空間被使用完后,系統將自動為該段分配一個新的盤區。
一個盤區不能跨越多個文件,因為它必須包含連續的數據塊
數據段中,盤區的個數受盤區控制參數控制
2.區的管理
(1)區的分配
表空間的本地管理(LOCAL)方式下,區分配方式:
統一大小:UNIFORM,指定段的初始區和后續區具有統一的大小。
自動分配:AUTOALLOCATE,由Oracle系統決定后續區的大小,用戶不能干預分配。
表空間的字典管理(DICTIONARY)方式下,區的分配方式: 使用STORAGE子句設置存儲參數。
(2)區的回收
通常不論區中的數據塊是否被使用,分配給段的區會一直保留在段中,只有當段所屬的對象被刪除時,段中所有的區才會被回收。
段(Segment)
段是由一個或多個連續或不連續的盤區構成的邏輯存儲單元,用來保存特定對象,如表、索引、回滾數據、臨時數據等。段是表空間的組織單位。
(1)段內包含的數據區可以不連續,並且可以跨越多個文件。
(2)段類型
數據段:用來存儲表或簇的數據,普通表數據段、分區表數據段、簇數據段
索引段:存放索引數據(ROWID、索引鍵值)
臨時段:存儲臨時數據
回滾(退)段:存儲數據庫的回滾信息
表空間(Tablespace)
(1)表空間概念
表空間是ORACLE數據庫最大的邏輯存儲單元,一個表空間包含一個或多個數據文件,一個數據文件只能從屬於一個表空間,數據庫對象就是存儲在表空間對應的一個或多個數據文件中。
(2)表空間類型
在Oracle11g中有以下幾種比較特殊的表空間:
⑴SYSTEM表空間(System Tablespace):系統表空間
⑵SYSAUX表空間(SYSAUX Tablespace):系統輔助表空間
⑶TEMP表空間(Temp Tablespace):臨時表空間
⑷撤消UNDOBS1表空間(Undo Tablespace):撤消表空間
(5)USERS表空間:普通用戶表空間
(6)示例EXAMPLE 表空間:示例表空間
(3)表空間的存儲管理方式
*本地管理方式
本地管理(Local)的表空間:
創建本地管理方式的表空間時,可指定區的分配方式:
自動方式:AUTOALLOCATE (默認方式)
統一方式:UNIFORM
*字典管理方式
(4)查看表空間信息
V$tablespace:查詢數據庫下表空間信息。
Dba_tablespaces:查詢數據庫下表空間信息。