oracle03150,ORACLE SQL优化之ORA-03150&ORA-02055&ORA-02063

今天,一实施同事反应,他执行一存储过程,执行到一条含有dblink的insert into select语句时报错:ORA-03150 ORA-02055 ORA-02063,具体报错如图所示:

ef5b3412764b01e3465375084851971b.png

该报错涉及的SQL语句是:

insert into yhjkb@dblink_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执行计划,如下:

8ccd4f8baecffaa5f39649b2621c9090.png

3、让实施同事控制子查询的数据量为1条时,虽然执行时间比较长,但是能够执行成功

4、建议实施同事,根据select子句的where条件对表kc22的字段AAE100创建了索引,索引创建后,子查询语句执行速度明显提升,执行计划如下:

da6db8ca7d8bd1537a79763cadfdc691.png

5、然后,实施同事再次执行insert into select,2分钟左右成功执行。

问题解决!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值