Oracle
資料庫的體繫結構包括四個方面:
資料庫的物理結構、邏輯結構、記憶體結構及進程。
1. 物理結構
物理
資料庫結構是由構成
資料庫的作業系統檔案所決定,Oracle
資料庫檔案包括:
資料檔案(Data File)
資料檔案用來儲存
資料庫中的全部資料,例如
資料庫表中的資料和索引資料.通常以為*.dbf格式,例如:userCIMS.dbf 。
記錄檔(Redo Log File)
記錄檔用於記錄
資料庫所做的全部變更(如增加、刪除、修改)、以便在系統發生故障時,用它對
資料庫進行恢複。名字通常為Log*.dbf格式,如:Log1CIMS.dbf,Log2CIMS.dbf 。
www.bitsCN.net中國網管部落格
控制檔案(Control File)
每個Oracle資料庫都有相應的控制檔案,它們是較小的二進位檔案,用於記錄資料庫的物理結構,如:資料庫名、資料庫的資料檔案和記錄檔的名字和位置等資訊。用於開啟、存取資料庫。名字通常為Ctrl*ctl 格式,如Ctrl1CIMS.ctl。
設定檔
設定檔記錄Oracle資料庫運行時的一些重要參數,如:資料區塊的大小,記憶體結構的配置等。名字通常為init*.ora 格式,如:initCIMS.ora 。
2 邏輯結構
Oracle資料庫的邏輯結構描述了資料庫從邏輯上如何來儲存資料庫中的資料。邏輯結構包括資料表空間、段、區、資料區塊和模式對象。資料庫的邏輯結構將支配一個資料庫如何使用系統的物理空間.模式對象及其之間的聯絡則描述了關係資料庫之間的設計.
play.bitsCN.com累了嗎玩一下吧
一個資料庫從邏輯上說是由一個或多個資料表空間所組成,資料表空間是資料庫中物理編組的資料倉儲,每一個資料表空間是由段(segment)組成,一個段是由一組區(extent)所組成,一個區是由一組連續的資料庫塊(database block)組成,而一個資料庫塊對應硬碟上的一個或多個物理塊。一個資料表空間存放一個或多個資料庫的物理檔案(即資料檔案).一個資料庫中的資料被邏輯地儲存在資料表空間上。
資料表空間(tablespace)
Oracle資料庫被劃分為一個或多個稱為資料表空間的邏輯結構,它包括兩類資料表空間,System資料表空間和非System資料表空間,其中,System資料表空間是安裝資料庫時自動建立的,它包含資料庫的全部資料字典,預存程序、包、函數和觸發器的定義以及系統復原段。除此之外,還能包含使用者資料。。 bbs.bitsCN.com國內最早的網管論壇
一個資料表空間包含許多段,每個段有一些可以不連續的區組成,每個區由一組連續的資料區塊組成,資料區塊是資料庫進行操作的最小單位。
每個資料表空間對應一個或多個資料檔案,每個資料檔案只能屬於一個資料表空間。
資料庫塊(database block)
資料庫塊也稱邏輯塊或ORACLE塊,它對應磁碟上一個或多個物理塊,它的大小由初始化參數db-block-size(在檔案init.ora中)決定,典型的大小是2k。Pckfree 和pctused 兩個參數用來最佳化資料區塊空間的使用。
區(extent)
區是由一組連續的資料區塊所組成的資料庫儲存空間分配的邏輯單位。
段(segment)
段是一個或多個不連續的區的集合,它包括一個資料表空間內特定邏輯結構的所有資料,段不能跨資料表空間存放。Oracle資料庫包括資料區段、索引段、臨時段、復原段等。
模式對象(schema object)
需要什麼來搜一搜吧so.bitsCN.com
Oracle資料庫的模式對象包括表、視圖、序列、同意詞、索引、觸發器、儲存.過程等,關於它們將重點在後面章節介紹。
3.Oracle Server系統進程與記憶體結構
當在電腦伺服器上啟動Oracle資料庫後,稱伺服器上啟動了一個Oracle執行個體(Instance)。ORACLE 執行個體(Instance)是存取和控制資料庫的軟體機制,它包含系統全域區(SGA)和ORACLE進程兩部分。SGA是系統為執行個體分配的一組共用記憶體緩衝區,用於存放資料庫執行個體和控制資訊,以實現對資料庫中資料的管理和操作。
進程是作業系統中一個極為重要的概念。一個進程執行一組操作,完成一個特定的任務.對ORACLE資料庫管理系統來說,進程由使用者進程、伺服器處理序和後台進程所組成。
當使用者運行一個應用程式時,系統就為它建立一個使用者進程。伺服器處理序處理與之相連的使用者進程的請求,它與使用者進程相通訊,為相連的使用者進程的ORACLE請求服務。
so.bitsCN.com網管資料庫任你搜
為了提高系統效能,更好地實現多使用者功能,ORACLE還在系統後台啟動一些後台進程,用於資料庫資料操作。
系統進程的後台進程主要包括:
SMON 系統監控進程:(system monitor)負責完成自動執行個體恢複和回收分類(sort)資料表空間。
PMON 進程監控進程:(process monitor)實現使用者進程故障恢複、清理記憶體區和釋放該進程所需資源等。
DBWR 資料庫寫進程:資料庫緩衝區的管理進程。在它的管理下,資料庫緩衝區中總保持有一定數量的自由緩衝塊,以確保使用者進程總能找到供其使用的自由緩衝塊。
LGWR 記錄檔寫進程:是日誌緩衝區的管理進程,負責把日誌緩衝區中的日誌項寫入磁碟中的記錄檔上。每個執行個體只有一個LGWR進程。
ARCH 歸檔進程:(archiver process)把已經填滿的線上記錄檔拷貝到一個指定的存放裝置上。僅當記錄檔組開關(switch)出現時,才進行ARCH操作。ARCH不是必須的,而只有當自動歸檔可使用或者當手工歸檔請求時才發出。 feedom.net關注網管是我們的使命
RECO 恢複進程:是在具有分布式選項時使用的一個進程,主要用於解決引用分散式交易時所出現的故障。它只能在允許分散式交易的系統中出現。
LCKn 封鎖進程:用於並行伺服器系統,主要完成執行個體之間的封鎖。
記憶體結構(SGA)
SGA是Oracle為一個執行個體分配的一組共用記憶體緩衝區,它包含該執行個體的資料和控制資訊。SGA在執行個體啟動時被自動分配,當執行個體關閉時被收回。資料庫的所有資料操作都要通過SGA來進行。
SGA中記憶體根據存放資訊的不同,可以分為如下幾個地區:
Buffer Cache:存放資料庫中資料庫塊的拷貝。它是由一組緩衝塊所組成,這些緩衝塊為所有與該執行個體相連結的使用者進程所共用。緩衝塊的數目由初始化參數DB_BLOCK_BUFFERS確定,緩衝塊的大小由初始化參數DB_BLOCK_SIZE確定。大的資料區塊可提高查詢速度。它由DBWR操作。
b. 日誌緩衝區Redo Log Buffer:存放資料操作的更改資訊。它們以日誌項(redo entry)的形式存放在日誌緩衝區中。當需要進行資料庫恢複時,日誌項用於重構或復原對資料庫所做的變更。日誌緩衝區的大小由初始化參數LOG_BUFFER確定。大的日誌緩衝區可減少記錄檔I/O的次數。後台進程LGWR將日誌緩衝區中的資訊寫入磁碟的記錄檔中,可啟動ARCH後台進程進行日誌資訊歸檔。 feedom.net國內最早的網管網站
c. 共用池Shared Pool:包含用來處理的SQL語句資訊。它包含共用SQL區和資料字典儲存區。共用SQL區包含執行特定的SQL語句所用的資訊。資料字典區用於存放資料字典,它為所有使用者進程所共用。
Cursors:一些記憶體指標,執行待處理的SQL語句
其他資訊區:除了上述幾個資訊區外,還包括一些進程之間的通訊資訊(如封鎖資訊);在多線索伺服器配置下,還有一些程式全域區的資訊,請求隊列和響應隊列等。