您好,登錄后才能下訂單哦!
- 為什么要學習體系結構?
- 體系結構的定義
- Oracle 物理結構
- Oracle 邏輯結構
- 總結
之前的文章有講解到 MySQL 、MongoDB 數據庫,這些數據庫我們安裝好了就能拿來用,比如直接可以做一些:增、刪、改、查 等操作。但是 Oracle 的體系錯綜復雜,如果不了解當中的結構,那么在生產環境中出現一些問題,都不知道是哪個環節有問題,所以需要了解Oracle的結構,這樣會更加利于了解它,認識它,如果有問題就會及時知道問題是出現在那一塊,就可以及時解決它!
它的定義就是數據庫的組成、工作過程與原理,以及數據在數據庫中的組織與管理機制。
- Oracle服務器提供開放、全面和綜合的信息管理,它由Oracle實例與Oracle數據庫組成。
- Oracle實例:是后臺進程和內存結構的集合
- Oracle數據庫:數據庫是數據的一個集合,該集合可以被視為一個邏輯單元。
Oracle實例:
Oracle數據庫:
- Oracle數據庫:由操作系統文件組成,這些文件為數據庫信息提供實際物理存儲區。
- Oracle數據庫:包括邏輯結構和物理結構。
- Oracle 的存儲結構分為:物理結構和邏輯結構!這兩種結構相互獨立又相互聯系。意思是,邏輯結構還是得建立在物理結構之上,相輔相成!
- Oracle數據庫邏輯上由一個或多個表空間組成,每個表空間在物理上由一個或多個數據文件組成,而每個數據文件是有數據塊構成的。所以,邏輯上數據存放在表空間中,而物理上存儲在表空間所對應的數據文件中。
物理結構主要包含以下幾部分:
主要文件:
- 數據文件
- 重做日志文件
- 控制文件
其他文件:
- 參數文件
- 歸檔日志文件
- .......等
- 數據文件:主要用來存放數據
- 重做日志文件:存放對數據的改變。至少兩組,Oracle以循環方式來使用它們
- 控制文件:存放數據庫的基本信息,告訴數據庫到×××到數據文件和重做日志文件等。對數據庫的成功啟動和正常運行是很重要的。
- 參數文件:啟動實例時需要讀取參數文件,找到相關得配置好啟動實例!
- 歸檔日志文件:可以保留所有重做歷史記錄,當數據庫出現介質失敗時,使用數據文件備份,歸檔日志和重做日志可以完全恢復數據庫。(沒辦法就是這么強大 0.0)
Oracle 在邏輯上將保存的數據劃分為一個個小單元來進行存儲和維護,更高一級的邏輯存儲結構都是由這些基本的小單元組成的。
邏輯結構的類型(大--->小):
表空間(tablespace)----> 段(segment) ----> 區(extent) ----> 塊(block)
1·表空間:
- 最高級的邏輯存儲結構,數據庫是由多個表空間組成的。在創建數據庫的時候會創建一些默認的表空間,列如 SYSTEM、SYSAUX 等默認表空間。
- 通過使用表空間,Oracle將所有相關的邏輯結構和對象組合在一起。
2·段:
- 段是構成表空間的邏輯存儲結構,段是由一組區組成,這些區可以是連續的,也可是不連續的。
- 當用戶在數據庫中創建各種具有實際存儲結構的對象時(保存有數據的對象),比如表、索引等,Oracle將為這些對象創建“段”。 一般一個對象只擁有一個段。
- 不同類型的數據庫對象擁有不同類型的段。
3·區:
- 區為段分配空間,它由連續的數據塊組成,它是oracle在進行存儲空間的分配和回收的最小單位。
- 區不能跨數據文件存在,只能存在一個數據段中。
- 當段中的所有空間使用完時,系統將會為該段重新分配一個區。
- Oracle為對象創建 ‘段’時,并為數據段分配一個‘初始區’。后續區的分配方式,則根據表的空間管理辦法不同,而采用不同的分配方式。
4·塊:
- 是最小的邏輯存儲結構,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)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。