oracle常见报错之除数为0解决方案

oracle常见报错之除数为0解决方案概述今天在用之前的一个看磁盘消耗最多的sql时居然提示了一个报错,之前明明还可以用的,报错信息如下:ORA-01476:divisor is e

欢迎大家来到IT世界,在知识的湖畔探索吧!

概述

今天在用之前的一个看磁盘消耗最多的sql时居然提示了一个报错,之前明明还可以用的,报错信息如下:ORA-01476:divisor is equal to zero.

oracle常见报错之除数为0解决方案


思路:

看报错很明显是ORACLE中进行除的时候出现了除数为0,加个判断条件或者decode()改写就可以了。


decode改写sql

假设是a/b,用函数decode(b,0,null,a/b) ,这样如果b为0,输出null,不为0输出a/b

SELECT *
 FROM (SELECT sql_fulltext AS sql,
 SQL_ID,
 decode(executions,0,null,disk_reads/executions) AS "Reads/Exec",
 disk_reads,
 executions
 FROM V$SQLAREA v
 WHERE disk_reads > 1000
 ORDER BY "Reads/Exec" DESC)
 WHERE rownum <= 10;

欢迎大家来到IT世界,在知识的湖畔探索吧!

oracle常见报错之除数为0解决方案


添加判断条件

改写成如下:

欢迎大家来到IT世界,在知识的湖畔探索吧!SELECT *
 FROM (SELECT sql_fulltext AS sql,
 SQL_ID,
 disk_reads/executions AS "Reads/Exec",
 disk_reads,
 executions
 FROM V$SQLAREA v
 WHERE disk_reads > 1000 and executions>0
 ORDER BY "Reads/Exec" DESC)
 WHERE rownum <= 10;
oracle常见报错之除数为0解决方案


觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

oracle常见报错之除数为0解决方案

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/32124.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信