ORACLE SQL优化之ORA-03150&ORA-02055&ORA-02063
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE SQL优化之ORA-03150&ORA-02055&ORA-02063相关的知识,希望对你有一定的参考价值。
今天,一实施同事反应,他执行一存储过程,执行到一条含有dblink的insert into select语句时报错:ORA-03150 ORA-02055 ORA-02063,具体报错如图所示:
该报错涉及的SQL语句是:
insert into [email protected]_jkb
select oae001,
akb020,
akc190,
akc220,
aae072,
akc515,
aka135,
aae100,
akc301,
b.reject_money,
b.reject_reson,
b.oper_user_id,
b.oper_user_name,
b.oper_date,
‘0‘,
‘EH‘,
‘EH‘,
sysdate,
null,
null
from KC22 a
inner join dr_audit b
on a.oae001 = b.prescription_no
and b.load_date > (select syncdate from dr_syncdate)
and a.aae100 = ‘1‘;
以下是优化的处理过程:
1、首先,让其统计了insert into select的select的数据量有3394条,不是太多,但是在执行insert into子查询select的时候过程很长,有10多分钟;
2、查看insert into子查询的sql执行计划,如下:
3、让实施同事控制子查询的数据量为1条时,虽然执行时间比较长,但是能够执行成功
4、建议实施同事,根据select子句的where条件对表kc22的字段AAE100创建了索引,索引创建后,子查询语句执行速度明显提升,执行计划如下:
5、然后,实施同事再次执行insert into select,2分钟左右成功执行。
问题解决!
本文出自 “清风艾艾” 博客,请务必保留此出处http://3596022.blog.51cto.com/3586022/1976244
以上是关于ORACLE SQL优化之ORA-03150&ORA-02055&ORA-02063的主要内容,如果未能解决你的问题,请参考以下文章