oracle中對於TableSpace理解

一、TableSpace表空間的使用規則
1、使用多個TableSpace
* 用戶數據與數據字典數據分離,減少競爭
* 應用程序之間的數據分離,防止某個TableSpace脫機後對多個程序造成影響
* 不同磁盤驅動器上存儲數據,減少I/O競爭
* 回滾段數據與用戶數據分離,防止單磁盤故障造成數據永久丟失
* 可以控制單個TableSpace脫機,提供更高的整體可用性
* 爲特定類型數據庫使用保留TableSpace,可優化TableSpace的使用
* 可以備份單獨的TableSpace
2、指定表空間默認的存儲參數
爲TableSpace設置合適的參數,下文中詳細介紹。
3、爲用戶指定表空間限額
可以有效控制TableSpace的大小,限制用戶權限防止發生意外。
二、創建TableSpace
1、創建本地管理TableSpace
Oracle創建的TableSpace默認均是本地管理的,明確的表述應該是:
在CREATE TABLESPACE 語句中 EXTENT MANAGEMENT 子句中指定 LOCAL
然後可以用 AUTOALLOCATE 選項(默認)來使Oracle自動管理盤區
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
也可以使用一個指定大小(UNIFORM SIZE)的同意盤區來管理該TableSpace
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
     如果未指定盤區大小,則默認爲1M,說明數據文件至少要大於1MB
注:如果TableSpace被期望用於包含需要不同盤區大小和擁有很多盤區的大小變動的對象,那選擇AUTOALLOCATE是最好的選擇。AUTOALLOCATE是一種管理TableSpace的簡便方法,只是有可能會對一些空間造成浪費。如果需要準確控制未用空間,並能夠精確預計爲一個或多個對象要非配的空間和盤區大小,那就可以使用UNIFORM。
2、在本地管理TableSpace中指定段空間管理
可使用 SEGMENT SPACE MANAGEMENT子句來設置端控件的管理模式,有以下幾種模式:
MANUAL(默認):使用段中管理空閒空間的空閒列表。
AUTO:使用位圖來管理段中的空閒空間。又稱爲自動段空間管理。
AUTO立功了一種更加簡單、有效的管理方法,完全消除了爲表空間中創建的段指定和調整PCTUSED、FREELISTS、FREELISTS GROUPS屬性的任何必要。
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
注:LOB類型不能指定自動段空間管理。
3、修改本地管理TableSpace
* 不能講本地管理TableSpace改爲本地管理的temp TableSpace
* 不能改變TableSpace的段空間管理辦法
* 本地管理TableSpace沒有必要合併空閒盤區
* 可以添加數據文件
* 可以改變TableSpace狀態(ONLINE/OFFLINE)
* 修改TableSpace爲只讀or只寫
* rename數據文件
* 啓用/禁用該TableSpace數據文件的自動盤區大小
4、創建字典管理的TableSpace
CREATE TABLESPACE tbsb
DATAFILE '/u02/oracle/data/tbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (
INITIAL 50K
NEXT 50K
MINEXTENTS 2
MAXEXTENTS 50
PCTINCREASE 0);
使用ALTER TABLESPACE語句可以進行以下操作:
* 添加一個新的文件
* 改變默認的存儲參數
* 合併TableSpace的空閒空間
* 可以改變TableSpace狀態(ONLINE/OFFLINE)
* 修改TableSpace爲只讀or只寫
* rename數據文件
* 啓用/禁用該TableSpace數據文件的自動盤區大小
5、臨時表空間
臨時表空間主要用於提高多個排序操作的併發能力、減小開銷,或避免Oracle空間管理操作在一起進行。臨時表空間創建之後,可以被多個用戶共享。
一個給定實例和表空間的所有排序操作共享一個單一的排序段。即排序段爲一個給定表空間的每個執行排序操作的實例而存在。
排序段由使用臨時表空間用於排序的第一個語句創建,並在關閉時釋放,一個盤區不能被多個事務共享
可以使用V$SORT_SEGMENT視圖來查看臨時表空間排序段的空間分配和回收情況
V$SORT_USAGE視圖查看這些段的當前排序用戶
注:臨時表空間中不能創建明確對象。
6、創建本地管理的臨時表空間
CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf' SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
注1:臨時數據文件信息查詢與數據文件不同,需要查詢V$TEMPFILEDBA_TEMP_FILES,但結構與V$DATAFILEDBA_DATA_FILES類似。
注2:臨時表空間在初次使用時才分配空間,可以更快創建和修改大小,但要注意磁盤大小。
7、本地管理臨時表空間的修改
* 添加臨時文件
ALTER TABLESPACE lmtemp ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE 20M REUSE;
* 改變臨時文件狀態
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' ONLINE|OFFLINE;
* 更改臨時文件大小
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' RESIZE 4M;
* 取消臨時文件並刪除相應操作系統文件
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' DROP
INCLUDING DATAFILES;
8、創建字典管理的臨時表空間
CREATE TABLESPACE sort
DATAFILE '/u02/oracle/data/sort01.dbf' SIZE 50M
DEFAULT STORAGE (
INITIAL 2M
NEXT 2M
MINEXTENTS 1
PCTINCREASE 0)
EXTENT MANAGEMENT DICTIONARY
TEMPORARY;
注1:不能以這種方式創建EXTENT MANAGEMENT LOCAL的臨時表空間。
注2:可以使用ALTER TABLESPACE tbsa TEMPORARY;語句將一個現有的字典管理永久表空間改爲臨時表空間。
發佈了32 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章