Oracle 存儲結構
資料庫是存儲資料的容器,它的主要功能是儲存和共享資料。
oracle資料庫的存儲結構可以分為邏輯存儲結構和實體存儲結構,對于這兩種存儲結構,oracle是分别進行管理的。
- 邏輯存儲結構:oracle内部組織和管理資料的方式。
- 實體存儲結構:oracle外部(作業系統)組織和管理資料的方式。
接下來我們對上面的兩種結構進行詳細的介紹。
1.邏輯存儲結構
圖 1 Oracle 邏輯存儲結構
圖 2 Oracle 邏輯存儲結構
如圖 1和圖 2 所示,oracle在邏輯上将儲存的資料劃分為一個個小單元來進行存儲和維護,更高一級的邏輯存儲結構都是由這些基本的小單元組成的。
邏輯結構類型按照尺寸從小到大分可分為:塊(block)-->區(extent)-->段(segment)-->表空間(tablespace)
塊(Block)
Oracle用來管理存儲的最小單元,也是最小的邏輯存儲結構。Oracle資料庫在進行輸入輸出時,都是以塊為機關進行讀寫操作的。我們建議資料塊的尺寸為作業系統塊尺寸的整數倍(1、2、4等)。另外,塊的大小是在建立資料庫的時候決定的,之後不能修改。當然,oracle同時也支援不同的表空間擁有不同的資料塊尺寸。下面,我們對塊的結構進行一些介紹。
塊的頭部資訊區:
- 塊頭:包含塊的一般屬性資訊 如塊的實體位址、塊所屬的段的類型。
- 表目錄:如果塊中存儲的資料是表資料, 則在表目錄中儲存塊中所包含的表的相關資訊。
- 行目錄:行記錄的相關資訊 如ROWID。
-
塊的存儲區:主要包含空閑空間和已經使用的空間。Oracle主要是通過下面的兩個參數對這部分空間進行管理的:
* PCTFREE參數:指定塊中必須保留的最小空閑空間比例。當塊中的空閑存儲空間減少到PCTFREE所設定的比例後,Oracle将塊标記為不可用狀态,新的資料行将不能被加入到這個塊。
* PCTUSED參數:制定一個百分比,當塊中已經使用的存儲空間降低到這個百分比以下時,這個塊才被重新标記為可用狀态。
注意:以上兩個參數既可以在表空間級别進行設定,也可以在段級别進行設定。段級别的設定優先級更高。
區(Extent)
比塊高一級的邏輯存儲結構,由連續的塊組成,它是oracle在進行存儲空間的配置設定和回收的最小機關。在建立具有獨立段結構的資料庫對象時,例如表、索引等,Oracle會為資料庫對象建立一個資料段,并為資料段配置設定一個‘初始區’。
後續區的配置設定方式,則根據表的空間管理辦法不同,而采用不同的配置設定方式,例如autoextent,uniform size 或者在建立表或表空間時設定default storage 子句。
另外,使用者還能夠通過執行下面的指令來回收表、索引等對象中未使用的區:
SQL>alter table table_name deallocate unused;
段(Segment)
由多個區組成,這些區可以是連續的,也可以是不連續的。當使用者在資料庫中建立各種具有實際存儲結構的對象時(儲存有資料的對象),比如表、索引等,Oracle将為這些對象建立“段”。 一般一個對象隻擁有一個段。
在建立段時,可以為它指定PCTFREE、PCTUSED等參數來控制其中的塊的存儲空間管理方式,也可以為它指定INITIAL、NEXT、PCTINCREASE等存儲參數,以指定其中區的配置設定方式。如果沒有為段指定這些參數,段将自動繼承表空間的相應參數。
不同類型的資料庫對象擁有不同類型的段:
- 資料段:儲存表中的記錄。
- 索引段:索引中的索引條目。
- 臨時段:在執行查詢等操作時,Oracle可能會需要使用到一些臨時存儲空間,用于臨時儲存解析過的查詢語句以及在排序過程中産生的臨時資料。
- 復原段:儲存復原資料。
表空間(Tablespace)
***的邏輯存儲結構,資料庫是由多個表空間組成的。在建立資料庫時會自動建立一些預設的表空間,例如 SYSTEM表空間,SYSAUX表空間等。通過使用表空間,Oracle将所有相關的邏輯結構和對象組合在一起。我們可以在表空間級别指定存儲參數,也可以在段級别指定。
下面我們列出常見的表空間,和它們所存儲的資訊:
- 資料表空間:用于存儲使用者資料的普通表空間。
- 系統表空間:預設的表空間,用于儲存資料字典(一組儲存資料庫自身資訊的内部系統表和視圖,及用于Oracle内部使用的其他一些對象),儲存所有的PL/SQL程式的源代碼和解析代碼,包括存儲過程和函數、包、資料庫觸發器等,儲存資料庫對象(表、視圖、序列)的定義。
- 復原表空間:用于存放復原段,每個執行個體最多隻能使用一個復原表空間。
- 臨時表空間:存儲SQL執行過程中産生的臨時資料。
最後,我們可以用下面的比喻來描述邏輯結構關系:
塊 (一張張白紙) ---> 區(白紙組成的本子)---> 段(多個本子放到一個檔案袋中)---> 表空間(存放多個檔案袋的檔案櫃)
2.實體存儲結構
Oracle資料庫邏輯上由一個或多個表空間組成,每個表空間在實體上由一個或多個資料檔案組成,而每個資料檔案是由資料塊構成的。是以,邏輯上資料存放在表空間中,而實體上存儲在表空間所對應的資料檔案中。我們可以用下圖來描述資料檔案和表空間的關系。
圖 3 Oracle 邏輯存儲結構和實體存儲結構對應關系
圖 4 Oracle 邏輯存儲結構和實體存儲結構對應關系
構成資料庫的實體檔案主要有三種:
- 資料檔案:存放資料庫資料。
- 控制檔案:存放資料庫的基本資訊,告訴資料庫到哪裡找到資料檔案和重做日志檔案等。對資料庫的成功啟動和正常運作是很重要的。
- 重做日志檔案:存放對資料的改變。至少兩組,Oracle以循環方式來使用它們。
更多内容請參考:《Oracle 體系結構詳解》
posted on
2021-04-08 19:06
夜光兔
閱讀(0)
評論(0)
編輯
收藏