業務表頻繁寫入,刪除,清空後,表占用的空間不能夠及時釋放,需要通過如下方式手工釋放空間。
-- 更新業務表統計資訊
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...