OS환경 : Oracle Linux 6.8(64bit)
DB 환경 : Oracle Database 11.2.0.4
에러 : ORA-01476: divisor is equal to zero
쿼리 조회 시 에러 발생
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
SELECT * FROM(
SELECT ROUND(ELAPSED_TIME/EXECUTIONS/1000000,3) AS ELAPSED_TIME
, LAST_ACTIVE_TIME
, HASH_VALUE
, SQL_TEXT
FROM V$SQL
WHERE parsing_schema_name = 'SYS'
AND LAST_ACTIVE_TIME >= TO_DATE('20180307', 'YYYYMMDD')
)
WHERE ELAPSED_TIME > 1
order by ELAPSED_TIME desc;
*
ERROR at line 2:
ORA-01476: divisor is equal to zero
|
해결 방법 : 분모가 0이 안되게 쿼리 변경
분모가 0이 안되게 하는게 정답이지만 데이터 정합성, 기타 문제로 인하여 분모가 0이 될 수가 있음
그래서 오류없이 자료를 뽑고, 분모가 0인 데이터는 0으로 표시하기 위해서 아래와 같이 SQL 수정해야함
1
|
SELECT NVL(분자 / DECODE(분모, 0, NULL, 분모), 0)FROM 테이블;
|
위 쿼리에 적용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
SQL>
SELECT * FROM(
SELECT ROUND(NVL((ELAPSED_TIME / DECODE(EXECUTIONS, 0, NULL, EXECUTIONS)/1000000 ), 0),3) AS ELAPSED_TIME
, LAST_ACTIVE_TIME
, HASH_VALUE
, SQL_TEXT
FROM V$SQL
WHERE parsing_schema_name = 'SYS'
AND LAST_ACTIVE_TIME >= TO_DATE('20180307', 'YYYYMMDD')
)
WHERE ELAPSED_TIME > 5
order by ELAPSED_TIME desc;
ELAPSED_TIME LAST_ACTIVE_ HASH_VALUE
------------ ------------ ----------
SQL_TEXT
---------------------------------------------------------
6 22-OCT-21 84828483
call dbms_stats.gather_database_stats_job_proc ( )
|
원인 : 분모가 0이어서 발생하는 문제.
참조 : http://woogi.net/80129466651
'ORACLE > Trouble Shooting' 카테고리의 다른 글
ORA-15000: command disallowed by current instance type (0) | 2018.12.27 |
---|---|
ORA-16038: log 3 sequence# 231 cannot be archived (0) | 2018.12.26 |
ORA-01146: cannot start online backup - file 5 is already in backup (0) | 2018.12.19 |
sqlplus 접속시 hang 발생할 경우 조치 및 접속 방법 (0) | 2018.12.17 |
ORA-14404: partitioned table contains partitions in a different tablespace (0) | 2018.12.12 |