Oracle 數據庫 體系結構(一):存儲結構

目錄

  • 爲何要學習體系結構?
  • 體系結構的定義
  • Oracle 物理結構
  • Oracle 邏輯結構
  • 總結

爲何要學習體系結構?

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


Oracle 數據庫 體系結構(一):存儲結構

體系結構的定義

它的定義就是數據庫的組成、工做過程與原理,以及數據在數據庫中的組織與管理機制。服務器

Oracle 數據庫 體系結構(一):存儲結構

  • Oracle服務器提供開放、全面和綜合的信息管理,它由Oracle實例與Oracle數據庫組成。
  • Oracle實例:是後臺進程和內存結構的集合
  • Oracle數據庫:數據庫是數據的一個集合,該集合能夠被視爲一個邏輯單元。

Oracle 數據庫 體系結構(一):存儲結構

Oracle實例:oracle

  • > Oracle實例做用 --1·分配內存,也就是系統全局區(SGA)
  • > Oracle實例做用 --2·啓動後臺進程

Oracle 數據庫 體系結構(一):存儲結構

Oracle數據庫:ide

  • Oracle數據庫:由操做系統文件組成,這些文件爲數據庫信息提供實際物理存儲區。
  • Oracle數據庫:包括邏輯結構和物理結構。

Oracle 數據庫 體系結構(一):存儲結構


Oracle 物理結構

  • Oracle 的存儲結構分爲:物理結構和邏輯結構!這兩種結構相互獨立又相互聯繫。意思是,邏輯結構仍是得創建在物理結構之上,相輔相成!
  • Oracle數據庫邏輯上由一個或多個表空間組成,每一個表空間在物理上由一個或多個數據文件組成,而每一個數據文件是有數據塊構成的。因此,邏輯上數據存放在表空間中,而物理上存儲在表空間所對應的數據文件中。

Oracle 數據庫 體系結構(一):存儲結構

物理結構主要包含如下幾部分:
主要文件:函數

  • 數據文件
  • 重作日誌文件
  • 控制文件

其餘文件:學習

  • 參數文件
  • 歸檔日誌文件
  • .......等

  • 數據文件:主要用來存放數據
  • 重作日誌文件:存放對數據的改變。至少兩組,Oracle以循環方式來使用它們
  • 控制文件:存放數據庫的基本信息,告訴數據庫到×××到數據文件和重作日誌文件等。對數據庫的成功啓動和正常運行是很重要的。
  • 參數文件:啓動實例時須要讀取參數文件,找到相關得配置好啓動實例!
  • 歸檔日誌文件:能夠保留全部重作歷史記錄,當數據庫出現介質失敗時,使用數據文件備份,歸檔日誌和重作日誌能夠徹底恢復數據庫。(沒辦法就是這麼強大 0.0)

Oracle 邏輯結構

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

邏輯結構的類型(大--->小):操作系統

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

Oracle 數據庫 體系結構(一):存儲結構

1·表空間:code

  • 最高級的邏輯存儲結構,數據庫是由多個表空間組成的。在建立數據庫的時候會建立一些默認的表空間,列如 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)
相關文章
相關標籤/搜索