暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

INSERT ALL触发ORA-600错误

呆呆的私房菜 2025-02-24
43
    Whoami:5年+金融、政府、医疗领域工作经验的DBA
    Certificate:PGCM、OCP、YCP
    Skill:Oracle、Mysql、PostgreSQL、国产数据库
    Platform:CSDN、墨天轮、公众号(呆呆的私房菜)

    公众号接入了大模型,但是却发现知识库内容有限,部分读者提问技术问题后无法获取目标答案。
    一步一步来吧!近期会持续更新关于故障类的文章,希望在丰富知识库的同时,能为各位读者带来帮助!

    01

    故障描述
    • 客户反馈执行SQL之后,数据库出现 ORA-600 [kxtotolc_strdef2], [1] 错误,数据库版本为19.25.0,出现报错如下:

    02

    故障模拟
      CREATE TABLE t1 (c1 CLOB, c2 NUMBER);
      CREATE OR REPLACE TRIGGER trig1 BEFORE INSERT ON t1 FOR EACH ROW
      BEGIN
        IF :NEW.c1 = '' then
          null;
        END IF;
      END;
      /
      INSERT ALL INTO t1 (c1, c2) VALUES (NULLNULLSELECT * FROM DUAL;
                      *
      ERROR at line 1:
      ORA-00600: internal error code, arguments: [kxtotolc_strdef2], [2], [], [], [],
      [], [], [], [], [], [], []
       
      Rediscovery Information:
      Call Stack will likely include:
      kxtotolc <- kxtorab <- kxtopre <- inspre0 <- insmtipre0 <- qcsmtifc
          <- qkadml <- qkadrv <- opitca <- kksFullTypeCheck <- rpiswu2 <- kksLoadChild
           <- kxsGetRuntimeLock <- kksfbc <- kkspsc0 <- kksParseCursor <- opiosq0 <- kpooprx
            <- kpoal8 <- opiodr <- ttcpip <- opitsk <- opiino <- opiodr

      03

      故障原因
      • 触发了Oracle Bug 37379354,受影响版本如下:

      04

      解决方案
      • 使用INSERT代替INSERT ALL。



      本文内容就到这啦,希望能够给您带来帮助!


      点击上方公众号,关注我吧!


      文章转载自呆呆的私房菜,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论