| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.server -> Re: Predicting Growth.
Ben wrote:
> Ent Ed. 9.2.0.5, DMT's on AIX5L
>
> There isn't really an accurate way to estimate growth of a database, is
> there? I have a history of six months of my data file sizes, but even
> with that there are too many variables envolved to determine that my
> database is going to continue to grow at a rate of 50 gig per year.
>
> Even if you assume a constant rate of growth, how would you base your
> projection?
>
> For example, lets say my datafiles grew 25G over the last six months.
> At the beginning of that six months my database was 100G that is 25%
> growth over the past six months.
> Now looking ahead for a year. My database is now 125G, 25% of that is
> 31.25G. Then six months down the road the database will be 156.25G, 25%
> of that is 39.06G, etc etc. But that original 25% figure was calculated
> from the 100G incarnation of the database. So that won't work.
> Do I then assume that my database will grow at a constant size instead
> of %? So my 125G db will be 175G by this time next year. This seems
> more accurate, but I still think there are just too many unknowns to
> actually come to an accurate answer.
>
Create the table per your needs and column lengths, then run this once a day/week/month/quarter.
At the end of each (day/week/month/quarter), run a size compare. Graph it to impress management.
--
-- Purpose: Collect space utilization information for a database
--
-- Schedule: Should be run regularly
--
-- Function: Collects data from DBA_DATA_FILES and DBA_FREE_SPACE
-- and saves it in an accumulation table keyed by date
--
-- The following formatting is for interactive runs without
-- inserting into the table.
--
-- set pagesize 150 linesize 131
-- col TS_SIZE for 999,999,999
-- col FREE_BYTES for 999,999,999
-- col free_blocks for 999,999
-- col largest for 999,999,999
-- col ext_factor for 999.999
-- col dt for 'MM/DD/YYYY'
-- col ts for a9
-- col PCT_FREE for 99.999
-- col fsfi for 999.999
insert into FIMS_SPACE (STAT_DATE,
TABLESPACE,
TOTAL_SIZE,
FREE_BYTES,
FREE_BLOCKS,
LARGEST_FREE_EXT,
EXT_FACTOR,
NUMBER_EXT,
NUMBER_FILES,
FREE_PCT,
FSFI)
select trunc(sysdate) dt,
f.tablespace_name ts,
d.total_bytes ts_size,
f.bytes free_bytes,
f.blocks free_blocks,
f.big largest,
(f.big/d.total_bytes)*100 ext_factor,
f.num_ext,
d.num_files,
f.bytes/d.total_bytes*100 "PCT_FREE",
f.fsfi fsfi
from (select tablespace_name,
count(*) num_ext,
max(bytes) big,
sum(bytes) bytes,
sum(blocks) blocks,
sqrt(max(blocks)/sum(blocks)) *
(100/sqrt(sqrt(count(blocks)))) fsfi
from dba_free_space
group by tablespace_name) f,
(select sum(bytes) total_bytes,
count(*) num_files,
tablespace_name
from dba_data_files
group by tablespace_name) d
where f.tablespace_name = d.tablespace_name
-- order by f.tablespace_name
/
Received on Thu Sep 21 2006 - 08:34:18 CDT
![]() |
![]() |