에러 코드: ORA-06502 에러 메시지: PL/SQL: numeric or value error 발생 원인 이 에러는 PL/SQL 블록에서 데이터 타입 불일치 또는 값 범위 초과 때문에 발생합니다. 예를 들어, 변수에 할당된 값이 변수 타입의 범위를 초과하거나, 잘못된 타입의 데이터를 변수에 할당하려고 할 때 이 에러가 발생할 수 있습니다. 예제 다음은 ORA-06502 에러가 발생하는 예제입니다. DECLARE v_num NUMBER(5); BEGIN v_num := 100000; -- 이 값은 num_var의 선언 범위를 초과합니다. EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM); END; 위 예제에서 v_num은 최대..
에러 코드: ORA-12154 에러 메시지: TNS:could not resolve the connect identifier specified 발생 원인 ORA-12154 에러는 Oracle Net Services의 설정이 올바르지 않을 때 주로 발생합니다. 특히, 데이터베이스 연결 문자열에서 지정한 'connect identifier'를 찾을 수 없을 때 이 에러가 나타납니다. 이는 주로 tnsnames.ora 파일에서 데이터베이스의 주소나 이름이 잘못 입력되었을 때 발생합니다. 예제 예를 들어, 아래와 같이 tnsnames.ora 파일에 데이터베이스 연결 정보를 설정했다고 가정해 봅시다. ORCL1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = local..
에러 코드: ORA-00001 에러 메시지: unique constraint (constraint_name) violated 발생 원인 이 에러는 테이블에 유니크 제약 조건이 설정되어 있고, 이 제약 조건을 위배하는 데이터가 입력되려 할 때 발생합니다. 예를 들어, 사용자 아이디가 유니크해야 하는 테이블에 이미 존재하는 아이디를 다시 입력하려고 하면 이 에러가 발생하게 됩니다. 예제 고객 정보를 저장하는 테이블에서 고객의 이메일 주소에 유니크 제약 조건이 설정되어 있다고 가정해 봅시다. CREATE TABLE customers ( id NUMBER PRIMARY KEY, email VARCHAR(100) UNIQUE ); -- 이미 'scott@naver.com' 이메일을 가진 고객이 존재하는 상태 IN..
ERROR CODE / 설명 : 접속하려는 DB Version 보다 낮은 버전의 Client or Server Version으로 접속을 시도하는 경우 볼 수 있는 에러코드 ORA-28040 : NO matching authentication protocol 발생 원인 11G CLIENT로 원격 DB 19c 에 접속하려고 함. 에러 발생 ( ORA-28040 : NO matching authentication protocol ) 해결 방법 1. sqlnet.ora 파일 수정 : "SQLNET.ALLOWED_LOGON_VERSION=10" 기입하기 ( 서버보다 낮은 클라이언트 버전도 접속을 허용하겠다는 의미 ) 2. 비밀번호 변경 SQLNET.ORA 파일 변경 전에 이미 생성된 계정이 위 작업에 영향을 받..
ERROR CODE / 설명 : IN 절에 INPUT값 수가 1000개를 초과할 경우 발생하는 에러. ORA-01795: maximum number of expressions in a list is 1000 발생 원인 : 보통 Soluntion 프로그램에서 IN절에 많은 값을 넣는 경향이 있다. 1000개가 넘으면 위 에러가 발생하니 유의해야 한다. -- [1] IN절 내부에 :1 ~ :1001 까지 넣기 SELECT * FROM EMP WHERE EMPNO IN ( :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,:32,:33,:34,:35,:3..
ERROR CODE / 설명소수점 데이터 타입 컬럼에 자리수를 초과하는 데이터를 넣을려는 경우 발생하는 에러 ORA-01438: value larger than specified precision allowed for this column 발생 원인 컬럼 COL2 는 NUMBER(7, 2)로 정수 5자리, 소수점 이하 2자리로 구성되어 있다. 정수 6자리를 저장하다가 에러 발생함-- [1] TEST 테이블 생성CREATE TABLE IMSI_TABLE ( col1 number(3) , col2 number(7,2) );-- [2] TEST 테이블 INSERT 시도declare i integer;begin INSERT INTO imsi_table ( col1, col2 ) VALUES..
ERROR CODE / 설명 : 보통 '' 안에 문자열을 넣음. 싱글 쿼테이션(')으로 감싼 문자열을 String Literal 이라함.. 여기에 담을수 있는 데이터의 크기 는 최대 4000 BYTE 이다. 4000 BYTE를 초과 할 경우 발생하는 아래 에러가 발생 함 ORA-01704 : string literal too long 발생 원인 : 테이블의 CLOB 컬럼에 '' 4000 BYTE를 넘는 문자열을 넣으려고 시도하다 발생됨. 이는 CLOB 컬럼에 데이터를 넣을수 없는 것이 아니라, '' 안에 4000 BYTE가 넘게 있어 발생 한 것임 -- [1] DB의 캐릭터셋은 UTF8 > 한글 : 1자, 3 BYTE / 영문, 숫자 : 1자, 1 BYTE SELECT LENGTH('데'), LENGTH..
ERROR CODE / 설명: 테이블 스페이스에 연결된 DATAFILE에 사용가능한 공간을 모두 소진하여 데이터를 입력하지 못하는 경우 발생하는 에러 ORA-01652 : unable to extend temp segment by 1280 in tablespace TS_BIG_D01; 발생 원인[1] 테이블 생성 시도 : SQL을 수행하는 접속계정의 DEFAULT TABLESPACE는 TS_BIG_D01 CREATE TABLE TB_ADMDONG_PASSENGER_TEST AS SELECT * FROM TB_ADMDONG_PASSENGER_TOT; `[2] ERROR 발생 ORA-01652 : unable to extend temp segment by 1280 in tables..