问题描述
你好,
我们有一个如下的数据库设置
1) SQL server -- 这里发生事务的地方
2) Oracle(DSS)-我们正在借助24/7运行的批处理文件从SQL server (并非所有表仅22个表) 传输增量数据。
在将增量数据插入到Oracle表中之后,我们将触发一些过程 (计划每1小时运行一次) 并更新一些销售数据 (此更新非常昂贵,因为几乎每个表都通过触发过程进行更新)。
我们有3个重做日志文件组,每个组大小为50 MB,在销售结束期间,这些过程需要时间才能完成,并且整体性能正在下降。
所以我执行了下面的查询
并发现结果如下
从上面的输出中,这真的是一个reolog大小的问题吗?
请分享你对此的想法 ..
我们有一个如下的数据库设置
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分钟切换一次。
交换机有一些开销 (这些开销曾经很大,但是随着每个版本的发布,它变得更好),所以我不喜欢真正频繁的交换机。要使它们更大,只需添加新的,然后将您循环使用的旧的放到新的。
检查v $ log_history日志切换的频率 (即填充并切换到下一个重做日志)。
通常,我喜欢我的大小重做日志,以便它们每30-60分钟切换一次。
交换机有一些开销 (这些开销曾经很大,但是随着每个版本的发布,它变得更好),所以我不喜欢真正频繁的交换机。要使它们更大,只需添加新的,然后将您循环使用的旧的放到新的。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




