2020年9月14日 星期一

5.1 Oracle 資料庫架構

Oracle 資料庫架構大體上可以分為實體結構 (Physical Structure) 與邏輯結構 (Logical Structure) 兩種,其中的差異並不難理解,所謂的實體結構表示這些東西是實際存放在 Server 上,而且我們可以直接從系統上看到這些檔案,例如 Data file、Spfile…等都可以直接在作業系統上看到,這些就是屬於實體結構;而相反的,邏輯結構是不能直接在作業系統上看到的東西,我們必須花些想像力來理解這些東西,例如 Tablespace 就是屬於邏輯結構的一種。


Oracle 實體結構與邏輯結構之間存在著一定的關聯性:

邏輯結構當中的最小單位為 Oracle data block,所有的資料都是存放在 Oracle data block 當中,相對於實體結構則是為作業系統上的 OS block,Oracle 資料庫在使用 OS block 之前必須將他格式化為 Oracle data block 這種邏輯結構才能夠開始存放資料。 Oracle data block 預設大小為 8k,必須在建立資料庫的時候就要決定 block 大小,資料庫建立完成後就沒有辦法更改 block size。 Oracle data block size 最小可以設定為 2k 最大為 32k,由參數 db_block_size 所決定,以現在來說,一般使用預設的 8k 便是最適合所有類型的系統了,在建立資料庫的時候不太會特別去調整 block size。


邏輯結構的單位由小至大分別為 Oracle data block、Extent、Segment,以及 Tablespace。多個 Oracle data block 會構成一個 Extent ,多個 Extent 構成一個 Segment ,最後多個 Segment 則是組成一個 Tablespace 。 Tablespace 這個邏輯結構相對於實體結構則是為 Data file,一個 Tablespace 可能由一個或多個 Data file 所組成,而 Tablespace 是所有資料庫物件存放的基礎,在建立任何資料庫物件之前必須建立一個 Tablespace 來存放它,而建立 Tablespace 則是要由建立實體的 Data file 來組成。


例如一個表格(Table)存放在 Oracle 資料庫的邏輯意識圖如下:

首先必須由實體結構的 Data file 來搭建一個 Tablespace,然後就可以在這個 Tablespace 裡面來建立一個表格(Table),在 Table 建立的當下,就會在這個 Tablespace 當中建立一個 Data Segment 來供這個 Table 所使用。未來對這個表格新增的任何一筆資料我們稱作 Row Piece ,當有一筆 Row Piece 新增進來,這個 Data Segment 就必須要搜尋底下的 Extent 當中有哪些 Data Block 是具有空閒的位置來存放這筆 Row Piece ,找到之後就把這筆 Row Piece 存放在 Oracle Data Block 當中,這樣就完成了一筆資料的操作。


Oracle 資料庫的實體結構與邏輯結構存在著密不可分的關係,因此我們在使用 Oracle 資料庫之前必須先了解實體與邏輯結構。



沒有留言:

張貼留言