Oracle 28

ORA-00923: FROM keyword not found where expected

1. ❓ [ORA-00923] 오류의 실체오라클 엔진은 SELECT 키워드 이후에 나열된 컬럼들을 읽다가, 특정 지점에서 테이블을 지정하는 FROM 키워드가 나올 것을 기대합니다. 하지만 그 사이에 콤마(,)가 빠졌거나, 별칭(Alias) 형식이 잘못되었을 때 "어디가 끝인지 모르겠다"며 이 에러를 던지게 됩니다.[이미지: SQL 쿼리문에서 SELECT 절과 FROM 절 사이의 연결 고리가 끊어져 에러가 발생하는 것을 시각화한 도식]2. 🔍 주요 원인 분석 (체크리스트)에러가 발생했다면 다음의 체크리스트를 통해 쿼리를 점검해 보세요.✅ 컬럼 간 콤마(,) 누락: 컬럼과 컬럼 사이에 콤마를 빠뜨리지 않았는가?✅ 별칭(Alias) 공백 문제: 별칭에 공백이 포함되어 있는데 쌍따옴표(" ")로 감싸지 않았는..

ORA-00937: not a single-group group function

1. ❓ [ORA-00937] 오류의 실체이 오류는 **"여러 행의 결과(일반 컬럼)와 단일 행의 결과(집계 함수)를 한 화면에 보여달라고 했는데, 어떻게 그룹을 묶어야 할지 모르겠다"**는 의미입니다. 집계 함수는 결과를 하나로 수렴시키려 하지만, 일반 컬럼은 여러 개를 보여주려 할 때 발생하는 논리적 충돌입니다.[이미지: 집계 함수와 일반 컬럼이 혼재되어 결과 행의 수가 일치하지 않는 논리적 충돌을 설명하는 도식]2. 🔍 주요 원인 분석 (체크리스트)에러가 발생한 쿼리를 확인하며 아래 항목들을 체크해 보세요.✅ 집계 함수와 일반 컬럼의 혼용: SELECT 절에 COUNT, MAX 등과 일반 컬럼(EMPNO, DEPTNO 등)을 동시에 적었는가?✅ GROUP BY 절 누락: 여러 컬럼을 함께 조회하면..

ORA-02289: sequence does not exist

1. ❓ [ORA-02289] 오류의 실체이 오류는 말 그대로 쿼리에서 호출한 시퀀스 객체를 데이터베이스 내에서 찾을 수 없을 때 나타납니다. 단순히 이름이 틀린 경우부터 권한 문제, 혹은 스키마 접두사가 누락된 경우 등 다양한 상황에서 발생할 수 있습니다.[이미지: SQL Developer에서 시퀀스 참조 오류로 인해 빨간색 줄이 그어진 쿼리 창 스크린샷]2. 🔍 주요 원인 분석 (체크리스트)에러가 발생했다면 당황하지 말고 아래 체크리스트를 하나씩 확인해 보세요.✅ 시퀀스 이름 오타: 쿼리에 작성한 시퀀스 명과 실제 생성된 시퀀스 명이 정확히 일치하는가?✅ 시퀀스 생성 여부: 해당 이름의 시퀀스가 실제로 CREATE SEQUENCE 명령어로 생성되었는가?✅ 스키마 소유권 문제: 시퀀스가 다른 사용자의..

ORA-01847: day of month must be between 1 and last day of month

1. ❓ [ORA-01847] 오류의 실체이 에러는 입력된 날짜 문자열에서 '일'에 해당하는 숫자가 유효하지 않을 때 발생합니다. 예를 들어 4월인데 31일을 입력하거나, 포맷 마스크 상의 '월'과 '일'의 위치가 바뀌어 오라클이 엉뚱한 숫자를 '일'로 인식할 때 나타나는 현상입니다.2. 🔍 주요 원인 분석 (체크리스트)에러가 발생한 쿼리를 확인하며 아래 체크리스트를 점검해 보세요.✅ 포맷 마스크 불일치: TO_DATE의 두 번째 인자인 포맷(예: 'YYYYMMDD')과 실제 데이터의 순서가 일치하는가?✅ 존재하지 않는 날짜: 2월 30일이나 11월 31일처럼 달력에 없는 날짜를 입력하지 않았는가?✅ 월/일 위치 혼동: 미국식(MM/DD)과 한국식(DD/MM) 표현이 뒤섞여 '월' 자리에 13 이상의 ..

ORA-00933: SQL command not properly ended

1. ❓ [ORA-00933] 오류의 실체이 오류는 SQL 문법의 구조적 끝맺음이 잘못되었음을 의미합니다. 오라클은 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY 순으로 쿼리를 해석하는데, 이 순서가 뒤섞이거나 해당 SQL 명령(INSERT, UPDATE, DELETE 등)에서 지원하지 않는 구문이 붙어 있을 때 발생합니다.2. 🔍 주요 원인 분석 (체크리스트)에러가 발생했다면 쿼리의 마지막 부분을 중심으로 아래 사항을 점검하세요.✅ SQL 절(Clause)의 순서: ORDER BY를 GROUP BY나 HAVING보다 먼저 작성하지 않았는가?✅ 서브쿼리 내 ORDER BY: INSERT INTO ... SELECT 문이나 특정 서브쿼리 안에서 불필요한 ORDER ..

