Sql Oracle慢速查询处理

Sql Oracle慢速查询处理,sql,oracle,rdbms,Sql,Oracle,Rdbms,我们有两个使用Oracle数据库的独立环境,一个版本为12.1.0.2(Server1),另一个版本为12.2.0.1(Server2)。两个数据库都存储在独立的机器中 问题在于,例如,Server1中的查询需要3秒,而Server2中的查询需要6秒。这听起来没那么糟糕,但我们通过不同的服务(如IBMCognos)访问DB,因此我们必须将服务执行其任务所需的时间添加到执行查询所需的总时间中 结果是,对于Server1中的同一进程,完成它需要几秒钟,而Server2中则需要几分钟 你知道为什么会发

我们有两个使用Oracle数据库的独立环境,一个版本为12.1.0.2(Server1),另一个版本为12.2.0.1(Server2)。两个数据库都存储在独立的机器中

问题在于,例如,Server1中的查询需要3秒,而Server2中的查询需要6秒。这听起来没那么糟糕,但我们通过不同的服务(如IBMCognos)访问DB,因此我们必须将服务执行其任务所需的时间添加到执行查询所需的总时间中

结果是,对于Server1中的同一进程,完成它需要几秒钟,而Server2中则需要几分钟

你知道为什么会发生这种情况吗


感谢

使用文本格式的数据而非图像请阅读并接受回答如果没有表定义as
create table
语句(包括所有索引)、实际查询(as)、执行计划(as),这是不可能回答的。您可能还想阅读介绍,了解如何提出一个关于SQL的好问题。找到“不同之处”是一个大问题。我建议从两个系统上最慢的查询开始。使用
select*从gv$SQL顺序中按运行时间描述查找最慢的SQL(或者如果您想要更好的分析,请让DBA使用AWR或ASH),并查看某个特定查询是否导致了问题。要了解原因,请从执行计划开始,它告诉您用于运行查询的算法和数据结构:
select*fromtable(dbms\u xplan.display\u cursor(sql\u id=>'sql\u id from first query')。你可以在这里发布结果,也许有人可以提供帮助。顺便说一句,我对设置参数OPTIMIZER_INDEX_COST_ADJ和OPTIMIZER_INDEX_CACHING持高度怀疑态度。这些参数显著地改变了默认优化器的行为,有效地告诉Oracle,“我的数据库的索引比您想象的要快一个数量级以上”。您的系统运行索引的速度比正常运行速度快,实际上有什么原因吗?大多数时候,当我看到设置了这些参数时,是因为有人想在一个计划上强制建立索引,然后变得懒惰,决定改变整个系统。您可能需要DBA检查所有参数。使用文本格式的数据而不是图像请阅读并接受回答如果没有表定义as
create table
语句(包括所有索引)、实际查询(as)、执行计划(as),这是不可能回答的。您可能还想阅读介绍,了解如何提出一个关于SQL的好问题。找到“不同之处”是一个大问题。我建议从两个系统上最慢的查询开始。使用
select*从gv$SQL顺序中按运行时间描述查找最慢的SQL(或者如果您想要更好的分析,请让DBA使用AWR或ASH),并查看某个特定查询是否导致了问题。要了解原因,请从执行计划开始,它告诉您用于运行查询的算法和数据结构:
select*fromtable(dbms\u xplan.display\u cursor(sql\u id=>'sql\u id from first query')。你可以在这里发布结果,也许有人可以提供帮助。顺便说一句,我对设置参数OPTIMIZER_INDEX_COST_ADJ和OPTIMIZER_INDEX_CACHING持高度怀疑态度。这些参数显著地改变了默认优化器的行为,有效地告诉Oracle,“我的数据库的索引比您想象的要快一个数量级以上”。您的系统运行索引的速度比正常运行速度快,实际上有什么原因吗?大多数时候,当我看到设置了这些参数时,是因为有人想在一个计划上强制建立索引,然后变得懒惰,决定改变整个系统。您可能希望让DBA检查所有参数。