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;



本文转自 张冲andy 博客园博客,原文链接:  http://www.cnblogs.com/andy6/p/8556275.html ,如需转载请自行联系原作者

相关文章
|
12月前
|
存储 XML SQL
Oracle 数据库自动诊断库 ADR(Automatic Diagnostic Repository)简介 发表在 数据和云
Oracle 数据库如果出现故障,我们的第一个反应是查看数据库的 alert log,但一些工程师对 alert log 不熟悉,实际上 alert log 位于Oracle 数据库自动诊断库(Automatic Diagnostic Repository,以下简称 ADR) 中,要熟悉 alert log,我们必需全面了解 ADR 的概念。
218 0
|
12月前
|
Oracle 前端开发 关系型数据库
使用隐含参数_disable_logging分析oracle写redo logfile的性能
oracle有一个隐含参数_disable_logging可以禁止日志的生成,这个参数当然不能在生产库使用,但我们可以将其因为与测试,例如,如果我们怀疑数据库写redo logfile存在性能问题,我们可以将这个参数设置为true,禁止写日志,看看oracle的性能提高了多少。
|
SQL 存储 监控
Oracle中的SQL_TRACE是什么?诊断事件是什么?常用的10046及10053诊断事件的区别是什么?
Oracle中的SQL_TRACE是什么?诊断事件是什么?常用的10046及10053诊断事件的区别是什么?
414 0
|
Oracle 关系型数据库 Unix
Oracle中常用跟踪诊断trace配置
Oracle中常用跟踪诊断trace配置
199 0
|
SQL Oracle 关系型数据库
在Oracle中,如何管理联机Redo日志组与成员?
在Oracle中,如何管理联机Redo日志组与成员?
169 0
|
SQL 存储 Oracle
Oracle--运行过程中当前redo日志文件损坏会发生什么
模拟Oracle运行过程(有事务未提交时)当前redo日志文件损坏是数据库的状态
362 0
|
存储 Oracle 关系型数据库
深入解析Oracle IMU模式下的REDO格式
1、什么是IMU? 2、在哪些场景下不会使用IMU特性?(Oracle10g出现了IMU,默认开启IMU) 3、如何手动关闭IMU? 4、谈谈一条UPDATE语句从第一步到第九步的整个过程?在IMU模式下对REDO日志做DUMP分析(上图所示:IMU模式的REDO格式)。 5、IMU的主要作用是什么,也就是说为了解决什么问题?
|
Oracle 关系型数据库 数据库

推荐镜像

更多