set feedback off
set termout on

set pagesize 100
set linesize 75

spool dbinfo.txt

--
-- *************    NAME/VERSIONS    **************
--

set heading off
set verify off
column today NEW_VALUE p_currdate noprint

select TO_CHAR(SYSDATE,'fmMonth ddth, yyyy') today
from   dual;

clear breaks
clear computes
clear columns

set heading off
column name heading '' justify center format a74

select   'Sever Name: '
from     dual;

select   'Database Name (SID): ' || name "name"
from     v$database;

prompt
prompt
prompt Version/SGA Information:

set heading off
select * from v$version;

column sgatot justify left format 9,999,999,999

select   'Total System Global Area as of &p_currdate.:' hd1,
         sum(value) sgatot, 'bytes' hd2
from     v$sga;

--
-- *************    TABLESPACES/DATAFILES    **************
--

prompt
prompt
prompt Tablespaces and Datafiles:

clear breaks
clear computes
clear columns

set heading on
column tablespace_name heading 'Tablespace' justify left format a10 truncated
column file_id heading 'File|ID' justify center format 999
column file_name heading 'Datafile' justify center format a45 word_wrapped
column size Heading 'Size|in MG.' justify center format 999,990.99

break on tablespace_name skip 1 on report skip 2
compute sum label 'TS SIZE:' of size on tablespace_name
compute sum label 'DB SIZE:' of size on report

select tablespace_name,
       file_id,
       file_name,
       bytes/1024/1024 "size"
from dba_data_files
order by tablespace_name, file_id, file_name;

--
-- *************    SPACE USAGE    **************
--

prompt Space usage (as of &p_currdate.):
prompt

clear breaks
clear computes
clear columns

set heading on
column tablespace_name heading 'Tablespace' justify left format a20 truncated
column tbnumber  heading 'Table#' justify left format 99,990
column tbsize heading 'Size|in MG.' justify left format 99,990
column tbused heading 'Used|in MG.' justify right format 99,990
column tbfree heading 'Free|in MG.' justify right format 99,990
column tbusedpct heading '' justify left format a6
column tbfreepct heading '' justify left format a6

break on report
compute sum label 'Totals:' of tbnumber tbsize tbused tbfree on report

select    t.tablespace_name,
          d.num tbnumber,
          ROUND(a.bytes) tbsize,
          NVL(ROUND(b.bytes),0) tbused,
          '(' || TO_CHAR(ROUND(100*(NVL(b.bytes,0)/NVL(a.bytes,0.000001))))
            || '%)' tbusedpct,
          NVL(ROUND(c.bytes),0) tbfree,
          '(' || TO_CHAR(ROUND(100*(NVL(c.bytes,0)/NVL(a.bytes,0.000001))))
            || '%)' tbfreepct
from      dba_tablespaces t,
          ( select tablespace_name,
                   sum(bytes)/1024/1024 bytes
             from  dba_data_files
             group by tablespace_name) a,
          ( select e.tablespace_name, sum(e.bytes)/1024/1024 bytes
             from  dba_extents e
             group by e.tablespace_name ) b,
          ( select f.tablespace_name, sum(f.bytes)/1024/1024 bytes
             from  dba_free_space f
             group by f.tablespace_name ) c,
          ( select g.tablespace_name, count(g.table_name) as num
             from  dba_tables g
             where g.table_name not in ('SYSTEM','SYS')
             group by g.tablespace_name ) d
where     t.tablespace_name = a.tablespace_name(+) and
          t.tablespace_name = b.tablespace_name(+) and
          t.tablespace_name = c.tablespace_name(+) and
          t.tablespace_name = d.tablespace_name(+);

--
-- *************    REDO LOG FILES    **************
--

prompt
prompt
prompt Online Redo Logfiles:

clear breaks
clear computes
clear columns

column member heading 'Logfile' justify center format a50 word_wrapped
column group heading 'Group|Number' justify center format 99
column size heading 'Size|in MG.' justify center format 990.99

select f.member "member",
       f.group# "group",
       l.bytes/1024/1024 "size"
from v$logfile f, v$log l
where f.group#=l.group#
order by f.group#,f.member;

--
-- *************    CONTROL FILES    **************
--

prompt
prompt
prompt Control files:

clear breaks
clear computes
clear columns

column name heading 'File Name' format a60 word_wrapped

select name from v$controlfile;

--
-- *************    ROLLBACK SEGMENTS    **************
--

prompt
prompt
prompt Rollback Segments (sizes as of &p_currdate.):

clear breaks
clear computes
clear columns

set heading on
column tablespace_name heading 'Tablespace' justify left format a10 truncated
column segment_name heading 'Seg|Name' justify center format a7
column status heading 'Status' justify center format a8
column initial_extent heading 'Initial|(in M)' justify center format 990.9
column next_extent heading 'Next|(in M)' justify center format 990.9
column min_extents heading 'Min|Ext' justify center format 990
column max_extents heading 'Max|Ext' justify center format 9999999990
column pct_increase heading 'Pct|Inc' justify center format 990
column rbsize heading 'Curr Size|(in M)' justify left format 9,990

break on tablespace_name skip 1 on report skip 2

select    r.tablespace_name,
          r.segment_name,
          r.status,
          r.initial_extent/1024/1024 "initial_extent",
          r.next_extent/1024/1024 "next_extent",
          r.min_extents,
          r.max_extents,
          r.pct_increase,
          sum(e.bytes)/1024/1024 "rbsize"
from      dba_rollback_segs r, dba_extents e
where     e.segment_name = r.segment_name
group by  r.tablespace_name, r.segment_name, r.status,
          r.initial_extent/1024, r.next_extent/1024,
          r.min_extents, r.max_extents, r.pct_increase;

--
-- *************    PARAMETERS    **************
--

prompt
prompt Parameters (non-defaults):

clear breaks
clear computes
clear columns

column name heading 'Name' format a35 word_wrapped
column pvalue heading 'Value' format a35 word_wrapped

select name, rtrim(value) "pvalue"
from v$parameter
where isdefault = 'FALSE'
order by name;

spool off
