Here is the source code with steps how to configure:
1) First create the table as below:
CREATE TABLE USER1.DBGROWTH (DATABASE_NAME VARCHAR2(10),
TOTAL_BYTES NUMBER, COLLECTION_DATE DATE);
ALTER TABLE USER1.DBGROWTH MODIFY (COLLECTION_DATE DEFAULT to_char(sysdate,'DD-MON-YY'));
CREATE UNIQUE INDEX USER1.DB_GROWTH_P ON DBGROWTH (DATABASE_NAME,COLLECTION_DATE);
ALTER TABLE USER1.DBGROWTH ADD CONSTRAINT USER1.DB_GROWTH_P PRIMARY KEY (DATABASE_NAME, COLLECTION_DATE) USING INDEX
2) Collect the daily growth of the database using below script.
ORACLE_SID=TEST
ORACLE_HOME=/opt/oracle
export ORACLE_HOME
export ORACLE_SID
echo "Run date:" `date`
SID="PROD1,PROD2" ||->> It will treat as alias name also so for you need to configure the tnsnames to access the production databases.
for i in `echo $SID|tr -s ',' ' '`
do
$ORACLE_HOME/bin/sqlplus -s USER1/USER1< ${ReportFile}
> ${LogFile}
> ${htmlFile}
${ORACLE_HOME}/bin/sqlplus -s "USER1/USER1" < /dev/null
set heading off verify off echo off feedback off linesize 120 pagesize 1000
spool ${LogFile}
select substr(a1.database_name,1,15) || '|' ||
to_char(a1.collection_date,'mm/dd/yyyy') || '|' || round(a1.DB_Size_MB,0) || '|' ||
to_char(a2.collection_date,'mm/dd/yyyy') || '|' || round(a2.DB_Size_MB,0) || '|' ||
(a2.collection_date - a1.collection_date + 1) || '|' ||
round((a2.DB_Size_MB - a1.DB_Size_MB),0) || '|' ||
greatest(round(100*(a2.DB_Size_MB - a1.DB_Size_MB)/a1.DB_Size_MB,2),0) || '|' ||
round(greatest(30 * (a2.DB_Size_MB - a1.DB_Size_MB) / (a2.collection_date - a1.collection_date),0),0) || '|' ||
round(greatest(90 * (a2.DB_Size_MB - a1.DB_Size_MB) / (a2.collection_date - a1.collection_date),0),0) || '|' ||
round(greatest(180 * (a2.DB_Size_MB - a1.DB_Size_MB) / (a2.collection_date - a1.collection_date),0),0)
from
(select database_name, total_bytes/1024/1024 DB_Size_MB, collection_date
from USER1.dbgrowth a
where to_char(collection_date,'mm/dd/yyyy') = (select to_char(min(collection_date),'mm/dd/yyyy')
from USER1.dbgrowth b
where b.database_name = a.database_name
and b.collection_date between (sysdate - 10) and sysdate)) a1,
(select database_name, total_bytes/1024/1024 DB_Size_MB, collection_date
from USER1.dbgrowth a
where to_char(collection_date,'mm/dd/yyyy') = (select to_char(max(collection_date),'mm/dd/yyyy')
from USER1.dbgrowth b
where b.database_name = a.database_name
and b.collection_date <= sysdate)) a2
where a1.database_name = a2.database_name;
spool off
EndSQL
echo "" > ${ReportFile}
echo "" >> ${ReportFile}
echo "" >> ${ReportFile}
echo '' >> ${ReportFile}
echo '' >> ${ReportFile}
echo "Report run date: `date`" >> ${ReportFile}
echo "" >> ${ReportFile}
echo '
| Database | ' >> ${ReportFile} echo 'First Date | ' >> ${ReportFile} echo 'DB Size (MB)on First Date | ' >> ${ReportFile} echo 'Second Date | ' >> ${ReportFile} echo 'DB Size (MB)on Second Date | ' >> ${ReportFile} echo 'TotalDays | ' >> ${ReportFile} echo 'DB Growth(MB) | ' >> ${ReportFile} echo 'PercentGrowth | ' >> ${ReportFile} echo 'Projected Growth inNext 30 days (MB) | ' >> ${ReportFile} echo 'Projected Growth inNext 90 days (MB) | ' >> ${ReportFile} echo 'Projected Growth inNext 180 days (MB) |
| ' >> ${ReportFile} echo " ${c1}" >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo ${c2} >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c3}  " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo ${c4} >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c5}  " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c6}  " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c7}  " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c8} % " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c9} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c10} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c11} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo "
| ' >> ${ReportFile} echo " TOTAL (MB)" >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c3tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo " " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c5tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo " " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c7tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo " " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c9tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c10tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c11tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo "|
| ' >> ${ReportFile} echo " TOTAL (GB)" >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c3tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo " " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c5tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo " " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c7tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo " " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c9tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c10tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo '' >> ${ReportFile} echo "${c11tot} " >> ${ReportFile} echo ' | ' >> ${ReportFile} echo "|
