9.管理表空間和資料檔案(筆記)

tonykorn97發表於2006-04-14

9.管理表空間和資料檔案

表空間時資料庫的邏輯組成部分,從物理上說,資料庫資料存放在資料檔案中,從邏輯上說,資料庫資料存放在表空間(Table Space)中,表空間是由一個或者多個資料檔案組成的.透過使用表空間,可以有效地部署不同型別的資料,加強資料管理,從而提高資料庫執行效能.



表空間(Table Space)

表空間用於邏輯組織資料庫資料,資料庫邏輯上是由一個或多個表空間組成,而表空間物理上是由一個或多個資料檔案組成的.表空間由以下作用.

透過表空間可以控制資料庫所佔用的磁碟空間.

透過表空間可以控制使用者所佔用的空間配額.

透過表空間,DBA可以將不同型別資料部署到不同位置,一方面可以提高I/O效能,另一方面有益於備份和恢復等管理操作!


資料檔案(data file)

資料檔案是表空間的物理組成部分,表空間與資料檔案是一對多的關係,並且一個資料檔案只能屬於一個表空間.需要注意,一旦將資料檔案追加到某個表空間後,就不能刪除該資料檔案了,要刪除資料檔案,只能刪除其所屬表空間.

資料檔案使用原則如下:

1,大資料檔案優於大量小資料檔案

2,用CREATE DATABASE命令建立資料庫時,使用永久引數MAXDATAFILES可以指定在控制檔案中為資料檔案預留的空間.預設值為32,透過重新建立控制檔案可以修改永久引數的設定.

3,初始化引數DB_FILES限制了資料庫可以同時開啟的最大資料檔案個數,如果資料檔案個數達到了該引數限制,那麼將無法建立新的資料檔案.

4,從效能角度考慮,應該將資料檔案和重做日誌部署到不同磁碟,因為重做日誌的I/O操作非常頻繁,所有應將重做日誌放到資料最快的磁碟裝置上.


段(Segment)

段用於儲存特定邏輯物件的所有資料,它是由一個或多個區組成的,當建立表,索引或簇時,oracle會為這些物件分配段,以存放它們的資料資訊.並且段名與物件名完全不同.


表段(資料段):用於存放表的資料.當建立表EMP時,oracle會自動分配資料段EMP,並且表EMP的所有資料都存放在段EMP中!


索引段:用於存放索引的資料.當建立索引IND_ENAME時,oracle會自動分配索引段IND_ENAME


UNDO段:用於存放事務所修改資料的舊值.


臨時段:用於存放排序操作所產生的臨時資料.當執行排序操作時,如果臨時資料超過排序區(SORT_AREA_SIZE)尺寸.則會將臨時資料暫時存放到臨時段,


區(Extent)

區由相鄰的資料塊組成,是oracle進行空間分配的邏輯單位,並且一個區只能唯一地屬於一個資料檔案.建立段時,oracle至少要為其分配一個區,當段不足以容納新資料時,oracle會自動擴充套件該段,並且為其增加一個區.例如,當建立表EMP時,oracle會建立段EMP(假定初始尺寸為5M),當資料佔滿5M空間後,oracle會擴充套件段EMP,併為其分配一個區,以容納更多資料.


Oracle 塊

Oracle塊也稱為資料塊,時oracle在資料檔案上執行I/O操作的最小單位,取值一般為2K,4K,6K,8K,16K,32K等.假定資料塊尺寸為2k,某使用者執行語句SELECT * FROM EMP WHERE EMPNO=7788,返回資料僅僅為100個位元組,那麼伺服器程式將2K資料到資料快取記憶體,而不是100位元組.

建立表空間

從10g開始,當資料庫管理員執行CREATE DATABASE命令建立資料庫時,oracle不僅會建立SYSTEM表空間,還會建立輔助表空間SYSAUX.

SYSTEM表空間:用於存放資料字典和SYSTEM回滾段.其管理方法類似於其他表空間,但資料庫管理員不能修改SYSTEM表空間的名稱,不能刪除SYSTEM表空間,也不能使SYSTEM表空間離線.

SYSAUX表空間:用於存放各種oracle產品和特徵的資訊.其管理方法類似於其他表空間. 但資料庫管理員不能修改SYSAUX表空間的名稱,不能刪除SYSAUX表空間. SYSAUX表空間使10g的新特性.

當執行CREATE DATABASE 命令建立資料庫時,除了可以建立SYSTEM和SYSAUX表空間,還可以建立UNDO表空間和預設臨時表空間.為了簡化表空間管理並提供效能.oracle建議將不同型別的資料部署到不同表空間上,因此,建立了資料庫後,還應該建立其他表空間!

如:專門存放表段的資料表空間,存放索引的索引表空間,存放UNDO段的UNDO表空間,存放臨時段的臨時表空間,還可以建立存放應用工具表空間和存放LOB段資料的LOB表空間.


建立普通表空間使用CREATE TABLESPACE

建立大檔案表空間使用CREATE BIGFILE TABLESPACE

建立UNDO表空間使用CREATE UNDO TABLESPACE

建立臨時表空間時CREATE TEMPORARY TABLESPACE命令

建立本地管理表空間

本地管理(Local Managed)是oracle database 10g的預設空間管理方法.使用本地管理表空間時,oracle使用點陣圖維護空閒區的資訊.本地管理表空間由以下優點:


避免了遞迴的空間管理操作.在字典管理表空間上的分配和釋放區會導致訪問UNDO段和資料字典基表,而在本地管理表空間上的分配和釋放區只需要修改其資料檔案的相應點陣圖值


降低了資料字典基表上的衝突.因為本地管理表空間的空閒空間記錄被記錄在資料檔案點陣圖上,所以分配和釋放區不需要訪問資料字典基表.


