How big is my oracle database? I need to determine the total size of an oracle database. Ideas on improving the following query?

SELECT 'DataFiles: ' AS TYPE, SUM (bytes / 1024 / 1024) AS MB
  FROM dba_data_files
UNION
SELECT 'Temp.: ', SUM (bytes / 1024 / 1024) AS MB FROM dba_temp_files
UNION
SELECT 'Redologs: ', SUM (bytes / 1024 / 1024) AS MB FROM v$log;
Redo logs can be mirrored, your query does not take into account that. Controlfiles are also part of the database.

select 'Datafiles', sum(bytes)/1024/1024 from dba_data_files union all
select 'Tempfiles', sum(bytes)/1024/1024 from dba_temp_files union all
select 'Redo logs', sum(bytes)/1024/1024 from v$log l join v$logfile lf on (l.group# = lf.group#) union all
select 'Controlfiles', sum(block_size * file_size_blks)/1024/1024 from v$controlfile;


There are other files that are not critical, but they need space, for example standby redo logs and the block change tracking file:

select 'Datafiles', sum(bytes)/1024/1024 from dba_data_files union all
select 'Tempfiles', sum(bytes)/1024/1024 from dba_temp_files union all
select 'Redo logs', sum(bytes)/1024/1024 from v$log l join v$logfile lf on (l.group# = lf.group#) union all
select 'Controlfiles', sum(block_size * file_size_blks)/1024/1024 from v$controlfile union all
select 'Standby logs', sum(bytes)/1024/1024 from v$standby_log l join v$logfile lf on (l.group# = lf.group#) union all
select 'Change tracking', bytes/1024/1024 from v$block_change_tracking;