ORA-00907: missing right parenthesis

1. ❓ [ORA-00907] 오류의 실체이 에러의 문자 그대로의 의미는 **"닫는 괄호가 누락되었다"**는 것입니다. 하지만 실제로는 괄호 쌍이 맞음에도 불구하고, **괄호 안에 오라클이 허용하지 않는 구문(예: ORDER BY)**이 포함되어 있어 파서가 괄호의 끝을 정상적으로 인식하지 못할 때도 발생합니다.2. 🔍 주요 원인 분석 (체크리스트)에러 발생 시 아래 체크리스트를 하나씩 확인하며 문제를 진단해 보세요.✅ 단순 괄호 누락: 열고 닫는 괄호의 개수가 정확히 일치하는가?✅ 서브쿼리 내 ORDER BY: IN 절이나 서브쿼리 내부에 불필요한 ORDER BY가 포함되어 있지 않은가?✅ 쉼표(,) 오기입: 괄호가 닫히기 직전 마지막 컬럼 뒤에 불필요한 쉼표를 찍지 않았는가?✅ 데이터 타입 선언 오..

ORA-01403: no data found

1. ❓ ORA-01403 오류의 실체일반적인 SELECT 문은 결과가 없으면 그냥 빈 화면을 보여주고 끝나지만, PL/SQL 블록 내에서 변수에 값을 담는 SELECT INTO 구문은 다릅니다. 오라클은 "변수에 반드시 무언가 담길 것"을 기대하기 때문에, 결과값이 0건이면 실행을 중단하고 ORA-01403 예외를 발생시킵니다.2. 🔍 주요 원인 분석 (체크리스트)✅ 1. 존재하지 않는 조건으로 조회WHERE 절에 넣은 조건(ID, 이름 등)에 해당하는 데이터가 실제 테이블에 한 건도 없는 경우입니다.✅ 2. 데이터 타입이나 대소문자 불일치데이터는 있지만, 조건값이 잘못된 경우입니다.예: 실제 데이터는 'SEOUL'인데 쿼리에는 'seoul'로 조회하거나 공백이 섞인 경우.✅ 3. 서브쿼리 내 데이터..

ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

1. ❓ ORA-00054 오류의 실체오라클에서 ALTER TABLE, DROP TABLE, LOCK TABLE과 같은 DDL(Data Definition Language) 명령어를 실행할 때, 해당 테이블에 다른 사용자의 트랜잭션(INSERT, UPDATE, DELETE 등)이 아직 끝나지 않은 상태(COMMIT 전)라면 오라클은 이 자원을 '사용 중'인 것으로 판단합니다. 이때 시스템이 무한정 기다리지 않도록 즉시 에러를 던지는 것이 바로 ORA-00054입니다.2. 🔍 주요 원인 분석 (체크리스트)✅ 1. 다른 세션의 미확정 트랜잭션어떤 사용자가 데이터를 수정(UPDATE)한 후 COMMIT이나 ROLLBACK을 하지 않고 세션을 유지하고 있는 경우입니다.✅ 2. 대량의 데이터 배치 작업 중배치 ..

ORA-02291: integrity constraint ([Schema].[Constraint_Name]) violated - parent key not found

1. ❓ ORA-02291 오류의 실체오라클에서 외래키(Foreign Key) 제약 조건이 설정되어 있으면, 자식 테이블의 특정 컬럼 값은 반드시 부모 테이블의 참조 컬럼(보통 PK)에 존재하는 값이어야 합니다. ORA-02291은 존재하지 않는 부모 키 값을 자식 테이블에 INSERT 하거나 UPDATE 하려고 할 때 발생합니다.2. 🔍 주요 원인 분석 (체크리스트)✅ 1. 부모 테이블에 데이터가 없는 경우가장 일반적인 원인입니다. 예를 들어, 부서 테이블에 10번 부서가 없는데 사원 테이블에 10번 부서 소속으로 신입 사원을 등록하려고 할 때 발생합니다.✅ 2. 입력 데이터의 오타부모 테이블에는 A01이라고 되어 있는데, 자식 테이블에 A01 (공백 포함)이나 a01(소문자)로 잘못 입력하는 경우입..

ORA-01400: cannot insert NULL into ("Schema"."Table"."Column")

1. ❓ ORA-01400 오류의 실체오라클 테이블을 설계할 때 특정 컬럼에 NOT NULL 제약 조건을 걸거나, 해당 컬럼이 **Primary Key(기본키)**인 경우 그 칸은 절대로 비어있을 수 없습니다. ORA-01400은 INSERT 문을 실행할 때 이 필수 컬럼에 값을 주지 않았거나, 명시적으로 NULL을 입력하려고 할 때 발생합니다.2. 🔍 주요 원인 분석 (체크리스트)✅ 1. 필수 컬럼 누락INSERT 문을 작성할 때 테이블의 필수 컬럼(NOT NULL)을 아예 리스트에서 빠뜨린 경우입니다.오류 예: INSERT INTO emp (name) VALUES ('홍길동'); (만약 id가 PK라면 에러 발생)✅ 2. 명시적인 NULL 입력코드 상에서 실수로 필수 컬럼에 NULL 값을 할당한 경..

반응형