1. 程式人生 > >Oracle 體系結構chapter2

Oracle 體系結構chapter2

轉載 share 通過 生存 cnblogs 恢復 啟動 數據表 默認

前言:Oracle 體系結構其實就是指oracle 服務器的體系結構,數據庫服務器主要由三個部分組成 管理數據庫的各種軟件工具(sqlplus,OEM等),實例(一組oracle 後臺進程以及服務器中分配的共享內存區域),數據庫(是基於磁盤的各種物理文件的集合,如數據文件,控制文件,日誌文件,參數文件,歸檔日誌文件實例與數據庫之間的關系實例用於管理和控制數據庫,數據庫為實例提供數據,一個數據庫可以被多個實例轉載和打開,而一個實例在其生存周期內只能轉載和打開一個數據庫

1.數據庫

1.1 數據庫從邏輯角度分析數據庫構成--表空間、段、數據區、數據塊,面向用戶的劃分方式

表空間:數據庫最大的邏輯 劃分區域,可存放數據表,索引,回滾段等數據對象,任何數據對象在創建時都必須有指定的表空間 表空間與數據文件的關系

是一個表空間由一個或多個數據文件組成一個數據文件只屬於一個表空間,oracle數據的存儲空間在邏輯上表現為表空間,在物理上表現為數據文件(表空間相當於文件夾)

分類:system表空間(存放系統內部表和數據字典數據)

SYAAUX 表空間,系統表空間的輔助表空間,降低system表空間的負荷,存放字典以外的數據對象

UNDO 表空間,存放撤銷信息

USER 表空間:存放用於創建的數據對象,比如SCOTT,一般不同的應用系統的數據應該存放在不同的表空間,而不同的表空間應該存放在不同的磁盤上,從而減少I/O 沖突,提更應用系統的操作系能。

段:它不是存儲空間的分配單位,但是一個獨立的額邏輯存儲結構,用於存儲表,索引等,一個數據段只屬於一個特定的數據對象,段內的數據區可以不連續,並且跨越多個文件,

數據區: 數據區是由連續的數據塊組成的 ,數據區是存儲分配的最小單位,分配存儲空間是以數據區為單位的,使用數據區的目的是為了保存特定數據類型的數據,一個oracle對象包含至少一個數據區

數據塊:邏輯存儲結構中最小的邏輯單位,也是執行數據庫輸入輸出操作的最小存儲單位。數據塊有塊頭,表目錄,行目錄組成塊頭,存放整個數據塊的引導信息,空余空間是未用信息用於數據的插入和更新,行數據存放表數據和索引

1.2 物理存儲結構

邏輯上數據是存儲在表空間中,而物理上存儲在表空間所包含的物理文件中,物理存儲結構是指由多種物理文件組成,主要有數據文件,控制文件,重做日誌文件,歸檔文件,參數文件,口令文件和警告日誌文件

數據文件

在表空間中創建數據對象時,用戶無法決定使用哪個數據文件進行存儲,有oracle系統負責分配物理存儲空間。一個數據對象可以全部存儲在一個數據文件中,也可以分布存儲在同一個表空間的多個數據文件中。讀數據是oracle系統將數據文件中的數據存儲在高速 緩沖區,若用戶請求數據不再高速緩沖區,則要將數據文件讀取到緩沖區,數據更新時不會立即存儲在數據文件中,而是由後臺進程DBWR 決定何時寫入文件,減少磁盤的I/O操作,提高系統的響應性能。(系統數據文件,撤銷數據文件,用戶數據文件)

控制文件

控制文件是一個二進制文件,記錄了數據庫的物理結構,主要包含數據庫名,數據庫文件與日誌文件的名字和位置,數據庫建立的日期,系統更改號,檢查點,歸檔狀態等信息。它一般在oracle系統安裝時或者創建數據庫時自動創建,控制文件存放的位置有服務器參數文件spfileorcl.ora 的control_files 參數值來決定。oracle 實例在啟動時,首先訪問的是初始化參數文件spfile,然後為系統全局區(SGA)分配內存,這時實例處於安裝狀態,控制文件處於打開狀態,此時oracle會自動讀取控制文件,若正常則讀取所有數據文件和日誌文件供用戶訪問,若控制文件信息錯誤,將無法正常啟動實例。為防止控制文件損壞,系統會有兩到三個相同的控制文件記錄相同信息。

日誌文件--重做日誌和歸檔日誌

日誌文件的功能是記錄對數據所做的修改,如果數據出現問題,可以通過日誌文件對得到的原始數據進行修改。

重做日誌文件:當用戶在提交commit命令時,數據庫首先將操作記錄在日誌文件中,所以日誌文件記錄了數據庫所發生的所有更改信息。若將表空間設置為NOLOGGING時,就不會產生日誌信息,但是這樣破壞了日誌的完整性,日誌線程由若幹個日誌組構成,每個日誌組由一個或多個日誌文件構成。日誌信息開始是存放在重做日誌緩沖區的,當信息滿三分之一時,由LGWR 進程寫入日誌文件中。

歸檔日誌文件:當所有日誌文件都被寫入一遍後,進程會再次轉向第一個日誌組,為避免日誌信息被覆蓋,需要進行歸檔處理解決問題。在進行歸檔操作時,日誌寫入進程(ARCH)需要歸檔完成之後才能覆寫日誌,延遲了系統響應時間,而且歸檔占用了大量磁盤空間,影響整體性能,所以oracle 默認不采用歸檔模式。

服務器參數文件(SPFILE):

SPFILE是二進制文件,用來記錄數據庫的基本參數信息(比如數據庫名,控制文件所在路徑,日誌緩沖區的大小,數據塊的大小等),啟動數據庫之前,系統會讀取SPFILE 初始化參數配置和啟動實例,SPFILE 由系統自動創建名為SPFILEsid.ora ,sid 為所創建的數據庫實例名,SPFILE 由系統維護,盡可能不直接對文件進行編輯,但可通過企業管理器(OEM)或 ALTER SYSTEM 命令修改,這樣參數會自動寫進文件。

密碼文件:密碼文件用於驗證sysdba 權限的二進制文件,密碼文件命名格式一般為PWD<sid> ,創建密碼文件後,可以使用remote_login_passwordfile 來控制密碼文件的使用狀態:NONE 表示只需通過操作系統的驗證,SHARED 表示多個數據庫實例都可以采用此密碼驗證,EXCLUSIVE 表示只有一個數據庫實例可以用此密碼文件驗證

警告文件

警告文件時存儲在oracle 系統的文本文件(alter_orcl.log)用來記錄系統的運行信息和錯誤消息

跟蹤文件

跟蹤文件包括後臺進程跟蹤文件和用戶進程跟蹤文件,文件命名格式一般為<sid>_<processname>_<spid>.trc

2.實例

實例是一組oracle後臺和服務器中的分配的共享內存區域。通過實例來訪問和控制磁盤中的數據文件,當用戶連接數據庫時其實連接的是數據庫實例,用數據庫服務器管理和操作數據庫時,

其實是實例作為中間樞紐,負責數據庫和數據庫服務器的通行。

2.1系統全局區(SGA 共享內存區域): SGA 中的資源可以被多個用戶使用,SGA主要由高速緩沖區,共享池,重做日誌緩沖區,java池和大型池等內存結構組成。SGA隨著數據庫的實例啟動而加載到內存中,當數據庫關閉時,SGA區域就消失了

2.1.1高速數據緩沖區:一般存放最近使用的數據,分為三部分 臟數據區(已被修改,等待刪除或寫進數據文件的數據 ),空閑區(不包含任何數據),保留區(正在被用戶使用或者被明確保留下來被用來做將來使用的數據)

2.1.2 重做日誌緩沖區:用來存放對數據庫操作時所產生的日誌信息,當檢查點發生或重做日誌緩沖區中信息達到一定峰值時,有LGWR寫入到重做日誌文件中。所以較大的重做日誌緩沖區能減少對重做日誌文件的I/O讀寫次數,對數據的整體性能有一定影響。

2.1.3共享池

共享池是SGA保留的內存區域,用於緩存SQL語句,PL/SQL語句,數據字典,資源鎖、字符集及其他控制結構等,共享池包含庫高速緩沖區(SQL..)和字典高速緩沖區(數據字典..)

2.1.4 大型池

大興池不是SGA的必須內存結構,實例需要大型池是用來減輕共享池的訪問壓力,比如,數據備份或恢復時或仿真異步I/o功能時,作為I/o 緩沖區使用。執行大量排序操作時,並行查詢時

2.1.5 流池

用於數據庫之間的信息共享

2.1.6 java 池

給java虛擬機使用的內存區域,支持在數據庫中運行java 程序包

2.1.7後臺進程

後臺進程是實例的重要組成部分。其中SMON(系統監控進程),PMOM(進程監控進程),DBWR(數據寫入程序),CKPT(檢查點進程) 這5個後臺進程必須正常啟動,否則將導致數據庫實例的崩潰。其他還有LGWR(日誌寫入進程),ARCH(歸檔進程),,LCKN(鎖定進程),RECO(恢復進程),DNNN(調度進程),SNNP(快照進程)

3.管理數據庫的各種軟件-- 前臺進程

3.1 程序全局區(PGA)(非共享內存區域)

程序全局區也可稱做用戶進程全局區,他的內存區是私有的,一個服務器進程,只能訪問屬於它自己的那部分PGA資源,各服務器資源總和即為實例的PGA 大小。

前臺進程:用戶進程(能夠產生或執行SQL語句的應用程序,如SQL*Plus等,會話是指用戶進程和實例實現連接後形成的交互方式,一般用戶發出請求,數據庫實例為用戶返回響應消息)

服務器進程(處理解析會話過程中用戶向數據庫實例發出的SQL語句或SQL*Plus 命令,對於專用服務器模式,客戶端進程和Oracle服務器進程是一一對應的,而在共享服務器模式下,一個Oracle服務器進程可能同時服務多個客戶端進程)

常用數據字典 引用http://www.cnblogs.com/liuguosong/p/5808642.html

Oracle 體系結構chapter2