반응형

아래와 같은 쿼리를 실행하게 되면 대소문자를 혼합하여 입력 하였으나 모두 대문자로 테이블이 생성되는 현상이 발생 합니다.

CREATE TABLE myTest (id CHAR(10));

 

또는 CREATE TABLE my Test (id CHAR(10)); 를 입력하게 될 경우 my test 부분에서 띄어쓰기로 인해 쿼리 형식에 벗어난것으로 인식하여 ORA-00922 에러가 발생할 수 있습니다.

 

Oracle 테이블 대소문자, 띄어쓰기 사용 방법은 매우 간단한데, 테이블명에 ""만 넣어주면 됩니다.

 

CREATE TABLE "myTest" (id CHAR(10));
CREATE TABLE "my Test" (id CHAR(10));

위와 같이 ""안에 테이블명을 입력할 경우 대소문자가 구분되고, 띄어쓰기를 사용할 수 있게 됩니다.

 

반응형
반응형

ORA-12899: value too large for column

ORA-12899: "유저명"."테이블명"."컬럼명" 열에 대한 값이 너무 큼 (실제: 5, 최대값: 3)

 

위의 에러는 컬럼에 정의된 길이보다 큰 문자열을 입력하려할 때 발생하는 에러 입니다.

 

아래의 커리문처럼 NAME 이라는 컬럼에 NCHAR(3) 로 정의해주었으나, 3글자가 아닌 5글자를 입력하여 정의해준 문자열의 수 보다 많이 입력될 때에 발생 하기 때문에 NCHAR(3)를 NCHAR(5)와 같이 수정해주면 에러가 해결됩니다.

 

- 수정 전 쿼리 중 문제가 된 부분

"MEMBERNAME" NCHAR(3) NOT NULL ENABLE

 

- 수정 후

"MEMBERNAME" NCHAR(5) NOT NULL ENABLE

 

간혹 DB의 데이터 이관 시 UTF-8 과 ASCII 처럼 서로 Byte 수가 틀려 캐릭터셋의 문제로 에러가 발생하기도 합니다. 오라클의 캐릭터셋을 확인 후 변경을 해주어야 합니다.

 

1. 쿼리를 통해 캐릭터셋 조회

SELECT * FROM NLS_DATABASE_PARAMETERS

WHERE PARAMETER

LIKE '%CHARACTERSET%';

 

2. 캐릭터셋 변경(UTF-8 -> KO16MSWIN949)

SQL> update props$ set value$='KO16MSWIN949' where name='NLS_CHARACTERSET'; // value에 변경하려는 문자셋 입력
SQL> update props$ set value$='KO16MSWIN949' where name='NLS_NCHAR_CHARACTERSET'; // value에 변경하려는 문자셋 입력 
SQL> commit; 
SQL> shutdown immediate
SQL> startup 

 

주의 : 기존 데이터 깨짐 등의 가능성이 있기에 매우 조심히 작업해야 합니다. 기존 데이터를 모두 백업하고 테스트 후에 진행하는것을 권고 드립니다.

(원본 백업 파일은 필수)

반응형
반응형

"ORA-01722: 수치가 부적합합니다" 에러는 데이터 유형에 대한 에러 입니다.

 

1. 데이터 유형에 맞지 않는 값을 입력

 (ex. NUMBER에 한글을 입력하려고 하는 경우 등)

 

2. 다른 데이터 유형끼리의 연산

 (ex. 숫자와 한글을 연산 하려는 경우 등)

 

위의 예시처럼 테이블 생성 시 데이터 유형을 잘못 입력하여 한글을 입력해야하지만 NUMBER로 생성 하였다던가, 어떠한 값을 원하여 연산식을 짯는데 숫자와 한글을 빼거나 더하려는 식을 사용할 경우 발생 할 수 있습니다.

 

ORA-01722 에러가 발생할 경우 쿼리문에서 연산식이나, 데이터 유형을 사용하는 부분을 자세히 확인할 필요가 있습니다.

반응형
반응형

오라클 계정 생성 시 아래 사진처럼 "ORA-65096: 공통 사용자 또는 롤 이름이 부적합 합니다." 또는 "ORA-65096: invalid common user or role name" 에러가 발생하는것을 쉽게 볼 수 있습니다.

 

오라클이 12c로 넘어가면서 계정 생성을 할 때, 아래의 SQL문처럼 계정명 앞에 C##을 붙여줘야 공통 사용자 생성이 가능 합니다.

 

CREATE USER "C##asdf" IDENTIFIED BY "1234";

 

계정 생성할때마다 C##을 붙여주기 귀찮다면 아래 쿼리를 사용하시면 됩니다.

 

ALTER SESSION SET "_ORACLE_SCRIPT"=true;

 

반응형

+ Recent posts