加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

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

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

对于Merge语句的更多反思,如下:

  1. 我所从事的一些调优工作中,对于Merge的优化很难下手,因为这虽然是一个语句,但是有多重执行路径,执行计划没法确定,使用调优工具大多也给不出建议.
  2. 在10g的版本中,如果scheduler中使用PL/SQL块,包含有Merge语句,使用dbms_metadata.get_ddl竟然无法查看到完整的DDL信息.
  3. 如果你想查看到DDL的信息,如果通过解析dmp的方式,就会发现DMP对于这个语句的处理很是特殊,可能又会让你失望了.

这些问题会或多或少困扰到你,而我印象很深的案例,则是第1项中列举的,优化类的困扰.我举一个例子.

下面是我在一次系统监控中发现的一个性能问题,CPU使用异常,而经过分析发现瓶颈来源于数据库层面的一个SQL语句.

看到的语句类似这样的形式:

查看执行计划发现里面存在大量的全表扫描,资源消耗极高.

而这个语句的逻辑其实仔细看看还能明白,就是在插入一条记录前看看表中是否含有,如果没有就插入,否则更新,但是里面使用了count(*)的方式处理,过滤条件存在一些潜在的问题,而优化方式就是简化这种逻辑.改为如下的方式:

9总结

很多的事情都有两面性,Merge语句就是如此,而且是一种特殊的存在,可能很多问题在特定版本中出现,在升级之后问题就会迎刃而解,而如果分析不当,可能我牢牢攥在手里的就是一个错误的结论,所以很多观点碰撞还是会摩擦出不少的火花,大家共同从中受益.我依然记得很久之前的一次技术争论中,有人说道:判断一个技术的优劣,也需要看待,到底是它带来的问题更多还是解决的问题更多?

确实如此.

文章出处:DBAplus社群

(编辑:新余站长网)

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

热点阅读