启动后几小时Oracle负载峰值

时间:2008-09-24 23:04:59

标签: performance oracle

我们使用oracle作为我们产品的后端数据库。我一直在我们的系统上运行一系列压力测试,我已经开始注意到数据库重启后oracle的速度要快得多。随着时间的推移(几个小时左右),数据库似乎越来越慢,我将看到数据库机器处于更大的压力之下。

在oracle重新启动后立即运行测试,我将看到1分钟的平均负载为5左右,平均CPU大约为10-15%。几个小时后,我看到平均负载为13,CPU为40-70%。 (这是red hat linux 2x Quad core xeon,Raid 10 10k rpm sas驱动器。)

我的第一个想法是,数据库事务不会变得更快,因为这些查询正在缓存吗?

我似乎无法弄清楚问题所在。

编辑: 事实证明,由于设计不良,连接软件方面存在问题。系统上的每个操作都创建了一个新的插入,删除和选择。在生成所有这些独特查询的情况下,缓存的内容不断变化。我所说的尖峰是查询缓存填满的时候。

7 个答案:

答案 0 :(得分:1)

你在运行什么版本的oracle?你有statspack或AWR设置吗?如果你这样做,检查那些,以显示数据库正在做什么。

答案 1 :(得分:1)

我注意到,使用Oracle 10g,Oracle会安排一项工作,以便每天自动计算统计信息。您可能希望在数据库繁忙时查看活动会话,并查看后台会话是否正在忙于计算表的统计信息。

答案 2 :(得分:0)

你确定压力测试正在释放它使用的会话吗?会话的积累,然后在这些会议之后的时间可能会产生这种行为。

根据请求将此查询从评论移至我的答案正文......

select
  username,
  osuser,
  lockwait,
  status,
  sql_text
from
  v$session,
  v$sqltext
where
  username is not null
and
  username not in ('SYSMAN','DBSNMP')
and
  hash_value = sql_hash_value
order by
  username,
  hash_value,
  piece;

答案 3 :(得分:0)

数据库SGA交换到磁盘可能存在问题。与RAM大小相比,检查SGA和PGA的大小。

您需要提供有关Oracle和Red Hat版本的更多信息(例如, 我遇到过Oracle 9i和Red Hat Enterprise Linux 3.x的性能问题,RAM大小为4 GB或更高,在升级到Red Hat 4.x和Oracle 10g时已经消失了)

答案 4 :(得分:0)

因此,在重新启动并且性能再次提高后,您是丢弃数据还是保留数据?您需要运行statspack / AWR / ADDM / OEM以获取有关正在发生的事情的更多信息。

由于您尚未发布任何详细的诊断信息,我需要先开始学习ABCs。见Oracle 10.2 Performance Tuning Guide

答案 5 :(得分:0)

添加以下所需信息列表:

您使用的是存档日志吗? 你有多少个重做日志组?每组有多少重做日志? 重做日志有多大?

您是如何重新启动Oracle的?您是否只是立即关闭,然后启动?你重启服务器了吗?

如果日志文件太小,您可能会进入等待重做日志写入存档日志的状态,然后才能继续,您可以通过增加日志文件的大小来帮助解决这个问题。重做日志。

关闭并重新启动oracle会导致重做日志全部写入存档日志,并且在您开始备份后仍然准备就绪。然后,当他们填写重做信息时,您会在归档时遇到瓶颈。

如果您运行Oracle 10g,AWR报告确实是最有用的。如果你正在运行9i,那么statspack是等价的。

运行AWR报告

登录sqlplus

sqlplus <sys or system user>/<password>@<SID>

创建'之前'统计信息快照

SQL> execute dbms_workload_repository.create_snapshot

运行您的特定性能/负载测试

创建'after'统计信息快照

SQL> execute dbms_workload_repository.create_snapshot

创建工作负载存储库报告

SQL> start awrrpt

使用AWR报告,您应该能够确定瓶颈在哪里。

答案 6 :(得分:0)

像我这样的RAC分析师的一个很好的例子,他曾多次击败RAC,但从来不知道是什么让它失败了。现在,我正在使用建议的方法。实际上,Oracle有很多隐藏的功能,或者我没有那么训练,或者我需要在这些

上探索更多