www.flickr.com

2007年5月23日 星期三

增加 tablespace

調整用戶表空間
創建表空間
假定表數據在ts_data,索引在ts_index


SQL>create tablespace ts_data default storage
(initial 10M next 10M maxextents 5000 pctincrease 0)
datafile ‘path/data_01.dbf’ size 500M;
SQL>create tablespace ts_index default storage
(initial 5M next 5M maxextents 5000 pctincrease 0)
datafile ‘path/index_01.dbf’ size 500M;
--------------------------------------------------------------------------------

參考命令︰刪除表空間
SQL>drop tablespace data including contents;
#刪除表空間及其包含的所有資料對象

--------------------------------------------------------------------------------

相關系統表︰
user(dba)_tablespaces

--------------------------------------------------------------------------------

增加表空間尺寸
假定表空間ts_data由path/data_01.dbf和path/data_02.dbf(500M)組成
增加一個數據文件︰
SQL>alter tablespace ts_data add datafile ‘path/data_03.dbf’
size 500M;

--------------------------------------------------------------------------------

擴大原有檔大小︰
SQL>alter database datafile ‘path/data_01.dbf’ resize 1000M;

--------------------------------------------------------------------------------

移動表空間數據文件
假如要求為︰將path1下data_01.dbf移至path2下,並把文件名改為data01.dbf
實例處于關閉狀態
sqlplus “/ as sysdba”
SQL>startup mount

--------------------------------------------------------------------------------

回到shell環境下
$ mv path1/data_01.dbf path2/data01.dbf
$ mv path1/data_02.dbf path2/data02.dbf

--------------------------------------------------------------------------------

再到sqlplus環境中
SQL>alter database rename file ‘path1/data_01.dbf’ to
‘path2/data01.dbf’;

SQL>alter tablespace tbsdata rename datafile
‘path/data_01.dbf’ to ‘path2/data01.dbf’;
SQL>alter database open;

--------------------------------------------------------------------------------

查看剩余空間
SQL>select tablespace_name,sum(bytes),max(bytes)
from dba_free_space group by tablespace_name;
注意:空閑數據塊總和sum(bytes)夠用並不意味每個空閑塊都滿足分配需要,
所以當表空間不夠分配擴展塊的時候,還要查看最大空閑數據塊max(bytes)的大小。

--------------------------------------------------------------------------------

合並空閑塊
如果表空間上的資料對象經常發生類似drop-create的變動,
加之未采用統一的擴展塊尺寸,
使那些采用較大擴展塊的資料對象不能利用較小的空間碎片,造成空間浪費。
可通過將較小的空閑塊合並成較大的空閑塊的方法,減少空間浪費。
SQL>alter tablespace tbsdata coalesce;

沒有留言: