ORACLE 儲存結構 2 表空間 補充

2021-05-04 13:54:06 字數 3392 閱讀 3403

###我所使用的系統為linux as 4u6資料庫版本為10.2.0.1.0###

在這裡,細說下表空間。

乙個資料庫可以有乙個過多個表空間。

表空間是由乙個或多個資料檔案組成,裡面存放了乙個或多個段(segment)。

表空間以下面幾種方式分類

1。按資料檔案的型別分為

大檔案表空間。

小檔案表空間。

2。按管理方式分為

本地管理表空間

資料字典管理表空間

3。按型別分為

永久表空間

臨時表空間

回滾段表空間

4。按儲存的內容分為

系統表空間

*系統輔助表空間(sysaux tablespace)

非系統表空間

先從檔案型別看起。

按檔案型別分為大檔案表空間(bigfile tablespace)和小檔案表空間(smallfile tablespace)

建立表空間的時候預設為小檔案表空間(smallfile tablespace)。

使用大檔案表空間有如下好處:

1。在乙個表空間裡只有乙個大的資料檔案,以後不需要再去管理資料檔案。

2。乙個大的資料檔案相當於1024個小的資料檔案,這樣一來,在乙個塊大小為32k時,整個資料庫可以達到8eb。

--1eb=1024pb 1pb=1024tb 1tb=1024gb 1gb=1024mb 1mb=1024kb 1kb=1024b

3。使用乙個大的資料檔案可以代替多個小資料檔案,這樣對資料檔案的管理就少多了。

4。當開啟資料庫,發生檢查點,執行dbwr程序時使用大檔案表空間會增強效能。

使用大檔案表空間需要注意的地方:

1。要使用在oracle的asm(自動儲存管理)的儲存空間或者分散(striping)儲存的lvm中,或者raid陣列上。

--為了提高i/o速度。

2。不要把大檔案表空間建立在不能分散(striping)儲存的系統上。

3。不要把大檔案表空間建立在沒有空間(剩餘空間少)的磁碟組上。

4。建立大檔案表空間時不推薦建立在不能擴充套件的儲存空間裡。

#大檔案表空間只支援本地管理表空間(lmt)和本地段空間管理(assm)。

#在臨時表空間與回滾段表空間,只能用手動段空間管理。

#自動擴充套件資料檔案必須是起用的,而且最大檔案大小必須是不限制。

#系統表空間和系統輔助(sysaux)表空間不能使用大檔案表空間。

按管理方式看一下。

本地管理表空間:一種比較先進的管理擴充套件(extent)的方式。是用bitmap來管理表空間裡的所有的extent。

當使用本地管理表空間時是使用6個塊(從第三個到第八個)來標識整個表空間裡的每乙個擴充套件(extent)。

其中的每一位(bit)來表示每個擴充套件的狀態。1為已被分配,0為可被分配。

在本地管理表空間的方式裡可以選擇每個extent的大小是固定(uniform)的或是自動的。

在自動管理,系統一般是剛開始乙個extent8個block,然後逐漸增加。

固定大小為每個extent都是固定大小的,推薦使用。

當使用本地管理表空間時還分為自動管理段(segment)空間和手動管理段空間。

##在臨時表空間和回滾段表空間沒有這個選項,只能使用手動管理段空間。

##關於這兩種方式,在別的文件會詳細講到。

在這種方式下,關於擴充套件(extent)的分配,會分為如下幾個引數來管理。

initial size:初始分配擴充套件(extent)的大小。

next size:第二個開始分配時的大小

minimum size:最小分配大小

increment size (%):下一次分配時比先前增加多少

minimum number:最少個數

maximum number:最多個數

系統表空間為本地管理方式的話,其他的表空間是不能使用字典管理的。

從字典管理表空間可以轉到本地管理,但從本地管理不能轉到字典管理。

10g裡是不能建立字典管理表空間的,只能倒入。

因此在這裡不深入研究。

按型別看一下。

永久表空間:一般儲存資料的表空間

系統表空間,普通使用者使用的表空間都為永久表空間。

只要是要保留的資料,都得放在這裡。

永久表空間的狀態有三種:讀寫,唯讀,離線。

只有在永久表空間,才能配置assm管理模式。

可以設定記錄日誌模式。建立選yes,以便資料庫出問題後進行恢復。

可以設定為系統預設表空間。這樣,建立使用者時,沒有指定預設表空間,就自動設定為系統預設表空間。

##設定預設表空間的命令:alter database default tablespace

;在永久表空間裡,分系統表空間和非系統表空間。

系統表空間-存放資料字典等重要的表,一般使用者是沒有許可權修改(或者訪問)。

非系統表空間-普通使用者用來存放資料的表空間。

臨時表空間:一般用來排序時使用。

當進行排序時,pga區域的資源會不夠,這時候會使用臨時表空間的空間來進行排序。

臨時表空間裡不存放實際的資料,所以,即使出了問題,也不需要恢復,而且,也不需要備份,因此也不需要記錄日誌。

臨時表空間只能使是讀寫模式,而且只能為手動管理段空間模式。

可以設定為系統預設臨時表空間。這樣,建立使用者時,沒有指定預設臨時表空間,就自動設定為系統預設臨時表空間。

##設定預設表空間的命令:alter database default temporary tablespace

;

回滾段表空間:用來存放修改中資料的原資料。

回滾段表空間是用來保證資料讀一致性的。

或者當乙個事務要回滾時,得把回滾段表空間的內容重新拿到原先的表裡。

##關於回滾段表空間會有單獨的講解。

這裡簡單的說明了一下表空間的分類,各個的特點等。

關於建立表空間的詳細方式,請看"表空間建立sql語句"

technorati : oracle 表空間 tablespace

del.icio.us : oracle 表空間 tablespace

zooomr : oracle 表空間 tablespace

flickr : oracle 表空間 tablespace

innodb表空間儲存結構

儲存結構 innodb的邏輯儲存結構如圖所示 其空間管理由段,區和頁構成。段包括葉子節點段,即所有索引的葉子節點都儲存在這個段裡,葉子節點儲存資料 次級索引是主鍵 和鍵值,這可以方便管理並且減少隨機io 還包括非葉子節點,儲存的是指向另外節點的指標和鍵值 回滾段儲存的是每個表的undo日誌 具體分析...

oracle表空間建立2

這裡介紹建立oracle表空間的步驟,首先查詢空閒空間 增加oracle表空間 修改檔案大小語句如下 建立oracle表空間,最後更改自動擴充套件屬性。ad 1 先查詢空閒空間 select tablespace name,file id,block id,bytes,blocks from dba...

oracle的表如何跨表空間儲存

oracle的乙個表所在表空間,空間已經佔滿,其他表空間有剩餘空間.實現表存在另外的表空間 方案一 利用原表重建分割槽表 1 原表temp,存在欄位id,time 2 temp存在紀錄 3 根據原表temp建立新的分割槽表temp new create table temp new id,time ...