Oracle database growth trends
Sometimes is useful to have a database growth estimation in order to avoid some issues or to be a proactive DBA, or maybe your boss wants to know how much money is needed to add some space to oracle database during the next year. In such situations is good to know dbms_space.OBJECT_GROWTH_TREND procedure and dba_hist_tbspc_space_usage view.
With dbms_space.OBJECT_GROWTH_TREND you will get an output like that, in this example i´m selecting MYTABLE table of MYOWNER owner grown trends, as you can see QUALITY column is equal to PROJECTED, this means that the value is in the future, and this is a grow prevision.
SQL> set linesize 190
col TIMEPOINT for a40
select TIMEPOINT,SPACE_USAGE/1024/1024 as SPACE_USAGE_MB, SPACE_ALLOC/1024/1024 as SPACE_ALLOC_MB, QUALITY from table(dbms_space.OBJECT_GROWTH_TREND ('MYOWNER','MYTABLE','TABLE')); SQL> SQL>
TIMEPOINT SPACE_USAGE_MB SPACE_ALLOC_MB QUALITY
---------------------------------------- -------------- -------------- --------------------
13-SEP-17 17.43.03.744031 11394.6738 12460 INTERPOLATED
14-SEP-17 17.43.03.744031 11396.2744 12460 GOOD
15-SEP-17 17.43.03.744031 11438.8162 12460 GOOD
16-SEP-17 17.43.03.744031 11439.6138 12460 GOOD
17-SEP-17 17.43.03.744031 11446.3293 12588 GOOD
18-SEP-17 17.43.03.744031 11446.2662 12588 GOOD
19-SEP-17 17.43.03.744031 11447.3238 12588 GOOD
20-SEP-17 17.43.03.744031 11448.2442 12588 GOOD
21-SEP-17 17.43.03.744031 11448.8322 12588 GOOD
22-SEP-17 17.43.03.744031 11450.3334 12588 GOOD
23-SEP-17 17.43.03.744031 11450.0554 12588 GOOD
24-SEP-17 17.43.03.744031 11449.9482 12588 GOOD
25-SEP-17 17.43.03.744031 11452.3591 12588 GOOD
26-SEP-17 17.43.03.744031 11453.85 12588 GOOD
27-SEP-17 17.43.03.744031 11453.9222 12588 GOOD
28-SEP-17 17.43.03.744031 11454.5788 12588 GOOD
29-SEP-17 17.43.03.744031 11458.7554 12588 GOOD
30-SEP-17 17.43.03.744031 11460.2722 12588 INTERPOLATED
01-OCT-17 17.43.03.744031 11458.3205 12588 GOOD
02-OCT-17 17.43.03.744031 11458.8366 12588 GOOD
03-OCT-17 17.43.03.744031 11461.0524 12588 GOOD
04-OCT-17 17.43.03.744031 11462.9729 12588 GOOD
05-OCT-17 17.43.03.744031 11464.4363 12588 GOOD
06-OCT-17 17.43.03.744031 11465.4451 12588 GOOD
07-OCT-17 17.43.03.744031 11465.1594 12588 GOOD
08-OCT-17 17.43.03.744031 11465.1744 12588 GOOD
09-OCT-17 17.43.03.744031 11465.1517 12588 GOOD
10-OCT-17 17.43.03.744031 11468.2819 12588 GOOD
11-OCT-17 17.43.03.744031 11470.483 12588 GOOD
12-OCT-17 17.43.03.744031 11472.2403 12588 GOOD
13-OCT-17 17.43.03.744031 11473.4019 12588 GOOD
14-OCT-17 17.43.03.744031 11489.9381 12663.2516 PROJECTED
15-OCT-17 17.43.03.744031 11491.5533 12666.0387 PROJECTED
16-OCT-17 17.43.03.744031 11493.1684 12668.8258 PROJECTED
17-OCT-17 17.43.03.744031 11494.7835 12671.6129 PROJECTED
18-OCT-17 17.43.03.744031 11496.3987 12674.4 PROJECTED
36 rows selected.
But this is the basic syntax for dbms_space.OBJECT_GROWTH_TREND, this method only give us 5 prevision days after present time, so if we want a growth forecasts for nexts 90 days we should to add this tree parameters to our function:
start_time-->Statistics generated after this time will be used in generating the growth trend
end_time-->Statistics generated until this time will be used in generating the growth trend
interval-->The interval at which to sample
In this case i setup start_time =>sysdate-30, end_time=>sysdate+90 and interval=>to_dsinterval('7 00:00:00') (1 week)
SQL> set linesize 190
col TIMEPOINT for a40
SQL> SQL> select TIMEPOINT,SPACE_USAGE/1024/1024 as SPACE_USAGE_MB, SPACE_ALLOC/1024/1024 as SPACE_ALLOC_MB, QUALITY from table(dbms_space.OBJECT_GROWTH_TREND (object_owner=>'MYOWNER',object_name
2 =>'MYTABLE', object_type=>'TABLE',start_time =>sysdate-30, end_time=>sysdate+90,interval=>to_dsinterval('7 00:00:00') ));
TIMEPOINT SPACE_USAGE_MB SPACE_ALLOC_MB QUALITY
---------------------------------------- -------------- -------------- --------------------
13-SEP-17 18.02.50.000000 11394.7762 12460 GOOD
20-SEP-17 18.02.50.000000 11448.2497 12588 GOOD
27-SEP-17 18.02.50.000000 11453.8861 12588 GOOD
04-OCT-17 18.02.50.000000 11462.9734 12588 GOOD
11-OCT-17 18.02.50.000000 11470.4158 12588 GOOD
18-OCT-17 18.02.50.000000 11514.6508 12690.4 PROJECTED
25-OCT-17 18.02.50.000000 11531.2511 12716 PROJECTED
01-NOV-17 18.02.50.000000 11547.8514 12741.6 PROJECTED
08-NOV-17 18.02.50.000000 11564.4517 12767.2 PROJECTED
15-NOV-17 18.02.50.000000 11581.052 12792.8 PROJECTED
22-NOV-17 18.02.50.000000 11597.6523 12818.4 PROJECTED
29-NOV-17 18.02.50.000000 11614.2526 12844 PROJECTED
06-DEC-17 18.02.50.000000 11630.8529 12869.6 PROJECTED
13-DEC-17 18.02.50.000000 11647.4532 12895.2 PROJECTED
20-DEC-17 18.02.50.000000 11664.0534 12920.8 PROJECTED
27-DEC-17 18.02.50.000000 11680.6537 12946.4 PROJECTED
03-JAN-18 18.02.50.000000 11697.254 12972 PROJECTED
10-JAN-18 18.02.50.000000 11713.8543 12997.6 PROJECTED
18 rows selected.
With this method is good for an object or few object estimation, but if you have to estimate all database growth or an entire tablespace growth, i recommend you: dba_hist_tbspc_space_usage method:
At the other hand, we have dba_hist_tbspc_space_usage view... this view contains historical occupation data for tablespaces, so you can user linear regression to estimate future tablespace occupation... you can see a script in this article database growth based on linear
am not able to open the link highlighted ..Could you please share the script /artical
ReplyDeleteNot able to open the link. could you please share the access to the blog
ReplyDeleteNice article. Can you give me access to the next one "database growth based on linear" please ?
ReplyDelete