环境:
DB:Oracle 11.2.0.1.0
OS:Windows Server 2008
问题:
ERP薪资发放节点计算时间耗时较长,需要15分钟左右;
问题原因:
有两个SQL 执行特别慢
第一个查询WA_CACU_DATA的SQL,在plsql中执行特别快,返回0条,怀疑某些堆表被当成临时表使用,导致执行计划有问题,手动删除和锁定这些表的统计信息后查询 SQL 速度有明显提高;
第二个更新WA_CACU_DATA 的SQL ,第一次执行快,第二次执行慢,执行计划不稳定,禁用基数反馈 (_optimizer_use_feedback) 后速度正常;
解决过程:
问题重现时,查看主要慢在两个SQL ,一个 select wa_cacu_data … ,另一个 update …;
解决方案:
在plsql 中执行特别快,返回 0 条,怀疑某些堆表被当成临时表使用,导致执行计划有问题,手动删除和锁定这些表的统计信息后查询 SQL 速度有明显提高;
SQL> exec dbms_stats.delete_table_stats('cjc', ’ tbm_period ’ );
SQL> exec dbms_stats.delete_table_stats('cjc', ’ org_adminorg ’ );
SQL> exec dbms_s