1. 程式人生 > >Oracle 資料庫 體系結構(一):儲存結構

Oracle 資料庫 體系結構(一):儲存結構

目錄

  • 為什麼要學習體系結構?
  • 體系結構的定義
  • Oracle 物理結構
  • Oracle 邏輯結構
  • 總結

為什麼要學習體系結構?

之前的文章有講解到 MySQL 、MongoDB 資料庫,這些資料庫我們安裝好了就能拿來用,比如直接可以做一些:增、刪、改、查 等操作。但是 Oracle 的體系錯綜複雜,如果不瞭解當中的結構,那麼在生產環境中出現一些問題,都不知道是哪個環節有問題,所以需要了解Oracle的結構,這樣會更加利於瞭解它,認識它,如果有問題就會及時知道問題是出現在那一塊,就可以及時解決它!


Oracle 資料庫 體系結構(一):儲存結構

體系結構的定義

它的定義就是資料庫的組成、工作過程與原理,以及資料在資料庫中的組織與管理機制。

Oracle 資料庫 體系結構(一):儲存結構

  • Oracle伺服器提供開放、全面和綜合的資訊管理,它由Oracle例項與Oracle資料庫組成。
  • Oracle例項:是後臺程序和記憶體結構的集合
  • Oracle資料庫:資料庫是資料的一個集合,該集合可以被視為一個邏輯單元。

Oracle 資料庫 體系結構(一):儲存結構

Oracle例項:

  • > Oracle例項作用 --1·分配記憶體,也就是系統全域性區(SGA)
  • > Oracle例項作用 --2·啟動後臺程序

Oracle 資料庫 體系結構(一):儲存結構

Oracle資料庫:

  • Oracle資料庫:由作業系統檔案組成,這些檔案為資料庫資訊提供實際物理儲存區。
  • Oracle資料庫:包括邏輯結構和物理結構。

Oracle 資料庫 體系結構(一):儲存結構


Oracle 物理結構

  • Oracle 的儲存結構分為:物理結構和邏輯結構!這兩種結構相互獨立又相互聯絡。意思是,邏輯結構還是得建立在物理結構之上,相輔相成!
  • Oracle資料庫邏輯上由一個或多個表空間組成,每個表空間在物理上由一個或多個數據檔案組成,而每個資料檔案是有資料塊構成的。所以,邏輯上資料存放在表空間中,而物理上儲存在表空間所對應的資料檔案中。

Oracle 資料庫 體系結構(一):儲存結構

物理結構主要包含以下幾部分:
主要檔案:

  • 資料檔案
  • 重做日誌檔案
  • 控制檔案

其他檔案:

  • 引數檔案
  • 歸檔日誌檔案
  • .......等

  • 資料檔案:主要用來存放資料
  • 重做日誌檔案:存放對資料的改變。至少兩組,Oracle以迴圈方式來使用它們
  • 控制檔案:存放資料庫的基本資訊,告訴資料庫到×××到資料檔案和重做日誌檔案等。對資料庫的成功啟動和正常執行是很重要的。
  • 引數檔案:啟動例項時需要讀取引數檔案,找到相關得配置好啟動例項!
  • 歸檔日誌檔案:可以保留所有重做歷史記錄,當資料庫出現介質失敗時,使用資料檔案備份,歸檔日誌和重做日誌可以完全恢復資料庫。(沒辦法就是這麼強大 0.0)

Oracle 邏輯結構

Oracle 在邏輯上將儲存的資料劃分為一個個小單元來進行儲存和維護,更高一級的邏輯儲存結構都是由這些基本的小單元組成的。

邏輯結構的型別(大--->小):

表空間(tablespace)----> 段(segment) ----> 區(extent) ----> 塊(block)

Oracle 資料庫 體系結構(一):儲存結構

1·表空間:

  • 最高階的邏輯儲存結構,資料庫是由多個表空間組成的。在建立資料庫的時候會建立一些預設的表空間,列如 SYSTEM、SYSAUX 等預設表空間。
  • 通過使用表空間,Oracle將所有相關的邏輯結構和物件組合在一起。

