Oracle 数据库性能相关

Posted

技术标签:

【中文标题】Oracle 数据库性能相关【英文标题】:Oracle Database performance related 【发布时间】:2009-04-23 07:20:14 【问题描述】:

我目前正在开发 9.2.0.8 Oracle 数据库。我有一些与数据库性能相关的问题 与重做日志锁存和争用太相关。来自实际实践的答案将不胜感激。请帮忙。

    我的数据目前有 25 个重做日志文件,每个文件中有 2 个成员。每个成员的大小为 100m。 那么这是否值得保留 25 个重做日志文件,每个文件有 2 个成员(每个 100MB)。 我的数据库是 24*7,最小用户为 275,最大用户为 650。我的数据库大部分是 SELECT,但非常 更少的插入/更新/删除。 从 1 个月开始,我开始注意到我的数据库生成的档案平均为 17GB 最大时最小到 28GB。 但是 LOGSWITCH 平均每 5-10 分钟发生一次。有时更频繁。 甚至一分钟内3次。 但我的 SPFILE 说 log_checkpoint_timeout=1800(30 分钟)。

    关于重做日志闩锁和争用, 当我发出:- 选择名称,值 来自 v$sysstat WHERE name = '重做日志空间请求'; 输出:-

        NAME                                                               VALUE
        -------------------------------------------------------------------- ----------
         redo log space requests                                               20422
    (This value is getting increased day by day)
    
    Oracle 建议将重做日志空间请求接近于零。 所以我想知道为什么我的数据库经常进行日志切换。这是因为 数据或因为其他事情。 我的疑问是,如果我增加 REDO LOG 缓冲区,问题可能会解决。我增加了重做日志缓冲区 从 8MB 到 11MB。但我并没有发现太大的不同。 如果我将 REDO LOG FILE 的大小从 100MB 增加到 200MB,会有帮助吗?它会帮助我减少 日志切换时间,并使 REDO LOG SPACE REQUEST 的值接近于零。

【问题讨论】:

【参考方案1】:

关于您提供的信息的某些内容没有加起来 - 如果您真的生成大约 20G/分钟的存档日志,那么您将每分钟至少切换 200 次 100M 日志文件 - 而不是每分钟 3 次你提到的最坏的情况。这也与您对“...主要是 SELECT 的”的描述不一致。

在现实世界中,我不会担心平均每 5-10 分钟切换一次日志。有了这么多的重做,没有任何 init 参数在切换时发挥作用——这是因为在线重做日志填满了。在这种情况下,控制切换速率的唯一方法是调整日志大小,例如将日志大小加倍会将开关频率降低一半。

【讨论】:

【参考方案2】:

每分钟 17GB 的日志文件对我来说似乎相当高。可能您数据库中的某个表空间仍处于在线备份模式。

【讨论】:

【参考方案3】:

查看哪些会话正在生成大量重做以及哪些会话在重做日志空间中等待的时间最长可能会有所帮助。

SQL> l
  1  select name, sid, value
  2  from v$sesstat s, v$statname n
  3  where name in ('redo size','redo log space requests')
  4   and n.statistic# = s.statistic#
  5  and value > 0
  6* order by 1,2

【讨论】:

以上是关于Oracle 数据库性能相关的主要内容,如果未能解决你的问题,请参考以下文章

动态性能视图

Oracle 性能优化——方法

Oracle自动性能统计

Oracle自动性能统计

为啥在oracle性能测试时,不需要监控网络性能指标?而sybase则需要

如何对Oracle sql 进行性能优化的调整