--check the log switch interval for each record in v$log_history.

WITH 

v_former AS 

  (SELECT lead(first_time)  

          OVER (partition by thread# ORDER BY SEQUENCE#) AS former

        , recid

        , SEQUENCE#

    FROM v$log_history),

v_current AS 

  (SELECT first_time

        , recid

        , SEQUENCE#

    FROM v$log_history)

SELECT  lpad(EXTRACT(DAY FROM (va.former-vb.first_time) DAY TO SECOND),4)

        ||' days '||

        lpad(EXTRACT(HOUR FROM (va.former-vb.first_time) DAY TO SECOND),4 )

        ||' hours '||

        lpad(EXTRACT(MINUTE FROM (va.former-vb.first_time) DAY TO SECOND),4 )

        ||' minutes '||

        lpad(EXTRACT(SECOND FROM (va.former-vb.first_time) DAY TO SECOND),4)

        ||' seconds'       

        AS INTERVAL        

      , va.SEQUENCE#

      , va.recid

  FROM v_current vb, v_former va

 WHERE va.recid=vb.recid

 --AND va.first_time < xxxx  --times is up to you.

 --AND va.first_time > xxxx

 ORDER BY SEQUENCE#;

 

 

--check the average times of log switching.

SELECT round(avg(total_minutes))||' minutes' AS average_interval_m 

  FROM

(

WITH 

v_former AS 

  (SELECT lead(first_time)  

          OVER (partition by thread# ORDER BY SEQUENCE#) AS former

        , recid

        , SEQUENCE#

    FROM v$log_history)

SELECT round(to_number(va.former-vb.first_time)*24*60) AS total_minutes

  FROM v$log_history vb, v_former va

 WHERE va.recid=vb.recid

   AND first_time > sysdate - 1  --the times is up to you.

);