邏輯儲存結構
在作業系統中無法找到邏輯儲存結構所對應的檔案,但通過查詢Oracle資料庫的資料字典,可以找到邏輯儲存結構的描述。
邏輯儲存結構包括資料表空間,段,區,塊。簡單的說,邏輯儲存結構之間的關係是:多個塊組成區,多個區組成段,多個段組成資料表空間,多個資料表空間組成邏輯資料庫。
一個區只能在一個資料檔案中,一個段中的各個區可以分別在多個資料檔案中。組成區的塊是連續的。由於邏輯的塊對應磁碟空間中某個固定大小的尺寸(一般為作業系統資料庫的整數倍),所以邏輯儲存結構也是有大小的。
一、 資料表空間(tablespace)
下面的表格顯示的是oracle11g自動建立的資料表空間名稱及其說明
|
名稱 |
分類 |
說明 |
|
EXAMPLE |
非系統資料表空間 |
樣本資料表空間,存放樣本資料庫的方案對象資訊及其培訓資料 |
|
SYSAUX |
系統資料表空間 |
輔助系統資料表空間,用於減少system資料表空間的負荷,提高系統的工作效率。是oracle 10g新增加的資料表空間 |
|
SYSTEM |
系統資料表空間 |
系統資料表空間,存放關於資料表空間名稱、控制檔案、資料檔案等管理資訊,存放著方案對象(如表,索引,同義字,序列)的定義資訊,存放著所有pl/sql 程式(如過程,函數,包,觸發器)的原始碼,是oracle資料庫中最重要的資料表空間。它屬於SYS和SYSTEM方案,僅被SYS和SYSTEM或其他具有足夠許可權的使用者使用。即使是SYS 和SYSTEM使用者也不能刪除或重新命名該空間。他是使用者的預設資料表空間,即當使用者在建立一個對象時,如果沒有指定特定的資料表空間,該對象的資料也會被儲存在SYSTEM資料表空間中。 |
|
TEMP |
系統資料表空間 |
暫存資料表空間,存放暫存資料表和臨時資料,用於排序。每個資料庫都應該有一個(或建立一個)暫存資料表空間,以便在建立使用者時將其分配給使用者,否則就會將TEMP資料表空間作為暫存資料表空間。 |
|
UNDOTBS1 |
非系統資料表空間 |
重做資料表空間,存放資料庫的有關重做的相關資訊和資料 |
|
USERS |
非系統資料表空間 |
使用者資料表空間,存放永久性的使用者物件的資料和私人資訊,因此也被稱為資料資料表空間。每個資料庫都應該有一個(或建立一個)使用者資料表空間,以便在建立使用者時將其分配給使用者,否則將會使用SYSTEM資料表空間來儲存資料,而這種做法是不好的。一般講,系統使用者使用SYSTEM資料表空間,而非系統使用者使用USERS資料表空間 |
二、 段(segment)(這塊兒沒有詳細記錄)
段用於儲存資料表空間中某一種特定的、具有隔離儲存區 (Isolated Storage)結構的資料庫物件的資料,它有一個或多個連續的區組成。當建立表、索引、簇等對象時,oracle就會為這些對象分配儲存空間(即段),以便儲存它們的資料。按照段中所儲存的資料的特徵、用途不同,可以分為以下幾種:
|
段類型 |
名稱 |
段類型 |
名稱 |
|
Index partition |
索引分割區段 |
Deferred rollback |
延遲回退段 |
|
Table partition |
表分區段 |
Undo |
撤銷段(還原段) |
|
Table |
表段(資料區段) |
Temporary |
臨時段 |
|
Cluster |
簇段 |
Cache |
快取段 |
|
Index |
索引段 |
Lob |
二進位大對象段 |
|
Rollback |
回退段 |
Lobindex |
二進位大對象索引段 |
段隨著儲存資料的增加而逐漸層大。段的增大過程是通過增加區得個數而實現的(每次增加一個區)。每個區的大小事塊得整數倍。
三、 區(extent)
區是由物理上連續存放的塊所組成的。區 是oracle儲存分配的最小單位。一個或多個塊組成區,一個或多個區組成段。一個區只能屬於一個資料檔案。
當在資料庫中建立帶有實際儲存結構的方案對象時(如表、索引),oracle將為方案對象分配若干個區(視該方案的初始大小而定),以便組成一個對應的段,來為該方案對象提供初始的儲存空間。當段中已指派的區都寫滿,oracle就要在該方案對象所在的資料表空間中為該段分配下一個新的空白區,以便容納更多的資料。
四、 塊(block)
塊是最小的資料管理單位,即oracle的所有儲存的i/o操作都是以塊為單位的。相對應的,作業系統執行i/o操作的最小單位是作業系統塊。塊得大小是作業系統塊得大小的整數倍。
塊得大小是一個資料表空間的屬性。SYSTEM和SYSAUX資料表空間具有相同的、標準的塊大小,這個大小是在建立資料庫時(會同時建立這兩個資料表空間)由DB_BLOCK_SIZE初始化參數指定的,但在建立資料庫之後這個參數值不能改變。
實體儲存體結構
實體儲存體結構是實際的資料存放區單元,對應於作業系統檔案,比邏輯儲存結構更易理解。oracle資料庫就是由駐留在伺服器的磁碟上的這些作業系統檔案組成的。這些檔案有控制檔案,資料檔案和重做記錄檔。
與oracle資料庫有關,但從技術上說不屬於oracle資料庫的附屬檔案有密碼檔案(PWD.ORA),參數檔案(SPFILE.ORA),歸檔重做記錄檔。
實體儲存體結構與邏輯儲存結構之間在操作上的一個區別是,邏輯儲存結構只有建立、刪除的操作,而實體儲存體結構除了建立、刪除之外,還有一個重要的、將其移動到另外一個位置(包括改變其名稱)的操作,這樣就可以實現多工(控制檔案、中作記錄檔)和將它們安排到不同磁碟位置、更換名稱的功能了。
一、 控制檔案
控制檔案是一個很小的(通常是資料庫中最小的)檔案,大小一般在1~5M左右,為二進位檔案。但它是資料庫中的關鍵性檔案,它對資料庫的成功啟動和正常運行都是至關重要的,因為它儲存了在其他地方無法獲得的關鍵資訊,這些資訊包括:
1、資料庫的名稱
2、資料檔案和重做記錄檔的名稱、位置、聯機\離線狀態和大小
3、發生磁碟故障或使用者錯誤時,用於恢複資料庫的資訊(記錄序號,檢查點)
在資料庫的運行過程中,每當出現資料庫檢查點或修改資料庫的結構之後,oracle(只能有oracle本身)就會修改控制檔案的內容。DBA可以通過OEM工具修改控制檔案中的部分內容,但DBA和使用者都不應該認為的修改控制檔案中的內容,否則會破壞控制檔案。
二、 資料檔案
資料檔案是實際儲存插入到資料庫中的實際資料的作業系統檔案。資料以一種oracle特有的格式被寫入到資料檔案,其他程式無法讀取資料檔案中的資料。
資料檔案的大小與他們所儲存的資料量的大小直接相關。寫入資料後會由於自動分配新區而增大,但刪除資料卻不會使其減少,而只能使得其中有更多的空閑區。
除了SYSTEM資料表空間之外,任何錶空間都可以有聯機狀態切換為離線狀態。當資料表空間進入離線狀態時,組成該資料表空間的資料檔案也就進入離線狀態了。可以將資料表空間的某一個資料檔案單獨的設定為離線狀態,以便進行資料庫的備份或恢複,否則是不能備份的。
三、 重做記錄檔
當使用者對資料庫進行修改的時候,實際上是先修改記憶體中的資料,過一段時間後,再集中將被村中的修改結果成批的寫入到上面的資料檔案中。oracle採取這樣的做法,主要是出於效能上的考慮,因為針對資料操作而言,記憶體的速度比硬碟的速度要快成千上萬倍。
oracle利用“(聯機)重做記錄檔”隨時儲存修改結果,即oracle隨時將記憶體中的修改結果儲存到“重做記錄檔”中。“隨時”表示在將修改結果寫入到資料檔案之前,可能已經分幾次寫入到“重做記錄檔”。因此,即使發生故障導致資料庫崩潰,oracle也可以利用重做記錄檔中的資訊來恢複丟失的資料。只要某項操作的重做資訊沒有丟失,就可以利用這些重做資訊來重現該操作。
oracle是以迴圈方式來使用重做記錄檔的,所以每個資料庫至少需要兩個重做記錄檔。當第一個重做記錄檔被寫滿後,後台進程LGWR(日誌寫進程)開始寫入第二個重做記錄檔;當第二個重做記錄檔被寫滿後,又始寫入第二個重做記錄檔,以此類推。
四、 其他檔案(這塊兒沒仔細看)
其他檔案包括參數檔案、口令檔案、歸檔重做記錄檔、預警和追蹤檔案等。