• 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, 0, 0, ROUND(mb_used * 100 / total_mb, 2)) percent_space_used,
             DECODE(total_mb, 0, 0, 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, 0) mb,
                     SUM(CASE
                           WHEN dl.rectype = 11 THEN
                            (LOG.blocks * LOG.block_size / 1048576)
                           ELSE
                            0
                         END) reclaimable_mb,
                     COUNT(*) no_of_files,
                     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,
                     COUNT(*) no_of_files,
                     MIN(first_time) oldest_record
                FROM v$logfile lf,
                     (SELECT group#, BYTES, first_time
                        FROM v$standby_log
                      UNION
                      SELECT group#, BYTES, 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) mb,
                     0 reclaimable_mb,
                     COUNT(*) no_of_files,
                     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, 0) mb,
                     0 reclaimable,
                     COUNT(*) no_of_files,
                     NULL oldest_record
                FROM v$controlfile
               WHERE is_recovery_dest_file = 'YES'))
    SELECT order_, NAME, VALUE
      FROM(
    SELECT 0 order_, NAME, 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, 2))
      FROM flashback_database_log
    UNION
    SELECT 2, '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
    
  • 相关阅读:
    小明系列问题——小明序列
    Multiplication Table
    DZY Loves Colors
    Points
    Tree
    img标签中alt属性与title属性在seo的作用-摘自网友
    如何合理命名CSS文件——摘自网友
    <meta http-equiv="X-UA-Compatible" content="IE=7" />
    英语
    10个CSS简写/优化技巧-摘自网友
  • 原文地址:https://www.cnblogs.com/macleanoracle/p/2968022.html
Copyright © 2020-2023  润新知