2·段:

  • 段是構成表空間的邏輯儲存結構,段是由一組區組成,這些區可以是連續的,也可是不連續的。
  • 當用戶在資料庫中建立各種具有實際儲存結構的物件時(儲存有資料的物件),比如表、索引等,Oracle將為這些物件建立“段”。 一般一個物件只擁有一個段。
  • 不同型別的資料庫物件擁有不同型別的段。

3·區:

  • 區為段分配空間,它由連續的資料塊組成,它是oracle在進行儲存空間的分配和回收的最小單位。
  • 區不能跨資料檔案存在,只能存在一個數據段中。
  • 當段中的所有空間使用完時,系統將會為該段重新分配一個區。
  • Oracle為物件建立 ‘段’時,併為資料段分配一個‘初始區’。後續區的分配方式,則根據表的空間管理辦法不同,而採用不同的分配方式。

4·塊:

  • 是最小的邏輯儲存結構,Oracle在進行輸出輸入時都是以塊為單位進行。
  • 塊的大小是在建立資料庫的時候決定的,之後不能修改。當然,oracle同時也支援不同的表空間擁有不同的資料塊尺寸。

Oracle 資料庫 體系結構(一):儲存結構


常見表空間:

  • 資料表空間:用於儲存使用者資料的普通表空間。
  • 系統表空間:預設的表空間,用於儲存資料字典(一組儲存資料庫自身資訊的內部系統表和檢視,及用於Oracle內部使用的其他一些物件),儲存所有的PL/SQL程式的原始碼和解析程式碼,包括儲存過程和函式、包、資料庫觸發器等,儲存資料庫物件(表、檢視、序列)的定義。
  • 回滾表空間:用於存放回滾段,每個例項最多隻能使用一個撤銷表空間
  • 臨時表空間:儲存SQL執行過程中產生的臨時資料

不同型別的段:

  • 資料段:儲存表中的記錄
  • 索引段:索引中的索引條目
  • 臨時段:在執行查詢等操作時,Oracle可能會需要使用到一些臨時儲存空間,用於臨時儲存解析過的查詢語句以及在排序過程中產生的臨時資料。
  • 回滾段:儲存回滾資料。

回收未使用的區:
SQL>alter table table_name deallocate unused;

塊頭部資訊區:

  • 塊頭:包含塊的一般屬性資訊 如塊的實體地址、塊所屬的段的型別
  • 表目錄:如果塊中儲存的資料是表資料, 則在表目錄中儲存塊中所包含的表的相關資訊
  • 行目錄:行記錄的相關資訊 如ROWID
  • 塊的儲存區:主要包含空閒空間和已經使用的空間。Oracle主要是通過下面的兩個引數對這部分空間進行管理的
  • PCTFREE引數:指定塊中必須保留的最小空閒空間比例。當塊中的空閒儲存空間減少到PCTFREE所設定的比例後,Oracle將塊標記為不可用狀態,新的資料行將不能被加入到這個塊。
  • PCTUSED引數:制定一個百分比,當塊中已經使用的儲存空間降低到這個百分比只下時,這個塊才被重新標記為可用狀態。

  • 請注意:以上兩個引數既可以在表空間級別進行設定,也可以在段級別進行設定。段級別的設定優先順序更高。

總結:

  • Oracle體系結構主要分為:例項和資料庫。
  • 例項:由系統全域性區(SGA)與後臺程序組成。
  • 資料庫:分為物理結構與邏輯結構。
  • 物理結構:主要檔案與其他檔案組成。
  • 主要檔案包括:資料檔案、控制檔案、重做日誌檔案。
  • 其他檔案包括:引數檔案、歸檔日誌檔案
  • 邏輯結構的型別(大--->小):表空間(tablespace)----> 段(segment) ----> 區(extent) ----> 塊(block)