Oracle 表空間收縮

2021-10-24 07:34:57 字數 1105 閱讀 4120

業務表頻繁寫入,刪除,清空後,表占用的空間不能夠及時釋放,需要通過如下方式手工釋放空間。

-- 更新業務表統計資訊

call dbms_stats.gather_table_stats(

'user_name'

,'table_name');

-- 收縮業務表空間占用

alter

table *** enable

row movement ;

alter

table *** shrink space cascade

;-- 生成資料檔案收縮演算法

-- 校驗當前資料檔案大小與高水位,如果有超過100m剩餘空間,將剩餘空間的80%釋放掉;

select

'alter database datafile ''' || a.file_name || ''' resize '

||round

(a.filesize -

(a.filesize - c.hwmsize -

100)

*0.8)||

'm;'

, a.filesize ||

'm'as

"資料檔案的總大小"

, c.hwmsize ||

'm'as

"資料檔案的實用大小"

from

(select file_id

, file_name

,round

(bytes /

1024

/1024

)as filesize

from dba_data_files) a

,(select file_id

,round

(max

(block_id)*8

/1024

)as hwmsize

from dba_extents

group

by file_id) c

where a.file_id = c.file_id

and a.filesize - c.hwmsize >

100;

-- 執行資料檔案收縮指令碼

mysql收縮空間 Oracle表空間收縮方案

對於表空間收縮,oracle只提供擴大的功能,而不提供收縮。所以,要實現這樣的要求,就只能先建立乙個中間表空間,然後將待收縮表 應用背景 某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的占用空間進行收縮。處理方案 ...

Oracle收縮表空間,降低高水位

oracle冗餘表空間收縮 應用背景 某些情況下,由於前期設計上沒有考慮全面,導致表空間預建太大,遠遠超出實際使用大小。於是,就出現了收縮表空間這樣的需求,即將這個表空間的占用空間進行收縮。1.開啟 set serveroutput on select tablespace name,block s...

收縮表空間大小

使用者所關聯的表都刪除了,但是表空間不能自己釋放。找到了下面一條sql語句,它的作用是查詢 拼接 出縮小表空間檔案 datafile 的語句,預設是計算所有的表空間檔案,給出可以釋放的大小。根據它給出的結果,執行類似 alter database datafile e oracle nnc data...