Oracle 数据库非常慢-从哪里开始以及如何找到原因?

Oracle 数据库非常慢-从哪里开始以及如何找到原因?

我们的 Oracle 数据库(11g)突然变得非常慢。我不知道从哪里开始调试过程来查找问题到底是什么?

我尝试生成表统计信息并查找锁...但我找不到任何直接指向原因的信息,或者也许我找错了地方...

请指导我从哪里开始..

好吧,我来定义什么是慢:)

插入需要花费大量的时间,即使插入 100,000 条记录也需要一个小时左右

答案1

我首先会查看数据库服务器,看看是否存在瓶颈——例如磁盘、网络、CPU、内存。如果存在底层硬件问题,这可能会引导您找到问题所在。但如果存在应用程序问题,这可能会显示结果,而不是原因。

解决 Oracle 性能问题的最彻底的方法是针对一个或多个慢速会话进行扩展 SQL 跟踪,对其进行分析,并查看它们实际花费时间的位置。有关此操作的一个很好的信息来源是 Cary Millsap 的书,您可以看到第一章这里

但是,查看相同信息的一种不太完整的方法是简单地查询数据字典,以查看慢速会话正在等待哪些事件。如果出现严重错误,这通常与完整跟踪一样有效。我会先运行此查询几次,看看它会引导您到哪里:

select seq#, event, wait_time, seconds_in_wait, state
from v$session
where type='USER'
;

收集类似信息的另一种方法是Tanel Poder 的 Snapper 脚本

答案2

如果一段时间内一切运行良好,并且没有发生重大变化(即使用量增加、索引修改、报告繁重、分析处理等)

我首先要检查您的硬件/物理磁盘的运行状况和性能。

坦白说,这个问题很宽泛,还有很多未知数……但既然你问的具体问题是我从哪里开始,那我就从那里开始吧。

答案3

一般来说,从顶层开始,逐步细分时间花费在哪里。在某个时候,你应该看到在不该花的地方花费了太多时间。

如需了解更多详细信息,我强烈推荐 Cary Millsap 的论文清晰思考绩效

答案4

您是否获得了 Oracle Diagnostic Pack 的许可?如果是,则可以使用两个有用的工具:ADDM(自动诊断监视器)和 AWR(自动负载存储库)。AWR 报告一开始可能难以理解,但它们可以提供关于数据库中实际发生情况的宝贵信息。

如果您没有诊断包,您仍然可以访问活动会话历史记录视图。

您使用的是 11g,这意味着您可以启动“DB Control”,它是 Enterprise Manager 的受限版本(或者您可能拥有完全授权的企业管理器)。DB Control 提供 Web 界面,它可以让您查看与性能相关的信息等,它收集了大量有用的信息。同样,有很多东西需要学习,但如果存在性能问题,快速查看“性能”选项卡就可以提供大量信息。

问候

相关内容