Oracle收縮臨時表空間與臨時檔案

2021-08-14 23:02:23 字數 2448 閱讀 4393

資料庫在使用一段時間後,尤其是存在頻繁的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只提供擴大的功能,而不提供收縮。所以,要實現這樣的要求,就只能先建立乙個中間表空間,然後將待收縮表 應用背景 某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的占用空間進行收縮。處理方案 ...