Notice
Recent Posts
Recent Comments
Link
160x600
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 훈련
- python
- 데이터 가공
- 알고리즘기초
- HeidiSQL
- 파이썬
- 정확도
- 회귀모델
- python기초
- Deep Learning
- DB
- 시각화
- 해석
- 딥러닝
- 데이터 분석
- 머신러닝
- Database
- 데이터전처리
- pythone
- SQL예제
- pandas
- tensorflow
- 크롤링(crawling)
- 데이터베이스
- sklearn
- 예측
- keras
- MariaDB
- 데이터 수집
- 데이터
Archives
- Today
- Total
코딩헤딩
오라클 데이터베이스 [ORA-00932, ORA-04098, ORA-01555] 오류 본문
728x90
익숙한 실수지만 디버깅에 시간이 오래 걸리는 오류 3가지.
1. ORA-00932: inconsistent datatypes: expected X got Y
- 의미 : 서로 다른 타입끼리 비교하거나 연산 시 발생
- 원인 : VARCHAR2 컬럼과 NUMBER 값 비교, 날짜형끼리 = 또는 + 연산 시 타입 불일치
SELECT * FROM users WHERE user_id = '100';
-- user_id가 NUMBER 타입일 때
-- 올바른 예
SELECT * FROM users WHERE user_id = TO_NUMBER('100');
-- 해결방법 타입 맞춰주기 (TO_NUMBER, TO_CHAR 등 사용)
-- 또는숫자 그대로 사용
SELECT * FROM users WHERE user_id = 100;
2. ORA-04098: trigger is invalid and failed re-validation
- 의미 : 트리거가 잘못 작성되어 실행할 수 없음
- 원인 : 트리거 내부 SQL 오류, 참조하는 테이블, 컬럼 변경으로 구조 불일치
-- 트리거가 사용하는 컬럼이 삭제되거나 이름이 변경된 경우
-- 해결방법
-- 1. 트리거 상태 확인
SELECT trigger_name, status FROM user_triggers WHERE table_name = '테이블명';
-- 2. 오류 내용 확인
SHOW ERRORS TRIGGER 트리거명;
-- 3. 트리거 수정 후 컴파일
ALTER TRIGGER 트리거명 COMPILE;
3. ORA-01555: snapshot too old
- 의미 : 오래된 커서를 참조하거나, 롤백 세그먼트가 제거되어 데이터를 복원할 수 없을 때 발생
- 원인 : 긴 쿼리 수행 중 롤백 세그먼트가 덮어쓰기됨, 대량 데이터를 한 번에 처리하는 LOOP + SELECT
-- 커서 열어놓고 너무 많은 데이터를 처리하거나, FOR LOOP에서 오래 걸릴 때
-- 해결방법
-- 쿼리를 작은 단위로 나눠 처리 (배치 처리 또는 BULK COLLECT), UNDO_RETENTION 시간 늘리기
ALTER SYSTEM SET UNDO_RETENTION = 900; -- 초 단위 (예: 15분)
-- 커서 대신 LIMIT + OFFSET 방식 사용 고려
728x90
'데이터베이스 > ORACLE' 카테고리의 다른 글
오라클 데이터베이스 [ORA-01017, ORA-01400, ORA-06502] 오류 (2) | 2025.05.29 |
---|---|
오라클 데이터베이스 [ORA-00936, ORA-01722, ORA-00942] 오류 (0) | 2025.05.27 |
오라클 데이터베이스 [ORA-00933, ORA-00904, ORA-00001] 오류 (4) | 2025.05.27 |