天天看點

Oracle 存儲結構

Oracle 存儲結構

資料庫是存儲資料的容器,它的主要功能是儲存和共享資料。

oracle資料庫的存儲結構可以分為邏輯存儲結構和實體存儲結構,對于這兩種存儲結構,oracle是分别進行管理的。

  • 邏輯存儲結構:oracle内部組織和管理資料的方式。
  • 實體存儲結構:oracle外部(作業系統)組織和管理資料的方式。

接下來我們對上面的兩種結構進行詳細的介紹。

1.邏輯存儲結構

Oracle 存儲結構

圖 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) 

編輯 

收藏

繼續閱讀