(1)制定一个简单可行的沟通机制,了解系统的变更情况。
(2)不要让系统意外宕机。
(3)明确优化目标,切忌无止境的优化。
(4)不要一个人战斗,了解你能够获得的其他支持力量。
(5)部署性能监控工具(如OSW),记录下当前主机资源的使用情况。
(6)查看V$SESSION_WAIT视图,获取STATSPACK/AWR报告。
(7)快速分析,制定优化方案和实施计划。
(8)定位故障。
(9)再次沟通,审核优化方案和实施计划。
(10)实施优化方案,做好回退机制。
(11)优化效果评估,如果没有达到预期,则重复6~10步骤。
(12)记录下这个成功案例,做到举一反三。
“尽信书,不如无书”。我们需灵活运用以上各种优化手段,切忌照搬照抄。优化完成之后,再针对优化成果建立新的数据库的性能基线。注意上述优化步骤并不是简单地串行化操作,而是一个相互迭代,循序渐进的过程。某些调整可能会产生意外的性能结果,如果在调整之前保存了以前的设置,那么回退不正确的调整就变得非常简单。
数据库性能优化涉及面很广。实践经验表明,在数据库性能优化的过程中,如果仅仅调整Oracle参数,一般只能提高20%左右的性能。而仅仅调整SQL执行计划,也往往也无法全面提高系统的性能。只有针对应用程序的代码级优化才能真正提高数据库的性能,当然这个优化成本也是最高的。
附件为Oracle SQL执行计划变化的处理流程,供参考。