加入收藏 | 设为首页 | 会员中心 | 我要投稿 厦门网 (https://www.xiamenwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

一个SQL语句引发的ORA-00600错误排查

发布时间:2021-01-08 20:07:31 所属栏目:站长百科 来源:网络整理
导读:《一个SQL语句引发的ORA-00600错误排查》要点: 本文介绍了一个SQL语句引发的ORA-00600错误排查,希望对您有用。如果有疑问,可以联系我们。 作者介绍 杨建荣 ,【DBAplus社群】联合发起人.现就职于搜狐畅游,Oracle ACE-A、YEP成员,超7年数据库开发和运维经验

所以经过上面的排除之后,我们需要重新审视这个语句,看看是否存在一些隐患.

4模拟复现问题

经过反复测试之后,我发现这个问题可以很容易复现.

当然我换一个方式来说明,我可以创建一个表,然后模拟这个ORA-00600的错误.

创建测试表test_bug

然后使用如下的语句尝试生成执行计划.

可能眼尖的朋友发现这个里面有些语法问题,这也是我无意中埋下了几个探针,如果你看到语句哪里有问题,后续分析就会明白了.

这个语句里的问题我是可以保持了(select * from test_bug where object_type=’TABLE’) t 这个子查询,抛出了ORA-00600的错误,我简化一番如何,简化为(select*from test_bug)t这个子查询,同样还是会抛出一样的错误.

我们来回过头来翻翻旧账,刚刚的语句的问题在如下红框的几个地方,在解析的时候都没有抛出错误,可见问题是出在这些之前,那么推理只有test_bug相关的子查询了.

修复这几个语法问题之后,使用下面的方式就没有问题了,最后调用成功的语句如下,我们把子查询替换为表test_bug

我们来反思一下,其实我们所写的merge语句都是merge into table_xx using(xxxx) on (xxx)的形式.

(编辑:厦门网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读