如何估算Oracle資料庫每日資料增長量

lovehewenyu發表於2021-10-08




如何估算O racle 資料庫每日資料增長量


場景:老闆問 dba 小何,我們資料庫現需要擴容檔案系統,可以提供一些資料支撐嗎?

回答:對於十年的dba小何,這問題簡單地狠,我們根據所有表空間的歷史增長情況來計算資料庫歷史情況。


原理:此處是透過計算資料庫所有表空間的歷史增長情況來計算資料庫歷史情況。  

-- 不含undo temp


with tmp as 

(select rtime, 

sum(tablespace_usedsize_gb) tablespace_usedsize_gb, 

sum(tablespace_size_gb) tablespace_size_gb 

from (select rtime, 

e.tablespace_id, 

(e.tablespace_usedsize) * (f.block_size) /1024/1024/1024 tablespace_usedsize_gb, 

(e.tablespace_size) * (f.block_size) /1024/1024/1024 tablespace_size_gb 

from dba_hist_tbspc_space_usage e, 

dba_tablespaces f, 

v$tablespace g 

where e.tablespace_id = g.TS# 

and f.tablespace_name = g.NAME 

and f.contents not in ('TEMPORARY','UNDO')) 

group by rtime) 

select tmp.rtime, 

tablespace_usedsize_gb, 

tablespace_size_gb, 

(tablespace_usedsize_gb - 

LAG(tablespace_usedsize_gb, 1, NULL) OVER(ORDER BY tmp.rtime)) AS DIFF_KB 

from tmp, 

(select max(rtime) rtime 

from tmp 

group by substr(rtime, 1, 10)) t2 

where t2.rtime = tmp.rtime;


-- undo temp


with tmp as 

(select min(rtime) rtime, 

sum(tablespace_usedsize_gb) tablespace_usedsize_gb, 

sum(tablespace_size_gb) tablespace_size_gb 

from (select rtime, 

e.tablespace_id, 

(e.tablespace_usedsize) * (f.block_size) /1024/1024/1024 tablespace_usedsize_gb, 

(e.tablespace_size) * (f.block_size) /1024/1024/1024 tablespace_size_gb 

from dba_hist_tbspc_space_usage e, 

dba_tablespaces f, 

v$tablespace g 

where e.tablespace_id = g.TS# 

and f.tablespace_name = g.NAME) 

group by rtime) 

select tmp.rtime, 

tablespace_usedsize_gb, 

tablespace_size_gb, 

(tablespace_usedsize_gb - 

LAG(tablespace_usedsize_gb, 1, NULL) OVER(ORDER BY tmp.rtime)) AS DIFF_KB 

from tmp, 

(select min(rtime) rtime 

from tmp 

group by substr(rtime, 1, 10)) t2 where t2.rtime = tmp.rtime


參考:https://blog.csdn.net/lihuarongaini/article/details/101068291


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26442936/viewspace-2794888/,如需轉載,請註明出處,否則將追究法律責任。

相關文章