資料庫在使用一段時間後,尤其是存在頻繁的imp/exp操作以及排序操作時,臨時表空間就會越來越大,對應的資料檔案也會很大。
從oracle 11g開始,可以使用shrink命令收縮臨時表空間和臨時檔案,也可以使用resize命令對資料檔案進行大小進行調整。
一、shrink命令
oracle幫助文件:alter and maintaining tabelspaces
alter tablespace shrink space
alter tablespace shrink tempfile
shrink命令可使用keep選項指定收縮的下限。不指定keep選項,表空間或資料檔案將被壓縮到最小。
二、resize命令
oracle幫助文件:changing datafile size
alter database tempfile resize
當然,縮小和調整的下限,不能小於資料真實使用的大小。
三、查詢臨時表空間與資料檔案的使用量
1、查詢資料檔案使用量2、查詢檢視表空間的使用量(dba_temp_free_space檢視)
其中tablespace_size 表示表空間的總大小(以位元組為單位)
allocated_space 表示已分配的總空間(以位元組為單位),包括正在使用空間以及可重用空間
free_space 表示可用的總空間(以位元組為單位),包括已分配的、可重用的以及未分配的空間
四、查詢並生成resize語句
可以使用下面的語句查詢並生成resize語句
select a.file#,
a.name,
a.bytes / 1024 / 1024 currentmb,
ceil(hwm * a.block_size) / 1024 / 1024 resizeto,
(a.bytes - hwm * a.block_size) / 1024 / 1024 releasemb,
'alter database datafile ''' || a.name || ''' resize ' ||
ceil(hwm * a.block_size / 1024 / 1024) || 'm;' resizecmd
from v$datafile a,
(select file_id, max(block_id + blocks - 1) hwm
from dba_extents
group by file_id) b
where a.file# = b.file_id(+)
and (a.bytes - hwm * block_size) > 0
order by file#;
oracle table shrink space commands
using the oracle shrink command
收縮臨時表空間
當排序操作 重建索引等大型操作無法在記憶體中完成時,臨時表空間將為排序提供便利。一般情況下臨時表空間為多個使用者,多個會話所共 享。不能為會話分批空間配額。臨時表空間耗用過度且在不能自動擴充套件的情形下將收到 ora 1652 unable to extend temp segment 錯誤.下面 ...
Oracle收縮臨時表空間與臨時檔案的方法
資料庫在使用一段時間後,尤其是存在頻繁的imp exp操作以及排序操作時,臨時表空間就會越來越大,對應的檔案也會很大。從oracle 11g開始,可以使用shrink命令收縮臨時表空間和臨時檔案。oracle幫助文件 alter and maintaining tabelspaces alter t...
mysql收縮空間 Oracle表空間收縮方案
對於表空間收縮,oracle只提供擴大的功能,而不提供收縮。所以,要實現這樣的要求,就只能先建立乙個中間表空間,然後將待收縮表 應用背景 某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的占用空間進行收縮。處理方案 ...