Monitor undo tablespace usage - oracle database script

Monitor undo tablespace usage - Oracle Database Script.

SELECT a.tablespace_name,
       SIZEMB,
       USAGEMB,
       (SIZEMB - USAGEMB) FREEMB
FROM
  (SELECT sum(bytes) / 1024 / 1024 SIZEMB,
          b.tablespace_name
   FROM dba_data_files a,
        dba_tablespaces b
   WHERE a.tablespace_name = b.tablespace_name
     AND b.contents = 'UNDO'
   GROUP BY b.tablespace_name) a,

  (SELECT c.tablespace_name,
          sum(bytes) / 1024 / 1024 USAGEMB
   FROM DBA_UNDO_EXTENTS c
   WHERE status <> 'EXPIRED'
   GROUP BY c.tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;