![我怎样才能知道我的 Oracle 数据库配置有何不同?](https://linux22.com/image/562203/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E7%9F%A5%E9%81%93%E6%88%91%E7%9A%84%20Oracle%20%E6%95%B0%E6%8D%AE%E5%BA%93%E9%85%8D%E7%BD%AE%E6%9C%89%E4%BD%95%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
我有两个具有相同数据的数据库,在同一台物理服务器上运行。
它们的性能不同(一个比另一个快两倍)。我比较了初始化参数并更新了 SPFILE 参数,使它们完全相同。唯一的区别是较慢的一个在补丁级别稍新的安装上运行。
在我将较慢的那个补丁回滚之前,是否有一些工具可以告诉我两个数据库之间配置的所有差异?我的印象是,并非所有内容都可以在初始化参数/SPFile 中找到。
答案1
检查有问题的实例的数据库统计信息。如果统计信息过时,那么优化器通常会提出不同的执行计划,包括不使用索引(如果它有当前统计信息,通常会使用索引)。一种快速检查的方法是比较两个数据库上相同查询的解释计划输出。显然,检查在一个实例上执行不佳而在另一个实例上执行良好的查询。
另外,查看 dba_tables.last_analyzed 列,确保最近分析了一些表。如果没有,请查看 dba_scheduler_jobs 中的 job_name GATHER_STATS_JOB,确保其运行正常 - 注意 LAST_START_DATE 和 FAILURE_COUNT。