☆資料庫----儲存資料的容器
資料庫的主要功能是儲存資料。
資料庫的儲存結構---資料庫儲存資料的方式
☆oracle資料庫的儲存結構:
邏輯儲存結構:oracle內部的組織和管理資料的方式
實體儲存體結構:oracle外部(作業系統)組織和管理資料的方式
oracle對邏輯儲存結構和實體儲存體結構的管理是分別進行的。
☆邏輯儲存結構:
oracle在邏輯上將儲存的資料劃分為一個個小單元來進行儲存和維護,更高一級的邏輯儲存結構都是由這些基本的小單元組成的。
邏輯結構類型:從小到大 快-->區-->段-->資料表空間
快:Oracle用來管理儲存空間的最基本單元,也是最小的邏輯儲存結構。
Oracle資料庫在進行輸入輸出時,都是以快為單位進行邏輯讀寫操作的。
快---->作業系統 快的 整數倍(1、2、4等)
oracle快的大小在資料庫建立的時候決定的,以後不能修改。
區:比快高一級的邏輯儲存結構 由連續的快組成
oracle在進行儲存空間的分配和回收是以區為基本單位的
段:多個區組成 這些區可以是連續的,也可以是不連續的。當使用者在資料庫中建立各種具有實際儲存結構的對象時(儲存有資料的對象),比如表、索引等,Oracle將為這些對象建立“段”。 一般一個對象只擁有一個段
資料表空間:最進階的邏輯儲存結構 每個資料庫都是由一個或多個資料表空間組成,在建立資料庫時會自動建立一個預設的SYSTEM資料表空間。
通過使用資料表空間---Oracle將所有相關的邏輯結構和對象組合在一起。
邏輯結構關係:
塊--->一張張白紙 區--->白紙組成的本子 段--->多個本子放到一個檔案袋中
資料表空間--->檔案櫃(存放多個檔案袋)
☆ 塊的管理 : 塊的可用儲存空間進行管理
塊結構:
塊的頭部資訊區
快頭部:包含塊的一般屬性資訊 如塊的物理地址、塊所屬的段的類型
表目錄:如果快中儲存的資料是表資料 則在表目錄中儲存這個表的相關資訊
行目錄:行記錄的相關資訊 如ROWID
塊的儲存區:
空閑空間 行空間
塊的儲存空間管理:
PCTFREE參數:指定塊中必須保留的最小空閑空間比例。當塊中的空閑儲存空間減少到PCTFREE所設定的比例後,Oracle將塊標記為不可用狀態
PCTUSED參數:制定一個百分比,當塊中已經使用的儲存空間降低到這個百分比只下時,這個塊才被重新標記為可用狀態。
這兩個參數適用於資料表空間和段。
☆ 區的管理:oracle利用區進行儲存空間分配的工作機制
在建立具有獨立段結構的資料庫物件時,比如建立表時,Oracle將為表建立一個資料區段,並為資料區段分配一個‘初始區’。
STORAGE:後續區的分配方式
也可以在建立資料表空間的時候--為資料表空間設定一個預設的STORAGE:DEFAULT STORAGE
本地管理方式資料表空間 自動 位元影像
字典管理方式資料表空間 手動 可用快列表
使用者能夠通過執行下面的命令來回收表、索引等對象中未使用的區:
alter table table_name deallocate unused;
☆ 段的管理:獨立的邏輯儲存結構
一個段只屬於一個特定的資料庫物件(表、索引等)。每當建立一個具有獨立段的資料庫物件時,Oracle將為它建立一個段。在建立段時,可以為它指定PCTFREE、PCTUSED等參數來控制其中的快的儲存空間管理方式,也可以為它指定INITIAL、NEXT、PCTINCREASE等儲存參數,以指定其中區的分配方式。如果沒有為段指定這些參數,段將自動繼承資料表空間的相應參數。
不同類型的資料庫物件擁有不同類型的段:
段的類型:
資料區段:儲存表中的記錄
索引段:索引中的索引條目
臨時段:在執行查詢等操作時,Oracle可能會需要使用到一些臨時儲存空間,用於臨時儲存解析過的查詢語句以及在排序過程中產生的臨時資料。
在執行下面幾種類型的算SQl語句時,Oracle都會需要用到臨時段:
create index
select .....order by
select distinct
select ......group by
select ......union
.......
如果經常需要執行上面類型的語句,建議調整SORT_AREA_SIZE初始化參數類增大排序區,使排序操作盡量能在記憶體中完成,提高效能
回退段:
☆資料表空間:oracle資料庫是由一個或多個資料表空間組成 SYSTEM資料表空間
特殊類型的資料表空間:
除了用於儲存使用者資料的普通資料表空間外,在一個資料庫中還可能會存在三種特殊類型的資料表空間:SYSTEM資料表空間、撤銷資料表空間、暫存資料表空間
SYSTEM資料表空間:一個預設的資料表空間
SYSTEM資料表空間中儲存的資訊:
* 資料庫資料字典(資料字典是一組儲存資料庫自身資訊的內部系統資料表和視圖,及用於Oracle內部使用的其他一些對象);
* 儲存所有PL/SQL程式的原始碼和解析代碼,包括預存程序和函數、包、資料庫觸發器等。在需要儲存大量的PL/SQL程式的資料庫中,應當設定足夠大的SYSTEM資料表空間
* 儲存資料庫物件(表、視圖、序列)的定義。
撤銷資料表空間:自動撤銷管理方式下 撤銷段
每個執行個體最多隻能使用一個撤銷資料表空間
暫存資料表空間:儲存SQL執行過程中產生的臨時資料
資料表空間的儲存管理方式:各種儲存參數的設定實際上都是針對段的,但是Oracle仍然建議盡量在資料表空間級對儲存參數進行設定。
oracle實體儲存體結構
從整體上看,Oracle的資料邏輯上儲存在資料表空間中,而物理上儲存在資料表空間所對應的資料檔案中。
Oracle資料庫邏輯上由一個或多個資料表空間組成,每個資料表空間在物理上由一個或多個資料檔案組成。
資料庫實體儲存體結構一共包括如下三種類型的物理檔案:
* 資料檔案
* 控制檔案 資料庫的基本資料 至少一個 告訴資料庫到哪裡找到資料檔案和重做記錄檔等。對資料庫的成功啟動和正常運行是很重要的
* 重做記錄檔 至少兩個 Oracle以迴圈方式來使用記錄檔
在Oracle中,使用者對資料庫所做的所有修改實際上都是在記憶體中進行的,Oracle每隔一段時間才會將資料操作修改的結果成批寫回資料檔案中,但是資料修改操作所產生的重做記錄是隨時被寫入重做記錄檔的。