暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 重做日志文件大小和数据库性能

ASKTOM 2019-04-18
339

问题描述

你好,
我们有一个如下的数据库设置

1) SQL server -- 这里发生事务的地方

2) Oracle(DSS)-我们正在借助24/7运行的批处理文件从SQL server (并非所有表仅22个表) 传输增量数据。

在将增量数据插入到Oracle表中之后,我们将触发一些过程 (计划每1小时运行一次) 并更新一些销售数据 (此更新非常昂贵,因为几乎每个表都通过触发过程进行更新)。

我们有3个重做日志文件组,每个组大小为50 MB,在销售结束期间,这些过程需要时间才能完成,并且整体性能正在下降。
所以我执行了下面的查询

select /*+ ordered */ 
 a.sid, 
 decode(a.type, 'BACKGROUND', substr (a.program,instr(a.program,'(',1,1)), 'FOREGROUND') type, 
 b.time_waited, 
 round(b.time_waited/b.total_waits,4) average_wait, 
 round((sysdate - a.logon_time)*24) hours_connected 
 from   v$session_event b, v$session a 
 where  a.sid   = b.sid 
 and    b.event = 'control file parallel write' 
 order by type, time_waited;


并发现结果如下

      SID TYPE          TIME_WAITED AVERAGE_WAIT HOURS_CONNECTED
---------- ------------ -----------------------------------------
      1138 (CKPT)          94272       1.5514              47 
       855 (LGWR)          11100       1.2042              47 
      1990 (MMON)          4856        1.3167              47 



从上面的输出中,这真的是一个reolog大小的问题吗?

请分享你对此的想法 ..









专家解答

这可能不是等待重点... 但是,对于做大量工作的任何数据库的重做日志来说,50MB听起来很小。(在某些版本中,默认为50MB,因此我可以了解它的来源)。

检查v $ log_history日志切换的频率 (即填充并切换到下一个重做日志)。

通常,我喜欢我的大小重做日志,以便它们每30-60分钟切换一次。

交换机有一些开销 (这些开销曾经很大,但是随着每个版本的发布,它变得更好),所以我不喜欢真正频繁的交换机。要使它们更大,只需添加新的,然后将您循环使用的旧的放到新的。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论