我有两个具有相同数据的数据库,在同一台物理服务器上运行。
它们的性能不同(一个比另一个快两倍)。我比较了初始化参数并更新了 SPFILE 参数,使它们完全相同。唯一的区别是较慢的一个在补丁级别稍新的安装上运行。
在我将较慢的那个补丁回滚之前,是否有一些工具可以告诉我两个数据库之间配置的所有差异?我的印象是,并非所有内容都可以在初始化参数/SPFile 中找到。
答案1
检查有问题的实例的数据库统计信息。如果统计信息过时,那么优化器通常会提出不同的执行计划,包括不使用索引(如果它有当前统计信息,通常会使用索引)。一种快速检查的方法是比较两个数据库上相同查询的解释计划输出。显然,检查在一个实例上执行不佳而在另一个实例上执行良好的查询。
另外,查看 dba_tables.last_analyzed 列,确保最近分析了一些表。如果没有,请查看 dba_scheduler_jobs 中的 job_name GATHER_STATS_JOB,确保其运行正常 - 注意 LAST_START_DATE 和 FAILURE_COUNT。