Script:收集Flashback Database Log诊断信息

以下脚本可以用于收集10g以后的闪回数据库日志Flashback Database Log的诊断信息:
WITH flashback_database_log AS
 (SELECT ROUND((SYSDATE - oldest_flashback_time) * 24 * 60,2) oldest_log_minutes,retention_target retention_target_minutes,flashback_size / 1048576 flashback_size_mb,estimated_flashback_size / 1048576 estimated_flashback_size_mb
    FROM v$flashback_database_log),flashback_database_logfile AS
 (SELECT COUNT(*) logs,SUM(BYTES / 1048576) size_mb,MIN(first_time) oldest_log,MAX(first_time) latest_log
    FROM v$flashback_database_logfile),flashback_usage AS
 (SELECT file_type,ROUND(mb_used,2) mb_used,ROUND(mb_reclaimable,2) mb_reclaimable,DECODE(total_mb,ROUND(mb_used * 100 / total_mb,2)) percent_space_used,ROUND(mb_reclaimable * 100 / total_mb,2)) percent_space_reclaimable,number_of_files,total_mb db_recovery_file_dest_mb,flashback_retention_target,oldest_record,ROUND((sysdate - oldest_record) * 24 * 60,2) oldest_record_age_sec
    FROM (SELECT SUM(DECODE(NAME,'db_recovery_file_dest_size',VALUE / 1048576,0)) total_mb,SUM(DECODE(NAME,'db_flashback_retention_target',VALUE,0)) flashback_retention_target
            FROM v$parameter
           WHERE NAME IN ('db_recovery_file_dest_size','db_flashback_retention_target')),(SELECT 'FLASHBACKLOG' file_type,NVL(SUM(BYTES) / 1048576,0) mb_used,sum(CASE
                       WHEN last_time <= (sysdate - (tgt.value / 1440)) THEN
                        bytes / 1048576
                       ELSE
                        0
                     END) mb_reclaimable,COUNT(*) number_of_files,MIN(first_time) oldest_record
            FROM (select bytes,lead(first_time) over(order by first_time asc) last_time,first_time
                    from v$flashback_database_logfile) fla_log,(SELECT value value
                    FROM v$parameter
                   WHERE name = 'db_flashback_retention_target') tgt
          UNION
          SELECT 'BACKUPPIECE' file_type,NVL(SUM(BYTES / 1048576),0) mb,SUM(CASE
                       WHEN dl.rectype = 13 THEN
                        (BYTES / 1048576)
                       ELSE
                        0
                     END) reclaimable_mb,COUNT(*) no_of_files,MIN(start_time) oldest_record
            FROM v$backup_piece bp,x$kccagf dl
           WHERE is_recovery_dest_file = 'YES'
             AND deleted = 'NO'
             AND bp.recid = dl.recid(+)
             AND dl.rectype(+) = 13
          UNION
          SELECT 'ARCHIVELOG' file_type,NVL(SUM(blocks * block_size) / 1048576,SUM(CASE
                       WHEN dl.rectype = 11 THEN
                        (LOG.blocks * LOG.block_size / 1048576)
                       ELSE
                        0
                     END) reclaimable_mb,MIN(first_time) oldest_record
            FROM v$archived_log log,x$kccagf dl
           WHERE deleted = 'NO'
             AND is_recovery_dest_file = 'YES'
             AND dl.recid(+) = log.recid
             AND dl.rectype(+) = 11
          UNION
          SELECT 'ONLINELOG' file_type,SUM(BYTES / 1048576) mb,0 reclaimable,MIN(first_time) oldest_record
            FROM v$logfile lf,(SELECT group#,BYTES,first_time
                    FROM v$standby_log
                  UNION
                  SELECT group#,first_time FROM v$log) l
           WHERE l.group# = lf.group#
             AND lf.is_recovery_dest_file = 'YES'
          UNION
          SELECT 'IMAGECOPY',NVL(SUM(blocks * (block_size / 1048576)),0 reclaimable_mb,MIN(creation_time) oldest_record
            FROM v$datafile_copy
           WHERE deleted = 'NO'
             AND is_recovery_dest_file = 'YES'
          UNION
          SELECT 'CONTROLFILE',NVL(SUM(block_size * file_size_blks) / 1048576,NULL oldest_record
            FROM v$controlfile
           WHERE is_recovery_dest_file = 'YES'))
SELECT order_,NAME,VALUE
  FROM(
SELECT 0 order_,VALUE
  FROM v$parameter
 WHERE NAME LIKE 'db_recovery_file%'
UNION
SELECT 3,'oldest flashback log (minutes)',TO_CHAR(ROUND(oldest_log_minutes,2))
  FROM flashback_database_log
UNION
SELECT 1,'retention target (minutes)',TO_CHAR(ROUND(retention_target_minutes,2))
  FROM flashback_database_log
UNION
SELECT 2,'estimated size for flashback logs (MB)',TO_CHAR(ROUND(estimated_flashback_size_mb,'Current flashback log count',TO_CHAR(logs)
  FROM flashback_database_logfile
UNION
SELECT 3,'Most recent flashback log (minutes)',TO_CHAR(ROUND((SYSDATE - latest_log) * 24 * 60,2))
  FROM flashback_database_logfile
UNION
SELECT 4,'Total size of all files in MB',TO_CHAR(ROUND(SUM(mb_used),2))
  FROM flashback_usage
UNION
SELECT 5,'Total size of reclaimable files in MB',TO_CHAR(ROUND(SUM(mb_reclaimable),2))
  FROM flashback_usage
UNION
SELECT 6,'unused space in MB',TO_CHAR(ROUND(MIN(db_recovery_file_dest_mb) - SUM(mb_used)))
  FROM flashback_usage)
 ORDER BY order_,NAME
/
Sample Output:
    ORDER_ NAME                                                                             VALUE
---------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
         0 db_recovery_file_dest                                                            +SYSTEMDG
         0 db_recovery_file_dest_size                                                       5218762752
         1 retention target (minutes)                                                       1440
         2 Current flashback log count                                                      33
         2 estimated size for flashback logs (MB)                                           142.15
         3 Most recent flashback log (minutes)                                              164.03
         3 oldest flashback log (minutes)                                                   5846.35
         4 Total size of all files in MB                                                    1963.11
         5 Total size of reclaimable files in MB                                            534.47
         6 unused space in MB                                                               3014

相关文章

  译序:JWMediaPlayer是开源的网页使用的Flash播放器。本...
    Flash编程原理都是只能将1写为0,而不能将0写成1.所...
 上传setenvgatewayip192.168.1.1;setenvserverip192.168.1...
Error:FlashDownloadFailed-"Cortex-M3"出现一般有...
jPlayer是一个用于控制和播放mp3文件的jQuery插件。它在后台...
#ifndef__FONTUPD_H__#define__FONTUPD_H__#include"sy...