oracle redo过度诊断是怎样的

网友投稿 414 2023-12-30

oracle redo过度诊断是怎样的

oracle redo过度诊断是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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- (TNS V1-V3) 210481

241 1 oracle@orastb.bonc.com- (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- (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,hh34: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;

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:oracle表碎片的整理分析
下一篇:为什么oracle 10.2.0.5只会获取child#=1的shared pool latch
相关文章

 发表评论

暂时没有评论,来抢沙发吧~