zoukankan      html  css  js  c++  java
  • oracle之 redo过高诊断

    一、诊断过度redo

    要找到生成大量重做的会话,您可以使用以下任何一种方法。这两种方法都检查生成的撤销量。
    当一个事务生成撤销,它将自动生成重做。


    当需要检查生成大量的程序时,使用第一个查询。当这些程序激活多个事务时重做。
    后者查询,可以用来发现哪些特定事务正在生成重做。


    1)法一 (针对某程序累计redo生成量)

    查询 V$SESS_IO ,此视图包含指示的列BLOCK_CHANGES。
    该会话更改了多少块。比较高的值表明,会话生成大量重做.

    SELECT s.sid, s.serial#, s.username, s.program,
    i.block_changes
    FROM v$session s, v$sess_io i
    WHERE s.sid = i.sid
    ORDER BY 5 desc, 1, 2, 3, 4;

    SID SERIAL# USERNAME PROGRAM BLOCK_CHANGES
    ---------- ---------- ------------------------------ ------------------------------------------------ -------------
    331 393 SYS sqlplus@orastb.bonc.com.cn (TNS V1-V3) 210481
    241 1 oracle@orastb.bonc.com.cn (SMON) 65308


    2)法二 (针对正在运行事务redo生成量)
    查询V$TRANSACTION.此视图包含有关事务信息的撤销块和撤消记录。(在 USED_UBLK and USED_UREC 中)

    SELECT s.sid, s.serial#, s.username, s.program,
    t.used_ublk, t.used_urec
    FROM v$session s, v$transaction t
    WHERE s.taddr = t.addr
    ORDER BY 5 desc, 6 desc, 1, 2, 3, 4;

    SID SERIAL# USERNAME PROGRAM USED_UBLK USED_UREC
    ---------- ---------- ------------------------------ --------------------------------------- ----- -----
    1 227 ANDY sqlplus@orastb.bonc.com.cn (TNS V1-V3) 37 2044

    二、如何诊断过度的重做生成。


    高 redo 通常分为两类:
    1。在一天的特定时间内。
    2。存档日志的突然增加。
    在这两种情况下,首先要检查的是数据库级别上的任何修改(修改任何参数、执行的任何维护操作、..)和应用程序级别(部署新应用程序,修改代码,增加用户,..)。
    要知道高重做的确切原因,我们需要关于重做活动的信息和负载的详细信息。以下信息需要收集在高redo做生成期间。

    1]要知道日志切换的趋势,可以使用以下查询。
    SQL> alter session set NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';

    SQL>select trunc(first_time, 'HH') , count(*)
    from v$loghist
    group by trunc(first_time, 'HH')
    order by trunc(first_time, 'HH');

    TRUNC(FIRST_TIME,'HH COUNT(*)
    -------------------- ----------
    29-MAY-2008 13:00:00 126
    29-MAY-2008 14:00:00 135 <- Indicate 135 log switches from 2-3 PM.
    29-MAY-2008 15:00:00 112

    -- 运行以下查询,了解在任何特定时间生成高重做的会话
    col program for a10
    col username for a10
    select to_char(sysdate,'hh24:mi'), username, program , a.sid, a.serial#, b.name, c.value
    from v$session a, v$statname b, v$sesstat c
    where b.STATISTIC# =c.STATISTIC#
    and c.sid=a.sid and b.name like 'redo size%'
    order by value;

  • 相关阅读:
    20200917-2 词频统计
    20200910-2 博客作业
    20200910-1 每周例行报告
    20200910-3命令行和控制台编程
    使用Requests库实现api接口测试(Python)
    Python Lambda函数的几种使用方法
    文本与向量之间的转换
    Oracle连接出现error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
    一图看懂新一代人工智能知识体系大全
    SqlDeveloper连接MySQL出现The connection property ‘zeroDateTimeBehavior’ acceptable values are: ‘CONVERT_TO_NULL’, ‘EXCEPTION’ or ‘ROUND’. The value ‘convertToNull’ is not acceptable 错误
  • 原文地址:https://www.cnblogs.com/andy6/p/8556275.html
Copyright © 2011-2022 走看看