日期:2014-05-16  浏览次数:20418 次

Oracle DB 性能优化:概览
? 制定恰当的优化目标
? 应用优化方法
? 平衡性能和安全性
? 确定常见的优化问题
? 使用Oracle Support 记录性能服务请求

  • 常规优化会话
优化会话的过程都是相同的:
1. 定义问题并陈述目标。
2. 收集当前统计信息。
3. 考虑一些常见的性能错误。
4. 制定试用解决方案。
5. 实施并度量更改。
6. 决定:“该解决方案是否达到目标?”
– 否?转到步骤3  并重复相关过程。
– 是?创建新基线。

常规优化会话
进行优化时,应将重点放在可为优化工作带来最大回报的特定方面。步骤是通用的,适用于所有性能监视工具。自动数据库诊断监视程序 (ADDM)  可自动执行优化方法中的许多步骤。
通常,经验丰富的 DBA 可以在用户尚未注意到问题之前就已经解决了问题。例如,公司知道访问数据库的用户数将要增加。此时,DBA 就可以开始规划必须进行的修改,以避免因为资源有限而造成整个系统的速度变慢。此类主动式优化要求 DBA 熟悉数据库、用户群和应用程序的所有方面。
建议的优化方法如下:
1. 定义问题并确定目标。此步骤是分析步骤。无论信息来源是用户、数据库统计信息还是度量,均将收集与问题对应的准确真实的数据。使用量化的并与数据库操作直接相关的术语来表述问题。例如,如果“XYZ”报表的运行时间是基线的两倍,则优化目标为:使“XYZ”报表的运行时间等于或小于基线。

2. 收集当前统计信息:检查主机系统和数据库的统计信息。收集操作系统和数据库的完整统计信息,并将其与基线统计信息进行比较。基线统计信息是实例的运行处在一种可接受状态时所获取的一组统计信息。检查不同之处,以确定系统中发生了哪些更改。“XYZ”报表是否发生了更改?数据是否发生了更改?生成报表的会话是否正在等待某个事件?
3. 考虑常见的性能错误:通过所收集的统计信息中的差异列表,与常见的性能错误进行比较。确定你的系统中是否出现其中某种错误。
4. 制定试用解决方案。在解决方案中包含概念模型。此模型的目的是通过展示数据库的总体状态来提供帮助。你将寻求下列问题的答案:
- 性能为什么会下降?
- 如何才能解决问题以达到目标?
5. 实施和度量更改:制定了试用解决方案之后,进行适当的更改。一次只能执行一项更改。如果同时进行多项更改,就无法知道哪项更改有效。如果更改未能解决问题,则无法知道是不是某些更改其了作用,而其他更改反而起了负作用。收集统计信息以度量更改。
6. “该解决方案是否达到目标?”将当前统计信息集与基线统计信息集进行比较。
如果确定需要进行更多的优化,则返回步骤 3  并重复执行相关过程。
如果解决方案达到目标,则将当前的统计信息集设为新的基线统计信息集。达到了目标。停止优化。

  • 定义问题
发现和定义问题:
? 倾听用户的反馈
? 检查预警日志和跟踪文件以发现错误
? 检查参数文件中的所有诊断设置或不适合的参数设置
? 检查内存、I/O  和CPU的使用情况。确定资源使用情况异常的进程
? 确定并优化大量占用CPU 或I/O  的SQL语句
? 收集实例和操作系统(OS) 的统计信息

定义问题
问题随时可能出现。积极的 DBA 会监视问题,并在用户注意到问题之前将其解决。过去发现问题和定义步骤很拖沓,有时会依赖于收听用户的反馈。用户反馈非常重要,但却经常是主观的,并且无法重现。在 Oracle Database 10 g 中,下列许多信息源都可以在Enterprise Manager 界面中查看到。
? 检查日志中的错误消息,这些错误消息可能会为发现问题的性质提供快速的线索。
不要忽略特定于系统和应用程序的日志。
? 确保初始化参数设置对系统有意义。建议一天中的不同时段采用不同的设置(如果这样做有帮助的话)。
? 检查CPU 队列和磁盘队列、磁盘利用率以及内存交换情况。这些都会有系统超负荷的迹象。如果应用程序优化得相当好,那么,最好的建议也许只能是增加硬件了。
? 使用可用的工具(如 Statspack 或ADDM),确定应用程序中占用资源最多的 SQL