OraQA

Oracle Question and Answer

  • Do you have a solution to a problem? Do you have an unanswered question? Login and share it with the Oracle community. More...

Oracle News


Entries RSS feed

Comments RSS feed

How to monitor the amount of redo generated per hour

February 20th, 2006 By Karl Reitschuster

Hi,

At customer sites very often I can see the transaction load via the amount of redo which was generated.

For best overview I like to query the amount of redo generated per hour:

SELECT Start_Date,
       Start_Time,
       Num_Logs,
       Round(Num_Logs * (Vl.Bytes / (1024 * 1024)),
             2) AS Mbytes,
       Vdb.NAME AS Dbname
  FROM (SELECT To_Char(Vlh.First_Time,
                       'YYYY-MM-DD') AS Start_Date,
               To_Char(Vlh.First_Time,
                       'HH24') || ':00' AS Start_Time,
               COUNT(Vlh.Thread#) Num_Logs
          FROM V$log_History Vlh
         GROUP BY To_Char(Vlh.First_Time,
                          'YYYY-MM-DD'),
                  To_Char(Vlh.First_Time,
                          'HH24') || ':00') Log_Hist,
       V$log Vl,
       V$database Vdb
 WHERE Vl.Group# = 1
 ORDER BY Log_Hist.Start_Date,
          Log_Hist.Start_Time;

Sample output:

START_DATE START_TIME NUM_LOGS               MBYTES                 DBNAME
---------- ---------- ---------------------- ---------------------- ---------
2006-01-24 11:00      1                      100                    MYDB
2006-01-24 14:00      2                      200                    MYDB
2006-01-24 16:00      1                      100                    MYDB
2006-01-24 18:00      1                      100                    MYDB
2006-01-24 20:00      5                      500                    MYDB
2006-01-24 21:00      14                     1400                   MYDB
2006-01-24 22:00      11                     1100                   MYDB
2006-01-25 00:00      1                      100                    MYDB
...

HTH

Karl

9 Responses to “How to monitor the amount of redo generated per hour”

  1. austrin Says:

    Hello Karl,

    it would be nice if for future postings you could provide some sample output as well.
    This would make - beside analysis of your input - the copy&paste into a test database obsolete.

    Thank you for sharing your experiences,
    Martin

  2. Eddie Awad Says:

    Martin, Karl did provide sample output, but the formatting was all scrambled. I ran the query on my database and added the output to the post (with the correct formatting).

  3. Karl Reitschuster Says:

    Thanks for adding the output;
    putting content in the right format into wordpress seems to be not so easy ?
    Greetings Karl
    @Martin,
    are you Martin Strobl?
    it could be :-)
    Karl

  4. austrin Says:

    @Karl - well guessed :-)
    i’m from AUSTRIa and my name is martiN …

  5. TMoore Says:

    There is funny script, showing in 3D matrix, on one axis is hours and on other is day of month
    regards

    SELECT SUBSTR(TO_CHAR(FIRST_TIME, ‘DD-MM-RR HH:MI:SS’), 1, 5) DAY,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘00′,
    1,
    0)) H00,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘01′,
    1,
    0)) H01,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘02′,
    1,
    0)) H02,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘03′,
    1,
    0)) H03,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘04′,
    1,
    0)) H04,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘05′,
    1,
    0)) H05,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘06′,
    1,
    0)) H06,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘07′,
    1,
    0)) H07,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘08′,
    1,
    0)) H08,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘09′,
    1,
    0)) H09,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘10′,
    1,
    0)) H10,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘11′,
    1,
    0)) H11,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘12′,
    1,
    0)) H12,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘13′,
    1,
    0)) H13,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘14′,
    1,
    0)) H14,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘15′,
    1,
    0)) H15,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘16′,
    1,
    0)) H16,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘17′,
    1,
    0)) H17,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘18′,
    1,
    0)) H18,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘19′,
    1,
    0)) H19,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘20′,
    1,
    0)) H20,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘21′,
    1,
    0)) H21,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘22′,
    1,
    0)) H22,
    SUM(DECODE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH24:MI:SS’), 10, 2),
    ‘23′,
    1,
    0)) H23,
    COUNT(*) SUM_cum
    FROM V$LOG_HISTORY A
    WHERE (TO_DATE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH:MI:SS’), 1, 8),
    ‘MM/DD/RR’) >= TO_DATE(&DATA_OD, ‘DD-MM-YYYY’))
    AND (TO_DATE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH:MI:SS’), 1, 8),
    ‘MM/DD/RR’)

  6. Karl Reitschuster Says:

    Hi Tmoore,
    your script is very interesting - would you post the rest of it?
    there is seomething missing at the end!

    Greetings
    Karl

  7. TMoore Says:

    Sorry that is it. I think this form cut the end. So replace end with this:

    FROM V$LOG_HISTORY A
    WHERE (TO_DATE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH:MI:SS’), 1, 8),
    ‘MM/DD/RR’) >= TO_DATE(&BEGIN_DATE, ‘DD-MM-YYYY’))
    AND (TO_DATE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH:MI:SS’), 1, 8),
    ‘MM/DD/RR’)

  8. Eddie Awad Says:

    I believe here is what’s missing:

    AND (TO_DATE(SUBSTR(TO_CHAR(FIRST_TIME, ‘MM/DD/RR HH:MI:SS’), 1, 8),
    ‘MM/DD/RR’) < = TO_DATE(&END_DATE, ‘DD-MM-YYYY’))
    

    Just make sure you put code between <pre> and </pre> because if you don’t, and you do not escape special html characters, you will get unexpected results.

  9. TMoore Says:

    Ok, you’re right thanks

Leave a Reply

You must be logged in to post a comment.

RSS feed for comments on this question