데이터베이스/ORACLE
오라클 데이터베이스 [ORA-01017, ORA-01400, ORA-06502] 오류
멈머이
2025. 5. 29. 00:07
728x90
1. ORA-01017: invalid username/password; logon denied
- 의미 : 사용자 이름 또는 비밀번호가 잘못되어 접속 실패
- 원인 : 아이디 또는 비밀번호 오타, 대소문자 구분 (특히 Oracle 12c 이후), 비밀번호 정책에 따라 계정이 잠겼거나 만료됨
sqlplus wrong_user/wrong_pass@ORCL
-- 해결방법
-- 아이디/비밀번호 정확히 확인, 대소문자 확인, DBA가 계정 잠금 여부 확인:
SELECT username, account_status FROM dba_users WHERE username = '사용자명';
ALTER USER 사용자명 ACCOUNT UNLOCK; --잠금해제
2. ORA-01400: cannot insert NULL into ("컬럼명")
- 의미 : NOT NULL 제약이 걸린 컬럼에 NULL을 넣으려 할 때 발생
- 원인 : 필수 컬럼에 값을 넣지 않음, INSERT 문에서 특정 컬럼 누락
-- users 테이블의 username은 NOT NULL 제약
INSERT INTO users (user_id) VALUES (1);
-- 올바른 예
INSERT INTO users (user_id, username) VALUES (1, 'Alice');
-- 또는 애플리케이션단에서 필수 입력 유효성 검증 추가
3. ORA-06502: PL/SQL: numeric or value error: character string buffer too small
- 의미 : 문자열이 변수 크기를 초과했을 때 발생
- 원인 : VARCHAR2(n) 크기보다 더 긴 문자열을 대입
DECLARE
v_name VARCHAR2(5);
BEGIN
v_name := 'Alexander';
END;
-- 해결방법
-- 변수 크기를 충분히 늘려줌
-- 올바른 예
DECLARE
v_name VARCHAR2(20);
-- 또는
v_name := SUBSTR('Alexander', 1, 5);
728x90