Monday, 23 June 2025

Filled under:

 WITH full_backup_sets AS (

    SELECT

        bs.set_stamp,

        bs.set_count,

        MIN(bp.start_time) AS set_start_time,

        MAX(bp.completion_time) AS set_end_time

    FROM

        v$backup_set bs

    JOIN

        v$backup_piece bp

        ON bs.set_stamp = bp.set_stamp AND bs.set_count = bp.set_count

    WHERE

        bs.backup_type = 'D'       -- Full backups only

        AND bp.status = 'A'        -- Successful pieces

        AND bp.start_time >= SYSDATE - 30  -- Last 30 days (adjust as needed)

    GROUP BY

        bs.set_stamp, bs.set_count

)


SELECT

    ROUND(AVG((set_end_time - set_start_time) * 1440), 2) AS avg_full_backup_duration_mins,

    COUNT(*) AS total_full_backup_jobs,

    SYSDATE AS report_generated_at

FROM

    full_backup_sets;

0 comments:

Post a Comment