ORACLE SQL優化之ORA-03150&ORA-02055&ORA-02063

   今天,一實施同事反應,他執行一存儲過程,執行到一條含有dblink的insert into select語句時報錯:ORA-03150 ORA-02055 ORA-02063,具體報錯如圖所示:


該報錯涉及的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執行計劃,如下:


3、讓實施同事控制子查詢的數據量爲1條時,雖然執行時間比較長,但是能夠執行成功

4、建議實施同事,根據select子句的where條件對錶kc22的字段AAE100創建了索引,索引創建後,子查詢語句執行速度明顯提升,執行計劃如下:


5、然後,實施同事再次執行insert into select,2分鐘左右成功執行。

問題解決!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章