不需要合併空間碎片.本地管理表空間會自動跟蹤併合並相鄰空閒空間,而字典管理表空間則需要定期合併空間碎片.


建立本地管理表空間時,不能指定DEFAULT STORAGE 和 MINIMUM EXTENT子句.

西門舉例說明建立本地管理表空間的方法.

1,使用UNIFORM選項指定區尺寸.

UNIFORM選項用於指定使用相同尺寸管理表空間,區預設尺寸為1M.如果指定其他尺寸,需要指定SIZE選項.示例如下:

CREATE TABLESPACE user01 DATAFILE ‘D:demouser01.dbf’

SIZE 2M UNIFORM SIZE 128K;

執行上面命令後,會建立名為USER01的表空間,該表空間的空間管理方式為本地管理,區尺寸為128k.

2,使用AUTOALLOCATE

AUTOALLOCATE選項用於指定區尺寸由系統自動分配.使用該選項時,使用者不能指定區尺寸.

CREATE TABLESPACE user02 DATAFILE ‘D:demouser02.dbf’ SIZE 2M AUTOALLOCATE;

該表空間管理方式為本地管理,取尺寸由系統自動分配.


建立字典管理表空間

字典管理表空間(Dictionary-Managed Tablespace)是為了與早期的版本相容而保留的空間管理特製.使用字典管理方式時,區由資料字典進行管理.需要注意,如果其他表空間要採用字典管理的方式,那麼要求SYSTEM表空間必須採用字典管理方式.如果要建立字典管理表空間,必須指定EXTENT MANAGEMENT DICTIONARY選項.

CREATE TABLESPACE user03 DATAFILE ‘d:demousers.dbf’

SIZE 5M EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE(

INITIAL 20K NEX 20K

MINEXTENTS 2 MAXEXTENTS 50

PCTINCREASE 50);

執行上述命令後,建立名為USER03的表空間,該表空間的空間管理方式為字典管理,區尺寸按照儲存引數進行分配,EXTENT AMNAGEMENT DICTIONARY用於指定空間管理採用字典管理方式,DEFAULT STORAGE用於指定預設儲存引數,INITIAL用於指定為段所分配的第一個區的尺寸,NEXT用於指定為段所分配的第二個區的尺寸. MINEXTENTS用於指定為段所分配的最小區個數,MAXEXTENTS用於指定段可佔用的最大區個數,PCTINCREASE用於指定從第三個區開始每個區比前一個區尺寸所增長的百分比.


大檔案表空間是10g的新特性,它只能包含一個資料檔案,但其資料瓦那機的尺寸可達到4G個資料塊.如果資料塊尺寸為8K,那麼大檔案表空間的資料檔案尺寸最大可以達到32T位元組;如果資料塊尺寸為32K,那麼大檔案表空間的資料檔案最大尺寸可以達到128T位元組.

大檔案表空間的優點:

一個oracle資料庫最多可以包含64K的資料檔案,使用大檔案表空間,可以顯著地提高oracle資料庫的儲存能力.

大檔案表空間可以監聽oracle資料庫的資料檔案個數.


當建立大檔案表空間時,不能指定EXTENT MANAGEMENT DICTIONARY和SEGMENT SPACE MANAGEMENT MAUNAL選項,並且只能指定一個資料檔案.

CREATE BIGFILE TABLESPACE big_tbs DATAFILE ‘d:demobig.dbf’ SIZE 100G;

該表空間的管理方式為本地管理,區尺寸由系統自動分配.


UNDO表空間用於儲存UNDO段,該表空間只能使用本地管理方式.需要注意,在UNDO表空間上不能建立永久物件(表,索引和簇).當執行CREATE DATABASE建立資料庫時,可以建立UNDO 表空間,並且DBA可以使用該UNDO表空間來管理UNDO資料,但對於混合系統來說,使用多個UNDO表空間更加有利,建立了資料庫後,使用CREATE UNDO TABLESPCE命令可以建立UNDO表空間.建立UNDO表空間時只能指定DATAFILE和EXTENT MANAGEMENT LOCAL選項.

CREATE UNDO TTABLESPACE undotbs2 DATAFILE ‘d:demoundotbs2.dbf’ SIZE 10M;

建立臨時表空間(CREATE TEMPORARY TABLESPACE)

1,建立本地管理臨時表空間,建立臨時管理表空間時,使用UNIFORM選項可以指定區尺寸.需要注意,當建立臨時表空間時,不能指定AUTOALLOCATE選項.

CREATE TEMPORARY TABLESPACE temp01

TEMPFILE ‘D:demotemp01.dbf’ SIZE 5M

UNIFORM SIZE 256k;


建立大檔案臨時表空間

從10g開始,允許使用CREATE BIGFILE TEMPORARY TABLESPACE命令建立只包含一個臨時檔案的大檔案臨時空間.

CREATE BIGFILE TEMPORARY TABLESPACE TEMP02

TEMPFILE ‘D:demotemp02.dbf’ SIZE 5M;

該表空間只能包含一個臨時檔案,並且其空間管理方式為本地管理.


使用臨時表空間組

臨時表空間組是多個臨時表空間的集合,它使得一個資料庫使用者可以使用多個臨時表空間,臨時表空間組是oracle database 10g新增加的特性.它具有以下特點.

臨時表空間組至少包含一個臨時表空間

臨時表空間組不能與任何表空間同名.

當指定資料庫的預設臨時表空間或使用者的臨時表空間時,可以直接指定臨時表空間組.

使用臨時表空間時,

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245223/,如需轉載,請註明出處,否則將追究法律責任。

相關文章