我们使用oracle作为我们产品的后端数据库。我一直在我们的系统上运行一系列压力测试,我已经开始注意到数据库重启后oracle的速度要快得多。随着时间的推移(几个小时左右),数据库似乎越来越慢,我将看到数据库机器处于更大的压力之下。
在oracle重新启动后立即运行测试,我将看到1分钟的平均负载为5左右,平均CPU大约为10-15%。几个小时后,我看到平均负载为13,CPU为40-70%。 (这是red hat linux 2x Quad core xeon,Raid 10 10k rpm sas驱动器。)
我的第一个想法是,数据库事务不会变得更快,因为这些查询正在缓存吗?
我似乎无法弄清楚问题所在。
编辑: 事实证明,由于设计不良,连接软件方面存在问题。系统上的每个操作都创建了一个新的插入,删除和选择。在生成所有这些独特查询的情况下,缓存的内容不断变化。我所说的尖峰是查询缓存填满的时候。
答案 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有很多隐藏的功能,或者我没有那么训练,或者我需要在这些
上探索更多