tft每日頭條

 > 生活

 > oracle參數大于1000報錯

oracle參數大于1000報錯

生活 更新时间:2024-12-24 10:39:01
概述

今天在用之前的一個看磁盤消耗最多的sql時居然提示了一個報錯,之前明明還可以用的,報錯信息如下:ORA-01476:divisor is equal to zero.

oracle參數大于1000報錯(oracle常見報錯之除數為0解決方案)1


思路:

看報錯很明顯是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;

oracle參數大于1000報錯(oracle常見報錯之除數為0解決方案)2


添加判斷條件

改寫成如下:

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參數大于1000報錯(oracle常見報錯之除數為0解決方案)3


覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的内容,感興趣的朋友可以關注下~

oracle參數大于1000報錯(oracle常見報錯之除數為0解決方案)4

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved