Error Codes

GOLDILOCKS에서 제공하는 error code는 다음과 같다. 해당 내용은 V$ERROR_CODE view로 조회할 수 있다.

본 장에서는 다음과 같은 형식으로 에러의 원인과 조치 방법을 기술한다.

ErrorCode (SQLSTATE): Message
• ErrorCode: GOLDILOCKS 자체 에러 코드
• SQLSTATE: SQL 표준 상태 코드
• Message: 에러 메시지

Cause

에러 원인

Action

조치 방법

OS 관련 에러

11000 (SQLSTATE: HY000): Invalid argument

Cause

유효하지 않은 argument 를 사용하였다.


% glsnr --test

ERR-HY000(11000): Invalid argument

Action

명령어 수행시 올바른 argument 를 사용한다.


% glsnr --stop

Listener is stopped.

11001 (SQLSTATE: HY000): The operation was incomplete although some processing was performed and the results are partially valid

Cause

요청한 파일 정보 중 일부를 가져오는 데 실패했다.

Action

요청한 파일이 일반 파일인지 확인한다. 특수 파일이나 가상 파일 시스템일 경우 일부 정보가 제공되지 않을 수 있다.

11002 (SQLSTATE: HY000): Permission denied '%s'

Cause

파일이나 디렉터리에 대한 접근 권한이 부족하다.

Action

chown, chmod 명령어를 사용하여 접근 권한을 변경한다.

11003 (SQLSTATE: HY000): Standard Layer has encountered the end of the file

Cause

EOF 에 해당하는 오류로, 서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

11004 (SQLSTATE: HY000): Unable to duplicate a file

Cause

파일 복제에 실패했다.

Action

파일 권한, 디스크 공간, 대상 경로의 유효성을 확인한다.

11005 (SQLSTATE: HY000): File Lock Error

Cause

파일 잠금에 실패했다.

Action

파일을 사용 중인 다른 프로세스를 확인하고, 잠시 후 재시도한다.

11006 (SQLSTATE: HY000): File Unlock Error

Cause

파일 잠금 해제에 실패했다.

Action

파일 잠금 상태를 확인하고 적절한 권한으로 잠금을 해제한다.

11007 (SQLSTATE: HY000): Unable to open the file '%s'

Cause

파일이 존재하지 않거나 접근 권한이 없거나, 다른 프로세스가 파일을 잠그고 있다.

Action

파일 경로와 권한을 확인하고, 파일을 사용 중인 다른 프로세스가 있는지 확인한다.

11008 (SQLSTATE: HY000): Unable to close the file

Cause

파일 디스크립터가 유효하지 않거나 I/O 에러가 발생했다.

Action

파일이 제대로 열렸는지 확인하고 디스크 상태를 점검한다.

11009 (SQLSTATE: HY000): Unable to remove the file

Cause

파일이 존재하지 않거나, 삭제 권한이 없거나, 다른 프로세스가 파일이 사용하고 있다.

Action

파일 존재 여부와 권한을 확인한 후, 파일을 사용 중인 프로세스를 종료하고 재시도 한다.

11010 (SQLSTATE: HY000): Unable to link the file

Cause

파일 링크 생성에 실패했다. 권한이 부족하거나 파일 시스템이 이를 지원하지 않을 수 있다.

Action

파일 권한과 파일 시스템 지원 여부를 확인한다.

11011 (SQLSTATE: HY000): Unable to read the file

Cause

파일 읽기 권한이 없거나 디스크 I/O 오류, 또는 파일이 손상되었을 수 있다.

Action

파일 권한과 디스크 상태를 점검하고, 파일 무결성 검사를 수행한다.

11012 (SQLSTATE: HY000): Unable to write the file

Cause

파일에 쓰기 권한이 없거나, 디스크 공간 부족 , 또는 디스크 I/O 에러가 발생했다.

Action

파일 권한과 디스크의 여유 공간을 확인하고, 디스크 상태를 점검한다.

11013 (SQLSTATE: HY000): Unable to sync the file

Cause

파일 시스템 동기화에 실패하였거나 디스크 I/O 에러가 발생했다.

Action

디스크 상태를 점검하고 파일 시스템 무결성 검사를 수행한다.

11014 (SQLSTATE: HY000): Unable to seek the file

Cause

잘못된 파일 위치로 이동을 시도했거나 파일 디스크립터에 오류가 발생했다.

Action

파일 크기와 이동하려는 위치를 확인하고 파일 디스크립터의 유효성을 검사한다.

11015 (SQLSTATE: HY000): Unable to truncate the file

Cause

파일 크기를 변경할 수 있는 권한이 없거나 디스크 공간이 부족하다.

Action

파일 권한과 디스크 여유 공간을 확인한다.

11016 (SQLSTATE: HY000): Unable to get the status of the file

Cause

파일이 존재하지 않거나 파일 상태를 조회할 수 있는 권한이 없다.

Action

파일 경로와 권한을 확인한다.

11017 (SQLSTATE: HY000): Unable to create a pipe

Cause

시스템 리소스가 부족하여 파이프를 생성하지 못했다.

Action

시스템 리소스 사용량을 확인하고 불필요한 프로세스를 종료한다.

11018 (SQLSTATE: HY000): Unable to wait for the given process

Cause

대기할 child 프로세스가 존재하지 않아 프로세스 대기에 실패했다.

Action

프로세스 관계를 확인하고 시그널 처리 상태를 점검한다.

11019 (SQLSTATE: HY000): Insufficient resource

Cause

시스템 리소스가 부족하다.

Action

시스템 리소스 사용량을 확인하고 불필요한 프로세스를 종료한다.

11020 (SQLSTATE: HY000): Unable to send signal to given process

Cause

대상 프로세스가 존재하지 않아 프로세스 시그널 전송에 실패했다.

Action

대상 프로세스 존재 여부를 확인하고 시그널 권한을 점검한다.

11021 (SQLSTATE: HY000): Unable to set a signal handler

Cause

시그널 핸들러 설정에 실패했다.

Action

시스템이 시그널을 지원하는지 확인한다.

11022 (SQLSTATE: HY000): Unable to block a signal

Cause

시그널을 차단하는데 실패했다.

Action

시그널 마스크 설정을 확인하고 시스템이 시그널을 지원하는지 확인한다.

11023 (SQLSTATE: HY000): Unable to set thread attribute

Cause

Thread 속성 설정에 실패했다.

Action

Thread 속성 값을 확인하고 시스템 thread 제한을 점검한다.

11024 (SQLSTATE: HY000): Unable to create a thread

Cause

Thread 생성에 실패했다. 시스템 리소스가 부족하거나 thread 수의 한도에 도달했을 수 있다.

Action

시스템의 thread 한도 설정을 확인하고 메모리 사용량을 점검한다.

11025 (SQLSTATE: HY000): Unable to join with a terminated thread

Cause

Thread ID가 올바르지 않아 thread 종료를 기다리는 데 실패했다.

Action

Thread 상태를 확인하고 deadlock 여부를 점검한다.

11026 (SQLSTATE: HY000): Unable to set thread once code

Cause

Thread once code 설정에 실패했다.

Action

Thread 동기화 코드를 검토한다.

11027 (SQLSTATE: HY000): Truncation occurred on I/O operation

Cause

I/O 작업에서 버퍼 크기 부족하여 문자열이 잘렸다.

Action

버퍼 크기를 충분히 확보하고 입력 문자열의 길이를 확인한다.

11028 (SQLSTATE: HY000): The given name(%s) is too long

Cause

주어진 이름이 너무 길다.

Action

시스템 제한에 맞춰 이름 길이를 줄인다.

11029 (SQLSTATE: HY000): shared memory segment exists

Cause

공유 메모리 세그먼트가 이미 존재한다.

Action

기존 공유 메모리를 해제한 후 재생성하거나 기존 세그먼트를 재사용한다.

11030 (SQLSTATE: HY000): Unable to allocate a shared memory segment

Cause

권한이나 메모리가 부족하여 공유 메모리 생성에 실패했다.

Action

시스템 공유 메모리의 한계를 확인하고 권한 설정을 점검한다.

11031 (SQLSTATE: HY000): Unable to attach the shared memory segment

Cause

잘못된 세그먼트 ID로 인해 공유 메모리 연결에 실패했다.

Action

공유 메모리 세그먼트 ID를 확인하고 프로세스 권한을 점검한다.

11032 (SQLSTATE: HY000): Unable to detach the shared memory segment

Cause

해당 세그먼트는 이미 해제되어, 공유 메모리를 해제하는 데 실패했다.

Action

공유 메모리 연결 상태를 확인한다.

11033 (SQLSTATE: HY000): Unable to destroy the shared memory segment

Cause

권한이 부족하여 공유 메모리 삭제에 실패했다.

Action

공유 메모리 소유자 권한을 확인한다.

11034 (SQLSTATE: HY000): Unable to create a semaphore

Cause

시스템 리소스가 부족하여 세마포어 생성에 실패했다.

Action

시스템 세마포어의 한계를 확인하고 IPC 리소스를 정리한다.

11035 (SQLSTATE: HY000): Unable to acquire the given semaphore

Cause

세마포어 획득에 실패하여 deadlock이 발생했다.

Action

세마포어 사용 패턴을 점검하고 deadlock을 방지하기 위한 로직을 구현한다.

11036 (SQLSTATE: HY000): Unable to release the given semaphore

Cause

해당 세마포어 이미 해제되어 세마포어 해제에 실패했다.

Action

세마포어 상태를 확인하여 중복으로 해제를 방지한다.

11037 (SQLSTATE: HY000): Unable to destory the given semaphore

Cause

권한이 부족하여 세마포어 삭제에 실패했다.

Action

세마포어 소유자 권한을 확인한다.

11038 (SQLSTATE: HY000): The given object was busy

Cause

리소스가 현재 사용 중이다.

Action

리소스 사용이 완료될 때까지 기다린 후, 재시도한다.

11039 (SQLSTATE: HY000): Operation timed out

Cause

작업 시간이 초과되었다.

Action

타임아웃 값을 조정하고 시스템 성능을 점검한다.

11040 (SQLSTATE: HY000): No such object (%s)

Cause

요청한 객체가 존재하지 않는다.

Action

객체 이름이나 경로를 확인한다.

11041 (SQLSTATE: HY000): Two objects do not match

Cause

두 객체가 일치하지 않는다.

Action

비교 대상 객체들의 일치성을 확인한다.

11042 (SQLSTATE: HY000): Not enough memory

Cause

메모리 할당 한계에 도달하여 시스템 메모리가 부족해졌다.

Action

시스템 메모리 사용량을 확인하고, 불필요한 프로세스를 종료하거나 메모리 증설을 고려한다.

11043 (SQLSTATE: HY000): File system is full

Cause

디스크 공간이 부족하다.

Action

불필요한 파일을 삭제하고 디스크 공간을 확보하거나 증설한다.

11044 (SQLSTATE: HY000): Unable to execute the program

Cause

프로그램 실행에 실패했다. 실행 파일이 존재하지 않거나 권한이 부족하다.

Action

실행 파일 경로와 권한을 확인하고 PATH 환경 변수를 점검한다.

11045 (SQLSTATE: HY000): not supported function

Cause

지원하지 않는 기능을 사용하였다.

Action

대체 기능을 사용하거나 시스템을 업그레이드 한다.

11046 (SQLSTATE: HY000): given buffer does not have enough space

Cause

주어진 버퍼에 공간이 부족하다.

Action

데이터 크기를 확인하여 버퍼 크기를 늘린다.

11047 (SQLSTATE: HY000): invalid network address

Cause

네트워크 주소가 유효하지 않다.

Action

네트워크 주소 형식을 확인하여 올바른 IP 주소를 사용한다.

11048 (SQLSTATE: HY000): sendto() system call returned failure

Cause

sendto() 시스템 호출에 실패했다.

Action

네트워크 연결 상태를 확인하고 대상 주소의 유효성을 검사한다.

11049 (SQLSTATE: HY000): recvfrom() system call returned failure

Cause

recvfrom() 시스템 호출에 실패했다.

Action

네트워크 연결 상태를 확인하고 소켓 상태를 점검한다.

11050 (SQLSTATE: HY000): fail to get address from socket with getsockname()

Cause

getsockname()으로 socket 주소를 가져오는데 실패했다.

Action

Socket 바인딩 상태를 확인한다.

11051 (SQLSTATE: HY000): fail to get peer address from socket with getpeername()

Cause

getpeername()으로 peer 주소를 가져오는데 실패했다.

Action

Socket 연결 상태를 확인한다.

11052 (SQLSTATE: HY000): fail to manipulate file descriptor with fcntl()

Cause

fcntl()로 파일 디스크립터를 조작하는데 실패했다.

Action

파일 디스크립터의 유효성과 요청 작업을 확인한다.

11053 (SQLSTATE: HY000): fail to manipulate socket descriptor with setsockopt()

Cause

setsockopt()로 socket 옵션을 설정하는데 실패했다.

Action

Socket 옵션 값과 socket 상태를 확인한다.

11054 (SQLSTATE: HY000): not implemented feature

Cause

구현되지 않은 기능이다.

Action

지원되는 대체 기능을 사용한다.

11055 (SQLSTATE: HY000): fail to manipulate device parameters of special file with ioctl()

Cause

ioctl()로 장치 파라미터를 조작하는데 실패했다.

Action

장치 상태와 요청된 파라미터를 확인한다.

11056 (SQLSTATE: HY000): fail to get hostname

Cause

호스트 이름을 가져오는데 실패했다.

Action

네트워크 설정을 확인하고 시스템에 설정된 호스트 이름을 점검한다.

11057 (SQLSTATE: HY000): fail to close a socket

Cause

Socket을 닫는데 실패했다.

Action

Socket 상태를 확인한 후 네트워크 연결을 정상적으로 종료한다.

11058 (SQLSTATE: HY000): fail to shutdown a socket

Cause

Socket 종료에 실패했다.

Action

Socket 연결 상태를 확인한다.

11059 (SQLSTATE: HY000): fail to create a socket

Cause

시스템 리소스가 부족하여 socket 생성에 실패했다.

Action

시스템 socket 한도를 확인하고 네트워크 설정을 점검한다.

11060 (SQLSTATE: HY000): fail to get property of a file descriptor

Cause

파일 디스크립터의 속성을 가져오는 데 실패했다.

Action

파일 디스크립터의 유효성을 확인한다.

11061 (SQLSTATE: HY000): fail to set property of a file descriptor

Cause

파일 디스크립터 속성 설정에 실패했다.

Action

파일 디스크립터 유효성과 설정값을 확인한다.

11062 (SQLSTATE: HY000): fail to bind a socket to address

Cause

주소가 이미 사용 중이라 socket 주소를 바인딩하는데 실패했다.

Action

포트 사용 현황을 확인하고 다른 포트를 사용하거나 기존 프로세스를 종료한다.

11063 (SQLSTATE: HY000): fail to listen on a socket

Cause

Back log queue 설정에 오류가 있어 socket listening에 실패했다.

Action

Socket 상태와 네트워크 설정을 확인한다.

11064 (SQLSTATE: HY000): fail to accept a connection request with a socket

Cause

네트워크에 에러가 있어서 연결을 수락하지 못했다.

Action

네트워크 연결 상태를 확인하고 방화벽 설정을 점검한다.

11065 (SQLSTATE: HY000): system call was interrupted by a signal

Cause

시그널이 발생하여 시스템 호출이 중단되었다.

Action

시그널 처리 로직을 확인하고 시스템 호출을 재시도한다.

11066 (SQLSTATE: HY000): fail to get options of a socket

Cause

Socket 옵션을 가져오는 데 실패했다.

Action

Socket 상태와 옵션 유효성을 확인한다.

11067 (SQLSTATE: HY000): fail to connect to a host with a socket

Cause

대상 서버에 접근할 수 없어 호스트 연결에 실패했다.

Action

대상 서버 상태와 네트워크 상태를 확인하고 방화벽 설정을 점검한다.

11068 (SQLSTATE: HY000): fail to wait for some file descriptors with poll()

Cause

poll()을 사용하여 파일 디스크립터를 기다리는데 실패했다.

Action

파일 디스크립터 유효성과 poll 설정을 확인한다.

11069 (SQLSTATE: HY000): internal error

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

시스템 로그를 확인하여 고객센터에 문의한다.

11070 (SQLSTATE: HY000): sendmsg() system call returned failure

Cause

sendmsg() 시스템 호출에 실패했다.

Action

메시지 구조와 socket 상태를 확인한다.

11071 (SQLSTATE: HY000): recvmsg() system call returned failure

Cause

recvmsg() 시스템 호출에 실패했다.

Action

메시지 버퍼와 socket 상태를 확인한다.

11072 (SQLSTATE: HY000): socketpair() system call returned failure

Cause

socketpair() 시스템 호출에 실패했다.

Action

시스템 socket resource를 확인한다.

11073 (SQLSTATE: HY000): converted value is out of range (overflow or underflow)

Cause

변환된 값이 범위를 벗어났다. (overflow/underflow)

Action

입력값의 범위를 확인하고 적절한 데이터 타입을 사용한다.

11074 (SQLSTATE: HY000): given string is not number

Cause

주어진 문자열이 숫자가 아니다.

Action

입력 문자열의 형식을 확인하고 숫자 형식으로 변환한다.

11075 (SQLSTATE: HY000): not a valid file descriptor

Cause

유효하지 않은 파일 디스크립터를 사용했다.

Action

파일이 제대로 열렸는지 확인하고 파일 디스크립터를 다시 설정한다.

11076 (SQLSTATE: HY000): resource temporarily unavailable

Cause

리소스를 일시적으로 사용할 수 없다.

Action

잠시 후 다시 시도한다.

11077 (SQLSTATE: HY000): given address is already in use

Cause

주소가 이미 사용 중이다.

Action

다른 포트를 사용하거나 기존 프로세스를 종료한 후에 다시 시도한다.

11078 (SQLSTATE: HY000): fail to initialize communication context

Cause

통신 컨텍스트를 초기화하는데 실패했다.

Action

네트워크 설정과 시스템 리소스를 확인한다.

11079 (SQLSTATE: HY000): fail to finalize communication context

Cause

통신 컨텍스트를 종료하는데 실패했다.

Action

컨텍스트 상태를 확인하고 리소스를 정리한다.

11080 (SQLSTATE: HY000): fail to connect communication context

Cause

통신 컨텍스트와 연결하는데 실패했다.

Action

네트워크 연결과 대상 서버 상태를 확인한다.

11081 (SQLSTATE: HY000): fail to poll communication context

Cause

통신 컨텍스트 폴링에 실패했다.

Action

네트워크 연결과 컨텍스트 상태를 확인한다.

11082 (SQLSTATE: HY000): fail to write packet through communication context

Cause

통신 컨텍스트를 사용하여 패킷을 쓰는데 실패했다.

Action

네트워크 연결 상태와 패킷 크기를 확인한다.

11083 (SQLSTATE: HY000): fail to read packet through communication context

Cause

통신 컨텍스트를 사용하여 패킷을 읽는데 실패했다.

Action

네트워크 연결 상태와 버퍼 크기를 확인한다.

11084 (SQLSTATE: HY000): fail to send descriptor through communication context

Cause

통신 컨텍스트를 사용하여 디스크립터를 전송하는데 실패했다.

Action

컨텍스트 상태와 전송 데이터를 확인한다.

11085 (SQLSTATE: HY000): fail to receive descriptor through communication context

Cause

통신 컨텍스트를 사용하여 디스크립터를 수신하는데 실패했다.

Action

컨텍스트 상태와 수신 버퍼를 확인한다.

11086 (SQLSTATE: HY000): fail to get current file path

Cause

현재 파일 경로를 가져오는데 실패했다.

Action

파일 권한과 경로 유효성을 확인한다.

11087 (SQLSTATE: HY000): fail to open library (%s)

Cause

라이브러리를 여는데 실패했다.

Action

라이브러리 파일 존재 여부와 경로를 확인한다.

11088 (SQLSTATE: HY000): fail to close library

Cause

라이브러리를 닫는데 실패했다.

Action

라이브러리 상태를 확인한다.

11089 (SQLSTATE: HY000): fail to get symbol address (%s)

Cause

Symbol 주소를 가져오는데 실패했다.

Action

Symbol 이름과 라이브러리 상태를 확인한다.

11090 (SQLSTATE: HY000): not supported query

Cause

지원되지 않는 쿼리이다.

Action

지원되는 쿼리 문법을 사용한다.

11091 (SQLSTATE: HY000): fail to check file (%s)

Cause

파일 존재 여부를 확인하는데 실패했다.

Action

파일 경로를 확인하고 파일 시스템 권한을 점검한다.

11092 (SQLSTATE: HY000): input is too long

Cause

입력값이 너무 길다.

Action

입력값을 제한된 길이에 맞게 줄인다.

11093 (SQLSTATE: HY000): system call error (function : %s, error no : %d)

Cause

시스템 호출 에러이다.

Action

시스템 로그를 확인하고 시스템 상태를 점검한다.

11094 (SQLSTATE: HY000): divide zero

Cause

0 으로 나누기를 시도했다.

Action

나눗셈 연산의 분모가 0 인지 확인한다.

11095 (SQLSTATE: HY000): Unable to open a semaphore

Cause

세마포어를 여는데 실패했다.

Action

세마포어 이름과 권한을 확인한다.

11096 (SQLSTATE: HY000): Unable to close the given semaphore

Cause

세마포어를 닫는데 실패했다.

Action

세마포어 상태를 확인한다.

11097 (SQLSTATE: HY000): Unable to unlink the given semaphore

Cause

세마포어 링크를 해제하는데 실패했다.

Action

세마포어 상태와 권한을 확인한다.

11098 (SQLSTATE: HY000): permission denied - '%s'

Cause

파일에 대한 접근 권한이 거부되었다.

Action

파일 권한 설정을 확인하고 사용자 권한을 점검한다.

11099 (SQLSTATE: HY000): not supported os

Cause

지원되지 않는 운영 체제이다.

Action

지원되는 운영 체제에서 실행한다.

11100 (SQLSTATE: HY000): Environment Variable "%s" is not defined.

Cause

환경 변수가 정의되지 않았다.

Action

필요한 환경 변수를 설정한다.

11101 (SQLSTATE: HY000): License file(%s) does not exist

Cause

라이선스 파일이 존재하지 않는다.

Action

라이선스 파일 경로를 확인하고 라이선스 파일을 설치한다.

11102 (SQLSTATE: HY000): License is out of date. License is valid after %4d-%02d-%02d

Cause

라이선스 유효 기간이 아직 시작되지 않았다.

Action

시스템 시간을 확인하고 올바른 라이선스 파일을 설치한다.

11103 (SQLSTATE: HY000): License date is expired. License is expired in %4d-%02d-%02d

Cause

라이선스가 만료되었다.

Action

라이선스를 갱신하고 새로운 라이선스 파일을 설치한다.

11104 (SQLSTATE: HY000): License core count mismatch.

Cause

라이선스에서 허용된 코어 수가 시스템의 코어 수와 일치하지 않는다.

Action

시스템 코어 수에 맞는 라이선스를 확보한다.

11105 (SQLSTATE: HY000): License key is corrupted.

Cause

라이선스 키가 손상되었거나 유효하지 않다.

Action

올바른 라이선스 파일을 재설치한다.

11106 (SQLSTATE: HY000): License host name mismatch.

Cause

라이선스에서 허용된 호스트 이름과 시스템 호스트 이름이 일치하지 않는다.

Action

호스트 이름을 확인하고 해당 호스트 이름에 맞는 라이선스를 확보한다.

11107 (SQLSTATE: HY000): failed to set thread affinity.

Cause

Thread affinity를 설정하는데 실패했다.

Action

시스템 CPU 설정과 thread 권한을 확인한다.

11108 (SQLSTATE: HY000): failed to create timer.

Cause

타이머 생성에 실패했다.

Action

시스템 타이머 리소스를 확인한다.

11109 (SQLSTATE: HY000): failed to set timer.

Cause

타이머 설정에 실패했다.

Action

타이머 값과 시스템 상태를 확인한다.

11110 (SQLSTATE: HY000): failed to destroy timer.

Cause

타이머 삭제에 실패했다.

Action

타이머 상태를 확인한다.

11111 (SQLSTATE: HY000): address is not given.

Cause

주소가 제공되지 않았다.

Action

필요한 주소 정보를 제공한다.

11112 (SQLSTATE: HY000): Unable to access the message queue.

Cause

메시지 queue에 접근하는데 실패했다.

Action

메시지 queue 권한과 존재 여부를 확인한다.

11113 (SQLSTATE: HY000): A message queue exists.

Cause

메시지 queue가 이미 존재한다.

Action

기존 메시지 queue를 사용하거나 다른 이름을 사용한다.

11114 (SQLSTATE: HY000): Unable to create a message queue.

Cause

메시지 queue를 생성하는데 실패했다.

Action

시스템 IPC 리소스의 한도를 확인한다.

11115 (SQLSTATE: HY000): The message queue was removed.

Cause

메시지 queue가 제거되었다.

Action

메시지 queue를 다시 생성하거나 다른 queue를 사용한다.

11116 (SQLSTATE: HY000): Unable to destroy the message queue.

Cause

메시지 queue를 삭제하는데 실패했다.

Action

메시지 queue 권한과 queue 상태를 확인한다.

11117 (SQLSTATE: HY000): Unable to send message.

Cause

메시지 전송에 실패했다.

Action

메시지 크기와 queue 상태를 확인한다.

11118 (SQLSTATE: HY000): Unable to receive message.

Cause

메시지 수신에 실패했다.

Action

메시지 queue 상태와 버퍼 크기를 확인한다.

11119 (SQLSTATE: HY000): No message was available in the message queue.

Cause

메시지 queue에 사용할 수 있는 메시지가 없다.

Action

잠시 후 다시 시도하거나 블로킹 모드를 사용한다.

11120 (SQLSTATE: HY000): fail to get property of a file status

Cause

파일 상태 속성을 가져오는데 실패했다.

Action

파일 디스크립터의 유효성을 확인한다.

11121 (SQLSTATE: HY000): fail to set property of a file status

Cause

파일 상태 속성을 설정하는데 실패했다.

Action

파일 디스크립터와 설정값을 확인한다.

11122 (SQLSTATE: HY000): infiniband ibv/rdma interface returned error

Cause

InfiniBand verbs 인터페이스 에러이다.

Action

InfiniBand 하드웨어와 드라이버 상태를 확인한다.

11123 (SQLSTATE: HY000): no infiniband device was found

Cause

InfiniBand 장치를 찾을 수 없다.

Action

InfiniBand 하드웨어 설치 및 인식 상태를 확인한다.

11124 (SQLSTATE: HY000): cannot find specified infiniband device

Cause

지정된 InfiniBand 장치를 찾을 수 없다.

Action

장치 이름과 설정을 확인한다.

11125 (SQLSTATE: HY000): cannot find suitable Memory Region for specified ptr and size

Cause

지정된 포인터와 크기에 적합한 메모리 영역을 찾을 수 없다.

Action

메모리 영역이 올바르게 등록되고 설정되었는지 확인한다.

11126 (SQLSTATE: HY000): fail to get semaphore value

Cause

세마포어 값을 가져오는데 실패했다.

Action

세마포어 상태를 확인한다.

11127 (SQLSTATE: HY000): fail to control pollset

Cause

pollset을 제어하는데 실패했다.

Action

pollset 상태와 제어 명령을 확인한다.

11128 (SQLSTATE: HY000): fail to create pollset

Cause

pollset을 생성하는데 실패했다.

Action

시스템 리소스와 pollset 설정을 확인한다.

11129 (SQLSTATE: HY000): overflow fd

Cause

시스템의 파일 디스크립터 값이 한계에 도달했다.

Action

시스템의 파일 디스크립터 한계값을 늘린다.

11130 (SQLSTATE: HY000): invalid INI file format

Cause

INI 파일 형식이 유효하지 않다.

Action

INI 파일 문법을 확인하고 파일 형식을 수정한다.

11131 (SQLSTATE: HY000): path '%s' does not exist

Cause

경로가 존재하지 않는다.

Action

경로가 존재하는지 확인하고 필요 시 디렉터리를 생성한다.

11132 (SQLSTATE: HY000): Unable to get maximum undo semaphores per array

Cause

배열 별 최대 undo 세마포어 개수를 가져오지 못했다.

Action

시스템 세마포어 설정을 확인한다.

11133 (SQLSTATE: HY000): Unable to create a undo semaphore

Cause

Undo 세마포어 생성에 실패했다.

Action

시스템 세마포어 리소스를 확인한다.

11134 (SQLSTATE: HY000): Unable to bind the given undo semaphore

Cause

Undo 세마포어 바인딩에 실패했다.

Action

세마포어 상태와 권한을 확인한다.

11135 (SQLSTATE: HY000): Unable to unbind the given undo semaphore

Cause

Undo 세마포어 언바인딩에 실패했다.

Action

세마포어 바인딩 상태를 확인한다.

11136 (SQLSTATE: HY000): Unable to get the given undo semaphore state

Cause

Undo 세마포어 상태를 가져오는데 실패했다.

Action

세마포어 유효성을 확인한다.

11137 (SQLSTATE: HY000): Unable to destroy the given undo semaphore

Cause

Undo 세마포어 삭제에 실패했다.

Action

세마포어 상태와 권한을 확인한다.

11138 (SQLSTATE: HY000): Unable to suspend asyncronous io

Cause

비동기 I/O를 중단하는데 실패했다.

Action

비동기 I/O 상태를 확인한다.

11139 (SQLSTATE: HY000): Unable to control the shared memory segment

Cause

공유 메모리 세그먼트를 제어하는데 실패했다.

Action

공유 메모리 권한과 상태를 확인한다.

11140 (SQLSTATE: HY000): Unable to detach a thread

Cause

해당 thread가 이미 분리되어 있어 thread를 분리하는데 실패했다.

Action

Thread 상태를 확인한다.

11141 (SQLSTATE: 08S01): Communication link failure

Cause

통신 링크 오류가 발생했다.

Action

네트워크 연결 상태와 통신 인프라를 확인한다.

11142 (SQLSTATE: HY000): No such process

Cause

해당 프로세스가 존재하지 않는다.

Action

프로세스 존재 여부와 프로세스 ID를 확인한다.

11143 (SQLSTATE: HY000): getaddrinfo() system call returned failure

Cause

getaddrinfo() 시스템 호출에 실패했다.

Action

호스트 이름과 DNS 설정을 확인한다.

11144 (SQLSTATE: HY000): address is unavailable

Cause

사용할 수 없는 주소이다.

Action

네트워크 인터페이스와 주소 설정을 확인한다.

11145 (SQLSTATE: HY000): semaphore set exists

Cause

세마포어 set이 이미 존재한다.

Action

기존 세마포어를 사용하거나 다른 키를 사용한다.

11146 (SQLSTATE: HY000): unable to create a semaphore set

Cause

세마포어 set을 생성하는데 실패했다.

Action

시스템 세마포어 한도를 확인한다.

11147 (SQLSTATE: HY000): unable to return a semaphore set

Cause

세마포어 set을 반환하는데 실패했다.

Action

세마포어 키와 권한을 확인한다.

11148 (SQLSTATE: HY000): unable to set value a semnum-th semaphore

Cause

세마포어 값 설정에 실패했다.

Action

세마포어 인덱스와 값을 확인한다.

11149 (SQLSTATE: HY000): unable to performs operations on selected semaphores

Cause

세마포어 연산에 실패했다.

Action

세마포어 연산 명령과 상태를 확인한다.

11150 (SQLSTATE: HY000): unable to remove a semaphore set

Cause

세마포어 set을 제거하는데 실패했다.

Action

세마포어 권한과 상태를 확인한다.

11151 (SQLSTATE: HY000): An error occurred while using the OpenSSL function

Cause

OpenSSL 라이브러리 함수 호출에 실패하였다.

Action

인증서 파일과 개인 키 파일이 올바른지 확인하고, OpenSSL 라이브러리 버전도 점검한다.

11152 (SQLSTATE: HY000): bad abi

Cause

외부 함수나 라이브러리를 호출하기 위한 ABI (Application Binary Interface) 설정 과정에 문제가 발생하였다.

Action

사용하고 있는 외부 라이브러리가 현재 데이터베이스 버전과 호환되는지 확인한다.

11153 (SQLSTATE: HY000): bad typedef

Cause

외부 함수 호출 시 사용되는 데이터 타입이나 구조체 정의에 문제가 있다.

Action

외부 함수의 파라미터로 사용되는 데이터 타입이 올바르게 정의되었는지 확인한다.

11154 (SQLSTATE: HY000): Unable to create the directory '%s'

Cause

디렉토리 생성에 실패하였다.

Action

권한 설정이 올바른지 디스크 공간이 충분한지 확인한다.

11155 (SQLSTATE: HY000): Unable to remove the directory

Cause

디렉토리 삭제에 실패하였다.

Action

권한 설정이 올바른지, 디렉토리가 완전히 비어 있는지 확인한다.

11156 (SQLSTATE: HY000): Unable to open the directory

Cause

디렉토리를 열고 내용을 확인하는데 실패하였다.

Action

권한 설정이 올바른지, 디렉토리가 존재하는지 여부를 확인한다.

타입과 연산 관련 에러

12000 (SQLSTATE: HY000): failed to initialize datatype layer

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12001 (SQLSTATE: HYC00): not implemented feature, in a function %s

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12002 (SQLSTATE: 22001): byte length of data greater than column length

Cause

column 의 길이보다 큰 byte 의 입력이 사용되었다.


gSQL> CREATE TABLE t1 ( c1 VARCHAR(3) );


gSQL> INSERT INTO t1 VALUES ( 'abcd' );


ERR-22001(12002): byte length of data greater than column length :

INSERT INTO t1 VALUES ( 'abcd' )

*

ERROR at line 1:

Action

아래와 같이 column 의 길이에 부합하는 data 를 입력한다.


gSQL> INSERT INTO t1 VALUES ( 'abc' );


1 row created.

12003 (SQLSTATE: 22001): character length of data greater than column length

Cause

column 의 문자 길이보다 큰 글자수의 입력이 사용되었다.


gSQL> CREATE TABLE t1 ( c1 VARCHAR(2 char) );


gSQL> INSERT INTO t1 VALUES ( '두글자' );

ERR-22001(12003): character length of data greater than column length :

INSERT INTO t1 VALUES ( '두글자' )

*

ERROR at line 1

Action

column 이 허용하는 글자수를 확인한다.


gSQL> INSERT INTO t1 VALUES ( '두자' );


1 row created.

12004 (SQLSTATE: 22001): data converted with truncation of fractional digits

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12005 (SQLSTATE: 22001): conversion of data would result in loss of whole digits

Cause

data loss 가 발생하는 변환이다.


gSQL> SELECT TO_NATIVE_BIGINT( '9223372036854775808' ) AS RESULT FROM DUAL;


ERR-22001(12005): conversion of data would result in loss of whole digits :

SELECT TO_NATIVE_BIGINT( '9223372036854775808' ) AS RESULT FROM DUAL

*

ERROR at line 1:

Action

data loss 가 발생하지 않는 입력을 사용한다.


gSQL> SELECT TO_NATIVE_BIGINT( '9223372036854775807' ) AS RESULT FROM DUAL;


RESULT

-------------------

9223372036854775807


1 row selected.

12006 (SQLSTATE: 22018): data value is not a numeric literal

Cause

숫자로 변환할 수 없는 문자가 사용되었다.


gSQL> SELECT 1 + 'a' FROM dual;


ERR-22018(12006): data value is not a numeric literal :

SELECT 1 + 'a' FROM dual

*

ERROR at line 1:

Action

아래와 같이 숫자로 변환할 수 있는 문자나 숫자를 사용한다.


gSQL> SELECT 1 + '2' FROM dual;


1 + '2'

-------

3


1 row selected.


gSQL> SELECT 1 + 2 FROM dual;


1 + 2

-----

3


1 row selected.

12007 (SQLSTATE: 22003): data is outside the range of the data type to which the number is being converted

Cause

변환 시 data type 의 범위를 벗어나는 값이다.


gSQL> SELECT TO_NATIVE_SMALLINT( '32768' ) AS RESULT FROM DUAL;


ERR-22003(12007): data is outside the range of the data type to which the number is being converted :


SELECT TO_NATIVE_SMALLINT( '32768' ) AS RESULT FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 data type 의 범위에 포함되는 입력을 사용한다.


gSQL> SELECT TO_NATIVE_SMALLINT( '32767' ) AS RESULT FROM DUAL;


RESULT

------

32767


1 row selected.

12008 (SQLSTATE: 22001): data is greater than 0, less than 2, and not equal to 1

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12009 (SQLSTATE: 22003): data is less than 0 or greater than or equal to 2

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12010 (SQLSTATE: 22001): (byte length of data)/2 is greater than column byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12011 (SQLSTATE: 22003): data value is not a hexadecimal value

Cause

유효하지 않은 hexadecimal 값을 사용하였다.


gSQL> SELECT UNHEX( '41424' ) FROM DUAL;


ERR-22003(12011): data value is not a hexadecimal value :

SELECT UNHEX( '41424' ) FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 유효한 hexadecimal 값을 사용한다.


gSQL> SELECT UNHEX( '414243' ) FROM DUAL;


UNHEX( '414243' )

-----------------

414243


1 row selected.

12012 (SQLSTATE: 22008): data value is a valid timestamp literal; time portion is nonzero

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12013 (SQLSTATE: 22018): data value is not a valid date literal or timestamp literal

Cause

입력한 timestamp 문자열이 컬럼의 유효범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 TIMESTAMP(3) );

Table created.

gSQL> INSERT INTO T1 VALUES( '9999-12-31 23:59:59.999999' );

ERR-22018(12013): data value is not a valid date literal or timestamp literal :

INSERT INTO T1 VALUES( '9999-12-31 23:59:59.999999' )

*

ERROR at line 1:

Action

아래와 같이 컬럼의 유효범위 내의 값을 입력한다.


gSQL> INSERT INTO T1 VALUES( '9999-12-31 23:59:59.999' );

1 row created.

12014 (SQLSTATE: 22008): data value is a valid timestamp literal; fractional seconds portion is nonzero

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12015 (SQLSTATE: 22018): data value is not a valid time literal or timestamp literal

Cause

application 에서 입력한 time 문자열이 시간의 유효범위를 벗어났다.

Action

시간의 유효범위를 벗어나지 않은 time 문자열을 사용한다.

12016 (SQLSTATE: 22008): data value is a valid timestamp literal; fractional seconds portion truncated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12017 (SQLSTATE: 22018): data value is not a valid date literal or time literal or timestamp literal

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12018 (SQLSTATE: 22015): data value is a valid interval value; the value in one of the fields is truncated

Cause

잘못된 INTERVAL literal 을 사용하였다.


SELECT INTERVAL'1-11' YEAR FROM DUAL;

ERR-22015(12018): data value is a valid interval value; the value in one of the fields is truncated :

SELECT INTERVAL'1-11' YEAR FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 올바른 INTERVAL literal 을 사용한다.


gSQL> SELECT INTERVAL'1' YEAR FROM DUAL;

INTERVAL'1' YEAR

---------------

+01-00

1 row selected.

12019 (SQLSTATE: 22018): data value is not a valid interval literal

Cause

INTERVAL literal 표현식이 잘못되었다.


gSQL> SELECT INTERVAL'1' YEAR TO MONTH FROM DUAL;

ERR-22018(12019): data value is not a valid interval literal :

SELECT INTERVAL'1' YEAR TO MONTH FROM DUAL

*

ERROR at line 1:

Action

올바른 INTERVAL literal 표현식을 사용한다.


gSQL> SELECT INTERVAL'1-1' YEAR TO MONTH FROM DUAL;

INTERVAL'1-1' YEAR TO MONTH

---------------------------

+01-01

1 row selected.

12020 (SQLSTATE: 22001): number of digits greater than column byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12021 (SQLSTATE: 22001): number of characters greater than column byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12022 (SQLSTATE: 22003): data converted with truncation of whole digits

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12023 (SQLSTATE: 22003): data is outside the range of the data type to which the number is being converted

Cause

숫자가 data type 의 범위를 벗어났다.


CREATE TABLE t1( c1 NATIVE_BIGINT );

INSERT INTO t1 VALUES( 9223372036854775807 );

COMMIT;


gSQL> SELECT CAST( c1 AS NATIVE_INTEGER ) FROM t1;


ERR-22003(12023): data is outside the range of the data type to which the number is being converted :

SELECT CAST( c1 AS NATIVE_INTEGER ) FROM t1

*

ERROR at line 1:

Action

숫자를 수용할 수 있는 data type 의 범위를 확인한다.


gSQL> SELECT CAST( c1 AS NUMBER ) FROM t1;


CAST( C1 AS NUMBER )

--------------------

9223372036854775807


1 row selected.

12024 (SQLSTATE: 22001): data is greater than 0, less than 2, and not equal to 1

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12025 (SQLSTATE: 22003): data is less than 0 or greater than or equal to 2

Cause

application 에서 boolean type 에 대해 잘못된 숫자를 사용하였다.

Action

숫자로 boolean 값을 사용시 TRUE 는 1 FALSE 는 0 값을 사용한다.

12026 (SQLSTATE: 22015): interval data truncated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12027 (SQLSTATE: 22001): byte length of data greater than column length

Cause

binary data 의 byte length 가 column 의 length 를 벗어났다.


gSQL> SELECT CAST(X'01AF' AS BINARY(1)) FROM dual;


ERR-22001(12027): byte length of data greater than column length :

SELECT CAST(X'01AF' AS BINARY(1)) FROM dual

*

ERROR at line 1:

Action

아래와 같이 유효한 byte length 의 binary data 를 사용한다.


gSQL> SELECT CAST(X'AF' AS BINARY(1)) FROM dual;


CAST(X'AF' AS BINARY(1))

-----------------------

AF


1 row selected.

12028 (SQLSTATE: 22001): character length of data greater than column length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12029 (SQLSTATE: 22003): byte length of data not equal to SQL data length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12030 (SQLSTATE: 22001): column byte length is less than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12031 (SQLSTATE: 22008): data value is not a valid date

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12032 (SQLSTATE: 22007): data value is not a valid date format

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12033 (SQLSTATE: 22001): column byte length is less than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12034 (SQLSTATE: 22018): data value is not a valid GUID

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12035 (SQLSTATE: 22001): column byte length is less than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12036 (SQLSTATE: 22001): data value is not a valid time

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12037 (SQLSTATE: 22007): data value is not a valid time format

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12038 (SQLSTATE: 22001): column byte length is between %d and character byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12039 (SQLSTATE: 22001): column byte length is less than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12040 (SQLSTATE: 22008): data value is not a valid timestamp

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12041 (SQLSTATE: 22008): time fields are nonzero

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12042 (SQLSTATE: 22007): data value does not contain a valid date

Cause

연산 결과 datetime 값이 지원하는 날짜 범위의 값을 벗어났다.

값의 범위: '4714-11-24 BC' ~ '9999-12-31 AD'


gSQL> SELECT TO_CHAR( c1, 'YYYY-MM-DD HH24:MI:SS' ) FROM t1;


TO_CHAR( C1, 'YYYY-MM-DD HH24:MI:SS' )

--------------------------------------

9999-12-31 23:59:59


1 row selected.


--# 아래 예제의 수행 결과는 '9999-12-31' 의 값을 벗어나게 된다.


gSQL> SELECT ROUND( c1, 'HH' ) AS RESULT FROM t1;


ERR-22007(12042): data value does not contain a valid date :

SELECT ROUND( c1, 'HH' ) AS RESULT FROM t1

*

ERROR at line 1:

Action

연산 결과의 datetime 값이 지원하는 날짜 범위의 값을 벗어나지 않는지 확인한다.

12043 (SQLSTATE: 22008): fractional seconds fields are nonzero

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12044 (SQLSTATE: 22007): data value does not contain a valid time

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12045 (SQLSTATE: 22008): fractional seconds fields are truncated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12046 (SQLSTATE: 22007): data value does not contain a valid timestamp

Cause

datetime 값이 유효하지 않다. (서버 내부에서 사용하는 에러 코드이다.)

Action

해당 에러 발생 시 고객센터에 문의한다.

12047 (SQLSTATE: 22001): column byte length is less than character byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12048 (SQLSTATE: 22015): data value is not a valid interval literal

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12049 (SQLSTATE: 22003): conversion resulted in truncation of whole digits

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12050 (SQLSTATE: 22015): one or more fields of data value were truncated during conversion

Cause

INTERVAL type 의 범위를 벗어나는 값을 사용하였다.


gSQL> CREATE TABLE T1 ( I1 INTERVAL YEAR TO MONTH );


gSQL> INSERT INTO T1 VALUES ( '100-01' );


ERR-22015(12050): one or more fields of data value were truncated during conversion :

INSERT INTO T1 VALUES ( '100-01' )

*

ERROR at line 1:

Action

interval type 의 범위 내의 값을 사용한다.


gSQL> INSERT INTO T1 VALUES ( '99-01' );


1 row created.

12051 (SQLSTATE: 22001): column byte length is less than character byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12052 (SQLSTATE: 22015): data value is not a valid interval literal

Cause

interval 값에 대한 검사 시, interval indicator 또는 fractional second precision 이 유효하지 않다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12053 (SQLSTATE: 22003): conversion resulted in truncation of whole digits

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12054 (SQLSTATE: 22015): one or more fields of data value were truncated during conversion

Cause

interval type 의 범위를 벗어난 값을 사용하였다.


gSQL> CREATE TABLE T1( I1 INTERVAL DAY );


gSQL> INSERT INTO T1 VALUES ( '100' );


ERR-22015(12054): one or more fields of data value were truncated during conversion :

INSERT INTO T1 VALUES ( '100' )

*

ERROR at line 1:

Action

interval type 범위 내의 값을 사용한다.


gSQL> INSERT INTO T1 VALUES ( '99' );


1 row created.

12055 (SQLSTATE: 01004): byte length of data greater equal than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12056 (SQLSTATE: 01004): character length of data greater equal than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12057 (SQLSTATE: 01S07): data converted with truncation of fractional digits

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12058 (SQLSTATE: 22003): conversion of data would result in loss of whole digits

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12059 (SQLSTATE: 22018): data is not numeric literal

Cause

숫자로 변환할 수 없는 문자열을 사용하였다.


gSQL> SELECT TO_NATIVE_DOUBLE( 'a' ) FROM DUAL;


ERR-22018(12059): data is not numeric literal :

SELECT TO_NATIVE_DOUBLE( 'a' ) FROM DUAL

*

ERROR at line 1:

Action

숫자 문자열을 사용한다.


gSQL> SELECT TO_NATIVE_DOUBLE( '123.45' ) FROM DUAL;


TO_NATIVE_DOUBLE( '123.45' )

----------------------------

123.45


1 row selected.

12060 (SQLSTATE: 22003): data is outside the range of the data type to which the number is being converted

Cause

data type 의 범위를 벗어나는 값을 사용하였다.


gSQL> SELECT TO_NUMBER( '1E+1000', '9EEEE' ) FROM DUAL;


ERR-22003(12060): data is outside the range of the data type to which the number is being converted :

SELECT TO_NUMBER( '1E+1000', '9EEEE' ) FROM DUAL

*

ERROR at line 1:

Action

data type 범위 내의 값을 사용한다.


gSQL> SELECT TO_NUMBER( '1E+100', '9EEEE' ) FROM DUAL;


TO_NUMBER( '1E+100', '9EEEE' )

------------------------------

1E+100


1 row selected.

12061 (SQLSTATE: 01S07): data is greater than 0, less than 2, and not equal to 1

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12062 (SQLSTATE: 22003): data is less than 0 or greater than or equal to 2

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12063 (SQLSTATE: 01S07): data value is a valid timestamp-value; time portion is nonzero

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12064 (SQLSTATE: 22018): data value is not a valid date-value or timestamp-value

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12065 (SQLSTATE: 01S07): data value is a valid timestamp-value; fractional seconds portion is nonzero

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12066 (SQLSTATE: 22018): data value is not a valid time-value or timestamp-value

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12067 (SQLSTATE: 22018): data value is not a valid date-value or time-value or timestamp-value

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12068 (SQLSTATE: 01S07): data value is a valid interval value;truncation of one or more trailing fields

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12069 (SQLSTATE: 22015): data value is a valid interval; leading field significant precision is lost

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12070 (SQLSTATE: 22018): data value is not a valid interval value

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12071 (SQLSTATE: 01004): number of whole digits is less than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12072 (SQLSTATE: 22003): number of whole digits is greater than buffer length

Cause

숫자의 digit 개수가 buffer 크기보다 크다.


gSQL> SELECT CAST( 2.43e307D AS CHAR(8) ) FROM dual;


ERR-22003(12072): number of whole digits is greater than buffer length :


SELECT CAST( 2.43e307D AS CHAR(8) ) FROM dual

*

ERROR at line 1:

Action

숫자의 digit 개수를 포함할 수 있는 buffer 크기를 사용한다.


gSQL> SELECT CAST( 2.43e307D AS CHAR(10) ) FROM dual;


CAST( 2.43E307D AS CHAR(10) )

-----------------------------

2.43E+307


1 row selected.

12073 (SQLSTATE: 01S07): data converted with truncation of fractional digits

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12074 (SQLSTATE: 22003): conversion of data would result in loss of whole digits

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12075 (SQLSTATE: 22003): data is outside the range of the data type to which the number is being converted

Cause

data type 의 범위를 벗어나는 숫자이다.


gSQL> SELECT CAST(40000 AS NATIVE_SMALLINT) FROM T1;


ERR-22003(12075): data is outside the range of the data type to which the number is being converted :


SELECT CAST(40000 AS NATIVE_SMALLINT) FROM T1

*

ERROR at line 1:

Action

data type 의 범위 내의 숫자를 사용한다.


gSQL> SELECT CAST(30000 AS NATIVE_SMALLINT) FROM T1;


CAST(30000 AS NATIVE_SMALLINT)

------------------------------

30000


1 row selected.

12076 (SQLSTATE: 01S07): data is greater than 0, less than 2, and not equal to 1

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12077 (SQLSTATE: 22003): data is less than 0 or greater than or equal to 2

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12078 (SQLSTATE: 22003): byte length of data is greater than buffer length

Cause

data 의 길이가 buffer 길이보다 크다.


gSQL> SELECT CAST( 0.0000949525 AS CHAR( 10 ) ) from t1;


ERR-22003(12078): byte length of data is greater than buffer length :

SELECT CAST( 0.0000949525 AS CHAR( 10 ) ) from t1

*

ERROR at line 1:

Action

data 의 길이를 포함할 수 있는 buffer 크기를 사용한다.


gSQL> SELECT CAST( 0.0000949525 AS CHAR( 11 ) ) from t1;


CAST( 0.0000949525 AS CHAR( 11 ) )

----------------------------------

.0000949525


1 row selected.

12079 (SQLSTATE: 01S07): fractional seconds portion truncated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12080 (SQLSTATE: 22015): whole part of number truncated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12081 (SQLSTATE: 22003): buffer length is less equal than 1

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12082 (SQLSTATE: 22003): buffer length is less than 1

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12083 (SQLSTATE: 01004): (byte length of data)/2 is greater equal than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12084 (SQLSTATE: 01004): (character length of data)/2 is greater equal than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12085 (SQLSTATE: 01004): byte length of data is greater than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12086 (SQLSTATE: 01004): buffer length is between %d and character byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12087 (SQLSTATE: 22003): buffer length is less than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12088 (SQLSTATE: 22003): byte length of data is greater than buffer length

Cause

datetime 값을 string 으로 변환 시 string 을 저장할 공간이 충분하지 않다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12089 (SQLSTATE: 22003): buffer length is less than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12090 (SQLSTATE: 22003): byte length of data is greater than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12091 (SQLSTATE: 01004): buffer length is between %d and character byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12092 (SQLSTATE: 22003): buffer length is less than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12093 (SQLSTATE: 22003): byte length of data is greater than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12094 (SQLSTATE: 01004): buffer length is between %d and character byte length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12095 (SQLSTATE: 22003): buffer length is less than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12096 (SQLSTATE: 01004): buffer length is between %d and character length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12097 (SQLSTATE: 22003): byte length of data is greater than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12098 (SQLSTATE: 01S07): time portion of timestamp is nonzero

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12099 (SQLSTATE: 01S07): fractional seconds portion of timestamp is nonzero

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12100 (SQLSTATE: 01S07): fractional seconds portion of timestamp is truncated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12101 (SQLSTATE: 01S07): trailing fields portion truncated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12102 (SQLSTATE: 22015): leading precision of target is not big enough to hold data from source

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12103 (SQLSTATE: 22003): interval precision was a single field and truncated whole

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12104 (SQLSTATE: 22015): interval precision was not a single field

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12105 (SQLSTATE: 22003): byte length of data is greater than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12106 (SQLSTATE: 01004): number of whole digits is less than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12107 (SQLSTATE: 22003): number of whole digits is greater equal than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12108 (SQLSTATE: 01S07): trailing fields portion truncated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12109 (SQLSTATE: 22015): leading precision of target is not big enough to hold data from source

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12110 (SQLSTATE: 01S07): interval precision was a single field and truncated fractional

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12111 (SQLSTATE: 22003): interval precision was a single field and truncated whole

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12112 (SQLSTATE: 07006): interval precision was not a single field

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12113 (SQLSTATE: 22003): byte length of data is greater than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12114 (SQLSTATE: 01004): number of whole digits is less than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12115 (SQLSTATE: 22003): number of whole digits is greater equal than buffer length

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12116 (SQLSTATE: 22009): invalid time zone displacement value

Cause

TIME ZONE 값의 범위가 유효하지 않다.


gSQL> SELECT TIMESTAMP'2000-01-01 23:59:59.999999 +14:59' FROM dual;


ERR-22009(12116): invalid time zone displacement value :

SELECT TIMESTAMP'2000-01-01 23:59:59.999999 +14:59' FROM dual

*

ERROR at line 1:

Action

TIME ZONE 값의 범위는 '-14:00' ~ '+14:00' 이다.


gSQL> SELECT TIMESTAMP'2000-01-01 23:59:59.999999 +09:00' FROM dual;


TIMESTAMP'2000-01-01 23:59:59.999999 +09:00'

--------------------------------------------

2000-01-01 23:59:59.999999 +09:00


1 row selected.

12117 (SQLSTATE: 42000): invalid number of arguments

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12118 (SQLSTATE: 42000): inconsistent datatype of function parameters: %s

Cause

함수의 인자로 수행할 수 없는 data type 조합이 사용되었다.


gSQL> SELECT 4 * DATE'2024-01-01' FROM dual;


ERR-42000(12118): inconsistent datatype of function parameters: NUMBER, DATE :

SELECT 4 * DATE'2024-01-01' FROM dual

*

ERROR at line 1:

Action

함수의 인자로 사용할 수 있는 data type 을 사용한다.


gSQL> SELECT 4 + DATE'2024-01-01' FROM dual;


4 + DATE'2024-01-01'

--------------------

2024-01-05


1 row selected.

12119 (SQLSTATE: 42000): comparison is not applicable: %s and %s

Cause

비교할 수 없는 data type 조합이 사용되었다.


gSQL> SELECT 'OK' FROM dual WHERE 100 = DATE'2024-01-01';


ERR-42000(12119): comparison is not applicable: NUMBER and DATE :

SELECT 'OK' FROM dual WHERE 100 = DATE'2024-01-01'

*

ERROR at line 1:

Action

비교할 수 있는 data type 조합을 사용한다.


gSQL> SELECT 'OK' FROM dual WHERE 100 = INTERVAL '10' YEAR;


no rows selected.

12120 (SQLSTATE: 42000): conversion is not applicable: from %s to %s

Cause

변환할 수 없는 data type 이다.


gSQL> SELECT CAST( 100 AS BOOLEAN ) FROM dual;


ERR-42000(12120): conversion is not applicable: from NUMBER to BOOLEAN :

SELECT CAST( 100 AS BOOLEAN ) FROM dual

*

ERROR at line 1:

Action

변환할 수 있는 data type 을 사용한다.


gSQL> SELECT CAST( 'TRUE' AS BOOLEAN ) FROM dual;


CAST( 'TRUE' AS BOOLEAN )

-------------------------

TRUE


1 row selected.

12121 (SQLSTATE: 22021): invalid character value in characterset repertoire

Cause

지정된 character set 에 속하는 문자인지를 검사했지만 이에 해당되지 않았다.

Action

지정된 character set 에 속하는 문자인지 확인한다.

12122 (SQLSTATE: 22012): divisor is equal to zero

Cause

분모로 0 값이 사용되었다.


gSQL> SELECT 5 / 0 FROM dual;


ERR-22012(12122): divisor is equal to zero :

SELECT 5 / 0 FROM dual

*

ERROR at line 1:

Action

나눗셈 연산 시 분모로 0 값을 사용하지 않는다.

12123 (SQLSTATE: 22018): data is not boolean literal

Cause

boolean 타입으로 변환할 수 없는 문자열이다.


gSQL> SELECT CAST( 'a' AS BOOLEAN ) FROM dual;


ERR-22018(12123): data is not boolean literal :

SELECT CAST( 'a' AS BOOLEAN ) FROM dual

*

ERROR at line 1:

Action

TRUE, FALSE 등의 boolean 타입으로 변환할 수 있는 문자열을 사용한다.


gSQL> SELECT CAST( 'TRUE' AS BOOLEAN ) FROM dual;


CAST( 'TRUE' AS BOOLEAN )

-------------------------

TRUE


1 row selected.

12124 (SQLSTATE: HY000): invalid argument for factorial function

Cause

FACTORIAL() 함수의 인자로 사용할 수 없는 값이다.


gSQL> SELECT factorial(0.6) FROM dual;


ERR-HY000(12124): invalid argument for factorial function :

SELECT factorial(0.6) FROM dual

*

ERROR at line 1:

Action

아래와 같이 정수값을 사용한다.


gSQL> SELECT factorial(5) FROM dual;


FACTORIAL(5)

------------

120


1 row selected.

12125 (SQLSTATE: 22027): trim set should have only one character

Cause

trim set 에는 한글자만 사용할 수 있다.


gSQL> SELECT TRIM( BOTH 'ab' FROM 'abca' ) FROM dual;


ERR-22027(12125): trim set should have only one character :

SELECT TRIM( BOTH 'ab' FROM 'abca' ) FROM dual

*

ERROR at line 1:

Action

아래와 같이 trim set 에 한글자만 기술한다.


gSQL> SELECT TRIM( BOTH 'a' FROM 'abca' ) FROM dual;


TRIM( BOTH 'a' FROM 'abca' )

----------------------------

bc


1 row selected.

12126 (SQLSTATE: 22008): datetime field overflow

Cause

datetime 값의 범위를 벗어났다.


gSQL> SELECT DATEADD( YEAR, 7999, DATE'2001-01-01' ) FROM DUAL;


ERR-22008(12126): datetime field overflow :

SELECT DATEADD( YEAR, 7999, DATE'2001-01-01' ) FROM DUAL

*

ERROR at line 1:

Action

datetime 값의 범위를 벗어나지 않도록 연산한다.


gSQL> SELECT DATEADD( YEAR, 7998, DATE'2001-01-01' ) FROM DUAL;


DATEADD( YEAR, 7998, DATE'2001-01-01' )

---------------------------------------

9999-01-01


1 row selected.

12127 (SQLSTATE: HY000): invalid ROWID

Cause

존재할 수 없는 ROWID 가 사용되었다.


gSQL> CREATE TABLE t1 ( c1 ROWID );


Table created.


gSQL> INSERT INTO T1 VALUES ( '*-ADuwAAAAAAACAAAAAiAAC' );


ERR-HY000(12127): invalid ROWID :

INSERT INTO T1 VALUES ( '*-ADuwAAAAAAACAAAAAiAAC' )

*

ERROR at line 1:

Action

실제로 존재하는 ROWID 값을 입력한다.


gSQL> INSERT INTO t1 SELECT t2.ROWID FROM t2;


1 row created.

12128 (SQLSTATE: 22019): invalid escape character

Cause

escape 사용이 잘못되었다.


gSQL> SELECT c1 FROM t1 WHERE c1 LIKE '____%' ESCAPE '__';


ERR-22019(12128): invalid escape character :

SELECT c1 FROM t1 WHERE c1 LIKE '____%' ESCAPE '__'

*

ERROR at line 1:

Action

gSQL> SELECT c1 FROM t1 WHERE c1 LIKE '____%' ESCAPE '_';


C1

---------

____%____

____A____


2 rows selected.

12129 (SQLSTATE: HY000): invalid character set identifier

Cause

DB 생성 시 character set 을 지정하거나 언어관련 환경변수를 지정할 때 서버에서 지원하지 않는 character set 을 지정하였다.

Action

서버에서 지원하는 character set 은 SQL_ASCII, UTF8, UHC, GB18030 이다.

12130 (SQLSTATE: HY000): invalid extract field for extract source

Cause

추출하고자 하는 필드가 존재하지 않는다.


gSQL> SELECT c1, EXTRACT( YEAR FROM c1 ) FROM t1;


ERR-HY000(12130): invalid extract field for extract source :

SELECT c1, EXTRACT( YEAR FROM c1 ) FROM t1

*

ERROR at line 1:

Action

아래와 같이 추출할 수 있는 필드를 사용한다.


gSQL> SELECT c1, EXTRACT( HOUR FROM c1 ) FROM t1;


C1 EXTRACT( HOUR FROM C1 )

--------------- -----------------------

18:18:25.868024 18


1 row selected.

12131 (SQLSTATE: 42000): inconsistent datatypes: argument[%d] expected %s

Cause

비교 불가능한 data type 을 사용하였다.


gSQL> SELECT GREATEST( DATE'2024-03-31', 8080 ) FROM dual;


ERR-42000(12131): inconsistent datatypes: argument[2] expected DATE :

SELECT GREATEST( DATE'2024-03-31', 8080 ) FROM dual

*

ERROR at line 1:

Action

아래와 같이 동일한 data type 을 사용한다.


gSQL> SELECT GREATEST( DATE'2024-03-31', DATE'2024-04-01' ) FROM dual;


GREATEST( DATE'2024-03-31', DATE'2024-04-01' )

----------------------------------------------

2024-04-01


1 row selected.

12132 (SQLSTATE: HY000): date format value exceeds maximum length (%d)

Cause

date format 의 길이 제한을 초과하였다.


gSQL>

SELECT TO_CHAR( DATE'1999-01-01'

, 'YYYY/1234567890123456789012345678901234567890/MM/1234567890123456789012345678901234567890/DD' )

FROM DUAL;


ERR-HY000(12132): date format value exceeds maximum length (80) :

SELECT TO_CHAR( DATE'1999-01-01'

*

ERROR at line 1:

Action

아래와 같이 date format 의 길이를 줄여서 사용한다.


gSQL>

SELECT TO_CHAR( DATE'1999-01-01'

, 'YYYY / MM / DD' )

FROM DUAL;


TO_CHAR( DATE'1999-01-01'

-------------------------

1999 / 01 / 01


1 row selected.

12133 (SQLSTATE: HY000): date format not recognized

Cause

유효하지 않은 date format 을 사용하였다.


gSQL>

SELECT TO_CHAR( DATE'1999-01-01', 'YYYY/FF/DD' ) FROM dual;


ERR-HY000(12133): date format not recognized :

SELECT TO_CHAR( DATE'1999-01-01', 'YYYY/FF/DD' ) FROM dual

*

ERROR at line 1:

Action

아래와 같이 유효한 date format 을 사용한다.


gSQL>

SELECT TO_CHAR( DATE'1999-01-01', 'YYYY/MM/DD' ) FROM dual;


TO_CHAR( DATE'1999-01-01', 'YYYY/MM/DD' )

-----------------------------------------

1999/01/01


1 row selected.

12134 (SQLSTATE: HY000): format code appears twice

Cause

동일한 format code 가 두 번 사용되었다.


gSQL>

SELECT TO_DATE( '1999-01-01', 'YYYY-DD-DD' ) FROM dual;


ERR-HY000(12134): format code appears twice :

SELECT TO_DATE( '1999-01-01', 'YYYY-DD-DD' ) FROM dual

*

ERROR at line 1:

Action

아래와 같이 유효한 date format 을 사용한다.


gSQL>

SELECT TO_DATE( '1999-01-01', 'YYYY-MM-DD' ) FROM dual;


TO_DATE( '1999-01-01', 'YYYY-MM-DD' )

-------------------------------------

1999-01-01


1 row selected.

12135 (SQLSTATE: HY000): %s conflicts with %s

Cause

입력 문자열에 대한 날짜 정보가 올바르지 않다.


gSQL> SELECT TO_DATE( '2024-02-28 SUNDAY', 'YYYY-MM-DD DAY' ) FROM dual;


ERR-HY000(12135): day of week conflicts with Julian date :

SELECT TO_DATE( '2024-02-28 SUNDAY', 'YYYY-MM-DD DAY' ) FROM dual

*

ERROR at line 1:

Action

올바른 날짜 정보에 대한 입력 문자열을 기술한다.


gSQL> SELECT TO_DATE( '2024-02-28 WEDNESDAY', 'YYYY-MM-DD DAY' ) FROM dual;


TO_DATE( '2024-02-28 wednesday', 'yyyy-mm-dd day' )

---------------------------------------------------

2024-02-28


1 row selected.

12136 (SQLSTATE: HY000): literal does not match format string

Cause

문자열이 format string 에 부합하지 않는다.


gSQL>

SELECT DATE'2024' FROM dual;


ERR-HY000(12136): literal does not match format string :

SELECT DATE'2024' FROM dual

*

ERROR at line 1:

Action

아래와 같이 유효한 문자열을 사용한다.


gSQL>

SELECT DATE'2024-02-28' FROM dual;


DATE'2024-02-28'

----------------

2024-02-28


1 row selected.

12137 (SQLSTATE: HY000): input value not long enough for date format

Cause

입력값의 길이가 date format 보다 짧다.


gSQL>

SELECT CAST( '2024' AS DATE ) AS result FROM dual;


ERR-HY000(12137): input value not long enough for date format :

SELECT CAST( '2024' AS DATE ) AS result FROM dual

*

ERROR at line 1:

Action

아래와 같이 date format 에 부합하는 입력값을 사용한다.


gSQL>

SELECT CAST( '2024-03-01' AS DATE ) AS result FROM dual;


RESULT

----------

2024-03-01


1 row selected.

12138 (SQLSTATE: HY000): date format picture ends before converting entire input string

Cause

입력값보다 date format 이 작다


gSQL> SELECT TO_DATE ( '2000', 'YYY' ) FROM dual;


ERR-HY000(12138): date format picture ends before converting entire input string :

SELECT TO_DATE ( '2000', 'YYY' ) FROM dual

*

ERROR at line 1:

Action

아래와 같이 입력값을 해석할 수 있는 date format 을 사용한다.


gSQL> SELECT TO_DATE ( '2000', 'YYYY' ) FROM dual;


TO_DATE ( '2000', 'YYYY' )

--------------------------

2000-01-01


1 row selected.

12139 (SQLSTATE: HY000): year must be between %s and %s, and not be 0

Cause

존재하지 않는 년도이다.


gSQL> SELECT TO_DATE ( '0', 'YYYY' ) FROM dual;


ERR-HY000(12139): year must be between 4714 BC and 9999 AD, and not be 0 :

SELECT TO_DATE ( '0', 'YYYY' ) FROM dual

*

ERROR at line 1:

Action

유효한 범위의 연도값을 사용한다.


gSQL> SELECT TO_DATE ( '1', 'YYYY' ) FROM dual;


TO_DATE ( '1', 'YYYY' )

-----------------------

0001-01-01


1 row selected.

12140 (SQLSTATE: 2200C): missing or illegal character following the escape character

Cause

escape character 문자 다음에 '_' 또는 '%' 를 기술해야 한다.


gSQL> SELECT c1 FROM t1 WHERE c1 LIKE '_A%' ESCAPE '_';


ERR-2200C(12140): missing or illegal character following the escape character :

SELECT c1 FROM t1 WHERE c1 LIKE '_A%' ESCAPE '_'

*

ERROR at line 1:

Action

지정된 escape character를 pattern의 '_' 또는 '%' 앞에 기술한다.


gSQL> SELECT c1 FROM t1 WHERE c1 LIKE '__A%' ESCAPE '_';


C1

----

_ABC


1 row selected.

12141 (SQLSTATE: HY000): not a valid month

Cause

월에 해당하는 입력값이 아니다.


gSQL> SELECT TO_DATE( '13', 'MM' ) FROM DUAL;


ERR-HY000(12141): not a valid month :

SELECT TO_DATE( '13', 'MM' ) FROM DUAL

*

ERROR at line 1:

Action

월에 해당하는 유효한 값을 사용한다.


gSQL> SELECT TO_DATE( '12', 'MM' ) FROM DUAL;


TO_DATE( '12', 'MM' )

---------------------

2024-12-01


1 row selected.

12142 (SQLSTATE: HY000): a non-numeric character was found where a numeric was expected

Cause

숫자로 변환할 수 없는 문자가 사용되었다.


gSQL> SELECT CAST( 'ABC' AS DATE ) FROM dual;


ERR-HY000(12142): a non-numeric character was found where a numeric was expected :

SELECT CAST( 'ABC' AS DATE ) FROM dual

*

ERROR at line 1:

Action

아래와 같이 data type 에 부합하는 숫자로 구성된 문자열을 사용한다.


gSQL> SELECT CAST( '2024-01-01' AS DATE ) FROM dual;


CAST( '2024-01-01' AS DATE )

----------------------------

2024-01-01


1 row selected.

12143 (SQLSTATE: HY000): day of month must be between 1 and last day of month

Cause

날짜로 사용할 수 없는 값이 사용되었다.


gSQL> INSERT INTO t1 VALUES ( '2024-02-00' );


ERR-HY000(12143): day of month must be between 1 and last day of month :

INSERT INTO t1 VALUES ( '2024-02-00' )

*

ERROR at line 1:

Action

아래와 같이 월의 유효한 날짜를 입력한다.


gSQL> INSERT INTO t1 VALUES ( '2024-02-01' );


1 row created.

12144 (SQLSTATE: HY000): not a valid day of the week

Cause

요일 입력값이 잘못되었다.


gSQL> SELECT NEXT_DAY( DATE'2017-05-31', '3' ) FROM dual;


ERR-HY000(12144): not a valid day of the week :

SELECT NEXT_DAY( DATE'2017-05-31', '3' ) FROM dual

*

ERROR at line 1:

Action

아래와 같이 요일을 기술하거나, 숫자를 사용한다.


gSQL> SELECT NEXT_DAY( DATE'2017-05-31', 'TUESDAY' ) FROM dual;


NEXT_DAY( DATE'2017-05-31', 'TUESDAY' )

---------------------------------------

2017-06-06


1 row selected.


gSQL> SELECT NEXT_DAY( DATE'2017-05-31', 3 ) FROM dual;


NEXT_DAY( DATE'2017-05-31', 3 )

-------------------------------

2017-06-06


1 row selected.

12145 (SQLSTATE: HY000): day of year must be between 1 and 365 (366 for leap year)

Cause

해당 년도의 범위를 벗어나는 day of year 값이 사용되었다.


gSQL> SELECT TO_DATE( '2024 367', 'YYYY DDD' ) FROM DUAL;


ERR-HY000(12145): day of year must be between 1 and 365 (366 for leap year) :

SELECT TO_DATE( '2024 367', 'YYYY DDD' ) FROM DUAL

*

ERROR at line 1:

Action

해당 년도 범위 내의 day of year 값을 사용한다.


gSQL> SELECT TO_DATE( '2024 365', 'YYYY DDD' ) FROM DUAL;


TO_DATE( '2024 365', 'YYYY DDD' )

---------------------------------

2024-12-30


1 row selected.

12146 (SQLSTATE: HY000): format code cannot appear in date input format

Cause

to_datetime 함수에 올 수 없는 format element 를 사용하였다.


gSQL> SELECT TO_DATE( '1999-01-01', 'CC' ) FROM dual;


ERR-HY000(12146): format code cannot appear in date input format :

SELECT TO_DATE( '1999-01-01', 'CC' ) FROM dual

*

ERROR at line 1:

Action

  • to_datetime 함수에 올 수 있는 format element 를 사용한다.


gSQL> SELECT TO_DATE( '2000-01-01', 'YYYY-MM-DD' ) FROM dual;


TO_DATE( '2000-01-01', 'YYYY-MM-DD' )

------------------------------------

2000-01-01


1 row selected.


  • to_char 함수를 이용해 format element 에 대한 값을 추출한다.


gSQL> SELECT c1, TO_CHAR( c1, 'CC' ) FROM t1;


C1 TO_CHAR( C1, 'CC' )

-------------- -------------------

2000-01-01 20


1 row selected.

12147 (SQLSTATE: HY000): BC/B.C. or AD/A.D. required

Cause

BC/B.C. or AD/A.D. format element 와 동일한 input string 이 아니다.


gSQL> SELECT TO_DATE( '2000-01-01 A', 'YYYY-MM-DD AD' ) FROM DUAL;


ERR-HY000(12147): BC/B.C. or AD/A.D. required :

SELECT TO_DATE( '2000-01-01 A', 'YYYY-MM-DD AD' ) FROM DUAL

*

ERROR at line 1:

Action

BC/B.C. or AD/A.D. format element 와 동일한 input string 을 기술한다.


gSQL> SELECT TO_DATE( '2000-01-01 AD', 'YYYY-MM-DD AD' ) FROM DUAL;


TO_DATE( '2000-01-01 AD', 'YYYY-MM-DD AD' )

-------------------------------------------

2000-01-01


1 row selected.

12148 (SQLSTATE: HY000): julian date must be between 0 and 5373484

Cause

format element J 로 표현할 수 있는 유효한 값이 아니다.


gSQL> SELECT TO_DATE( ' 5373485 ', 'J' ) FROM DUAL;


ERR-HY000(12148): julian date must be between 0 and 5373484 :

SELECT TO_DATE( ' 5373485 ', 'J' ) FROM DUAL

*

ERROR at line 1:

Action

format element J 로 표현할 수 있는 유효한 값을 지정한다.

( BC 4714-11-24 ( 0 ) ~ 9999-12-31 ( 5373484 ) )


gSQL> SELECT TO_DATE( ' 5373484 ', 'J' ) FROM DUAL;


TO_DATE( ' 5373484 ', 'J' )

---------------------------

9999-12-31


1 row selected.

12149 (SQLSTATE: HY000): %s may only be specified once

Cause

동일한 hour format code 가 두 번 사용되었다.


gSQL> SELECT TO_TIME( '11:22:33', 'HH:MI:HH24' ) FROM DUAL;


ERR-HY000(12149): hour may only be specified once :

SELECT TO_TIME( '11:22:33', 'HH:MI:HH24' ) FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 올바른 형태의 format code 를 사용한다.


gSQL> SELECT TO_TIME( '11:22:33', 'HH:MI:SS' ) FROM DUAL;


TO_TIME( '11:22:33', 'HH:MI:SS' )

---------------------------------

11:22:33.000000


1 row selected.

12150 (SQLSTATE: HY000): Julian date precludes use of day of year

Cause

format element 로 J 와 DDD 는 혼재해서 사용할 수 없다.


gSQL> SELECT TO_DATE( '2456653 360', 'J DDD' ) FROM DUAL;


ERR-HY000(12150): Julian date precludes use of day of year :

SELECT TO_DATE( '2456653 360', 'J DDD' ) FROM DUAL

*

ERROR at line 1:

Action

format element 에서 J 또는 DDD 를 제거한다.


gSQL> SELECT TO_DATE( '2456653', 'J' ) FROM DUAL;


TO_DATE( '2456653', 'J' )

-------------------------

2013-12-26


1 row selected.


gSQL> SELECT TO_DATE( '360', 'DDD' ) FROM DUAL;


TO_DATE( '360', 'DDD' )

-----------------------

2024-12-25


1 row selected.

12151 (SQLSTATE: HY000): Not enough format info buffer

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12152 (SQLSTATE: HY000): hour must be between %d and %d

Cause

시간은 0 ~ 23 사이의 값이어야 한다.


gSQL> SELECT TIME '25:10:10.000000' FROM DUAL;


ERR-HY000(12152): hour must be between 0 and 23 :

SELECT TIME '25:10:10.000000' FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 0 ~ 23 사이의 값을 사용한다.


gSQL> SELECT TIME '23:10:10.000000' FROM DUAL;


TIME '23:10:10.000000'

----------------------

23:10:10.000000


1 row selected.

12153 (SQLSTATE: HY000): minute must be between 0 and 59

Cause

분은 0 ~ 59 사이의 값이어야 한다.


gSQL> SELECT TIME '10:60:00.000000' FROM DUAL;


ERR-HY000(12153): minute must be between 0 and 59 :

SELECT TIME '10:60:00.000000' FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 0 ~ 59 사이의 값을 사용한다.


gSQL> SELECT TIME '11:00:00.000000' FROM DUAL;


TIME '11:00:00.000000'

----------------------

11:00:00.000000


1 row selected.

12154 (SQLSTATE: HY000): second must be between 0 and 59

Cause

초는 0 ~ 59 사이의 값이어야 한다.


gSQL> SELECT TIME '10:00:60.000000' FROM DUAL;


ERR-HY000(12154): second must be between 0 and 59 :

SELECT TIME '10:00:60.000000' FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 0 ~ 59 사이의 값을 사용한다.


gSQL> SELECT TIME '10:01:00.000000' FROM DUAL;


TIME '10:01:00.000000'

----------------------

10:01:00.000000


1 row selected.

12155 (SQLSTATE: HY000): the fractional seconds must be between 0 and 999999

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12156 (SQLSTATE: HY000): time zone hour must be between -14 and 14

Cause

time zone 시간은 -14 ~ 14 사이의 값이어야 한다.


gSQL> SELECT TIME WITH TIME ZONE '12:23:34.567 +24:00' FROM DUAL;


ERR-HY000(12156): time zone hour must be between -14 and 14 :

SELECT TIME WITH TIME ZONE '12:23:34.567 +24:00' FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 -14 ~ 14 사이의 값을 사용한다.


gSQL> SELECT TIME WITH TIME ZONE '12:23:34.567 +09:00' FROM DUAL;


TIME WITH TIME ZONE '12:23:34.567 +09:00'

-----------------------------------------

12:23:34.567000 +09:00


1 row selected.

12157 (SQLSTATE: HY000): time zone minute must be between 0 and 59

Cause

time zone 분은 0 ~ 59 사이의 값이어야 한다.


gSQL> SELECT TIME WITH TIME ZONE '12:23:34.567 +09:99' FROM DUAL;


ERR-HY000(12157): time zone minute must be between 0 and 59 :

SELECT TIME WITH TIME ZONE '12:23:34.567 +09:99' FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 0 ~ 59 사이의 값을 사용한다.


gSQL> SELECT TIME WITH TIME ZONE '12:23:34.567 +09:00' FROM DUAL;


TIME WITH TIME ZONE '12:23:34.567 +09:00'

-----------------------------------------

12:23:34.567000 +09:00


1 row selected.

12158 (SQLSTATE: HY000): seconds in day must be between 0 and 86399

Cause

하루 중 초 값은 0 ~ 86399 이어야 한다.


gSQL> SELECT TO_TIME( '86400', 'SSSSS' ) FROM DUAL;


ERR-HY000(12158): seconds in day must be between 0 and 86399 :

SELECT TO_TIME( '86400', 'SSSSS' ) FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 0 ~ 86399 사이의 값을 사용한다.


gSQL> SELECT TO_TIME( '3600', 'SSSSS' ) FROM DUAL;


TO_TIME( '3600', 'SSSSS' )

--------------------------

01:00:00.000000


1 row selected.

12159 (SQLSTATE: HY000): AM/A.M. or PM/P.M. required

Cause

AM/A.M. or PM/P.M. format element 와 동일한 input string 이 아니다.


gSQL> SELECT TO_TIMESTAMP( '2014-07-10 10:00:00 A.M.', 'YYYY-MM-DD HH12:MI:SS AM' ) FROM DUAL;


ERR-HY000(12159): AM/A.M. or PM/P.M. required :

SELECT TO_TIMESTAMP( '2014-07-10 10:00:00 A.M.', 'YYYY-MM-DD HH12:MI:SS AM' ) FROM DUAL

*

ERROR at line 1:

Action

AM/A.M. or PM/P.M. format element 와 동일한 input string 을 기술한다.


gSQL> SELECT TO_TIMESTAMP( '2014-07-10 10:00:00 AM', 'YYYY-MM-DD HH12:MI:SS AM' ) FROM DUAL;


TO_TIMESTAMP( '2014-07-10 10:00:00 AM', 'YYYY-MM-DD HH12:MI:SS AM' )

--------------------------------------------------------------------

2014-07-10 10:00:00.000000


1 row selected.

12160 (SQLSTATE: HY000): HH24 precludes use of meridian indicator

Cause

HH24 와 자오선 (AM/PM)을 함께 사용할 수 없다.


gSQL> SELECT TO_TIME( '12:59:59.999999 AM', 'HH24:MI:SS.FF6 AM' ) FROM DUAL;


ERR-HY000(12160): HH24 precludes use of meridian indicator :

SELECT TO_TIME( '12:59:59.999999 AM', 'HH24:MI:SS.FF6 AM' ) FROM DUAL

*


ERROR at line 1:

Action

아래와 같이 자오선 (AM/PM)을 사용하지 않는다.


gSQL> SELECT TO_TIME( '12:59:59.999999', 'HH24:MI:SS.FF6' ) FROM DUAL


TO_TIME( '12:59:59.999999', 'HH24:MI:SS.FF6' )

----------------------------------------------

12:59:59.999999


1 row selected.

12161 (SQLSTATE: HY000): %s conflicts with use of %s

Cause

datetime format element 를 혼재해서 사용할 수 없다.

예를 들어, AM/PM 과 A.M./P.M. 는 혼재해서 사용할 수 없다.


gSQL> SELECT TO_TIMESTAMP( '2000-01-01 11:22:33 A.M. AM', 'YYYY-MM-DD HH:MI:SS A.M. AM' ) FROM DUAL;


ERR-HY000(12161): AM/PM conflicts with use of A.M./P.M. :

SELECT TO_TIMESTAMP( '2000-01-01 11:22:33 A.M. AM', 'YYYY-MM-DD HH:MI:SS A.M. AM' ) FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 유효한 datetime format 을 사용한다.


gSQL> SELECT TO_TIMESTAMP( '2000-01-01 11:22:33 A.M.', 'YYYY-MM-DD HH:MI:SS A.M.' ) FROM DUAL;


TO_TIMESTAMP( '2000-01-01 11:22:33 A.M.', 'YYYY-MM-DD HH:MI:SS A.M.' )

----------------------------------------------------------------------

2000-01-01 11:22:33.000000


1 row selected.

12162 (SQLSTATE: HY000): invalid XID string

Cause

in-doubt commit/rollback을 수행하려고 하는 target xa transaction의 xid가 valid 하지 않다.


gSQL> COMMIT FORCE '0.';


ERR-HY000(16259): the XID string is not valid:

COMMIT FORCE '0.'

*

ERROR at line 1:

ERR-HY000(12162): invalid XID string


gSQL> ROLLBACK FORCE '0.';


ERR-HY000(16259): the XID string is not valid:

ROLLBACK FORCE '0.'

*

ERROR at line 1:


ERR-HY000(12162): invalid XID string

Action

V$XA_TRANSACTION (V$XA_TRANSACTION) 을 조회하여 commit/rollback을 수행할 xa transaction을 확인한다.

12163 (SQLSTATE: HY000): date not valid for month specified

Cause

11월에 존재할 수 없는 날짜가 사용되었다


gSQL> SELECT TO_DATE( '2011-11-31' ) FROM DUAL;


ERR-HY000(12163): date not valid for month specified :

SELECT TO_DATE( '2011-11-31' ) FROM DUAL

*


ERROR at line 1:

Action

해당 월에 존재하는 날짜를 사용한다.


gSQL> SELECT TO_DATE( '2011-11-30' ) FROM DUAL;


TO_DATE( '2011-11-30' )

-----------------------

2011-11-30


1 row selected.

12164 (SQLSTATE: HY000): signed year precludes use of BC/AD

Cause

SYYYY 와 BC/AD 는 함께 사용할 수 없다.


gSQL> SELECT TO_DATE( '2013-09-24 AD', 'SYYYY-MM-DD AD' ) FROM DUAL;


ERR-HY000(12164): signed year precludes use of BC/AD :

SELECT TO_DATE( '2013-09-24 AD', 'SYYYY-MM-DD AD' ) FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 SYYYY 와 BC/AD 를 함께 사용하지 않는다.


gSQL> SELECT TO_DATE( '2013-09-24', 'SYYYY-MM-DD' ) FROM DUAL;


TO_DATE( '2013-09-24', 'SYYYY-MM-DD' )

--------------------------------------

2013-09-24


1 row selected.

12165 (SQLSTATE: HY000): number format value exceeds maximum length (%d)

Cause

지정할 수 있는 format 문자열의 최대 길이를 초과하였다.


gSQL> SELECT TO_CHAR( c1, 'FM99999999999999999999999999999999999999999999999999999999999999999999999' ) FROM t1;


ERR-HY000(12165): number format value exceeds maximum length (64) :

SELECT TO_CHAR( c1, 'FM99999999999999999999999999999999999999999999999999999999999999999999999' ) FROM t1

*

ERROR at line 1:

Action

format 문자열이 최대 길이를 초과하지 않도록 한다.


gSQL> SELECT TO_CHAR( c1, 'FM999999' ) FROM t1;


TO_CHAR( C1, 'FM999999' )

-------------------------

123

99999


2 rows selected.

12166 (SQLSTATE: HY000): invalid number format model

Cause

숫자로 변환할 수 없는 format 이 사용되었다.


gSQL> SELECT TO_NUMBER( '12345 ', '99999 ' ) FROM DUAL;


ERR-HY000(12166): invalid number format model :

SELECT TO_NUMBER( '12345 ', '99999 ' ) FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 공백을 제거한다.


gSQL> SELECT TO_NUMBER( '12345', '99999' ) FROM DUAL;


TO_NUMBER( '12345', '99999' )

-----------------------------

12345


1 row selected.

12167 (SQLSTATE: HY000): cannot use %s twice

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12168 (SQLSTATE: HY000): cannot use %s and %s together

Cause

일부 number format element 는 혼재해서 기술할 수 없다.


gSQL> SELECT TO_CHAR( -12, 'S999MI' ) FROM DUAL;


ERR-HY000(12168): cannot use MI and S PR together :

SELECT TO_CHAR( -12, 'S999MI' ) FROM DUAL

*

ERROR at line 1:

Action

number format element 를 독립적으로 기술한다.


gSQL> SELECT TO_CHAR( -12, 'S999' ) FROM DUAL;


TO_CHAR( -12, 'S999' )

----------------------

-12


1 row selected.


gSQL> SELECT TO_CHAR( -12, '999MI' ) FROM DUAL;


TO_CHAR( -12, '999MI' )

-----------------------

12-


1 row selected.

12169 (SQLSTATE: 22001): string data, right truncation

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

12170 (SQLSTATE: HY000): argument '%d' is out of range

Cause

INSTR() 함수의 인자값이 잘못되었다.


gSQL> SELECT INSTR( 'AB AB AB AB', 'AB', 1, -1 ) FROM t1;


ERR-HY000(12170): argument '-1' is out of range :

SELECT INSTR( 'AB AB AB AB', 'AB', 1, -1 ) FROM t1

*

ERROR at line 1:

Action

INSTR() 함수의 네 번째 인자는 1 이상의 정수를 사용해야 한다.


gSQL> SELECT INSTR( 'AB AB AB AB', 'AB', 1, 3 ) FROM t1;


INSTR( 'AB AB AB AB', 'AB', 1, 3 )

----------------------------------

7


1 row selected.

12171 (SQLSTATE: HY000): invalid datepart for data type %s

Cause

data type 에 적용할 수 없는 datepart(DAY) 를 사용하였다.


gSQL> SELECT DATEADD( DAY, 1, TIME'11:22:33.123456' ) FROM DUAL;


ERR-HY000(12171): invalid datepart for data type TIME WITHOUT TIME ZONE :

SELECT DATEADD( DAY, 1, TIME'11:22:33.123456' ) FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 data type 에 적용할 수 있는 datepart(HOUR) 를 사용한다.


gSQL> SELECT DATEADD( HOUR, 1, TIME'11:22:33.123456' ) FROM DUAL;


DATEADD( HOUR, 1, TIME'11:22:33.123456' )

-----------------------------------------

12:22:33.123456


1 row selected.

12172 (SQLSTATE: 42000): maximum number of arguments exceeded

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12173 (SQLSTATE: 42000): invalid char length units(%s): use OCTETS or CHARACTERS

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12174 (SQLSTATE: 22023): The argument of %s function is invalid

Cause

함수의 인자값이 잘못되었다.


gSQL> SELECT LOG(0) FROM dual;


ERR-22023(12174): The argument of LOG function is invalid :

SELECT LOG(0) FROM dual

*

ERROR at line 1:

Action

LOG() 함수의 인자는 양수여야 한다.


gSQL> SELECT LOG(100) FROM dual;


LOG(100)

--------

2


1 row selected.

12175 (SQLSTATE: 22023): The argument [%d] of %s function is invalid

Cause

함수의 인자값이 잘못되었다.


gSQL> SELECT LOG(0, 4) FROM dual;


ERR-22023(12175): The argument [1] of LOG function is invalid :

SELECT LOG(0, 4) FROM dual

*

ERROR at line 1:

Action

아래와 같이 함수의 유효한 인자값을 사용한다.


gSQL> SELECT LOG(2, 4) FROM dual;


LOG(2, 4)

---------

2


1 row selected.

12176 (SQLSTATE: HY000): internal error, in a function %s

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12177 (SQLSTATE: HY000): not supported data type ( %s )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12178 (SQLSTATE: HY000): data type specifier is out of range ( type : %d, range : %d to %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12179 (SQLSTATE: HY000): precision specifier is out of range( type : %s, precision : %d, range : %d to %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12180 (SQLSTATE: HY000): leading precision specifier is out of range( type : %s, precision : %d, range : %d to %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12181 (SQLSTATE: HY000): scale specifier is out of range( type : %s, scale : %d, range : %d to %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12182 (SQLSTATE: HY000): fractional second precision specifier is out of range( type : %s, precision : %d, range : %d to %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12183 (SQLSTATE: HY000): character length unit specifier is out of range( type : %s, character length unit : %d, range : %d to %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12184 (SQLSTATE: HY000): interval indicator specifier is out of range( type : %s, indicator : %d, range : %d to %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

12185 (SQLSTATE: 42000): %s and %s cannot be matched

Cause

함께 사용할 수 없는 type 을 사용하였다.


gSQL>

SELECT 'A' FROM dual

UNION ALL

SELECT 1 FROM dual

;


ERR-42000(12185): CHAR and NUMBER cannot be matched :


SELECT 'A' FROM dual

*

ERROR at line 1:

Action

아래와 같이 함께 사용할 수 있는 type 을 사용한다.


gSQL>

SELECT 'A' FROM dual

UNION ALL

SELECT '1' FROM dual

;


'A'

---

A

1


2 rows selected.

12186 (SQLSTATE: 0A000): not supported function %s

Cause

HEX() 함수의 인자로 숫자를 사용할 수 없다.


gSQL> SELECT HEX( 123 ) FROM dual;


ERR-0A000(12186): not supported function argument numeric types : Use to_char(num, 'XXXX') instead of hex(num) :

SELECT HEX( 123 ) FROM dual

*

ERROR at line 1:

Action

TO_CHAR( 숫자, 'XXXX' ) 함수를 사용한다.


gSQL> SELECT TO_CHAR( 123, 'XXXX' ) FROM dual;


TO_CHAR( 123, 'XXXX' )

----------------------

7B


1 row selected.

12187 (SQLSTATE: 39000): failed to open customer built-in function library (%s)

Cause

--# result: failed to open library

SELECT MOJ_MATCH_FP( X'111111', X'AABBCCDDEEFF' ) FROM DUAL;


ERR-39000(12187): failed to open customer built-in function library ($GOLDILOCKS_HOME/lib/libMojMatchFP.so) :

SELECT MOJ_MATCH_FP( X'111111', X'AABBCCDDEEFF' ) FROM DUAL

*

ERROR at line 1:

Action

특정 library 가 존재해야 수행할 수 있는 함수이다.

12188 (SQLSTATE: 42000): window frame offset must not be null

Cause

window frame offset 으로 NULL 값을 사용할 수 없다.


gSQL>

SELECT c1

, MIN(c1) OVER ( ORDER BY c1

RANGE NULL PRECEDING ) min_value

FROM t1;


ERR-42000(12188): window frame offset must not be null :

RANGE NULL PRECEDING )

*

ERROR at line 3:

Action

아래와 같이 RANGE 2 PRECEDING 과 같이 숫자를 사용한다.


gSQL>


SELECT c1

, MIN(c1) OVER ( ORDER BY c1

RANGE 2 PRECEDING ) min_value

FROM t1;


C1 MIN_VALUE

-----------

1 1

2 1

3 1

4 2

5 3


5 rows selected.

12189 (SQLSTATE: 42000): window frame offset must not be negative

Cause

window frame offset 으로 음수를 사용할 수 없다.


gSQL>

SELECT c1

, MIN(c1) OVER ( ORDER BY c1

RANGE -2 PRECEDING ) min_value

FROM t1;


ERR-42000(12189): window frame offset must not be negative :

RANGE -2 PRECEDING ) min_value

*

ERROR at line 3:

Action

아래와 같이 RANGE 2 PRECEDING 과 같이 양수를 사용한다.


gSQL>

SELECT c1

, MIN(c1) OVER ( ORDER BY c1

RANGE 2 PRECEDING ) min_value

FROM t1;


C1 MIN_VALUE

------------

1 1

2 1

3 1

4 2

5 3


5 rows selected.

자원 관리 관련 에러

13000 (SQLSTATE: HY000): Failed to initialize kernel layer

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

13001 (SQLSTATE: HY000): kernel layer is not initialized yet

Cause

데이터베이스 초기화가 완료되지 않은 상태이다.

Action

완전히 초기화한 후에 작업을 다시 시도한다.

13002 (SQLSTATE: HY000): Invalid argument

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13003 (SQLSTATE: HY000): Invalid shared memory segment type

Cause

공유 메모리 타입을 잘못 지정했다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13004 (SQLSTATE: HY000): static shared memory segment is corrupted

Cause

공유 메모리 세그먼트가 손상되었다.

Action

정상적으로 종료한 후에 데이터베이스를 다시 시작한다.

13005 (SQLSTATE: HY000): maximum number of shared memory segment num exceeded

Cause

공유 메모리 세그먼트를 너무 많이 생성했다.

Action

시스템 공유 메모리 한도를 늘린다.

13006 (SQLSTATE: HY000): kernel layer internal error - %s

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13007 (SQLSTATE: 42000): identifier is too long

Cause

서버 내부에서 제어하는 에러로써 클라이언트에게 노출되지 않는다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13008 (SQLSTATE: HY000): comment is too long

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13009 (SQLSTATE: 42S02): fixed table does not exist

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

13010 (SQLSTATE: HY000): Insufficient static area

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

13011 (SQLSTATE: HY000): Unable to extend memory: [MAX: %ld, TOTAL: %ld, ALLOC: %ld] DESC: %s

Cause

메모리 할당 한도를 초과하였다.


gSQL>

SELECT REGEXP_COUNT( RPAD( CAST( 'A' AS LONG VARCHAR ), 10000000, 'A' ) || 'B', 'A+B' )

FROM dual;


ERR-HY000(13011): Unable to extend memory: [MAX: 104857600, TOTAL: 100973408, USED: 93656504, ALLOC: 8388824, REQUESTOR: 81] DESC: private static area :

SELECT REGEXP_COUNT( RPAD( CAST( 'A' AS LONG VARCHAR ), 10000000, 'A' ) || 'B', 'A+B' )

*

ERROR at line 1:

Action

해당 질의를 수정하거나 메모리 관련 프로퍼티 값을 늘린다.

13012 (SQLSTATE: HY000): too many files are opened

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

13013 (SQLSTATE: HY000): Property(%s) does not exist

Cause

존재하지 않는 프로퍼티 이름을 사용하였다.


gSQL> ALTER SESSION SET inavalid_property = ON;

ERR-HY000(13013): Property(INAVALID_PROPERTY) does not exist :

ALTER SESSION SET inavalid_property = ON

*

ERROR at line 1:

Action

프로퍼티 이름을 정확하게 기술한다.


gSQL> ALTER SESSION SET HINT_ERROR = ON;

Session altered.

13014 (SQLSTATE: HY000): Unable to change property at this startup phase.(%s)

Cause

해당 property는 현재 startup 단계에서 변경할 수 없다.


gSQL> ALTER SYSTEM SET CONTROL_FILE_COUNT = 2 SCOPE = BOTH;


ERR-HY000(13014): Unable to change property at this startup phase.(CONTROL_FILE_COUNT)

Action

해당 property 를 변경할 수 있는 startup 단계를 확인한다.

13015 (SQLSTATE: 0U000): Unable to change read-only property.(%s)

Cause

읽기 전용 프로퍼티는 변경할 수 없다.


gSQL> ALTER SESSION SET CHARACTER_SET = 'UTF8';


ERR-0U000(13015): Unable to change permanent property.(CHARACTER_SET)

Action

해당 프로퍼티가 쓰기 가능한지 확인한다.

13016 (SQLSTATE: 22000): Invalid property value.(%s)

Cause

잘못된 프로퍼티 값을 사용하였다.


gSQL> ALTER SESSION SET BLOCK_READ_COUNT = -1;


ERR-22000(13016): Invalid property value.(BLOCK_READ_COUNT) : (check min/max value)

Action

유효한 프로퍼티 값을 사용한다.


gSQL> ALTER SESSION SET BLOCK_READ_COUNT = 20;

Session altered.

13017 (SQLSTATE: 0U000): Specified property cannot be modified.(%s)

Cause

프로퍼티를 변경하는 구문이 잘못되었다.


gSQL> ALTER SESSION SET TRACE_LOGIN = OFF;


ERR-0U000(13017): Specified property cannot be modified using ALTER SESSION.(TRACE_LOGIN)

Action

프로퍼티를 변경할 수 있는 구문을 확인한다.


gSQL> ALTER SYSTEM SET TRACE_LOGIN = OFF;

System altered.

13018 (SQLSTATE: 22000): Specified property cannot be modified with this SCOPE option.(%s)

Cause

잘못된 SCOPE 매개변수를 사용하였다.

Action

프로퍼티에 올바른 SCOPE 매개변수 (MEMORY/SPFILE/BOTH)를 사용한다.

13019 (SQLSTATE: 22000): Specified property cannot be modified.(%s)

Cause

프로퍼티의 ALTER SYSTEM 변경 속성을 지정하지 않았다.


gSQL> ALTER SYSTEM SET BLOCK_READ_COUNT = 20;

ERR-22000(13019): Invalid property modify mode.(BLOCK_READ_COUNT)

Action

프로퍼티의 ALTER SYSTEM 변경 속성을 확인한다.


gSQL> ALTER SYSTEM SET BLOCK_READ_COUNT = 20 DEFERRED;

System altered.

13020 (SQLSTATE: 22000): Invalid GOLDILOCKS_DATA Directory

Cause

GOLDILOCKS_DATA 환경 변수가 유효하지 않다.

Action

GOLDILOCKS_DATA 환경 변수를 확인한다.

13021 (SQLSTATE: 22000): Invalid SID

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

13022 (SQLSTATE: HY004): Invalid property data type

Cause

프로퍼티 값의 data type 이 잘못되었다.


gSQL> ALTER SESSION SET HINT_ERROR = 100;

ERR-HY004(13022): Invalid property data type :

ALTER SESSION SET HINT_ERROR = 100

*

ERROR at line 1:

Action

프로퍼티에 부합하는 data type 값을 사용한다.


gSQL> ALTER SESSION SET HINT_ERROR = ON;

Session altered.

13023 (SQLSTATE: 22000): Invalid Property ID

Cause

서버 내부에서 제어하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13024 (SQLSTATE: HY000): exceeded maximum number of processes

Cause

동시 접속 가능한 process 개수를 초과하였다.

Action

PROCESS_MAX_COUNT 프로퍼티 값을 변경한다.

13025 (SQLSTATE: HY000): File does not exist (%s)

Cause

Database property file 이 존재하지 않는다.

Action

Database property file 을 확인한다.

13026 (SQLSTATE: HY000): Property file already exists (%s)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

13027 (SQLSTATE: HY000): File Process Error

Cause

Database property file 이 손상되었다.

Action

Database property file 을 확인한다.

13028 (SQLSTATE: HY000): Property is not ReadOnly

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다

13029 (SQLSTATE: HY000): Read-only property file already exists

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다

13030 (SQLSTATE: HY000): Property File Parsing Error Line (%d)

Cause

Database property file에 있는 특정 line 의 property 정보를 해석할 수 없다.

Action

해당 line 에 문법 오류가 있는지 확인한다.

13031 (SQLSTATE: 0A000): Unsupported return type is used

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다

13032 (SQLSTATE: 0A000): Function does not exist

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다

13033 (SQLSTATE: HY000): It can not make range

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다

13034 (SQLSTATE: 08S01): Service is not available

Cause

다음에 나열된 서비스들을 사용할 수 없는 상황에서 발생한다.

  • session: session 생성 가능 여부

  • transaction: transaction 생성 가능 여부

  • cluster: 원격으로 protocol 을 전송할 수 있는지 여부

이러한 에러는 서버의 startup 이나 shutdown 과정에서 서비스 접근을 차단한 상태로 진행되기 때문에 빈번하게 발생할 수 있다.

Action

Startup 이 완료된 후에 다시 시도한다.

13035 (SQLSTATE: HY000): Specified Breakpoint name is not registered yet

Cause

서버 내부에서 제어하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다

13036 (SQLSTATE: HY000): General abort error of Breakpoint

Cause

서버 내부에서 제어하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다

13037 (SQLSTATE: HY000): Invalid Session Name

Cause

서버 내부에서 제어하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다

13038 (SQLSTATE: HYT00): Exceeded maximum idle time

Cause

세션이 대기 상태에서 지정된 시간을 초과했다.

Action

IDLE_TIMEOUT 프로퍼티를 변경한다.

13039 (SQLSTATE: HYT00): Exceeded maximum query time

Cause

질의 수행 시간이 초과되었다.

Action

질의를 수정하거나 QUERY_TIMEOUT 프로퍼티를 변경한다.

13040 (SQLSTATE: 08S01): Communication link failure

Cause

통신 연결이 끊어졌다.

Action

연결 설정을 점검하고 통신 연결을 다시 시도한다.

13041 (SQLSTATE: RD000): User session ID does not exist

Cause

존재하지 않는 session ID 값을 사용하였다.


gSQL> ALTER SYSTEM DISCONNECT SESSION 100000000, 100000000;

ERR-RD000(13041): User session ID does not exist

Action

유효한 session ID 인지 확인한 후에 다시 시도한다.


gSQL> SELECT session_id, serial_no FROM v$session;

13042 (SQLSTATE: 08004): Server rejected the connection

Cause

이 에러는 DA 모드에서 발생할 수 있으며, signal 발생으로 인해 process 가 종료 중인 상태에서 새로운 session 을 생성하려고 할 때 발생한다.

Action

클라이언트를 재구동 한 후 다시 시도한다.

13043 (SQLSTATE: HY008): operation canceled

Cause

질의 수행 도중에 사용자가 Ctrl-C 등을 사용하여 강제로 cancel 하였다.


gSQL> SELECT COUNT(*) FROM dba_tab_cols A, dba_tab_cols B, dba_tab_cols C, dba_tab_cols D, dba_tab_cols E;


C-c

ERR-HY008(13043): operation canceled

Action

정상적인 동작이다.

13044 (SQLSTATE: RD000): invalid process identifier

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13045 (SQLSTATE: 08004): mismatched binary version - server(%s.%d.%d.%d.%s), client(%s.%d.%d.%d.%s)

Cause

Server 와 client 가 호환되지 않는 버전이다.

Action

Client 를 server 와 호환되는 버전으로 upgrade 한다.

13046 (SQLSTATE: HY000): session cannot be killed now

Cause

이 에러는 아직 종료되지 않은 프로세스의 session 을 정리하려고 할 때 발생한다.


gSQL> select id, serial from x$session where id = session_id();


ID SERIAL

-- ------

4 1


1 row selected.


gSQL> alter system kill session 4, 1;


ERR-HY000(13046): session cannot be killed now : process still alive

Action

ALTER SYSTEM KILL SESSION은 프로세스가 이미 종료된 세션에 대해서만 수행할 수 있다.

13047 (SQLSTATE: 22003): data is outside the range of the data type to which the number is being converted

Cause

Aggregation 결과가 data type 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 NATIVE_BIGINT );

gSQL> INSERT INTO t1 VALUES ( 9223372036854775807 );

gSQL> INSERT INTO t1 VALUES ( 9223372036854775807 );


gSQL> SELECT SUM(c1) FROM t1;

ERR-22003(13047): data is outside the range of the data type to which the number is being converted

Action

Column의 data type을 NUMBER 등과 같이 더 넓은 범위를 지원하는 타입으로 변경한다.


gSQL> CREATE TABLE t1 ( c1 NUMBER );

gSQL> INSERT INTO t1 VALUES ( 9223372036854775807 );

gSQL> INSERT INTO t1 VALUES ( 9223372036854775807 );

gSQL> SELECT SUM(c1) FROM t1;

SUM(C1)

--------------------

18446744073709551614

1 row selected.

13048 (SQLSTATE: 22015): one or more fields of data value were truncated during conversion

Cause

Aggregation 결과가 유효값 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 INTERVAL YEAR( 6 ) TO MONTH );

gSQL> INSERT INTO t1 VALUES ( '999999-11' );

gSQL> INSERT INTO t1 VALUES ( '999999-11' );

gSQL> SELECT SUM(c1) FROM t1;


ERR-22015(13048): one or more fields of data value were truncated during conversion

Action

Aggregation 결과가 유효값의 범위를 벗어나지 않는 data 를 사용한다.


gSQL> CREATE TABLE t1 ( c1 INTERVAL YEAR( 6 ) TO MONTH );

gSQL> INSERT INTO t1 VALUES ( '3-11' );

gSQL> INSERT INTO t1 VALUES ( '5-11' );

gSQL> SELECT SUM(c1) FROM t1;


SUM(C1)

----------

+000009-10


1 row selected.

13049 (SQLSTATE: HYC00): not implemented feature, in a function

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다

13050 (SQLSTATE: HY000): insufficient plan cache memory

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다

13051 (SQLSTATE: HY000): Unable to attache the shared memory segment. File does not exist(%s)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다

13052 (SQLSTATE: 42000): invalid dump option string: %s

Cause

D$ 테이블 기능은 고객에게 제공되지 않는다.

Action

D$ 테이블 기능은 고객에게 제공되지 않는다.

13053 (SQLSTATE: 42000): dump object modified by concurrent statement

Cause

D$ 테이블 기능은 고객에게 제공되지 않는다.

Action

D$ 테이블 기능은 고객에게 제공되지 않는다.

13054 (SQLSTATE: 42000): invalid numa map (%s)

Cause

이 에러는 NUMA_MAP 프로퍼티 값이 유효하지 않은 경우에 발생한다.

다음과 같이 프로퍼티를 설정한 상태에서 startup을 수행하면 이 에러가 발생한다.


NUMA = YES

NUMA_MAP = '0:d'


gSQL> \startup


ERR-42000(13054): invalid numa map (d)

ERR-HY000(11074): given string is not number

Action

NUMA_MAP 프로퍼티를 유효한 값으로 설정한 후에 다시 시도한다.

프로퍼티 설정 방법은 NUMA_MAP을 참조한다.

13055 (SQLSTATE: HY000): AS ADMIN must be executed in dedicated session

Cause

Shared session 으로 ADMIN 접속을 시도하였다.

Action

ADMIN 접속은 dedicated session 에서만 허용된다.

13056 (SQLSTATE: HY000): unable to create file '%s' - already in use

Cause

이 에러는 서버에 이미 등록된 파일을 사용하여 파일을 생성하려는 경우에 발생한다.

또한 두 개 이상의 session 에서 동시에 파일 관련 DDL 을 수행하는 경우에도 발생할 수 있다.

Action

파일 이름을 변경한 후에 다시 시도한다.

13057 (SQLSTATE: HY000): Property(%s) is desupported

Cause

해당 프로퍼티는 사용되지 않는다.


gSQL> ALTER SYSTEM SET CHECK_DEDICATE_SOCKET = 10001;

ERR-HY000(13057): Property(CHECK_DEDICATE_SOCKET) is deprecated :

ALTER SYSTEM SET CHECK_DEDICATE_SOCKET = 10001

*

ERROR at line 1:

Action

현재 버전에서는 해당 프로퍼티가 아무런 영향을 미치지 않는다.

13058 (SQLSTATE: HY000): memory alloc size is too large: [MAX: %ld, ALLOC: %ld] DESC: (%d)%s

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13059 (SQLSTATE: HYT00): Exceeded maximum packet allocation time

Cause

이 에러는 cluster database 환경에서 발생할 수 있으며, 정해진 시간 내에 원격 전송을 위한 패킷 메모리를 할당받지 못한 경우에 발생한다.

Action

CLUSTER_PACKET_ALLOCATION_TIMEOUT 프로퍼티 값을 늘린 후에 재시도 한다.

13060 (SQLSTATE: HY000): Failed to validate the license key

Cause

라이센스 검증에 실패하였다.

Action

라이센스 파일과 라이센스 키가 정확한지 확인한다.

13061 (SQLSTATE: HY008): child operation canceled

Cause

서버 내부에서 제어하는 에러로써 클라이언트에게 노출되지 않는다.

Action

해당 에러 발생 시 고객센터에 문의한다.

13062 (SQLSTATE: 42000): the statement is disallowed

Cause

허용되지 않는 statement가 발생했다. (서버 내부에서 사용하는 에러 코드이다.)

Action

해당 에러 발생 시 고객센터에 문의한다.

13063 (SQLSTATE: 42000): output value too large (maximum: %ld %s)

Cause

JSON 결과가 출력 데이터 타입의 최대 크기를 초과하였다. (기본값 : VARCHAR(4000))


CREATE TABLE t1 ( c1 VARCHAR(1500)

, c2 VARCHAR(1500)

, c3 VARCHAR(1500) );


INSERT INTO t1 VALUES ( RPAD( 'A', 1500, '_' )

, RPAD( 'B', 1500, '_' )

, RPAD( 'C', 1500, '_' ) );


gSQL> SELECT JSON_OBJECT( 'key1' VALUE c1

, 'key2' VALUE c2

, 'key3' VALUE c3 ) AS json_string

FROM t1;


ERR-42000(13063): output value too large (maximum: 4000 OCTETS) :

SELECT JSON_OBJECT( 'key1' VALUE c1

*

ERROR at line 1:

Action

RETURNING LONG VARCHAR 옵션을 사용한다.


--# result: {"key1":"A___....____","key2":"B___....____","key3":"C___....____"}

gSQL> SELECT JSON_OBJECT( 'key1' VALUE c1

, 'key2' VALUE c2

, 'key3' VALUE c3

RETURNING LONG VARCHAR ) AS json_string

FROM t1;


JSON_STRING

----------------------------------------------------------------------------------------------------

{"key1":"A__________________________________________________________________

...

...

중략

...

...

_____________________________"}


1 row selected.

13064 (SQLSTATE: 42000): name input to JSON generation function cannot be null

Cause

JSON_OBJECT 계열 함수의 JSON name에 null 값이 존재한다.


CREATE TABLE test ( k_col VARCHAR(20), v_col INTEGER );

INSERT INTO test VALUES ( null, 1 );


gSQL> SELECT JSON_OBJECT( k_col VALUE v_col ) AS result

FROM test;


ERR-42000(13064): name input to JSON generation function cannot be null :

SELECT JSON_OBJECT( k_col VALUE v_col ) AS result

*

ERROR at line 1:

Action

JSON name에 null이 아닌, SQL 문자열로 표현 가능한 expression을 사용한다.


gSQL> SELECT JSON_OBJECT( NVL( k_col, 'N/A' ) VALUE v_col ) AS result

FROM test;


RESULT

---------

{"N/A":1}

13065 (SQLSTATE: 42000): duplicate key names '%s' in JSON object

Cause

Key name 중복이 허용되지 않는 JSON object에 중복된 key name이 존재한다.


CREATE TABLE test ( k_col VARCHAR(20), v_col INTEGER );

INSERT INTO test VALUES ( 'k1', 1 );

INSERT INTO test VALUES ( 'k2', 1 );

INSERT INTO test VALUES ( 'k1', 2 );


gSQL> SELECT JSON_OBJECTAGG( k_col VALUE v_col WITH UNIQUE KEYS ) AS result

FROM test;


ERR-42000(13065): duplicate key names 'k1' in JSON object

Action

JSON key uniqueness constraint 옵션을 WITHOUT UNIQUE KEYS으로 설정하거나, 중복된 key name을 가진 row를 제거한다.


-------------------------------------------------------

--# WITHOUT UNIQUE KEYS 사용

gSQL> SELECT JSON_OBJECTAGG( k_col VALUE v_col WITHOUT UNIQUE KEYS ) AS result

FROM test;


RESULT

----------------------

{"k1":1,"k2":1,"k1":2}


1 row selected.


-------------------------------------------------------

--# 중복된 key name을 가진 row 제거

gSQL> DELETE FROM test WHERE k_col = 'k1' AND v_col = 2;


1 row deleted.


gSQL> SELECT JSON_OBJECTAGG( k_col VALUE v_col WITH UNIQUE KEYS ) AS result

FROM test;


RESULT

---------------

{"k1":1,"k2":1}


1 row selected.

저장 관리 관련 에러

14000 (SQLSTATE: HY000): Failed to initialize storage manager layer

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14001 (SQLSTATE: HY000): storage manager layer is not initialized yet

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14002 (SQLSTATE: HY000): Tablespace(%d) exceed datafile limit

Cause

하나의 tablespace에 추가할 수 있는 datafile 개수를 초과한 경우에 발생한다.

Action

GOLDILOCKS 제약사항에 의해 datafile은 최대 개수(1024)를 초과하여 생성할 수 없다.

14003 (SQLSTATE: HY000): Tablespace(%d) is full

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14004 (SQLSTATE: HY000): Tablespace(%d) is already dropped

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14005 (SQLSTATE: HY000): System Tablespace exists

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14006 (SQLSTATE: 42000): Table is mutating, trigger/function may not see it

Cause

데이터베이스 함수가 테이블을 변경하고 있는 동안 동일한 테이블에 대해 다른 작업을 수행하려고 할 때 발생한다.


CREATE OR REPLACE FUNCTION FUNC1( A1 INTEGER, A2 VARCHAR(10) )

RETURN INTEGER

IS

BEGIN

INSERT INTO T1 VALUES( A1, A2 );

RETURN A1;

END;


INSERT INTO T1 VALUES( FUNC1( 1, 'ZZZ' ), 'ZZZ' );

ERR-42000(14006): Table is mutating, trigger/function may not see it :

INSERT INTO T1 VALUES( A1, A2 );

*

ERROR at line 5:

ERROR at FUNCTION("FUNC1")

Action

하나의 statement 내에서 동일한 테이블을 동시에 수정하지 않게 쿼리문을 수정한다.

14007 (SQLSTATE: RD000): deadlock detected

Cause

리소스를 기다리는 동안 트랜잭션이 서로 교착 상태에 빠졌을 때 발생하는 에러이다.

Action

트랜잭션 내 객체의 잠금 순서를 보장할 수 있도록 트랜잭션을 수정한다.

14008 (SQLSTATE: 24000): fetch out of sequence

Cause

fetch 도중 cursor가 닫혀서 발생하는 에러이다.

Action

fetch 도중에 cursor를 닫히게 만드는 구문을 실행하지 않는다.

14009 (SQLSTATE: 2200H): sequence generator limit exceeded

Cause

sequence의 범위를 벗어난 경우 발생하는 에러이다.

Action

ALTER SEQUENCE 구문을 이용하여 sequence의 MINVALUE와 MAXVALUE 값을 수정하거나 NO CYCLE 옵션에서 CYCLE 옵션으로 변경한다.

14010 (SQLSTATE: 22023): MAXVALUE cannot be made to be less than the current value

Cause

현재 sequence 값보다 작은 값으로 MAXVALUE를 변경하려고 할 때 발생하는 에러이다.

Action

현재 sequence 값보다 같거나 큰 값으로 MAXVALUE를 변경한다.

14011 (SQLSTATE: 22023): MINVALUE cannot be made to exceed the current value

Cause

현재 sequence 값보다 큰 값으로 MINVALUE를 변경하려고 할 때 발생하는 에러이다.

Action

현재 sequence 값보다 같거나 작은 값으로 MINVALUE를 변경한다.

14012 (SQLSTATE: 22023): cannot be made to be less than the current value

Cause

서버 내부에서 제어하는 에러로써 클라이언트에게 노출되지 않는다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14013 (SQLSTATE: 22023): cannot be made to exceed the current value

Cause

서버 내부에서 제어하는 에러로써 클라이언트에게 노출되지 않는다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14014 (SQLSTATE: HY000): Fail to extend datafile(%u) of tablespace(%u) in Transaction(%ld)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14015 (SQLSTATE: HY000): there is no extendible datafile in tablespace '%s'

Cause

tablespace가 가득 차면 auto extend인 datafile을 찾아서 datafile을 extend 하는데 datafile이 maxsize까지 도달하여 더 이상 extend 할 수 없거나, auto extend인 datafile이 없는 경우 발생하는 에러이다.

Action

아래와 같이 datafile 또는 memory를 더 추가하거나 auto extend 옵션을 활성화시켜 해결할 수 있다. auto extend는 datafile에만 사용할 수 있다.


------------------------------------------------

--# datafile 추가


gSQL> ALTER TABLESPACE TBS_NAME ADD DATAFILE 'TBS_NAME.dbf' SIZE 10M;


Tablespace altered.

------------------------------------------------

--# memory 추가


gSQL> ALTER TABLESPACE TEST_TEMP_TBS ADD MEMORY 'TEST_TEMP_TBS' SIZE 10M;


Tablespace altered.

------------------------------------------------

--# AUTOEXTEND 활성화


gSQL> ALTER DATABASE DATAFILE 'TBS_NAME.dbf' AUTOEXTEND ON;


Tablespace altered.

14016 (SQLSTATE: 23001): some rows of base table violate uniqueness of index

Cause

unique index를 생성할 때 unique 한 값을 key로 설정하지 않았을 때 발생하는 에러이다.


CREATE TABLE T1 (C1 INTEGER, C2 INTEGER);


INSERT INTO T1 VALUES(1,1);


INSERT INTO T1 VALUES(1,2);


INSERT INTO T1 VALUES(1,3);


gSQL> CREATE UNIQUE INDEX IDX_T1_C1 ON T1(C1);


ERR-23001(14016): some rows of base table violate uniqueness of index

Action

unique 한 값을 key로 설정한다.

14017 (SQLSTATE: 42000): invalid operation on fixed table or dump table

Cause

서버 내부에서 제어하는 에러로써 클라이언트에게 노출되지 않는다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14018 (SQLSTATE: 42000): the operation is disallowed before %s startup phase

Cause

서버 내부에서 제어하는 에러로써 클라이언트에게 노출되지 않는다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14019 (SQLSTATE: HY000): log stream number string is invalid

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14020 (SQLSTATE: HY000): log stream %d already exists

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14021 (SQLSTATE: HY000): log group number string is invalid

Cause

범위를 벗어나거나 존재하지 않는 log group number를 입력한 경우 발생하는 에러이다.


gSQL> ALTER DATABASE ADD LOGFILE GROUP 2147483648 ('abc.log') SIZE 20M;


ERR-HY000(14021): log group number string is invalid :

ALTER DATABASE ADD LOGFILE GROUP 2147483648 ('abc.log') SIZE 20M

*

ERROR at line 1:


gSQL> ALTER DATABASE DROP LOGFILE GROUP 10;


ERR-HY000(14021): log group number string is invalid :

ALTER DATABASE DROP LOGFILE GROUP 10

*

ERROR at line 1:

Action

유효한 log group number를 사용하여 쿼리문을 작성한다.

14022 (SQLSTATE: HY000): log group state must be INACTIVE or UNUSED

Cause

drop 하려는 log group의 state가 inactive 또는 unused가 아닐 경우 발생하는 에러이다.


gSQL> ALTER DATABASE DROP LOGFILE GROUP 0;


ERR-HY000(14022): log group(0) state must be INACTIVE or UNUSED

Action

inactive 또는 unused 상태의 log group만 drop할 수 있다.


gSQL> SELECT GROUP_ID, STATE FROM X$LOG_GROUP;


GROUP_ID STATE

-------- -------

0 CURRENT

10 UNUSED

2 UNUSED

3 UNUSED


4 rows selected.


gSQL> ALTER DATABASE DROP LOGFILE GROUP 10;


Database altered.

14023 (SQLSTATE: HY000): log group %d already exists

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14024 (SQLSTATE: HY000): log member %s already exists

Cause

추가하려는 log member 파일이 이미 존재할 때 발생하는 에러이다.

Action

존재하지 않는 파일 이름으로 log member를 추가한다.

14025 (SQLSTATE: 42000): invalid dump option string: %s

Cause

D$ 테이블 기능은 고객에게 제공되지 않는다.

Action

D$ 테이블 기능은 고객에게 제공되지 않는다.

14026 (SQLSTATE: HYT00): resource busy or timeout expired

Cause

동일한 객체에 대해 동시에 DDL이 발생했을 때 lock 대기 하는데, DDL_LOCK_TIMEOUT을 초과할 경우 발생하는 에러이다.


Transaction A :

gSQL> ALTER TABLE t1 ADD COLUMN ( new_column NUMBER );


Transaction B :

gSQL> TRUNCATE TABLE t1;


ERR-HYT00(14026): resource busy or timeout expired

Action

DDL_LOCK_TIMEOUT을 늘려서 시도하거나 해당 객체에 대한 lock이 풀렸을 때 다시 시도한다.


gSQL> ALTER SYSTEM SET DDL_LOCK_TIMEOUT = 10;

System altered.

14027 (SQLSTATE: HY000): datafile(%d,%d) is already dropped

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14028 (SQLSTATE: HY000): file '%s' already exists

Cause

Log file을 추가할 때 이미 존재하는 파일명을 입력한 경우 발생하는 에러이다.


gSQL> ALTER DATABASE ADD LOGFILE MEMBER 'test.log' TO GROUP 10;


ERR-42000(16130): file already exists :

ALTER DATABASE ADD LOGFILE MEMBER 'test.log' TO GROUP 10

*

ERROR at line 1:

Action

중복되지 않는 이름의 log file을 추가한다.

14029 (SQLSTATE: HY000): sequence is not yet defined

Cause

세션에서 한 번도 NEXTVAL(seq_name)을 사용하지 않고 CURRVAL을 사용하여 현재 sequence 값을 얻으려고 하는 경우에 발생하는 에러이다.


gSQL> SELECT SEQ.CURRVAL FROM T1;


ERR-HY000(14029): sequence is not yet defined

Action

NEXTVAL(seq_name)을 한 번은 사용한 다음에 CURRVAL을 사용할 수 있다.


gSQL> CREATE SEQUENCE seq;


Sequence created.


gSQL> COMMIT;


Commit complete.


gSQL> SELECT seq.NEXTVAL FROM dual;


SEQ.NEXTVAL

-----------

1


1 row selected.

14030 (SQLSTATE: RD000): maximum index depth(%d) exceeded

Cause

최대 index depth를 초과하는 경우 발생하는 에러이다.

Action

N/A

14031 (SQLSTATE: HY000): maximum key length(%d) exceeds

Cause

index key의 크기가 최대 크기 (1200)를 넘어갈 경우 발생하는 에러이다.

Action

index key의 크기는 최대 크기 (1200)를 넘을 수 없다.

14032 (SQLSTATE: 42000): can't serialize access for this transaction

Cause

두 개 이상의 트랜잭션이 동시에 같은 데이터를 변경하려고 할 때 발생하는 에러이다.

Action

다른 트랜잭션의 작업이 끝난 뒤 해당 작업을 재시도한다.

14033 (SQLSTATE: 42000): unable to checkpoint in cds mode

Cause

CDS 모드에서 checkpoint를 수행하려 할 때 발생한다.

Action

CDS 모드에서는 checkpoint를 수행할 수 없다.

14034 (SQLSTATE: 42000): unable to recover database in cds mode

Cause

TDS 모드가 아닌 다른 모드에서 recovery를 수행할 때 발생하는 에러이다.

Action

CDS 모드는 이전에 TDS 모드로 운영되었다면 TDS 운영 당시 정상적으로 shutdown 된 경우에만 recovery가 가능하다.

14035 (SQLSTATE: 42000): some rows of base table violate not null constraint

Cause

테이블에 primary key 제약조건을 추가하려 할 때 해당 column에 null 값이 존재하면 발생하는 에러이다.

Action

NULL 값이 존재하지 않는 column만 primary key로 설정할 수 있다.

14036 (SQLSTATE: 42000): invalid ROWID

Cause

INVALID 한 ROWID를 입력했을 때 발생하는 에러이다.

Action

올바른 ROWID 값을 입력한다.

14037 (SQLSTATE: 42000): Database is READ ONLY - deprecated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14038 (SQLSTATE: 42000): unable to recover database in READ ONLY mode - deprecated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14039 (SQLSTATE: HY000): exceed segment MAXSIZE(%ld)

Cause

index가 저장되는 segment의 공간이 부족하여 maxsize를 초과하는 경우 발생한다.


gSQL> ALTER INDEX T1X STORAGE( MAXSIZE 512K );


Index altered.


gSQL> INSERT INTO T1 SELECT * FROM T1;


ERR-HY000(14039): exceed segment MAXSIZE(524288)

Action

index가 저장될 segment의 maxsize를 늘린다.


gSQL> ALTER INDEX T1X STORAGE( MAXSIZE 100M );


Index altered.


gSQL> INSERT INTO T1 SELECT * FROM T1;


64 rows created.

14040 (SQLSTATE: HY000): Target object of dump table is mutating

Cause

dump 하려는 대상이 현재 변경 중일 때 발생하는 에러이다.

Action

해당 객체의 데이터가 변경이 끝난 뒤 다시 dump를 시도한다.

14041 (SQLSTATE: 42000): cannot access the OFFLINE tablespace '%s'

Cause

tablespace가 offline 상태이기 때문에 access 할 수 없을 때 발생하는 에러이다.


CREATE TABLE T1 ( I1 INTEGER ) TABLESPACE TEST_TBS;


ERR-42000(14041): cannot access the OFFLINE tablespace 'TEST_TBS'

Action

tablespace를 online 상태로 변경 후 해당 작업을 다시 시도한다.


gSQL> ALTER TABLESPACE TBS_TB ONLINE;


Tablespace altered.

14042 (SQLSTATE: 42000): cannot find the row (%ld)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14043 (SQLSTATE: 42000): file is already used in database '%s'

Cause

file이 이미 tablespace의 datafile로 사용되고 있을 때 발생하는 에러이다.


gSQL> CREATE DATA TABLESPACE TEST_TBS1 DATAFILE 'TEST_DATAFILE.dbf' SIZE 10M;


Tablespace created.


gSQL> CREATE DATA TABLESPACE TEST_TBS2 DATAFILE 'TEST_DATAFILE.dbf' SIZE 10M REUSE;


ERR-42000(14043): file is already used in database :


CREATE DATA TABLESPACE TEST_TBS2 DATAFILE 'TEST_DATAFILEE.dbf' SIZE 10M REUSE

*

ERROR at line 1:

Action

아래와 같이 기존 tablespace에서 사용하지 않는 datafile을 사용하거나 새로운 datafile을 명시한다.


gSQL> CREATE DATA TABLESPACE TEST_TBS2 DATAFILE 'TEST_DATAFILE2.dbf' SIZE 10M REUSE;


Tablespace created.

14044 (SQLSTATE: 42000): datafile not empty

Cause

한 번이라도 사용된 적이 있는 datafile을 삭제하려 할 때 발생하는 에러이다.

Action

tablespace의 datafile은 생성된 후 사용된 적이 없는 경우에만 삭제할 수 있다. 사용된 적이 있는 경우, 모든 데이터가 삭제되었더라도 datafile을 삭제할 수 없다.

14045 (SQLSTATE: 42000): cannot drop datafile of OFFLINE tablespace '%s'

Cause

offline tablespace의 datafile은 삭제할 수 없다.


gSQL> ALTER TABLESPACE TBS_NAME DROP DATAFILE 'DATAFILE_NAME.dbf';


ERR-42000(16145): cannot drop datafile of OFFLINE tablespace :

ALTER TABLESPACE TBS_NAME DROP DATAFILE 'DATAFILE_NAME.dbf'

*

ERROR at line 1:

Action

tablespace를 먼저 online으로 변경한 후 삭제한다.


gSQL> ALTER TABLESPACE TBS_NAME ONLINE;


Tablespace altered.


gSQL> ALTER TABLESPACE TBS_NAME DROP DATAFILE 'DATAFILE_NAME.dbf';


Tablespace altered.

14046 (SQLSTATE: 42000): file does not exist - '%s'

Cause

파일이 존재하지 않을 때 발생하는 에러이다.

Action

대상 파일이 실제로 존재하는지 확인하거나, 경로가 올바른지 확인한다.

14047 (SQLSTATE: 42000): file is READ ONLY - '%s'

Cause

파일의 권한이 read only일 경우 발생하는 에러이다.

Action

파일의 권한을 수정하여 write가 가능하도록 한다.

14048 (SQLSTATE: 42000): file is invalid or old version - '%s'

Cause

datafile이 invalid하거나 old version일 때 발생하는 에러이다.

Action

유효한 datafile을 사용한다.

14049 (SQLSTATE: 42000): tablespace is not online - '%s'

Cause

이미 offline 상태인 tablespace의 상태를 offline으로 변경하려 할 때 발생하는 에러이다.

Action

N/A

14050 (SQLSTATE: 42000): tablespace is not offline - '%s'

Cause

이미 online 상태인 tablespace의 상태를 online으로 변경하려 할 때 발생하는 에러이다.

Action

N/A

14051 (SQLSTATE: 42000): media recovery required - '%s'

Cause

tablespace를 online으로 변경할 때 recovery가 필요한 경우 발생하는 에러이다.


gSQL> ALTER TABLESPACE TEST_TBS ONLINE;


ERR-42000(14051): media recovery required - 'TEST_TBS'

Action

해당 tablespace를 recover한다.


gSQL> ALTER DATABASE RECOVER TABLESPACE TEST_TBS;


Database altered.

14052 (SQLSTATE: 42000): segment is unusable ( physical id : %ld )

Cause

회복 불가능한 segment에 대해서 질의를 하려 할 때 발생하는 에러이다.

Action

unusable segment가 존재하는 table을 drop 후 다시 시도한다.

14053 (SQLSTATE: RD000): insufficient resource for sort

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14054 (SQLSTATE: HY000): internal error ( %s, %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14055 (SQLSTATE: HY000): segment is corrupted ( physical id : %ld )

Cause

segment가 손상된 경우 발생하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14056 (SQLSTATE: HY000): failed to apply redo log ( lsn : %ld, lpsn : %d, physical id : %ld )

Cause

redo가 실패한 경우 발생하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14057 (SQLSTATE: HY000): dropping log group makes total log group count less than minimum log group count(%d)

Cause

최소로 존재해야 하는 개수 이상의 log group이 존재해야 한다.

Action

N/A

14058 (SQLSTATE: 42000): log member does not exist - '%s'

Cause

log member를 drop할 때 해당 log member가 존재하지 않는 경우 발생하는 에러이다.

Action

N/A

14059 (SQLSTATE: 42000): log member is already used - '%s'

Cause

변경하려는 log member의 이름이 이미 존재할 경우 발생하는 에러이다.

Action

N/A

14060 (SQLSTATE: HY000): CURRENT logfile is empty - '%s'

Cause

한 번도 쓰여지지 않은 logfile을 switch하려 할 때 발생하는 에러이다.


gSQL> alter system switch logfile;


ERR-HY000(14060): CURRENT logfile is empty - ''

Action

한 번도 쓰여지지 않은 logfile은 switch 할 수 없다.

14061 (SQLSTATE: HY000): next logfile to switch should be INACTIVE or UNUSED - '%s'

Cause

logfile을 switch 할 때 next logfile이 inactive 또는 unused 상태가 아닌 경우 발생하는 에러이다.


gSQL> ALTER SYSTEM SWITCH LOGFILE;


ERR-HY000(14061): next logfile to switch should be INACTIVE or UNUSED

Action

active 상태의 logfile은 주기적으로 archive log thread에 의해 inactive 상태로 변경된다. checkpoint 이후 재시도한다.


gSQL> ALTER SYSTEM CHECKPOINT;


gSQL> ALTER SYSTEM SWITCH LOGFILE;

14062 (SQLSTATE: 42000): INITRANS must be less equal than MAXTRANS

Cause

MAXTRANS 값 보다 INITRANS 값이 더 큰 경우 발생하는 에러이다.


gSQL> ALTER INDEX idx1 INITRANS 32 MAXTRANS 4;


ERR-42000(16083): INITRANS must be less equal than MAXTRANS :


ALTER INDEX idx1 INITRANS 32 MAXTRANS 4

*

ERROR at line 1:

Action

INITRANS 값은 MAXTRANS 보다 작거나 같아야 한다.

14063 (SQLSTATE: 42000): cannot be added log member to exceed maximum log member count(%d)

Cause

추가할 수 있는 log member의 최대 개수를 초과하여 더 이상 log member를 추가할 수 없습니다.


gSQL> ALTER DATABASE ADD LOGFILE MEMBER 'test1.log', 'test2.log', 'test3.log', 'test4.log', 'test5.log', 'test6.log' TO GROUP 10;


ERR-42000(14063): cannot be added log member to exceed maximum log member count(5)

Action

N/A

14064 (SQLSTATE: 42000): the operation is disallowed at %s phase

Cause

수행하려는 작업과 PHASE가 맞지 않는 경우에 발생하는 에러이다.


gSQL> ALTER DATABASE ADD LOGFILE MEMBER 'test.log' TO GROUP 1;


ERR-42000(14064): the operation is disallowed at MOUNT phase

Action

해당 작업을 수행할 수 있는 PHASE로 변경해준 뒤 다시 작업을 수행한다.


--# NO MOUNT -> MOUNT PHASE로 변경

gSQL>alter system mount database;


--# MOUNT -> OPEN PHASE로 변경


gSQL> alter system open database;

14065 (SQLSTATE: RD000): row size(%d) of the instant table is too large

Cause

instant sort table을 사용할 때 column들의 총 크기가 너무 큰 경우 발생하는 에러이다.


gSQL> SELECT * FROM T1 ORDER BY A1, A2, ...... , A2998, A2999;


ERR-RD000(14065): row size(24009) of the instant table is too large

Action

INST_TABLE_PAGE_SIZE 프로퍼티 값을 증가시킨 후 재시도한다.


gSQL> ALTER SESSION SET INST_TABLE_PAGE_SIZE = 32K;


Session altered.

14066 (SQLSTATE: RD000): key size(%d) of the instant index exceeds the limit(%d)

Cause

instant b-tree index를 사용할 때 key가 제한 크기를 초과하는 경우 발생하는 에러이다.


gSQL> SELECT /*+ USE_GROUP_SORT */ A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12

FROM T1

GROUP BY A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12;


ERR-RD000(14066): key size(48033) of the instant index exceeds the limit(16000)

Action

INSTANT_INDEX_REFERENCE_COLUMN_THRESHOLD 프로퍼티를 작게 설정해 더 많은 column이 reference column이 되도록 변경해야 한다.


gSQL> ALTER SESSION SET INSTANT_INDEX_REFERENCE_COLUMN_THRESHOLD = 64;


Session altered.

14067 (SQLSTATE: HY000): cannot media recover; archivelog mode not enabled

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14068 (SQLSTATE: HY000): logfile does not exist - '%s'

Cause

recover 중 logfile이 존재하지 않을 때 발생하는 에러이다.

Action

recover가 가능한 부분까지만 불완전 복구를 진행한다.

14069 (SQLSTATE: HY000): cannot support ARCHIVELOG in cds mode

Cause

ARCHIVELOG는 CDS mode에서 지원하지 않는다.


gSQL> ALTER SYSTEM OPEN DATABASE;


ERR-HY000(14069): cannot support ARCHIVELOG in cds mode

Action

N/A

14070 (SQLSTATE: HY000): control file is not recent; do media recovery with USING BACKUP CONTROLFILE option

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14071 (SQLSTATE: HY000): cannot BACKUP; tablespace(%s) is offline

Cause

tablespace backup시 해당 tablespace가 offline인 경우 발생하는 에러이다.


gSQL> ALTER TABLESPACE TEST_TBS BEGIN BACKUP;


ERR-HY000(14071): cannot backup; tablespace(TEST_TBS) is offline

Action

tablespace 상태를 online으로 변경 후 backup을 진행한다.


gSQL> ALTER TABLESPACE TEST_TBS ONLINE;


Tablespace altered.


gSQL> ALTER TABLESPACE TEST_TBS BEGIN BACKUP;


Tablespace altered.

14072 (SQLSTATE: HY000): cannot BACKUP; tablespace(%s) is temporary

Cause

backup하려는 tablespace가 temporary tablespace인 경우 발생하는 에러이다.

Action

temporary tablespace는 backup 할 수 없다.

14073 (SQLSTATE: HY000): cannot BACKUP; tablespace is dropped

Cause

backup하려는 tablespace가 drop된 tablespace인 경우 발생하는 에러이다.

Action

drop 된 tablespace는 backup 할 수 없다.

14074 (SQLSTATE: HY000): cannot BACKUP; tablespace(%s) is already in backup

Cause

backup하려는 tablespace의 backup이 이미 진행 중인 경우에 발생하는 에러이다.

Action

backup이 진행 중인 tablespace는 backup할 수 없다.

14075 (SQLSTATE: HY000): cannot execute; tablespace(%s) backup is in progress

Cause

backup이 진행 중인 tablespace의 상태를 offline으로 변경하려 할 때 발생하는 에러이다.

Action

backup이 끝난 뒤 tablespace의 상태를 offline으로 변경할 수 있다.

14076 (SQLSTATE: HY000): cannot END BACKUP; tablespace(%s) is not in backup

Cause

begin tablespace backup이 수행되지 않았는데 end tablespace backup을 하려는 경우에 발생하는 에러이다.


gSQL> ALTER TABLESPACE DICTIONARY_TBS END BACKUP;


ERR-HY000(14076): cannot end backup; tablespace(DICTIONARY_TBS) is not in backup

Action

begin tablespace backup이 수행된 뒤 end tablespace backup을 수행한다.

14077 (SQLSTATE: HY000): cannot END BACKUP; none of the tablespaces are in backup

Cause

backup을 시도한 모든 tablespace가 backup에 실패한 경우 발생하는 에러이다.


gSQL> ALTER DATABASE END BACKUP;


ERR-HY000(14077): cannot end backup; none of the tablespaces are in backup

Action

다시 backup을 시도한다.

14078 (SQLSTATE: HY000): cannot BACKUP; tablespace(%s) is proceeding other operation '%s'

Cause

backup 하려는 tablespace가 다음과 같은 작업을 진행 중일 때 발생하는 에러이다.


- SHUTDOWN

- CHANGE TRACKING { ENABLE / DISABLE }

- CHECKPOINT

- ONLINE TABLESPACE

- OFFLINE TABLESPACE

- DROP TABLESPACE

- ADD DATAFILE

- DROP DATAFILE

- TABLESPACE BEGIN BACKUP

Action

해당 작업이 종료된 후 다시 backup을 시도한다.

14079 (SQLSTATE: HY000): cannot BACKUP; database is already in backup

Cause

backup하려는 database가 이미 backup 중일 때 발생하는 에러이다.

Action

backup이 끝난 뒤 다시 backup을 시도한다.

14080 (SQLSTATE: HY000): cannot END BACKUP; database is not in backup

Cause

database begin backup이 수행되지 않았는데 database end backup을 하려는 경우에 발생하는 에러이다.


gSQL> ALTER DATABASE END BACKUP;


ERR-HY000(14080): cannot end backup; database is not in backup

Action

database begin backup이 수행된 뒤 database end backup을 수행한다.

14081 (SQLSTATE: HY000): cannot BACKUP; database is going shutdown

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14082 (SQLSTATE: HY000): (%s) is not an appropriate logfile to recover

Cause

interactive incomplete recovery 수행 시 recovery를 위해 적합한 logfile이 아닌 경우 발생하는 에러이다.

Action

recovery에 적합한 logfile을 입력하여 다시 시도한다.

14083 (SQLSTATE: HY000): must use RESETLOGS option for database open

Cause

incomplete recovery를 수행한 후 NORESETLOGS 옵션으로 startup 하는 경우 발생하는 에러이다.

Action

incomplete recovery를 수행한 후 반드시 RESETLOGS 옵션으로 startup을 진행해야 한다.

불완전 복구 후 데이터베이스 재시작을 참조한다.

14084 (SQLSTATE: HY000): must use NORESETLOGS option for database open

Cause

RESETLOGS 옵션으로 startup 할 수 없을 때 발생하는 에러이다.

Action

직전에 incomplete recovery를 한 경우에만 RESETLOGS 옵션을 사용하여 startup을 할 수 있다.

14085 (SQLSTATE: HY000): (%s) was not a sufficiently old backup

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14086 (SQLSTATE: HY000): media recovery canceled

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14087 (SQLSTATE: HY000): cannot SHUTDOWN; backup in progress

Cause

backup 중에 shutdown을 하려는 경우 발생하는 에러이다.

Action

backup 중에는 shutdown을 할 수 없다.

14088 (SQLSTATE: HY000): control file is corrupted

Cause

모든 control file이 손상된 경우 발생하는 에러이다.

Action

백업된 control file을 이용하여 데이터베이스를 불완전 복구한 후에 재시작할 수 있다.

제어 파일 훼손을 참조한다.

14089 (SQLSTATE: HY000): LEVEL 0 INCREMENTAL BACKUP does not exist

Cause

level 0 incremental backup을 하지 않고 level 1 이상의 incremental backup을 진행하려 할 때 발생하는 에러이다.


gSQL> ALTER TABLESPACE TEST_TBS BACKUP INCREMENTAL LEVEL 1;


ERR-HY000(14089): level 0 incremental backup does not exist

Action

incremental backup을 할 때 먼저 level 0으로 전체 데이터베이스의 데이터 파일을 backup 해야한다.

증분 백업을 참조한다.

14090 (SQLSTATE: HY000): cannot flush logs; disabled log flushing

Cause

서버 내부에서 제어하는 에러로써 클라이언트에게 노출되지 않는다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14091 (SQLSTATE: HY000): (%s) is not valid logfile

Cause

log file이 invalid 할 때 발생하는 에러이다.

Action

유효한 log file을 사용한다.

14092 (SQLSTATE: HY000): not exist incremental backup

Cause

restore시 사용되는 증분 백업 파일이 존재하지 않을 때 발생하는 에러이다.

Action

N/A

14093 (SQLSTATE: HY000): not exist valid incremental backup for tablespace(%s)

Cause

restore시 사용되는 증분 백업 파일이 유효하지 않은 경우 발생하는 에러이다.

Action

N/A

14094 (SQLSTATE: HY000): datafile recovery required - datafile(%s) of tablespace(%s) corrupted

Cause

데이터 파일의 일부 페이지가 손상 (corrupted) 됐을 때 발생하는 에러이다.

Action

백업된 데이터 파일을 사용해 데이터 파일을 복구한다. ALTER DATABASE RECOVER를 참조한다.

14095 (SQLSTATE: HY000): backup file(%s) is corrupted

Cause

백업 파일이 손상 (corrupted) 되었을 때 발생하는 에러이다.

Action

백업을 이용한 복구를 참조하여 그 이전 backup 파일을 통해 복구한다.

14096 (SQLSTATE: 23001): fail to build index ( %ld )

Cause

startup 과정 중에 no logging index들을 재구축 (rebuild)하는데, 이 때 재구축에 실패하면 발생하는 경고이다.

Action

이 에러 메시지와 함께 출력되는 에러를 확인해 해결한다. 실패한 인덱스들의 ID와 에러 코드는 트레이스 로그 (system.trc)에서 확인할 수 있다.

14097 (SQLSTATE: HY000): control file is corrupted - '%s'

Cause

제어 파일이 손상 (corrupted) 되었을 때 발생하는 에러이다.

Action

백업된 제어 파일을 이용해 데이터베이스를 불완전 복구 한 후에 재시작할 수 있다.

14098 (SQLSTATE: HY000): maximum record length(%d) exceeds

Cause

질의 처리 중 사용할 임시 공간의 크기가 인스턴트 테이블의 페이지 크기보다 큰 경우에 발생하는 에러이다.

Action

INST_TABLE_PAGE_SIZE 프로퍼티 값을 초과한 레코드 크기보다 크게 설정한다.

14099 (SQLSTATE: HY000): log member state must be UNUSED or INACTIVE

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14100 (SQLSTATE: HY000): dropping log member makes log member count of group(%d) less than minimum log member count(%d)

Cause

로그 파일을 drop 할 때 남은 로그 파일 개수가 로그 그룹이 유지해야 할 최소 로그 파일 수보다 적을 경우에 발생하는 에러이다.

Action

최소 로그 파일 수보다 크거나 같은 로그 파일을 유지하도록 한다.

14101 (SQLSTATE: HY000): log group id does not exist - '%d'

Cause

로그 파일을 추가/제거할 때, 유효하지 않은 로그 그룹 아이디를 입력하면 발생하는 에러이다.

Action

유효한 로그 그룹 아이디를 입력한다.

유효한 로그 그룹 아이디는 V$LOGFILE을 통해 아래 예제와 같이 확인할 수 있다.


gSQL> SELECT GROUP_ID, GROUP_STATE FROM V$LOGFILE;

GROUP_ID GROUP_STATE

-------- -----------

0 CURRENT

1 UNUSED

2 UNUSED

3 UNUSED


4 rows selected.

14102 (SQLSTATE: HY000): cannot execute; recovery is in progress

Cause

복구가 진행되는 중에 아래와 같은 동작을 시도했을 때 발생하는 에러이다.


  • 제거된 데이터 파일을 복구 (restore)

  • 데이터 파일을 rename

  • 테이블스페이스를 offline

  • 데이터 파일의 AUTOEXTEND 속성을 변경

  • 데이터 파일을 추가

Action

복구가 완료되면 다시 시도한다.

14103 (SQLSTATE: 01000): Warning: media recovery needs a logfile including log (Lsn %ld)

Cause

체크포인트 로그가 포함된 로그 파일을 찾지 못했을 경우에 발생하는 에러이다.

Action

제안된 LSN에 해당하는 archive log 파일을 통해 복구한다. 불완전 복구복구 예를 참조한다.

14104 (SQLSTATE: 01000): Warning: suggestion '%s'

Cause

체크포인트 로그가 포함된 로그 파일을 찾지 못했을 때 발생하는 에러이다.

Action

제안된 archive log 파일을 통해 복구한다.

14105 (SQLSTATE: HY000): control file '%s' is inconsistent with primary

Cause

주 제어파일의 정보가 나머지 제어 파일들과 동일하지 않을 때 발생하는 에러이다.

Action

목적에 적합한 제어 파일을 나머지 제어 파일들에 복사하여 startup을 수행한다. 제어 파일 훼손을 참고한다.

14106 (SQLSTATE: HY000): tablespace (%s) is taken offline as the result of a write error

Cause

테이블스페이스의 데이터 파일에 비정상적인 쓰기 작업이 실패한 경우 발생하는 에러로, 해당 테이블스페이스를 OFFLINE 시킨다.

Action

ALTER DATABASE RECOVER를 참고하여 테이블스페이스를 복구한다.

14107 (SQLSTATE: HY000): given LOG_BLOCK_SIZE(%d) is not a suitable value for a size of log block; LOG_BLOCK_SIZE should be one of 512, 1024, 2048 or 4096.

Cause

LOG_BLOCK_SIZE 프로퍼티에 설정된 속성값이 적합하지 않을 때 발생한다.

Action

LOG_BLOCK_SIZE 프로퍼티의 설정값을 512, 1024, 2048, 4096 중 하나로 설정한다.

14108 (SQLSTATE: HY000): cannot disable archivelog - exist tablespace needed media recovery.

Cause

아카이브 모드를 NOARCHIVELOG로 변경할 때, offline 상태인 테이블스페이스가 존재하면 발생하는 에러이다.

Action

offline 상태인 테이블스페이스들을 ONLINE 상태로 만든 후 다시 시도한다. 테이블스페이스를 ONLINE 상태로 변경하는 방법은 테이블스페이스 상태 관리ALTER TABLESPACE name [ONLINE|OFFLINE]을 참조한다.

14109 (SQLSTATE: HY000): OFFLINE NORMAL disallowed; cannot be taken offline consistently.

Cause

비정상 종료 후 MOUNT 단계에서는 테이블스페이스 OFFLINE NORMAL을 수행할 수 없다.

Action

OFFLINE IMMEDIATE만 가능하다. ALTER TABLESPACE name [ONLINE|OFFLINE]를 참조한다.


gSQL> ALTER TABLESPACE test_tbs OFFLINE;


ERR-HY000(14109): OFFLINE NORMAL disallowed; cannot be taken offline consistently.


gSQL> ALTER TABLESPACE TEST_TBS OFFLINE IMMEDIATE;


Tablespace altered.

14110 (SQLSTATE: HY000): OFFLINE IMMEDIATE disallowed; noarchivelog mode

Cause

테이블스페이스를 online으로 변경할 때 recovery가 필요한 경우, noarchivelog 모드에서 OFFLINE IMMEDIATE를 할 수 없다.

Action

테이블스페이스를 offline normal하거나 archive log mode에서 offline immediate를 수행한다.


gSQL> ALTER TABLESPACE TEST_TBS OFFLINE IMMEDIATE;


ERR-HY000(14110): OFFLINE IMMEDIATE disallowed; noarchivelog mode


ALTER TABLESPACE TEST_TBS OFFLINE NORMAL;


Tablespace altered.

14111 (SQLSTATE: HY000): cannot create COLUMNAR TABLE; given MIN ROW COUNT is too big to put into one page

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14112 (SQLSTATE: HY000): record size is too large for columnar table

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14113 (SQLSTATE: HY000): datafile '%s' is corrupted

Cause

데이터 파일이 손상 (corrupted) 되었을 때 발생하는 에러이다.

Action

데이터 파일 훼손을 참조하여 데이터 파일을 복구한다.

14114 (SQLSTATE: HY000): datafile '%s' is more recent than redo logfile

Cause

복구에 사용된 마지막 로그보다 더 최신의 데이터가 데이터베이스에 존재하는 경우 발생하는 에러이다.

Action

더 이전의 백업을 이용하여 복구하거나 더 최신의 로그파일을 이용하여 복구한다. 데이터 파일이 로그보다 최신인 경우를 참조한다.

14115 (SQLSTATE: HY000): transaction undo limit exceeded

Cause

트랜잭션 처리 중에 사용한 undo page가 TRANSACTION_MAXIMUM_UNDO_PAGE_COUNT 프로퍼티 설정값보다 많아진 경우에 발생하는 에러이다.

Action

TRANSACTION_MAXIMUM_UNDO_PAGE_COUNT 프로퍼티의 설정값을 조정한 뒤 다시 시도한다.

14116 (SQLSTATE: HY000): unable to access incomplete journal log

Cause

ONLINE 모드로 INDEX REBUILD, REBALANCE 등을 수행하면 그 동안 발생한 DML에 대한 저널 로그를 남기는데, 저널 로그와 관련된 작업 중 실패한 경우 발생하는 에러이다.

Action

Caused by 이하 절에 나타나는 에러가 incomplete journal log 를 만들게 된 원인에 해당된다. 해당 에러를 해결한 후 재시도한다.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


ERR-HY000(14116): unable to access incomplete journal log :

Caused by : ERR-HY000(14125): exceed maximum journal file size

14117 (SQLSTATE: HY000): cannot end incomplete recovery; incomplete recovery never been begun

Cause

불완전 복구가 시작된 적 없으나 END INCOMPLETE RECOVERY를 시도한 경우 발생하는 에러이다.

Action

N/A

14118 (SQLSTATE: HY000): property TRANSACTION_TABLE_SIZE value must be equal to or greater than '%d'

Cause

복구 후 운용에 필요한 트랜잭션 수보다 TRANSACTION_TABLE_SIZE 프로퍼티가 작을 때 발생하는 에러이다.

Action

TRANSACTION_TABLE_SIZE 프로퍼티를 에러 메시지에 출력된 값보다 크거나 같은 값으로 설정한다.

14119 (SQLSTATE: HY000): property UNDO_RELATION_COUNT value must be equal to or greater than '%ld'

Cause

복구 중 기존 undo relation 수보다 새로운 undo relation이 작을 때 발생하는 에러이다.

Action

UNDO_RELATION_COUNT 프로퍼티를 에러 메시지에 출력된 값보다 크거나 같은 값으로 설정한다.

14120 (SQLSTATE: HY000): sequence is dropped

Cause

Sequence가 drop 되는 동안, sync나 DDL을 수행하는 경우에 발생하는 에러이다.

Action

N/A

14121 (SQLSTATE: HY000): file '%s' does not match with database - file signature '%s', database signature '%s'

Cause

백업 파일을 통해 복구할 때 잘못된 파일을 사용한 경우 발생하는 에러이다.

Action

동일한 데이터베이스 시그니처를 갖는 백업 파일로 복구를 시도한다. 백업 파일의 시그니처는 gdump를 통해 아래 예제와 같이 확인 가능하다.


$ gdump BACKUP filename -h | grep signature


Database signature : 28E278E40CE011EF9BD45323C4EAD45D

14122 (SQLSTATE: HY000): there is a possibility that a deadlock occurs

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14123 (SQLSTATE: 22023): INCREMENTBY sign cannot be changed in the cluster system

Cause

클러스터 환경에서 ALTER SEQUENCE를 수행할 때, INCREMENT BY 옵션값의 부호(양/음수)가 바뀌면 발생하는 에러이다.

Action

부호가 바뀌어야 하는 경우 sequence를 drop 후 다시 생성한다.

14124 (SQLSTATE: HY000): RESTORE in progress

Cause

복구 (restore)가 진행 중인 상태에서 백업파일을 제거하려 할 때 발생하는 에러이다.

Action

복구 (restore)가 완료된 후에 다시 시도한다.

14125 (SQLSTATE: HY000): exceed maximum journal file size

Cause

MAX_JOURNAL_FILE_SIZE 프로퍼티 값보다 큰 저널 파일이 필요한 경우 발생하는 에러이다.

Action

MAX_JOURNAL_FILE_SIZE 프로퍼티 값을 충분히 큰 값으로 설정한다.

14126 (SQLSTATE: HY000): there must be at least one recoverable member in the group

Cause

ALTER SYSTEM IRRECOVERABLE CLUSTER MEMBER를 수행했을 때 그룹 내의 모든 멤버가 복구 불능 상태가 될 수 있을 경우 발생하는 에러이다.

Action

그룹 내에 하나 이상의 복구 가능한 멤버가 있는지 확인한다. 멤버의 상태는 gdump를 통해 아래와 같이 확인 가능하다.


$ gdump CONTROL control_0.ctl -h

[CLUSTER MEMBER #0]

MEMBER NAME : G1N1

MEMBER TYPE : LOCAL

MEMBER STATUS : RECOVERABLE

GROUP ID : 1

GROUP NAME : G1

MEMBER ID : 1

MEMBER POSITION : 0


[CLUSTER MEMBER #1]

MEMBER NAME : G1N2

MEMBER TYPE : REMOTE

MEMBER STATUS : IRRECOVERABLE

GROUP ID : 1

GROUP NAME : G1

MEMBER ID : 2

MEMBER POSITION : 1

14127 (SQLSTATE: HY000): object no longer exists

Cause

Drop 된 global temporary table을 사용하려는 경우 발생하는 에러이다.

Action

N/A

14128 (SQLSTATE: HY000): invalid remote view scn

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14129 (SQLSTATE: HYT00): transaction allocation time exceeded

Cause

TRANSACTION_ALLOCATION_TIMEOUT 프로퍼티 값보다 긴 시간동안 트랜잭션을 할당받지 못한 경우 발생하는 에러이다.

Action

TRANSACTION_ALLOCATION_TIMEOUT 프로퍼티 값을 더 크게 설정하거나, TRANSACTION_TABLE_SIZE 프로퍼티 값이 너무 작은 경우 TRANSACTION_TABLE_SIZE 값을 더 크게 설정한다.

14130 (SQLSTATE: HYT00): undo relation allocation time exceeded

Cause

UNDO_RELATION_ALLOCATION_TIMEOUT 프로퍼티 값보다 긴 시간동안 undo relation을 할당받지 못한 경우 발생하는 에러이다.

Action

UNDO_RELATION_ALLOCATION_TIMEOUT 프로퍼티 값을 더 크게 설정하거나, UNDO_RELATION_COUNT 프로퍼티 값이 너무 작은 경우 UNDO_RELATION_COUNT 프로퍼티 값을 더 크게 설정한다.

14131 (SQLSTATE: 42000): unable to enable change tracking in cds mode

Cause

CDS 모드에서 change tracking을 변경한 경우 발생하는 에러이다.

Action

TDS 모드로 운영중일 때 변경 가능하다.

14132 (SQLSTATE: 42000): unable to enable change tracking in noarchivelog mode

Cause

NOARCHIVELOG 상태에서 change tracking을 enable한 경우 발생한 경우이다.

Action

change tracking은 ARCHIVELOG 상태에서만 enable 가능하다.

14133 (SQLSTATE: HY000): change tracking is already enabled

Cause

change tracking이 enable 상태인데 다시 enable 시키려 시도한 경우에 발생한 에러이다.

Action

N/A

14134 (SQLSTATE: HY000): change tracking is not enabled

Cause

change tracking이 disable 상태인데, 다시 disable시키려 시도한 경우 발생하는 에러이다.

Action

N/A

14135 (SQLSTATE: HY000): change tracking file is corrupted - '%s'

Cause

startup 과정 중 손상된 (corrupted) change tracking 파일이 발견된 경우 발생하는 경고이다.

Action

N/A

14136 (SQLSTATE: HY000): failed to backup incremental because change tracking is being altered

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14137 (SQLSTATE: HY000): failed to disable change tracking because incremental backup is in progress

Cause

증분 백업이 진행 중일 때 change tracking을 disable 하려는 경우 발생하는 에러이다.

Action

증분 백업이 완료되면 재시도한다.

14138 (SQLSTATE: HY000): exceed maximum insertable records ( %lu ) by transaction

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14139 (SQLSTATE: HY000): transaction(%ld) is timed out for waiting to resolve cluster deadlock

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

14140 (SQLSTATE: HY000): the value of MAXTRANS to be changed must be equal to or greater than the current MAXTRANS '%d'

Cause

인덱스의 MAXTRANS를 기존 값보다 작은 값으로 변경하려 할 때 발생하는 에러이다.

Action

MAXTRANS를 기존 값보다 작게 설정하려면 INDEX REBUILD가 필요하다.

14141 (SQLSTATE: HY000): shard '%d' exceeds maximum shard sequence

Cause

shard를 변경할 때, 인덱스의 shard sequence가 한계치를 넘어선 경우 발생하는 에러이다.

Action

해당 shard와 관련된 인덱스를 REBUILD 하거나 COALESCE 한다.

14142 (SQLSTATE: HY000): cannot recover; database is going shutdown

Cause

데이터베이스가 shutdown 되는 동안 복구를 시도한 경우 발생하는 에러이다.

Action

shutdown 하는 동안에는 복구할 수 없다.

14143 (SQLSTATE: HY000): cannot backup; database is proceeding other operation '%s'

Cause

다음 작업이 진행 중일 때 백업을 시도하는 경우 발생하는 에러이다.


  • CHECKPOINT,

  • SHUTDOWN,

  • CHANGE TRACKING,

  • OFFLINE TBS,

  • ONLINE TBS,

  • DROP TBS,

  • ADD DATAFILE,

  • DROP DATAFILE

Action

위 작업이 완료되면 다시 시도한다.

14144 (SQLSTATE: HY000): file is not in use for global transaction log - '%s'

Cause

이름을 변경하려는 global transaction logfile을 찾지 못했을 때 발생하는 에러이다.

Action

Global transaction logfile의 이름을 확인 후 다시 시도한다. global transaction logfile의 경로는 V$DB_FILE을 통해 아래 예제와 같이 확인 가능하다.


gSQL> SELECT FILE_NAME FROM V$DB_FILE WHERE FILE_TYPE = 'Global Transaction Log File';



FILE_NAME


-------------------------------------------------------------------


/path/to/wal/commit_0.log


/path/to/wal/commit_1.log


2 rows selected.

14145 (SQLSTATE: HY000): file is already in use for global transaction log - '%s'

Cause

Global transaction logfile의 이름이 이미 사용 중인 경우 발생하는 에러이다.

Action

사용 중인 global transaction logfile의 이름을 확인 후 다시 시도한다. global transaction logfile의 경로는 V$DB_FILE을 통해 아래 예제와 같이 확인 가능하다.


gSQL> SELECT FILE_NAME FROM V$DB_FILE WHERE FILE_TYPE = 'Global Transaction Log File';


FILE_NAME


-------------------------------------------------------------------


/path/to/wal/commit_0.log


/path/to/wal/commit_1.log


2 rows selected.

14146 (SQLSTATE: 01000): shard(%d) of index(%ld) used all shard sequences

Cause

INDEX COALESCE를 사용하여 인덱스 내의 이전 shard key들을 정리했지만, 여분의 shard sequence를 확보하지 못한 경우에 발생하는 에러이다. 이 경우, 여분의 shard sequence가 없을 경우, MOVE SHARD, MERGE SHARDS, SPLIT SHARD 와 같은 shard 변경 작업을 수행할 수 없다.

Action

INDEX REBUILD를 사용하여 유효하지 않은 shard key들을 정리한다.

14147 (SQLSTATE: HY000): incomplete recovery is possible up to '%s'

Cause

불완전 복구가 완료되는 시점까지 복구할 로그가 부족하다.


gSQL> ALTER DATABASE RECOVER UNTIL TIME '2023-04-11 12:50:00.000000';

ERR-HY000(14147): incomplete recovery is possible up to - 'TIME : 2023-04-11 12:46:47.663201'

Action

완료 시점까지 복구하는데 필요한 로그 파일 (archive log, redo log)을 restore하여 재수행 하거나, 복구 가능한 시점까지만 복구하도록 재수행한다.


gSQL> ALTER DATABASE RECOVER UNTIL TIME '2023-04-11 12:46:47.663201';

14148 (SQLSTATE: HY000): exceed the maximum log size allowed to one statement

Cause

하나의 레코드를 insert, update, delete 할 때 기록하는 로그가 내부적으로 처리할 수 있는 최대값을 초과하였다. 이는 이중화 (cyclone)를 위한 supplemental log를 기록할 때 column 수와 unique index 수의 합이 약 1,500만 초과한 경우 발생할 수 있다.

Action

Supplemental log를 기록하는 대상 테이블의 column과 unique 인덱스 수의 합을 1,500만개 이하로 줄인다.

14149 (SQLSTATE: HY000): file name is too long ( < %d )

Cause

incremental backup 파일의 이름이 128자를 초과하였다.

Action

incremental backup 파일의 이름을 128자 이하로 줄인다.

14150 (SQLSTATE: 01000): incremental backup succeeded, but automatic backup of control files failed

Cause

incremental backup 은 성공했지만 control 파일의 자동 백업이 실패하는 경우에 발생하는 경고 메시지이다.

Action

백업할 control 파일이 존재하는지 확인한다.

14151 (SQLSTATE: 01000): incremental backup succeeded, but automatic removal of the obsolete backup list failed

Cause

incremental backup 은 성공했지만 백업 리스트의 자동 삭제가 실패하는 경우에 발생하는 경고 메시지이다.

Action

control 파일이 존재하는지 확인한다.

14152 (SQLSTATE: HY000): cannot create tablespace because all tablespace identifiers are exhausted (maximum: %d)

Cause

테이블스페이스 ID의 최대 표현 범위 (65534)에 도달하여 새로운 테이블스페이스를 생성할 수 없다.

Action

N/A

14153 (SQLSTATE: HY000): given GLOBAL_TRANSACTION_LOG_BLOCK_SIZE(%ld) is not a suitable value for a size of log block; GLOBAL_TRANSACTION_LOG_BLOCK_SIZE should be one of 512, 1024, 2048, or 4096.

Cause

GLOBAL_TRANSACTION_LOG_BLOCK_SIZE 의 값을 512, 1024, 2048, 4096 중에 하나로 지정하지 않았을 때 발생하는 경고 메시지이다.

Action

GLOBAL_TRANSACTION_LOG_BLOCK_SIZE 의 값으로 512, 1024, 2048, 4096 중에 하나를 선택한다.

14154 (SQLSTATE: HY000): cannot add datafile; tablespace(%s) is offline

Cause

오프라인 된 테이블스페이스에 데이터 파일을 추가하는 경우에 발생하는 경고 메시지이다.

Action

오프라인 된 테이블스페이스를 온라인으로 변경한 후에 데이터 파일을 추가한다.

ALTER TABLESPACE name [ONLINE|OFFLINE]을 참조한다.

14155 (SQLSTATE: HY000): cannot add datafile; tablespace is dropped

Cause

이미 지워진 테이블스페이스에 데이터 파일을 추가하는 경우에 발생하는 경고 메시지이다.

Action

N/A

14156 (SQLSTATE: HY000): unable to create database in cds mode

Cause

CDS 모드에서는 database 를 생성할 수 없다.

Action

Database는 TDS 모드에서 생성해야 한다.

TDS 모드로 변경하려면 DATA_STORE_MODE 프로퍼티를 2로 설정하면 된다.

14157 (SQLSTATE: HY000): transaction '%ld' exceeds the maximum TCN (transaction change number)

Cause

트랜잭션에서 생성할 수 있는 최대 statement의 개수 (4294967294)를 초과했을 때 발생하는 에러 메시지이다.

Action

Statement 들을 여러 개의 트랜잭션으로 나누어 처리한다.

14158 (SQLSTATE: HY000): cannot read table after modification in parallel

Cause

세션에서 PARALLEL 옵션을 사용하여 append insert를 수행한 테이블을 full scan 할 때 발생하는 에러 메시지이다.


gSQL> CREATE TABLE T1 ( I1 INTEGER );


Table created.


gSQL> COMMIT;


Commit complete.


gSQL> INSERT /*+ APPEND PARALLEL */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> SELECT * FROM T1;


ERR-42000(14158): cannot read table after modification in parallel

Action

append insert를 수행한 트랜잭션을 완료한 후에 full scan을 수행한다.

14159 (SQLSTATE: 40000): cannot perform index scan due to ongoing inserts with the deferred index maintenance option

Cause

세션에서 deferred index maintenance 옵션으로 append insert가 수행된 테이블에 대해 인덱스 스캔을 시도할 때 발생하는 에러 메시지이다.


gSQL> CREATE TABLE T1 ( I1 INTEGER );


Table created.


gSQL> CREATE INDEX T1X ON T1 ( I1 );


Index created.


gSQL> COMMIT;


Commit complete.


gSQL> INSERT /*+ APPEND DEFERRED_INDEX_MAINTENANCE */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> SELECT * FROM T1 WHERE I1 > 0;


ERR-42000(14159): cannot perform index scan due to ongoing inserts with the deferred index maintenance option

Action

테이블 스캔 힌트를 사용하거나, append insert 를 수행한 트랜잭션을 완료한 후 인덱스 스캔을 수행한다.


gSQL> SELECT /*+ FULL(T1) */ * FROM T1 WHERE I1 > 0;


I1

--

1


1 row selected.

14160 (SQLSTATE: 42000): the sequence operation was canceled because the driver member is inactive

Cause

서버 내부에서 제어하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14161 (SQLSTATE: 42000): incomplete or corrupted database creation detected

Cause

불완전하거나 고장난 데이터베이스를 가지고 서버를 재구동할 때 발생하는 에러이다.

Action

데이터베이스를 새로 생성하여 다시 시도한다.

14162 (SQLSTATE: 42000): visible conflict

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14163 (SQLSTATE: HY000): needs more recovery to be consistent - %s

Cause

백업된 데이터 파일과 최신 컨트롤 파일을 사용하여 불완전 복구를 수행할 때, 데이터베이스와 컨트롤 파일 간의 일관성이 손상된 테이블스페이스가 존재하면 발생하는 에러이다.

Action

일관성이 손상된 테이블스페이스를 복구하려면, 복구 시점 이전에 백업된 컨트롤 파일을 사용하여 불완전 복구를 다시 수행한다. 테이블스페이스를 폐기하는 경우, 해당 테이블스페이스가 삭제된 시점 이후를 기준으로 불완전 복구를 다시 수행한다.

14164 (SQLSTATE: HY000): RECOVER succeeded, but OPEN RESETLOGS will fail

Cause

불완전 복구는 완료되었으나, RESETLOGS 옵션으로 데이터베이스를 오픈할 수 없을 때 발생하는 에러이다.

Action

불완전 복구 완료 시점을 더 최신으로 재수행하거나, 불완전 복구 시점 이전에 백업된 컨트롤 파일을 사용하여 복구를 수행한다.

14165 (SQLSTATE: HY000): the allocated space (%ld) has already exceeded MAXSIZE

Cause

기존 할당 공간보다 작은 MAXSIZE가 지정된 경우에 발생한다.

Action

기존에 할당된 공간보다 큰 값으로 MAXSIZE를 지정한다.

14166 (SQLSTATE: HY000): storage option INITIAL must be less than MAXSIZE

Cause

INITIAL 크기가 MAXSIZE 보다 큰 경우에 발생한다.


gSQL> CREATE TABLE t1( c1 INTEGER ) STORAGE( INITIAL 2M MAXSIZE 1M );


ERR-HY000(14166): storage option INITIAL must be less than MAXSIZE :

CREATE TABLE t1( c1 INTEGER ) STORAGE( INITIAL 2M MAXSIZE 1M )

*

ERROR at line 1:

Action

INITIAL 크기를 줄이거나 MAXSIZE 를 더 크게 지정한다.


gSQL> CREATE TABLE t1( c1 INTEGER ) STORAGE( INITIAL 1M MAXSIZE 2M );


Table created.

14167 (SQLSTATE: HY000): invalid anchor transaction (%ld)

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

14168 (SQLSTATE: 40000): transaction rollback: asynchronous I/O failure

Cause

append insert 를 STATEMENT_NOFORCE 옵션으로 수행하는 도중, 비동기 disk I/O 요청이 실패했다.

Transaction 은 강제로 rollback 된다.

Action

에러 메시지에 표시된 원인을 해결한 후 작업을 다시 시도한다.

14169 (SQLSTATE: HY000): '%s' is not current copy - a recovery requires logs up to at least lsn '%ld' to complete, but it contains only logs up to lsn '%ld'

Cause

로그 파일이 최신 상태가 아니어서 복구를 완료할 수 없다. 제어 파일보다 이전 로그 파일을 사용하여 복구를 시도할 때 발생한다.


gSQL> ALTER SYSTEM OPEN DATABASE;


ERR-HY000(14169): '/test/wal/redo_1_0.log' is not current copy - a recovery requires logs up to at least lsn '3997290' to complete, but it contains only logs up to lsn '3997283'

Action

에러 메시지에 표시된 복구에 필요한 최소 LSN을 포함한 로그 파일을 사용하여 복구를 다시 시도한다. 만약 필요한 로그를 포함한 로그 파일이 손상된 경우, 불완전 복구를 수행해야 한다.

14170 (SQLSTATE: HY000): Logical corruption detected -recovery failed for nologged pages due to missing redo logs

Cause

Tablespace 또는 datafile 복구 중 nologged page 를 복구하려 할 때 발생하는 오류이다.


gSQL> ALTER DATABASE RECOVER TABLESPACE mem_test_tbs;


ERR-HY000(14056): failed to apply redo log ( lsn : 247091, lpsn : 0, physical id : 35944581300225 )

ERR-HY000(14170): logical corruption detected - Recovery failed for nologged pages due to missing redo log

Action

Nologging DML 또는 DDL 수행 이후에 생성된 백업을 사용해서 다시 recovery 를 수행한다.

14171 (SQLSTATE: HY000): %d segments have become unusable

Cause

다음 구문 수행 시 segment 가 unusable 상태로 변경되는 경우에 발생하는 경고 메시지이다.


gSQL> ALTER SYSTEM OPEN DATABASE;


ERR-HY000(14171): 2 segments have become unusable

System altered.

Action

Segment 의 usable 여부는 다음과 같은 방법으로 확인할 수 있다.


gSQL> SELECT name, physical_id FROM v$relation WHERE USABLE = false;


NAME PHYSICAL_ID

---- --------------

T1 35944581300233

T2 35948876267529


2 rows selected.

14172 (SQLSTATE: HY000): Cannot execute; startup is in progress

Cause

Startup 진행 중에 다른 세션에서 shutdown, startup 또는 database recover 를 실행하였다.


gSQL> ALTER SYSTEM OPEN DATABASE;


ERR-HY000(14172): cannot execute; startup is in progress

Action

Startup 이 완료된 후에 다시 시도한다.

14173 (SQLSTATE: HY000): Cannot execute; shutdown is in progress

Cause

Shutdown 진행 중에 다른 세션에서 shutdown, startup 또는 database recover 를 실행하였다.


gSQL> ALTER SYSTEM OPEN DATABASE;


ERR-HY000(14173): cannot execute; shutdown is in progress

Action

Shutdown 이 완료된 후에 다시 시도한다.

14174 (SQLSTATE: HY000): failed to log Page Image Log

Cause

Checkpoint 과정에서 IO slave 가 변경된 페이지를 datafile 에 저장할 때, full backup 이 진행 중인 경우에는 PIL (page image log) 을 로그에 기록한다. 이 때 log file 공간이 부족하면 발생하는 에러이다.


gSQL> ALTER SYSTEM CHECKPOINT;


ERR-HY000(14174): failed to log Page Image Log

Action

ALTER DATABASE END BACKUP 구문을 수행한다.


gSQL> ALTER DATABASE END BACKUP;


Database altered.

14175 (SQLSTATE: HY000): cannot execute; database backup is in progress

Cause

Database 에서 full-backup이 진행 중인 상태에서 tablespace 를 생성하거나 tablespace 의 상태를 online 으로 변경하려고 할 때 발생하는 에러이다.

Action

Full-backup 을 종료한 후 다시 시도한다.

14176 (SQLSTATE: HY000): the change tracking file '%s' is inconsistent

Cause

Startup 시 다음과 같은 경우에는 에러가 발생한다.

  • Database signature 와 change tracking 파일의 signature 가 서로 다른 경우

  • Database 의 마지막 checkpoint lsn 과 change tracking 파일의 checkpoint lsn 이 서로 다른 경우


gSQL> alter system open database;


ERR-HY000(14176): the change tracking file '/db/gl_change_tracking_file.ctf' is inconsistent : the change tracking file signature(8A802748744111F1B7547DCB04412231) does not match the database signature(373BB782744611F19F71CF68EBCB0533)

Action

백업된 change tracking 파일을 사용하려면, 백업된 파일들 중에 database signature 가 동일하고 database 의 마지막 checkpoint 을 가진 change tracking 파일을 사용해서 다시 startup 한다.

사용 가능한 change tracking 파일이 없는 경우에는 다음과 같이 change tracking 을 disable 한 후에 다시 enable 한다.


gSQL> alter database disable change tracking;


Database altered.


gSQL> alter database enable change tracking;


Database altered.


gSQL> alter system open database;


System altered.

14177 (SQLSTATE: HY000): of the total '%d' unusable segments, '%d' segments have become usable

Cause

데이터베이스 open 또는 recovery 과정에서 UNUSABLE 상태였던 segment 중 일부가 usable 상태로 전환된 경우에 발생하는 경고 메시지이다. 대상 구문은 정상적으로 수행되고, 메시지에는 전체 UNUSABLE segment 개수와 usable 상태로 전환된 segment 개수가 표시된다.


gSQL> ALTER SYSTEM OPEN DATABASE;


ERR-HY000(14177): of the total '2' unusable segments, '2' segments have become usable

System altered.

Action

모든 UNUSABLE segment 가 usable 상태로 전환된 경우에는 추가 조치가 필요하지 않다.

전체 UNUSABLE segment 개수보다 usable 상태로 전환된 segment 개수가 적은 경우, 남아 있는 UNUSABLE segment 를 확인한 후 recovery, synchronize 또는 DROP UNUSABLE SEGMENTS 구문을 수행한다.

UNUSABLE segment가 존재하는 테이블을 확인하려면 다음과 같이 V$RELATION을 확인한다.


gSQL> SELECT NAME, USABLE FROM V$RELATION WHERE USABLE = FALSE;


NAME USABLE

---- ------

T1 FALSE


1 row selected.

14178 (SQLSTATE: 42000): memory '%s' does not exist in tablespace '%s'

Cause

이름을 변경할 memory가 해당 temporary 테이블스페이스에 존재하지 않아 발생하는 에러이다. 두 개 이상의 세션에서 동일한 temporary 테이블스페이스의 memory 이름을 동시에 변경하는 경우, 먼저 수행된 rename으로 인해 나중에 수행되는 rename이 대상 memory를 찾지 못할 수 있다.


gSQL> CREATE TEMPORARY TABLESPACE temp_tbs MEMORY 'temp_memory1' SIZE 20M;


Tablespace created.


gSQL> ALTER TABLESPACE temp_tbs RENAME MEMORY 'temp_memory1' TO 'temp_memory2';


ERR-42000(14178): memory 'temp_memory1' does not exist in tablespace 'TEMP_TBS'

Action

V$DATAFILE을 사용하여 테이블스페이스에 이름을 변경할 대상 memory가 존재하는지 확인한 후 다시 시도한다.


gSQL> SELECT TBS_NAME, DATAFILE_NAME FROM V$DATAFILE WHERE TBS_NAME = 'TEMP_TBS';


TBS_NAME DATAFILE_NAME

-------- -------------

TEMP_TBS temp_memory


1 row selected.


gSQL> ALTER TABLESPACE temp_tbs RENAME MEMORY 'temp_memory' TO 'temp_memory2';


Tablespace altered.

14179 (SQLSTATE: 42000): datafile '%s' does not exist in tablespace '%s'

Cause

이름을 변경할 datafile이 해당 테이블스페이스에 존재하지 않아 발생하는 에러이다. 두 개 이상의 세션에서 동일한 데이터 테이블스페이스의 datafile 이름을 동시에 변경하는 경우, 먼저 수행된 rename으로 인해 나중에 수행되는 rename이 대상 datafile을 찾지 못할 수 있다.


gSQL> CREATE TABLESPACE test_tbs DATAFILE 'test1.dbf' SIZE 20M;


Tablespace created.


gSQL> ALTER TABLESPACE test_tbs RENAME DATAFILE 'test1.dbf' TO 'test2.dbf';


ERR-42000(14179): datafile 'test1.dbf' does not exist in tablespace 'TEST_TBS'

Action

V$DATAFILE을 사용하여 테이블스페이스에 이름을 변경할 대상 datafile이 존재하는지 확인한 후 다시 시도한다.


gSQL> SELECT TBS_NAME, DATAFILE_NAME FROM V$DATAFILE WHERE TBS_NAME = 'TEST_TBS';


TBS_NAME DATAFILE_NAME

-------- -------------

TEST_TBS test.dbf


1 row selected.


gSQL> ALTER TABLESPACE test_tbs RENAME DATAFILE 'test.dbf' TO 'test2.dbf';


Tablespace altered.

딕셔너리 캐시 관련 에러

15000 (SQLSTATE: HY000): failed to initialize execution library layer

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15001 (SQLSTATE: HY000): execution library layer is not initialized yet

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15002 (SQLSTATE: 42000): %s: schema does not exist

Cause

존재하지 않는 schema 이름을 사용하였다.


gSQL> SELECT ANAL_TABLE_PAGE_STRUCT( 'INVALID', 'T1' ) FROM DUAL;


ERR-42000(15002): "INVALID": schema does not exist :

SELECT ANAL_TABLE_PAGE_STRUCT( 'INVALID', 'T1' ) FROM DUAL

*

ERROR at line 1:

Action

유효한 schema 이름을 사용한다.


gSQL> SELECT ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'T1' ) FROM DUAL;


ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'T1' )

----------------------------------------

1:0


1 row selected.

15003 (SQLSTATE: 42000): %s: table or view does not exist

Cause

존재하지 않는 table 이름을 사용하였다.


SELECT ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'INVALID' ) FROM DUAL;


ERR-42000(15003): "INVALID": table or view does not exist :

SELECT ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'INVALID' ) FROM DUAL

*

ERROR at line 1:

Action

유효한 table 이름을 사용한다.


gSQL> SELECT ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'T1' ) FROM DUAL;


ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'T1' )

----------------------------------------

1:0


1 row selected.

15004 (SQLSTATE: 42000): %s: index does not exist

Cause

존재하지 않는 index 이름을 사용하였다.


gSQL> SELECT ANAL_INDEX_PAGE_STRUCT( 'PUBLIC', 'INVALID' ) FROM DUAL;


ERR-42000(15004): "INVALID": index does not exist :

SELECT ANAL_INDEX_PAGE_STRUCT( 'PUBLIC', 'INVALID' ) FROM DUAL

*

ERROR at line 1:

Action

유효한 index 이름을 사용한다.


gSQL> SELECT ANAL_INDEX_PAGE_STRUCT( 'PUBLIC', 'T1_C1_IDX' ) FROM DUAL;


ANAL_INDEX_PAGE_STRUCT( 'PUBLIC', 'T1_C1_IDX' )

-----------------------------------------------

1:1:1:100


1 row selected.

15005 (SQLSTATE: 42000): %s: column does not exist

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15006 (SQLSTATE: 23000): %s: dictionary integrity constraint violation by concurrent DDL execution

Cause

동일한 이름의 객체를 동시에 생성하여 dictionary 무결성을 위배하였다.


session 1> CREATE TABLESPACE TEST_TBS DATAFILE 'TEST_TBS.dbf' SIZE 10M;


Tablespace created.


session 2> CREATE TABLESPACE TEST_TBS DATAFILE 'TEST_TBS.dbf' SIZE 10M;


ERR-23000(15006): "TABLESPACES_UNIQUE_TABLESPACE_NAME": dictionary integrity constraint violation by concurrent DDL execution

Action

서로 다른 session 에서 동일한 객체를 생성하지 않는다.

15007 (SQLSTATE: HY090): not enough stack space to add entries

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15008 (SQLSTATE: HY000): table related objects are modified while validation

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15009 (SQLSTATE: HY000): Invalid argument

Cause

해당 함수에서 사용할 수 없는 인자가 사용되었다.


gSQL> CREATE GLOBAL TEMPORARY TABLE t1( c1 INTEGER, c2 INTEGER );


Table created.


gSQL> SELECT ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'T1' ) FROM DUAL;


ERR-HY000(15009): Invalid argument :

SELECT ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'T1' ) FROM DUAL

*

ERROR at line 1:

Action

해당 함수는 base table 만을 입력인자로 사용할 수 있다.


gSQL> CREATE TABLE T1 ( C1 VARCHAR(30) );


Table created.


SELECT ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'T1' ) FROM DUAL;


ANAL_TABLE_PAGE_STRUCT( 'PUBLIC', 'T1' )

----------------------------------------

1:0


1 row selected.

15010 (SQLSTATE: 42000): object modified by concurrent DDL execution

Cause

동시에 수행되는 DDL 로 인해 객체가 변경되었다.

Action

동일한 객체에 대해 DDL 을 동시에 수행하지 않는다.

15011 (SQLSTATE: HYC00): not implemented feature, in a function %s

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15012 (SQLSTATE: 42000): user dropped by other session

Cause

현재 접속한 user 객체가 다른 session 에서 drop 되었다.


% gsql u1 u1


Connected to GOLDILOCKS Database.


gSQL> select * from dual;


DUMMY

-----

X


1 row selected.


gSQL> select * from dual;


ERR-42000(15012): user dropped by other session

Action

유효한 user 로 다시 접속한다.

15013 (SQLSTATE: 42000): user default schema dropped

Cause

SET SCHEMA 로 session 에 설정한 schema 가 drop 되었다.


gSQL> create schema s1;


Schema created.


gSQL> set schema s1;


Session set.


gSQL> drop schema s1;


Schema dropped.


gSQL> select * from dual;


ERR-42000(15013): user default schema dropped

Action

다시 접속한다.

15014 (SQLSTATE: 42000): user default data tablespace dropped

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15015 (SQLSTATE: 42000): user default temporary tablespace dropped

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15016 (SQLSTATE: 0Y002): limit(%d) on the number of named cursor exceeded

Cause

하나의 session 에서 커서 선언이 MAXIMUM_NAMED_CURSOR_COUNT 개수를 초과하였다.


gSQL> ALTER SYSTEM SET MAXIMUM_NAMED_CURSOR_COUNT = 3 DEFERRED;


System altered.


% gsql test test


Connected to GOLDILOCKS Database.


gSQL> DECLARE cur1 CURSOR FOR SELECT * FROM t1;


Cursor declared.


gSQL> DECLARE cur2 CURSOR FOR SELECT * FROM t1;


Cursor declared.


gSQL> DECLARE cur3 CURSOR FOR SELECT * FROM t1;


Cursor declared.


gSQL> DECLARE cur4 CURSOR FOR SELECT * FROM t1;


ERR-0Y002(15016): limit(3) on the number of named cursor exceeded

Action

MAXIMUM_NAMED_CURSOR_COUNT 프로퍼티 값을 조정한다.

15017 (SQLSTATE: 42000): DDL not allowed for supplemental log table

Cause

supplemental log 가 설정된 table 에 대해 DDL 을 수행할 수 없다.


gSQL> ALTER TABLE t1 ADD SUPPLEMENTAL LOG DATA ( PRIMARY KEY ) COLUMNS;


Table altered.


gSQL> ALTER SESSION SET DISABLE_DDL_CDC_GIVEUP = ON;


Session altered.


gSQL> DROP TABLE t1;


ERR-42000(15017): DDL not allowed for supplemental log table

Action

DISABLE_DDL_CDC_GIVEUP 프로퍼티 값을 OFF 한다.

15018 (SQLSTATE: 42000): cluster member '%s' has already joined in an other cluster system

Cause

특정 cluster system 에 속한 cluster member 는 다른 cluster system 에 join 할 수 없다.

Action

cluter member 를 ALTER DATABASE RESET LOCAL CLUSTER MEMBER 구문으로 reset 한 후 다른 cluster system 에 추가한다.

15019 (SQLSTATE: 42000): the %s of cluster member '%s' is not compatible with the cluster system

Cause

cluster system 에서 제거된 cluster member 는 다시 해당 cluster system 에 다시 join 할 수 없다.


gSQL> ALTER SYSTEM JOIN DATABASE;


ERR-42000(16363): the cluster member 'G4N1' failed to join the cluster system

ERR-42000(15019): MEMBER(G1N1): the CLUSTER REMOTE MEMBER NAME of cluster member 'G4N1' is not compatible with the cluster system

Action

cluter member 를 ALTER DATABASE RESET LOCAL CLUSTER MEMBER 구문으로 reset 한 후 cluster system 에 추가한다.

15020 (SQLSTATE: 42000): tablespace '%s' of the cluster system does not exist at cluster member '%s'

Cause

추가하려는 cluster member 에 cluster system 과 동일한 tablespace 가 생성되어 있지 않다.


gSQL> CREATE CLUSTER GROUP g4 CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 14150;


ERR-42000(15020): MEMBER(G4N1): tablespace 'TEST_TBS' of the cluster system does not exist at cluster member 'G4N1'

Action

추가하려는 cluter member 에 cluster system 과 동일한 tablespace 를 추가한다.

15021 (SQLSTATE: 42000): tablespace '%s' of the cluster member '%s' does not exist at the cluster system

Cause

추가하려는 cluster member 에 cluster system 에 없는 tablespace 가 존재한다.


gSQL> CREATE CLUSTER GROUP g4 CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 14150;


ERR-42000(15021): MEMBER(G4N1): tablespace 'TEMP_TBS' of the cluster member 'G4N1' does not exist at the cluster system

Action

추가하려는 cluster member 에서 cluster system 에 존재하지 않는 tablespace 를 제거한다.

15022 (SQLSTATE: 42000): the %s of the tablespace '%s' at cluster member '%s' is not compatible with the cluster system

Cause

추가하려는 cluster member 에 cluster system 의 tablespace 와 이름은 같으나 다른 종류의 tablespace 가 존재한다.


gSQL> CREATE CLUSTER GROUP g4 CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 14150;


ERR-42000(15022): MEMBER(G4N1): the USAGE(data/temporary) TYPE of the tablespace 'TEST_TBS' at cluster member 'G4N1' is not compatible with the cluster system

Action

추가하려는 cluster member 에서 기존 tablespace 를 제거하고 cluster system 와 동일한 유형의 tablespace 를 생성한다.

15023 (SQLSTATE: HY000): limit(%d) on the number of named instant table exceeded

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15024 (SQLSTATE: 42000): the cluster member '%s' does not join in a cluster system

Cause

새로운 cluster member 를 cluster system 에 join 하려고 시도하였다.


ALTER SYSTEM JOIN DATABASE;


ERR-42000(16363): the cluster member 'G1N2' failed to join the cluster system

ERR-42000(15024): MEMBER(G2N2): the cluster member 'G2N2' does not join in a cluster system

Action

새로운 cluster member 는 cluster system 에 join 이 아닌 ADD 해야 한다.

15025 (SQLSTATE: 42000): startup phase of new cluster member should be OPEN

Cause

새로운 cluster member 의 startup 단계가 OPEN 이 아니어서 cluster system 에 추가할 수 없다.

Action

새로운 cluster member 의 startup 단계를 OPEN 단계로 변경한 후 추가한다.

15026 (SQLSTATE: HY000): internal error, in a function %s

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15027 (SQLSTATE: 42000): attempt to create, alter or drop an index on temporary table already in use

Cause

global temporary table 을 사용 중인 상태에서 DDL 을 수행하였다.


gSQL> CREATE GLOBAL TEMPORARY TABLE TEMP_T1( I1 INTEGER, I2 VARCHAR(10) );


Table created.


gSQL> COMMIT;


Commit complete.


gSQL> INSERT INTO TEMP_T1 VALUES( 1, 'aaa' );


1 row created.


gSQL> DROP TABLE TEMP_T1;


ERR-42000(15027): attempt to create, alter or drop an index on temporary table already in use

Action

global temporary table 은 사용 중이 아닐 때, DDL 을 수행할 수 있다.


gSQL> DROP TABLE TEMP_T1;


ERR-42000(15027): attempt to create, alter or drop an index on temporary table already in use


gSQL> COMMIT;


Commit complete.


gSQL> DROP TABLE TEMP_T1;


Table dropped.

15028 (SQLSTATE: 42000): user default index tablespace dropped

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

15029 (SQLSTATE: 2F000): limit(%d) on the number of package instance exceeded

Cause

session 에 생성한 package instance 의 개수가 최대치를 초과하였다.

Action

MAXIMUM_PACKAGE_INSTANCE_COUNT 프로퍼티의 값을 변경한다.

15030 (SQLSTATE: 42000): session default role dropped

Cause

SET ROLE 로 session 에 설정한 role 이 drop 되었다.


gSQL> create role role1;


Role created.


gSQL> set role role1;


Session set.


gSQL> drop role role1;


Role dropped.


gSQL> select * from dual;


ERR-42000(15030): session default role dropped

Action

다시 접속한다.

15031 (SQLSTATE: 39000): limit(%d) on the number of loaded library exceeded

Cause

process 가 loading 한 user library 의 개수가 최대치를 초과하였다.

Action

MAXIMUM_LOADED_LIBRARY_COUNT 프로퍼티의 값을 변경한다.

15032 (SQLSTATE: 42000): unmatched bracket in regular expression

Cause

정규표현식 [ ]에 대한 표현이 올바르지 않다.


gSQL> SELECT REGEXP_COUNT( 'abc123', '[abc' ) FROM dual;

ERR-42000(15032): unmatched bracket in regular expression :

SELECT REGEXP_COUNT( 'abc123', '[abc' ) FROM dual

*

ERROR at line 1:

Action

'[', 문자리스트 이후에는 ] 가 기술되어 [ ] operator가 완성되어야 한다.

참조: Regular Expression Operators

15033 (SQLSTATE: 42000): unmatched parentheses in regular expression 

Cause

정규표현식 ( )에 대한 표현이 올바르지 않다.


gSQL> SELECT REGEXP_COUNT( 'abc123', '(abc' ) FROM dual;

ERR-42000(15033): unmatched parentheses in regular expression :

SELECT REGEXP_COUNT( 'abc123', '(abc' ) FROM dual

*

ERROR at line 1:

Action

괄호의 쌍이 일치해야 한다.

참조: Regular Expression Operators

15034 (SQLSTATE: 42000): invalid interval value in regular expression

Cause

정규표현식의 반복 횟수 범위지정이 올바르지 않다.


gSQL> SELECT REGEXP_SUBSTR( 'aaaabc', 'a{5,1}' ) FROM dual;

ERR-42000(15034): invalid interval value in regular expression :

SELECT REGEXP_SUBSTR( 'aaaabc', 'a{5,1}' )

*

ERROR at line 1:

Action

반복 횟수 범위지정은 {최소, 최대}의 형식으로 기술한다. 예: a{1,5}

15035 (SQLSTATE: 42000): maximum repetition count in regular expression exceeded

Cause

정규표현식의 최대 반복 횟수를 초과하였다.


gSQL> SELECT REGEXP_SUBSTR( 'x', 'a{1,2147483648}' ) FROM dual;

ERR-42000(15035): maximum repetition count in regular expression exceeded :

SELECT REGEXP_SUBSTR( 'x', 'a{1,2147483648}' ) FROM dual

*

ERROR at line 1:

Action

최대 반복 횟수는 2147483647 까지 지정할 수 있다. 예: a{1,2147483647}

15036 (SQLSTATE: 42000): invalid repetition operand in regular expression

Cause

반복연산자의 표현이 잘못되었다.

반복연산자만 단독으로 기술할 수 없다. 예: '?'

반복연산자를 연이어 기술할 수 없다. 예: 'a+{1,3}


gSQL> SELECT REGEXP_SUBSTR( 'a', 'a+{1,3}' ) from dual;

ERR-42000(15036): invalid repetition operand in regular expression :

SELECT REGEXP_SUBSTR( 'a', 'a+{1,3}' ) from dual

*

ERROR at line 1:

Action

반복연산자 이전에 expression 이 표현되도록 기술한다.

예: 'a?', '(a+){1,3}'

15037 (SQLSTATE: 42000): invalid character class in regular expression

Cause

정규표현식에 정의되지 않은 character class 를 기술하였다.


gSQL> SELECT REGEXP_SUBSTR( 'abc123', '[[:alphanumeric:]]' ) FROM dual;

ERR-42000(15037): invalid character class in regular expression :

SELECT REGEXP_SUBSTR( 'abc123', '[[:alphanumeric:]]' ) FROM dual

*

ERROR at line 1:

Action

정의된 character class 를 사용한다.

참조: Regular Expression Operators

15038 (SQLSTATE: 42000): invalid character range in regular expression

Cause

정규표현식의 범위지정이 올바르지 않다.

[minvalue-maxvalue] 의 형식으로 범위를 기술해야 한다.


gSQL> SELECT REGEXP_SUBSTR( 'x', '[z-a]' ) FROM dual;

ERR-42000(15038): invalid character range in regular expression :

SELECT REGEXP_SUBSTR( 'x', '[z-a]' ) FROM dual

*

ERROR at line 1:

Action

[minvalue-maxvalue] 의 형식으로 범위를 지정한다. 예) [a-z]

15039 (SQLSTATE: 42000): invalid escape sequence in regular expression

Cause

\ (escape character) 문자의 표현이 잘못되었다.


gSQL> SELECT REGEXP_SUBSTR( '\', '\' ) from dual;

ERR-42000(15039): invalid escape sequence in regular expression :

SELECT REGEXP_SUBSTR( '\', '\' ) from dual

*

ERROR at line 1:

Action

\ (escape character) 뒤에 표현하고자 하는 문자를 기술한다.

예: REGEXP_SUBSTR( '\', '\\' )

15040 (SQLSTATE: 42000): invalid back reference number in regular expression

Cause

정규표현식에 부적합한 back reference 가 기술되었다.

back reference는 앞서 기술된 subexpression 을 참조할 수 있다.


gSQL> SELECT REGEXP_SUBSTR( 'abcabc', '(abc)\3' ) FROM dual;

ERR-42000(15040): invalid back reference number in regular expression :

SELECT REGEXP_SUBSTR( 'abcabc', '(abc)\3' ) FROM dual

*

ERROR at line 1:

Action

back reference 는 앞서 기술된 subexpression 을 참조할 수 있다.

예: '(ab)(cd)\1\2'

참조: Regular Expression Operators

15041 (SQLSTATE: 42000): invalid regular expression match param %s

Cause

정규표현식에서 정의된 matching option 을 기술하지 않았다.


gSQL> SELECT REGEXP_SUBSTR( 'abc', '.+', 1, 1, 'I' ) FROM dual;

ERR-42000(15041): invalid regular expression match param I :


SELECT REGEXP_SUBSTR( 'abc', '.+', 1, 1, 'I' ) FROM dual

*

ERROR at line 1:

Action

정규표현식에서 정의된 matching option인 i, c, n, m, x 를 목적에 맞게 기술한다.

15042 (SQLSTATE: 42000): regular expression too long

Cause

정규표현식이 지원하는 최대 길이 512 byte 를 초과하였다.

Action

정규표현식을 허용하는 최대 길이인 512 byte 내외로 기술한다.

15043 (SQLSTATE: 42000): invalid regular expression return_opt %ld

Cause

관련함수 인자인 return_opt 에 0 과 1 이 아닌 값이 기술되었다.


gSQL> SELECT REGEXP_INSTR( 'abc123가나다', '[[:digit:]]{3}', 1, 1, -1 ) from dual;

ERR-42000(15043): invalid regular expression return_opt -1 :

SELECT REGEXP_INSTR( 'abc123가나다', '[[:digit:]]{3}', 1, 1, -1 ) from dual

*

ERROR at line 1:

Action

관련함수 인자인 return_opt 의 목적에 맞게 0 또는 1 을 지정한다.

15044 (SQLSTATE: 42000): string literal too long

Cause

연산의 결과로 관련 타입의 최대크기를 초과하는 string 이 생성되거나 정의되었다.


gSQL> SELECT REGEXP_REPLACE ( varchar_col, 'a', 'bb' ) AS rep_col FROM t1;

ERR-42000(15044): string literal too long :

SELECT REGEXP_REPLACE ( varchar_col,

*

ERROR at line 1:

Action

허용되는 타입의 크기에 맞게 조정하거나,

연산의 결과를 수용할 수 있는 타입으로 타입변환을 할 수 있다.

예: REGEXP_REPLACE ( cast( varchar_col as long varchar ), 'a', 'bb' ) AS rep_col

15045 (SQLSTATE: 42000): argument '%ld' is out of range

Cause

관련함수의 인자에 허용하는 범위를 넘어선 값이 기술되었다.


gSQL> SELECT REGEXP_INSTR( 'abc', '\w', -1 ) FROM dual;

ERR-42000(15045): argument '-1' is out of range :

SELECT REGEXP_INSTR( 'abc', '\w', -1 ) FROM dual

*

ERROR at line 1:

Action

관련함수의 인자에 허용하는 범위의 값을 기술한다.

15046 (SQLSTATE: 42000): the '%s' value must be a number between %ld and %ld

Cause

관련 함수의 인자에 허용 범위를 벗어난 값이 기술되었다.


gSQL> SELECT TABLE_PHYSICAL_STATS( T1, 1000 ) FROM DUAL;

ERR-42000(15046): the 'sampling ratio' value must be a number between 1 and 100 :

SELECT TABLE_PHYSICAL_STATS( T1, 1000 ) FROM DUAL

*

ERROR at line 1:

Action

관련 함수의 인자에는 허용 범위 내의 값을 기술한다.

SQL 구문 처리 관련 에러

16000 (SQLSTATE: HY000): failed to initialize sql processor layer

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16001 (SQLSTATE: HYC00): not implemented feature, in a function %s

Cause

SQL 표준에는 존재하나 미구현 기능이다.


gSQL>

ALTER TABLE child ADD CONSTRAINT child_fk

FOREIGN KEY( c_fk ) REFERENCES parent( p_pk ) MATCH PARTIAL;

ERR-HYC00(16001): not implemented feature, in a function qlrValidateForeignKeyMatchType() :

FOREIGN KEY( c_fk ) REFERENCES parent( p_pk ) MATCH PARTIAL

*

ERROR at line 2:

Action

해당 기능은 사용할 수 없다.

16002 (SQLSTATE: HY000): invalid function sequence of sql processor layer

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16003 (SQLSTATE: 42000): identifier is too long

Cause

컬럼의 이름이 최대 길이를 초과하였다.


gSQL> CREATE TABLE T1 ( c234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 INTEGER );


ERR-42000(16003): identifier is too long :

CREATE TABLE T1 ( c234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 INTEGER )

*

ERROR at line 1:

Action

식별자 이름은 128 bytes 보다 작아야 한다.


gSQL> CREATE TABLE T1 ( c234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 INTEGER );


Table created.

16004 (SQLSTATE: 28000): invalid username/password; logon denied

Cause

사용자 이름 또는 비밀번호가 잘못되었다.


% gsql invalid invalid


ERR-28000(16004): invalid username/password; logon denied

Action

올바른 사용자 이름과 비밀번호로 접속한다.

16005 (SQLSTATE: 42000): name '%s.%s' is already used by an existing object

Cause

동일한 이름을 갖는 객체가 존재한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


ERR-42000(16005): name 'PUBLIC.T1' is already used by an existing object :

CREATE TABLE t1 ( c1 INTEGER )

*

ERROR at line 1:

Action

생성하고자 하는 객체의 이름을 확인한다.

16006 (SQLSTATE: 42000): schema '%s' does not exist

Cause

해당 스키마가 존재하지 않는다.


gSQL> CREATE TABLE invalid.t1 ( c1 INTEGER );


ERR-42000(16006): schema 'INVALID' does not exist :

CREATE TABLE invalid.t1 ( c1 INTEGER )

*

ERROR at line 1:

Action

스키마 이름을 확인한다.

16007 (SQLSTATE: 42000): schema '%s' is not writable

Cause

시스템 스키마에 객체를 생성할 수 없다.


gSQL> CREATE TABLE definition_schema.t1 ( c1 INTEGER );


ERR-42000(16007): schema 'DEFINITION_SCHEMA' is not writable :

CREATE TABLE definition_schema.t1 ( c1 INTEGER )

*

ERROR at line 1:

Action

사용 가능한 스키마를 확인한다.


gSQL> CREATE TABLE public.t1 ( c1 INTEGER );


Table created.

16008 (SQLSTATE: 42000): tablespace '%s' does not exist

Cause

테이블스페이스가 존재하지 않는다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) TABLESPACE invalid;


ERR-42000(16008): tablespace 'INVALID' does not exist :

CREATE TABLE t1 ( c1 INTEGER ) TABLESPACE invalid

*

ERROR at line 1:

Action

사용 가능한 테이블스페이스를 명시한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) TABLESPACE mem_data_tbs;


Table created.

16009 (SQLSTATE: 42000): tablespace '%s' is not writable

Cause

시스템 테이블스페이스에는 사용자 객체를 생성할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) TABLESPACE dictionary_tbs;


ERR-42000(16009): tablespace 'DICTIONARY_TBS' is not writable :

CREATE TABLE t1 ( c1 INTEGER ) TABLESPACE dictionary_tbs

*

ERROR at line 1:

Action

사용 가능한 테이블스페이스를 명시한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) TABLESPACE mem_data_tbs;


Table created.

16010 (SQLSTATE: 42000): invalid value for PCTFREE or PCTUSED

Cause

유효하지 않은 PCTFREE 값을 사용하였다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) PCTFREE 100;


ERR-42000(16010): invalid value for PCTFREE or PCTUSED :

CREATE TABLE t1 ( c1 INTEGER ) PCTFREE 100

*

ERROR at line 1:

Action

아래와 같이 유효한 범위 (0~99)의 PCTFREE 값을 사용한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) PCTFREE 10;


Table created.

16011 (SQLSTATE: 42000): invalid INITRANS option value

Cause

유효하지 않은 INITRANS 값을 사용하였다.


gSQL> ALTER TABLE t1 INITRANS 100;


ERR-42000(16011): invalid INITRANS option value :

ALTER TABLE t1 INITRANS 100

*

ERROR at line 1:

Action

아래와 같이 유효한 범위 (1~32)의 INITRANS 값을 사용한다.


gSQL> ALTER TABLE t1 INITRANS 4;


Table altered.

16012 (SQLSTATE: 42000): duplicate column name

Cause

동일한 컬럼이 존재한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c1 INTEGER );


ERR-42000(16012): duplicate column name :

CREATE TABLE t1 ( c1 INTEGER, c1 INTEGER )

*

ERROR at line 1:

Action

컬럼 이름을 다르게 한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );


Table created.

16013 (SQLSTATE: HY000): invalid value is prevented in validation step

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16014 (SQLSTATE: 22023): INCREMENT must be a non-zero integer

Cause

시퀀스의 증가값으로 0 을 사용할 수 없다.


gSQL> CREATE SEQUENCE seq1 INCREMENT BY 0;


ERR-22023(16014): INCREMENT must be a non-zero integer :

CREATE SEQUENCE seq1 INCREMENT BY 0

*

ERROR at line 1:

Action

시퀀스의 증가값으로 0 이 아닌 정수값을 사용한다.


gSQL> CREATE SEQUENCE seq1 INCREMENT BY 1;


Sequence created.

16015 (SQLSTATE: 22023): START WITH cannot be less than MINVALUE

Cause

시퀀스의 MINVALUE 보다 작은 시작값을 사용할 수 없다.


gSQL> CREATE SEQUENCE seq1 START WITH 10 MINVALUE 20;


ERR-22023(16015): START WITH cannot be less than MINVALUE :

CREATE SEQUENCE seq1 START WITH 10 MINVALUE 20

*

ERROR at line 1:

Action

시퀀스의 시작값으로 MINVALUE 보다 크거나 같은 값을 사용한다.


gSQL> CREATE SEQUENCE seq1 START WITH 20 MINVALUE 20;


Sequence created.

16016 (SQLSTATE: 22023): START WITH cannot be more than MAXVALUE

Cause

시퀀스의 MAXVALUE 보다 큰 시작값을 사용할 수 없다.


gSQL> CREATE SEQUENCE seq1 START WITH 40 MAXVALUE 30;


ERR-22023(16016): START WITH cannot be more than MAXVALUE :

CREATE SEQUENCE seq1 START WITH 40 MAXVALUE 30

*

ERROR at line 1:

Action

시퀀스의 시작값으로 MAXVALUE 보다 작거나 같은 값을 사용한다.


gSQL> CREATE SEQUENCE seq1 START WITH 1 MAXVALUE 30;


Sequence created.

16017 (SQLSTATE: 22023): the number of values to CACHE must be greater than 1

Cause

시퀀스의 CACHE 값은 1보다 커야 한다.


gSQL> CREATE SEQUENCE seq1 CACHE 1;


ERR-22023(16017): the number of values to CACHE must be greater than 1 :

CREATE SEQUENCE seq1 CACHE 1

*

ERROR at line 1:

Action

시퀀스의 CACHE 값으로 1보다 큰 값을 사용한다.


gSQL> CREATE SEQUENCE seq1 CACHE 20;


Sequence created.

16018 (SQLSTATE: 22023): number to CACHE must be less than one cycle

Cause

시퀀스의 CACHE 크기는 한 cycle (아래의 예는 100) 값보다 작아야 한다.


gSQL> CREATE SEQUENCE seq1 MINVALUE 1 MAXVALUE 100 CACHE 1000 CYCLE;


ERR-22023(16018): number to CACHE must be less than one cycle :

CREATE SEQUENCE seq1 MINVALUE 1 MAXVALUE 100 CACHE 1000 CYCLE

*

ERROR at line 1:

Action

시퀀스의 CACHE 값으로 한 cycle (100) 보다 작은 값을 사용한다.


gSQL> CREATE SEQUENCE seq1 MINVALUE 1 MAXVALUE 100 CACHE 20 CYCLE;


Sequence created.

16019 (SQLSTATE: 22023): MINVALUE must be less than MAXVALUE

Cause

시퀀스의 MINVALUE 가 MAXVALUE 보다 크다.


gSQL> CREATE SEQUENCE seq1 MINVALUE 100 MAXVALUE 10;


ERR-22023(16019): MINVALUE must be less than MAXVALUE :

CREATE SEQUENCE seq1 MINVALUE 100 MAXVALUE 10

*

ERROR at line 1:

Action

시퀀스의 MINVALUE 는 MAXVALUE 보다 작아야 한다.


gSQL> CREATE SEQUENCE seq1 MINVALUE 10 MAXVALUE 100;


Sequence created.

16020 (SQLSTATE: 22023): INCREMENT must be less than MAXVALUE minus MINVALUE

Cause

시퀀스의 INCREMENT BY 값이 (MAXVALUE - MINVALUE) 값보다 크다.


gSQL> CREATE SEQUENCE seq1 INCREMENT BY 10 MINVALUE 10 MAXVALUE 15;


ERR-22023(16020): INCREMENT must be less than MAXVALUE minus MINVALUE :

CREATE SEQUENCE seq1 INCREMENT BY 10 MINVALUE 10 MAXVALUE 15

*

ERROR at line 1:

Action

시퀀스의 INCREMENT BY 값이 (MAXVALUE - MINVALUE) 값보다 작아야 한다.


gSQL> CREATE SEQUENCE seq1 INCREMENT BY 1 MINVALUE 10 MAXVALUE 15;


Sequence created.

16021 (SQLSTATE: 22023): descending sequences that CYCLE must specify MINVALUE

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16022 (SQLSTATE: 22023): ascending sequences that CYCLE must specify MAXVALUE

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16023 (SQLSTATE: 22023): duplicate or conflicting CACHE/NO CACHE specifications

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16024 (SQLSTATE: 42000): numeric precision specifier is out of range( %d to %d )

Cause

NUMERIC 타입의 precision 값이 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 NUMERIC(100) );


ERR-42000(16024): numeric precision specifier is out of range( 1 to 38 ) :

CREATE TABLE t1 ( c1 NUMERIC(100) )

*

ERROR at line 1:

Action

NUMERIC 타입의 precision 의 유효값은 1 ~ 38 이다.


gSQL> CREATE TABLE t1 ( c1 NUMERIC(38) );


Table created.

16025 (SQLSTATE: 42000): numeric scale specifier is out of range( %d to %d )

Cause

NUMERIC 타입의 scale 값이 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 NUMERIC(38,200) );


ERR-42000(16025): numeric scale specifier is out of range( -84 to 127 ) :

CREATE TABLE t1 ( c1 NUMERIC(38,200) )

*

ERROR at line 1:

Action

NUMERIC 타입의 scale 의 유효값은 -84 ~ 127 이다.


gSQL> CREATE TABLE t1 ( c1 NUMERIC(38,0) );


Table created.

16026 (SQLSTATE: 42000): character length specifier is out of range( 1 to %d )

Cause

CHAR 타입의 length 값이 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 CHAR(2001) );


ERR-42000(16026): character length specifier is out of range( 1 to 2000 ) :

CREATE TABLE t1 ( c1 CHAR(2001) )

*

ERROR at line 1:

Action

CHAR 타입의 length 값은 1 ~ 2000 이어야 한다.


gSQL> CREATE TABLE t1 ( c1 CHAR(2000) );


Table created.

16027 (SQLSTATE: 42000): character varying length specifier is out of range( 1 to %d )

Cause

VARCHAR 타입의 length 값이 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 VARCHAR(4001) );


ERR-42000(16027): character varying length specifier is out of range( 1 to 4000 ) :

CREATE TABLE t1 ( c1 VARCHAR(4001) )

*

ERROR at line 1:

Action

VARCHAR 타입의 length 값은 1 ~ 4000 이어야 한다.


gSQL> CREATE TABLE t1 ( c1 VARCHAR(4000) );


Table created.

16028 (SQLSTATE: 42000): binary length specifier is out of range( 1 to %d )

Cause

BINARY 타입의 length 값이 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 BINARY(2001) );


ERR-42000(16028): binary length specifier is out of range( 1 to 2000 ) :

CREATE TABLE t1 ( c1 BINARY(2001) )

*

ERROR at line 1:

Action

BINARY 타입의 length 값은 1 ~ 2000 이어야 한다.


gSQL> CREATE TABLE t1 ( c1 BINARY(2000) );


Table created.

16029 (SQLSTATE: 42000): binary varying length specifier is out of range( 1 to %d )

Cause

VARBINARY 타입의 length 값이 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 VARBINARY(4001) );


ERR-42000(16029): binary varying length specifier is out of range( 1 to 4000 ) :

CREATE TABLE t1 ( c1 VARBINARY(4001) )

*

ERROR at line 1:

Action

VARBINARY 타입의 length 값은 1 ~ 4000 이어야 한다.


gSQL> CREATE TABLE t1 ( c1 VARBINARY(4000) );


Table created.

16030 (SQLSTATE: 42000): name already used by an existing constraint

Cause

동일한 constraint 이름이 존재한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER CONSTRAINT t1_same_const NOT NULL,

c2 INTEGER CONSTRAINT t1_same_const NOT NULL );


ERR-42000(16030): name already used by an existing constraint :

c2 INTEGER CONSTRAINT t1_same_const NOT NULL )

*

ERROR at line 2:

Action

아래와 같이 서로 다른 constraint 이름을 사용한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER CONSTRAINT t1_c1_const NOT NULL,

c2 INTEGER CONSTRAINT t1_c2_const NOT NULL );


Table created.

16031 (SQLSTATE: 42000): auto-generated name already used by an existing constraint, specify unique constraint name

Cause

자동 생성한 constraint 이름이 이미 존재한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER CONSTRAINT t1_not_null_c2 NOT NULL, c2 INTEGER );


Table created.


gSQL> ALTER TABLE t1 ALTER COLUMN c2 SET NOT NULL;


ERR-42000(16031): auto-generated name already used by an existing constraint, specify unique constraint name

Action

아래와 같이 새로운 constraint 이름을 직접 기술한다.


gSQL> ALTER TABLE t1 ALTER COLUMN c2 SET CONSTRAINT t1_c2_not_null NOT NULL;


Table altered.

16032 (SQLSTATE: 42000): table can have only one primary key

Cause

하나의 테이블에는 하나의 PRIMARY KEY 만 생성할 수 있다.


gSQL> CREATE TABLE t1 ( c1 INTEGER PRIMARY KEY, c2 INTEGER PRIMARY KEY );


ERR-42000(16032): table can have only one primary key :

CREATE TABLE t1 ( c1 INTEGER PRIMARY KEY, c2 INTEGER PRIMARY KEY )

*

ERROR at line 1:

Action

아래와 같이 하나의 PRIMARY KEY 만 생성하거나, 여러 컬럼의 조합으로 PRIMARY KEY 를 생성한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER PRIMARY KEY, c2 INTEGER );


Table created.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER, PRIMARY KEY(c1,c2) );


Table created.

16033 (SQLSTATE: 42000): such unique or primary key already exists in the table

Cause

이미 동일한 unique 제약 조건이 존재한다.


gSQL> ALTER TABLE t1 ADD CONSTRAINT t1_unique UNIQUE(c1);


ERR-42000(16033): such unique or primary key already exists in the table :

ALTER TABLE t1 ADD CONSTRAINT t1_unique UNIQUE(c1)

*

ERROR at line 1:

Action

테이블의 unique 제약 조건 정보를 확인한다.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) TRUE

C2 NUMBER(10,0) TRUE


INDEX_NAME TABLESPACE_NAME INDEX_TYPE IS_UNIQUE COLUMNS

------------------ --------------- ---------- --------- -------

T1_UNIQUE_C1_INDEX MEM_TEMP_TBS BTREE TRUE C1


CONSTRAINT_NAME CONSTRAINT_TYPE ASSOCIATED_INDEX COLUMNS

--------------- --------------- ------------------ -------

T1_UNIQUE_C1 UNIQUE T1_UNIQUE_C1_INDEX C1

16034 (SQLSTATE: 42000): name already used by an existing index

Cause

이름이 동일한 인덱스가 존재한다.


gSQL> CREATE TABLE t2 ( c1 INTEGER UNIQUE INDEX idx1 );


ERR-42000(16034): name already used by an existing index :

CREATE TABLE t2 ( c1 INTEGER UNIQUE INDEX idx1 )

*

ERROR at line 1:

Action

존재하지 않는 인덱스 이름을 사용한다.


gSQL> CREATE TABLE t2 ( c1 INTEGER UNIQUE INDEX idx2 );


Table created.

16035 (SQLSTATE: 42000): auto-generated name already used by an existing index, specify non-duplicate index name

Cause

자동 생성한 인덱스 이름이 이미 사용 중이다.


gSQL> CREATE TABLE t1 ( c1 INTEGER PRIMARY KEY INDEX t2_primary_key_index );


Table created.


gSQL> CREATE TABLE t2 ( c1 INTEGER PRIMARY KEY );


ERR-42000(16035): auto-generated name already used by an existing index, specify non-duplicate index name :

CREATE TABLE t2 ( c1 INTEGER PRIMARY KEY )

*

ERROR at line 1:

Action

새로운 인덱스 이름을 부여한다.


gSQL> CREATE TABLE t2 ( c1 INTEGER PRIMARY KEY INDEX new_index_name );


Table created.

16036 (SQLSTATE: 42000): '%s': invalid identifier

Cause

존재하지 않는 컬럼이다.


gSQL> SELECT * FROM t1 WHERE invalid = 1;


ERR-42000(16036): 'INVALID': invalid identifier :

SELECT * FROM t1 WHERE invalid = 1

*

ERROR at line 1:

Action

사용 가능한 컬럼 이름을 확인한다.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) FALSE

16037 (SQLSTATE: 42000): maximum number of key columns exceeded

Cause

최대 key column 개수를 초과하였다.


gSQL>

CREATE INDEX idx1 ON t1 (c01, c02, c03, c04, c05, c06, c07, c08, c09, c10,

c11, c12, c13, c14, c15, c16, c17, c18, c19, c20,

c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,

c31, c32, c33, c34, c35 );


ERR-42000(16037): maximum number of key columns exceeded :

c31, c32, c33, c34, c35 )

*

ERROR at line 4:

Action

최대 key column 개수는 32 개이다.


gSQL>

CREATE INDEX idx1 ON t1 (c01, c02, c03, c04, c05, c06, c07, c08, c09, c10,

c11, c12, c13, c14, c15, c16, c17, c18, c19, c20,

c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,

c31, c32 );


Index created.

16038 (SQLSTATE: 23000): integrity constraint violation

Cause

deferred constraint 의 제약조건을 위반한 상태에서 IMMEDIATE 로 전환할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER CONSTRAINT t1_pk PRIMARY KEY DEFERRABLE, c2 INTEGER );

gSQL> COMMIT;


gSQL> SET CONSTRAINTS t1_pk DEFERRED;


Constraints set.


gSQL> INSERT INTO t1 VALUES ( 1, 1 );


1 row created.


gSQL> INSERT INTO t1 VALUES ( 1, 2 );


1 row created.


gSQL> SET CONSTRAINTS t1_pk IMMEDIATE;


ERR-23000(16038): integrity constraint violation : T1_PK(1)

Action

제약조건을 위반하지 않은 상태로 만든 후 IMMEDIATE 로 전환한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER CONSTRAINT t1_pk PRIMARY KEY DEFERRABLE, c2 INTEGER );

gSQL> COMMIT;


gSQL> SET CONSTRAINTS t1_pk DEFERRED;


Constraints set.


gSQL> INSERT INTO t1 VALUES ( 1, 1 );


1 row created.


gSQL> INSERT INTO t1 VALUES ( 1, 2 );


1 row created.


gSQL> DELETE FROM t1 WHERE c2 = 2;


1 row deleted.


gSQL> SET CONSTRAINTS t1_pk IMMEDIATE;


Constraints set.

16039 (SQLSTATE: 3B000): savepoint '%s' never established in this session or is invalid

Cause

설정하지 않은 savepoint 를 사용하였다.


gSQL> SAVEPOINT sp1;


Savepoint created.


gSQL> INSERT INTO t1 VALUES ( 1 );


1 row created.


gSQL> ROLLBACK TO SAVEPOINT invalid;


ERR-3B000(16039): savepoint 'INVALID' never established in this session or is invalid

Action

유효한 savepoint 이름을 사용한다.


gSQL> ROLLBACK TO SAVEPOINT sp1;


Rollback complete.

16040 (SQLSTATE: 42000): table or view does not exist

Cause

존재하지 않는 테이블 이름을 사용하였다.


gSQL> DROP TABLE invalid;


ERR-42000(16040): table or view does not exist :

DROP TABLE invalid

*

ERROR at line 1:

Action

유효한 테이블 이름을 사용한다.


gSQL> DROP TABLE t1;


Table dropped.

16041 (SQLSTATE: 42000): table '%s' is not writable

Cause

시스템 테이블은 쓰기 불가이다.


gSQL> delete from dual;


ERR-42000(16041): table 'DUAL' is not writable :

delete from dual

*

ERROR at line 1:

Action

시스템 테이블은 변경할 수 없다.

16042 (SQLSTATE: 42000): unique/primary keys in table referenced by foreign keys

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16043 (SQLSTATE: 42000): table referenced by views

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16044 (SQLSTATE: 42000): sequence does not exist

Cause

시퀀스가 존재하지 않는다.


gSQL> DROP SEQUENCE seq1;


ERR-42000(16044): sequence does not exist :

DROP SEQUENCE seq1

*

ERROR at line 1:

Action

시퀀스 존재 여부를 확인한다.

16045 (SQLSTATE: 42000): duplicate options

Cause

동일한 옵션을 사용하였다.


gSQL> CREATE SEQUENCE seq1 MINVALUE 1 MINVALUE 1000;


ERR-42000(16045): duplicate options :

CREATE SEQUENCE seq1 MINVALUE 1 MINVALUE 1000

*

ERROR at line 1:

Action

서로 다른 옵션을 사용한다.


gSQL> CREATE SEQUENCE seq1 MINVALUE 1 MAXVALUE 1000;


Sequence created.

16046 (SQLSTATE: 42000): such column list already indexed

Cause

해당 컬럼에 이미 인덱스가 존재한다.


gSQL> CREATE INDEX idx2 ON t1(c1);


ERR-42000(16046): such column list already indexed :

CREATE INDEX idx2 ON t1(c1)

*

ERROR at line 1:

Action

해당 컬럼의 인덱스 존재 여부를 확인하고


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) TRUE


INDEX_NAME TABLESPACE_NAME INDEX_TYPE IS_UNIQUE COLUMNS

---------- --------------- ---------- --------- -------

IDX1 MEM_TEMP_TBS BTREE FALSE C1


필요 시 아래와 같이 인덱스 컬럼 옵션을 달리하여 생성한다.


gSQL> CREATE INDEX idx2 ON t1(c1 DESC);


Index created.

16047 (SQLSTATE: 22003): numeric value out of range

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16048 (SQLSTATE: 42000): specified index does not exist

Cause

해당 인덱스가 존재하지 않는다.


gSQL> DROP INDEX invalid;


ERR-42000(16048): specified index does not exist :

DROP INDEX invalid

*

ERROR at line 1:

Action

인덱스 존재 여부를 확인한다.

16049 (SQLSTATE: 42000): index '%s' is not writable

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16050 (SQLSTATE: 42000): cannot modify index used for enforcement of unique/primary/foreign key

Cause

PRIMARY KEY 제약 조건을 위해 자동 생성한 인덱스는 DROP INDEX 로 제거할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER PRIMARY KEY INDEX t1_primary_key_index );


Table created.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) FALSE


INDEX_NAME TABLESPACE_NAME INDEX_TYPE IS_UNIQUE COLUMNS

-------------------- --------------- ---------- --------- -------

T1_PRIMARY_KEY_INDEX MEM_TEMP_TBS BTREE TRUE C1


CONSTRAINT_NAME CONSTRAINT_TYPE ASSOCIATED_INDEX COLUMNS

--------------- --------------- -------------------- -------

T1_PRIMARY_KEY PRIMARY KEY T1_PRIMARY_KEY_INDEX C1


gSQL> DROP INDEX t1_primary_key_index;


ERR-42000(16050): cannot modify index used for enforcement of unique/primary/foreign key :

DROP INDEX t1_primary_key_index

*

ERROR at line 1:

Action

아래와 같이 PRIMARY KEY 제약 조건을 제거하면 관련 인덱스도 함께 제거한다.


gSQL> ALTER TABLE t1 DROP PRIMARY KEY;


Table altered.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) TRUE

16051 (SQLSTATE: HY000): not applicable

Cause

프로퍼티가 설정되어 있어 DDL 을 수행할 수 없다.


gSQL> ALTER SYSTEM SET DISABLE_DDL = YES;


System altered.


gSQL> DROP TABLE t1;


ERR-HY000(16051): not applicable : DISABLE_DDL property not allow All DDL

Action

아래와 같이 프로퍼티를 끄고 DDL 을 수행한다.


gSQL> ALTER SYSTEM SET DISABLE_DDL = NO;


System altered.


gSQL> DROP TABLE t1;


Table dropped.

16052 (SQLSTATE: 42000): column not allowed here

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16053 (SQLSTATE: 42000): not enough values

Cause

값의 개수가 충분하지 않다.


gSQL> INSERT INTO t1 VALUES ( 1 );


ERR-42000(16053): not enough values :

INSERT INTO t1 VALUES ( 1 )

*

ERROR at line 1:

Action

테이블의 컬럼 정보를 확인한다.


gSQL> INSERT INTO t1 VALUES ( 1, 1 );


1 row created.

16054 (SQLSTATE: 42000): too many values

Cause

값의 개수가 너무 많다.


gSQL> INSERT INTO t1 VALUES ( 1, 1, 1 );


ERR-42000(16054): too many values :

INSERT INTO t1 VALUES ( 1, 1, 1 )

*

ERROR at line 1:

Action

테이블의 컬럼 정보를 확인한다.


gSQL> INSERT INTO t1 VALUES ( 1, 1 );


1 row created.

16055 (SQLSTATE: 22004): NULL value not allowed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16056 (SQLSTATE: 22004): cannot insert NULL into "%s"."%s"."%s"

Cause

제약 조건으로 인해 NULL 값을 삽입할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER NOT NULL, c2 INTEGER );


Table created.


gSQL> INSERT INTO t1 VALUES ( NULL, 1 );


ERR-22004(16056): cannot insert NULL into "PUBLIC"."T1"."C1"

Action

NULL 이 아닌 값을 사용한다.


gSQL> INSERT INTO t1 VALUES ( 1, 1 );


1 row created.

16057 (SQLSTATE: 23000): unique constraint (%s.%s) violated

Cause

UNIQUE 제약 조건을 위배하였다.


gSQL> CREATE TABLE t1 ( c1 INTEGER UNIQUE, c2 INTEGER );


Table created.


gSQL> INSERT INTO t1 VALUES ( 1, 1 );


1 row created.


gSQL> INSERT INTO t1 VALUES ( 1, 2 );


ERR-23000(16057): unique constraint (PUBLIC.T1_UNIQUE_C1) violated

Action

중복되지 않은 값을 입력한다.


gSQL> INSERT INTO t1 VALUES ( 2, 2 );


1 row created.

16058 (SQLSTATE: 42000): not applicable hint

Cause

적용할 수 없는 힌트가 사용되었다.


gSQL> ALTER SESSION SET HINT_ERROR = ON;


Session altered.


gSQL> SELECT /*+ INDEX(t1, invalid) */ * FROM t1 WHERE c1 = 1;


ERR-42000(16058): not applicable hint ( cannot find index ) :

SELECT /*+ INDEX(t1, invalid) */ * FROM t1 WHERE c1 = 1

*

ERROR at line 1:

Action

올바른 힌트를 기술한다.


gSQL> SELECT /*+ INDEX(t1, idx_t1_c1) */ * FROM t1 WHERE c1 = 1;


no rows selected.

16059 (SQLSTATE: 42000): not applicable datatype

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16060 (SQLSTATE: 07002): bind variable does not exist

Cause

적절한 바인드 변수를 찾을 수 없다.


gSQL> \var v_cur REFCURSOR


gSQL> \var v_ret INTEGER


gSQL>

CREATE OR REPLACE FUNCTION func_cursor( p1 INOUT SYS_REFCURSOR ) RETURN INTEGER

AS

BEGIN

OPEN p1 FOR SELECT c1 FROM t1;

RETURN 0;

END;

/


Function created.


gSQL> \bind v_cur IN


gSQL> CALL func_cursor( :v_cur ) INTO :v_ret;


ERR-07002(16060): bind variable does not exist :

CALL func_cursor( :v_cur ) INTO :v_ret

*

ERROR at line 1:

Action

바인드 변수의 INOUT 옵션을 확인한다.


gSQL> \bind v_cur INOUT


gSQL> CALL func_cursor( :v_cur ) INTO :v_ret;


Procedure Call complete.

16061 (SQLSTATE: 22004): cannot update ("%s"."%s"."%s") to NULL

Cause

제약 조건으로 인해 NULL 값으로 변경할 수 없다.


gSQL> UPDATE t1 SET c1 = NULL WHERE c2 = 1;


ERR-22004(16061): cannot update ("PUBLIC"."T1"."C1") to NULL

Action

NULL 이 아닌 값을 사용한다.


gSQL> UPDATE t1 SET c1 = 1 WHERE c2 = 1;


1 row updated.

16062 (SQLSTATE: 42000): syntax error

Cause

SQL 구문이 잘못되었다.


gSQL>

BEGIN

EXECUTE IMMEDIATE 'INSERT INTO INTO VALUES ( 1, 1 )';

END;

/


ERR-42000(16062): syntax error :

INSERT INTO INTO VALUES ( 1, 1 )

^ ^

Error at line 1

EXECUTE IMMEDIATE 'INSERT INTO INTO VALUES ( 1, 1 )';

*

ERROR at line 2:

Action

SQL 문법을 확인한다.


gSQL>

BEGIN

EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES ( 1, 1 )';

END;

/


Anonymous PL block executed.

16063 (SQLSTATE: 42000): fractional seconds precision specifier is out of range( %d to %d )

Cause

소수초 (fractional seconds) 의 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 TIME(7) );


ERR-42000(16063): fractional seconds precision specifier is out of range( 0 to 6 ) :

CREATE TABLE t1 ( c1 TIME(7) )

*

ERROR at line 1:

Action

정의할 수 있는 소수초 (fractional seconds) 의 범위는 0 ~ 6 이다.


gSQL> CREATE TABLE t1 ( c1 TIME(6) );


Table created.

16064 (SQLSTATE: 42000): invalid interval indicator

Cause

INTERVAL indicator 정의가 잘못되었다.


gSQL> CREATE TABLE t1 ( c1 INTERVAL YEAR TO YEAR );


ERR-42000(16064): invalid interval indicator :

CREATE TABLE t1 ( c1 INTERVAL YEAR TO YEAR )

*

ERROR at line 1:

Action

정의할 수 있는 INTERVAL indicator 를 사용한다.


gSQL> CREATE TABLE t1 ( c1 INTERVAL YEAR TO MONTH );


Table created.

16065 (SQLSTATE: 42000): interval leading precision specifier is out of range( %d to %d )

Cause

INTERVAL precision 정의가 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 INTERVAL HOUR(8) );


ERR-42000(16065): interval leading precision specifier is out of range( 2 to 6 ) :

CREATE TABLE t1 ( c1 INTERVAL HOUR(8) )

*

ERROR at line 1:

Action

정의할 수 있는 INTERVAL precision 의 범위를 확인한다.


gSQL> CREATE TABLE t1 ( c1 INTERVAL HOUR(6) );


Table created.

16066 (SQLSTATE: 42000): interval fractional seconds precision specifier is out of range( %d to %d )

Cause

INTERVAL precision 정의가 범위를 벗어났다.


gSQL> CREATE TABLE T1( I1 INTERVAL HOUR(2) TO SECOND(7) );


ERR-42000(16066): interval fractional seconds precision specifier is out of range( 0 to 6 ) :

CREATE TABLE T1( I1 INTERVAL HOUR(2) TO SECOND(7) )

*

ERROR at line 1:

Action

정의할 수 있는 INTERVAL precision 의 범위를 확인한다.


gSQL> CREATE TABLE T1( I1 INTERVAL HOUR(2) TO SECOND(6) );


Table created.

16067 (SQLSTATE: 42000): invalid INITIAL storage option value

Cause

STORAGE 옵션 INITIAL 값이 잘못되었다.


gSQL> CREATE TABLE t1( c1 INTEGER ) STORAGE( INITIAL 0K );


ERR-42000(16067): invalid INITIAL storage option value :

CREATE TABLE t1( c1 INTEGER ) STORAGE( INITIAL 0K )

*

ERROR at line 1:

Action

아래와 같이 적절한 INITIAL 값을 사용한다.


gSQL> CREATE TABLE t1( c1 INTEGER ) STORAGE( INITIAL 1M );


Table created.

16068 (SQLSTATE: 42000): invalid NEXT storage option value

Cause

STORAGE 옵션 NEXT 값이 잘못되었다.


gSQL> CREATE TABLE t1( c1 INTEGER ) STORAGE( NEXT 0K );


ERR-42000(16068): invalid NEXT storage option value :

CREATE TABLE t1( c1 INTEGER ) STORAGE( NEXT 0K )

*

ERROR at line 1:

Action

아래와 같이 적절한 NEXT 값을 사용한다.


gSQL> CREATE TABLE t1( c1 INTEGER ) STORAGE( NEXT 1M );


Table created.

16069 (SQLSTATE: 42000): invalid MINSIZE storage option value

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16070 (SQLSTATE: 42000): invalid MAXSIZE storage option value

Cause

STORAGE 옵션 MAXSIZE 값이 잘못되었다.


gSQL> CREATE TABLE t1( c1 INTEGER ) STORAGE( MAXSIZE 0 );


ERR-42000(16070): invalid MAXSIZE storage option value :

CREATE TABLE t1( c1 INTEGER ) STORAGE( MAXSIZE 0 )

*

ERROR at line 1:

Action

아래와 같이 적절한 MAXSIZE 값을 사용한다.


gSQL> CREATE TABLE t1( c1 INTEGER ) STORAGE( MAXSIZE 1G );


Table created.

16071 (SQLSTATE: 42000): storage option MAXSIZE is less than MINSIZE

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16072 (SQLSTATE: 42000): duplicate or conflicting NULL and/or NOT NULL specifications

Cause

NULL 제약조건이 중복 사용되었다.


gSQL> CREATE TABLE t1( c1 INTEGER NULL NOT NULL );


ERR-42000(16072): duplicate or conflicting NULL and/or NOT NULL specifications :

CREATE TABLE t1( c1 INTEGER NULL NOT NULL )

*

ERROR at line 1:

Action

NULL 제약조건을 한번만 기술한다.


gSQL> CREATE TABLE t1( c1 INTEGER NOT NULL );


Table created.

16073 (SQLSTATE: 42000): duplicate UNIQUE/PRIMARY KEY specifications

Cause

PRIMARY KEY 제약과 UNIQUE 제약을 함께 정의할 수 없다.


gSQL> CREATE TABLE t1( c1 INTEGER PRIMARY KEY UNIQUE );


ERR-42000(16073): duplicate UNIQUE/PRIMARY KEY specifications :

CREATE TABLE t1( c1 INTEGER PRIMARY KEY UNIQUE )

*

ERROR at line 1:

Action

하나의 제약 조건만을 기술한다.


gSQL> CREATE TABLE t1( c1 INTEGER PRIMARY KEY );


Table created.

16074 (SQLSTATE: 42000): sequence number not allowed here

Cause

SEQUENCE 를 WHERE 절에 기술할 수 없다.


CREATE TABLE t1 ( c1 INTEGER );

INSERT INTO t1 VALUES ( 1 );

CREATE SEQUENCE seq1;


gSQL> SELECT c1 FROM t1 WHERE c1 = seq1.NEXTVAL;


ERR-42000(16074): sequence number not allowed here :

SELECT c1 FROM t1 WHERE c1 = seq1.NEXTVAL

*

ERROR at line 1:

Action

SEQUENCE 는 아래와 같이 최종 결과로만 사용할 수 있다.


gSQL> SELECT seq1.NEXTVAL FROM dual;


NEXTVAL

-------

1


1 row selected.


gSQL> INSERT INTO t1 VALUES ( seq1.NEXTVAL );


1 row created.


gSQL> UPDATE t1 SET c1 = seq1.NEXTVAL WHERE c1 = 2;


1 row updated.

16075 (SQLSTATE: 42000): inconsistent datatypes : expected %s

Cause

함수의 인자로 사용할 수 없는 data type 이 사용되었다.


gSQL> CREATE TABLE t1 ( c1 BOOLEAN );


Table created.


gSQL> INSERT INTO t1 VALUES ( TRUE );


1 row created.


gSQL> SELECT SUM(c1) FROM t1;


ERR-42000(16075): inconsistent datatypes : expected NUMBER :

SELECT SUM(c1) FROM t1

*

ERROR at line 1:

Action

함수와 함수의 인자로 사용할 수 있는 data type 을 확인한다.


gSQL> SELECT MAX(c1) FROM t1;


MAX(C1)

-------

TRUE


1 row selected.

16076 (SQLSTATE: 42000): invalid DATAFILE clause for alter of %s %s TABLESPACE

Cause

TEMPORARY TABLESPACE 에 대해 ADD DATAFILE 절을 사용할 수 없다.


gSQL> CREATE TEMPORARY TABLESPACE test_temp_tbs MEMORY 'test_tbs_1' SIZE 10M;


Tablespace created.


gSQL> ALTER TABLESPACE test_temp_tbs ADD DATAFILE 'test_tbs_2.dbf' SIZE 10M;


ERR-42000(16076): invalid DATAFILE clause for alter of MEMORY TEMPORARY TABLESPACE :

ALTER TABLESPACE test_temp_tbs ADD DATAFILE 'test_tbs_2.dbf' SIZE 10M

*

ERROR at line 1:

Action

TEMPORARY TABLESPACE 는 아래와 같이 ADD MEMORY 절을 사용해야 한다.


gSQL> ALTER TABLESPACE test_temp_tbs ADD MEMORY 'test_tbs_2' SIZE 10M;


Tablespace altered.

16077 (SQLSTATE: 42000): invalid DATAFILE clause for alter of %s %s TABLESPACE

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16078 (SQLSTATE: 42000): invalid TEMPFILE clause for alter of %s %s TABLESPACE

Cause

MEMORY DATA TABLESPACE 에 대해 ADD TEMPFILE 절을 사용할 수 없다.


gSQL> ALTER TABLESPACE mem_data_tbs ADD TEMPFILE 'temp1' SIZE 10M;


ERR-42000(16078): invalid TEMPFILE clause for alter of MEMORY DATA TABLESPACE :

ALTER TABLESPACE mem_data_tbs ADD TEMPFILE 'temp1' SIZE 10M

*

ERROR at line 1:

Action

MEMORY DATA TABLESPACE 는 아래와 같이 ADD DATAFILE 절을 사용해야 한다.


gSQL> ALTER TABLESPACE mem_data_tbs ADD DATAFILE 'data1.dbf' SIZE 10M;


Tablespace altered.

16079 (SQLSTATE: 42000): file path is too long ( < %d )

Cause

지나치게 긴 file 이름을 사용하였다.


gSQL>


ALTER TABLESPACE mem_data_tbs


ADD DATAFILE


'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' SIZE 10M;


ERR-42000(16079): file path is too long ( < 1024 ) :


aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' SIZE 10M

*

ERROR at line 3:

Action

아래와 같이 file 이름은 1024 보다 작아야 한다.


gSQL>


ALTER TABLESPACE mem_data_tbs


ADD DATAFILE

'a2345' SIZE 10M;


Tablespace altered.

16080 (SQLSTATE: RD000): file size is out of range( %ld to %ld )

Cause

file 크기가 너무 작다.


gSQL> ALTER TABLESPACE MEM_DATA_TBS ADD DATAFILE 'file1' SIZE 1023K;


ERR-RD000(16080): file size is out of range( 4194304 to 32212254720 ) :

ALTER TABLESPACE MEM_DATA_TBS ADD DATAFILE 'file1' SIZE 1023K

*

ERROR at line 1:

Action

아래와 같이 유효 범위 ( 4194304 to 32212254720 )의 SIZE 절을 사용한다.


gSQL> ALTER TABLESPACE MEM_DATA_TBS ADD DATAFILE 'file1' SIZE 10M;


Tablespace altered.

16081 (SQLSTATE: 42000): failed to open database : system threads are already exist.

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16082 (SQLSTATE: 42000): invalid MAXTRANS option value

Cause

MAXTRANS 값의 범위를 벗어났다.


gSQL> ALTER INDEX idx1 MAXTRANS 1000;


ERR-42000(16082): invalid MAXTRANS option value :

ALTER INDEX idx1 MAXTRANS 1000

*

ERROR at line 1:

Action

MAXTRANS 의 유효한 범위 (1 ~ 32) 값을 사용한다.


gSQL> ALTER INDEX idx1 MAXTRANS 32;


Index altered.

16083 (SQLSTATE: 42000): INITRANS must be less equal than MAXTRANS

Cause

INITRANS 값이 MAXTRANS 보다 크다.


gSQL> ALTER INDEX idx1 INITRANS 32 MAXTRANS 4;


ERR-42000(16083): INITRANS must be less equal than MAXTRANS :

ALTER INDEX idx1 INITRANS 32 MAXTRANS 4

*

ERROR at line 1:

Action

INITRANS 값은 MAXTRANS 보다 작거나 같아야 한다.


gSQL> ALTER INDEX idx1 INITRANS 4 MAXTRANS 32;


Index altered.

16084 (SQLSTATE: 42000): result OFFSET must be 0 or positive numeric value

Cause

OFFSET 값이 잘못되었다.


gSQL> SELECT c1 FROM t1 OFFSET -1;


ERR-42000(16084): result OFFSET must be 0 or positive numeric value :

SELECT c1 FROM t1 OFFSET -1

*

ERROR at line 1:

Action

OFFSET 값은 0 또는 양수여야 한다.


gSQL> SELECT c1 FROM t1 OFFSET 0;


C1

--

1

2

3

4

5


5 rows selected.

16085 (SQLSTATE: 42000): result LIMIT/FETCH must be positive numeric value

Cause

FETCH 값이 잘못되었다.


gSQL> SELECT c1 FROM t1 FETCH 0;


ERR-42000(16085): result LIMIT/FETCH must be positive numeric value :

SELECT c1 FROM t1 FETCH 0

*

ERROR at line 1:

Action

FETCH 값은 양수여야 한다.


gSQL> SELECT c1 FROM t1 FETCH 3;


C1

--

1

2

3


3 rows selected.

16086 (SQLSTATE: 42000): related objects are modified by concurrent DDL execution

Cause

Sensitive Cursor 가 참조하는 테이블에 DDL 이 발생하였다.


  • Sensitive Cursor 를 선언하고 FETCH 를 수행한다.


gSQL> DECLARE cur1 SENSITIVE CURSOR FOR SELECT c1 FROM t1;

Cursor declared.


gSQL> OPEN cur1;

Cursor is open.


gSQL> \var v1 INTEGER

gSQL> FETCH cur1 INTO :v1;

V1

--

1


1 row fetched.


gSQL> FETCH cur1 INTO :v1;

V1

--

2

1 row fetched.


  • Sensitive Cursor 가 참조하는 테이블에 DDL 이 발생한다.


other_session> drop table t1;

Table dropped.

other_session> commit;

Commit complete.


  • DDL 이후 sensitive cursor 는 DDL 이 발생했음을 감지하고 에러를 발생시킨다.


gSQL> FETCH cur1 INTO :v1;

ERR-42000(16086): related objects are modified by concurrent DDL execution

Action

Sensitive Cursor 가 DDL 을 감지하는 것은 정상 동작이다.

16087 (SQLSTATE: 42000): boolean expression expected on where clause

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16088 (SQLSTATE: HY000): session cannot be killed now

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16089 (SQLSTATE: 28000): built-in authorization(user or role) '%s' is not modifiable

Cause

built-in user 를 제거하려고 시도하였다.


gSQL> DROP USER SYS;


ERR-28000(16089): built-in authorization(user or role) 'SYS' is not modifiable :

DROP USER SYS

*

ERROR at line 1:

Action

built-in user 는 제거할 수 없다.

16090 (SQLSTATE: 42000): built-in tablespace '%s' is not modifiable

Cause

built-in tablespace 의 comment 를 변경하려고 시도하였다.


gSQL> COMMENT ON TABLESPACE mem_data_tbs IS 'test comment';


ERR-42000(16090): built-in tablespace 'MEM_DATA_TBS' is not modifiable :

COMMENT ON TABLESPACE mem_data_tbs IS 'test comment'

*

ERROR at line 1:

Action

built-in tablespace 의 comment 를 변경할 수 없다.

16091 (SQLSTATE: 42000): built-in schema '%s' is not modifiable

Cause

built-in schema 를 제거하려고 시도하였다.


gSQL> DROP SCHEMA dictionary_schema;


ERR-42000(16091): built-in schema 'DICTIONARY_SCHEMA' is not modifiable :

DROP SCHEMA dictionary_schema

*

ERROR at line 1:

Action

built-in schema 는 제거할 수 없다.

16092 (SQLSTATE: 42000): built-in table or view '%s' is not modifiable

Cause

built-in table 을 제거하려고 시도하였다.


gSQL> DROP TABLE x$tables;


ERR-42000(16092): built-in table or view 'X$TABLES' is not modifiable :

DROP TABLE x$tables

*

ERROR at line 1:

Action

built-in table 은 제거할 수 없다.

16093 (SQLSTATE: 42000): built-in index '%s' is not modifiable

Cause

built-in index 를 제거하려고 시도하였다.


gSQL> DROP INDEX tables_index_table_id;


ERR-42000(16093): built-in index 'TABLES_INDEX_TABLE_ID' is not modifiable :

DROP INDEX tables_index_table_id

*

ERROR at line 1:

Action

built-in index 는 제거할 수 없다.

16094 (SQLSTATE: 42000): built-in constraint '%s' is not modifiable

Cause

built-in constraint 를 변경하려고 시도하였다.


gSQL> COMMENT ON CONSTRAINT DEFINITION_SCHEMA.TABLES_NOT_NULL_OWNER_ID

IS 'test constraint comment';


ERR-42000(16094): built-in constraint 'TABLES_NOT_NULL_OWNER_ID' is not modifiable :

COMMENT ON CONSTRAINT DEFINITION_SCHEMA.TABLES_NOT_NULL_OWNER_ID

*

ERROR at line 1:

Action

built-in constraint 는 변경할 수 없다.

16095 (SQLSTATE: 42000): built-in sequence '%s' is not modifiable

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16096 (SQLSTATE: 28000): authorization(user or role) '%s' does not exist

Cause

User 나 Role 이 존재하지 않는다.


gSQL> GRANT DBA TO invalid_user;


ERR-28000(16096): authorization(user or role) 'INVALID_USER' does not exist :

GRANT DBA TO invalid_user

*

ERROR at line 1:

Action

해당 authorization(user or role) 이 존재하는지 확인한다.

16097 (SQLSTATE: 42000): constraint '%s' does not exist

Cause

존재하지 않는 제약조건이다.


gSQL> SET CONSTRAINT invalid_constraint IMMEDIATE;


ERR-42000(16097): constraint 'INVALID_CONSTRAINT' does not exist :

SET CONSTRAINT invalid_constraint IMMEDIATE

*

ERROR at line 1:

Action

해당 제약조건이 존재하는지 확인한다.

16098 (SQLSTATE: 07006): bind type mismatch of parameter number (%d)

Cause

SQL 문과 Bind Type 이 일치하지 않는다.


gSQL> \set serveroutput on


gSQL>

DECLARE

v1 INTEGER := 0;

v2 INTEGER := 0;

BEGIN

EXECUTE IMMEDIATE 'SELECT c1, c2 INTO ?, ? FROM t1 WHERE c1 = 1' USING IN v1, IN v2;

DBMS_OUTPUT.PUT_LINE( 'v1 = ' || v1 );

DBMS_OUTPUT.PUT_LINE( 'v2 = ' || v2 );

END;

/


ERR-07006(16098): bind type mismatch of parameter number (1) :

SELECT c1, c2 INTO ?, ? FROM t1 WHERE c1 = 1

*

ERROR at line 1:


EXECUTE IMMEDIATE 'SELECT c1, c2 INTO ?, ? FROM t1 WHERE c1 = 1' USING IN v1, IN v2;

*

ERROR at line 5:

Action

SQL 문 SELECT INTO ?, ? 는 아래와 같이 OUT binding 이 필요하다.


gSQL>

DECLARE

v1 INTEGER := 0;

v2 INTEGER := 0;

BEGIN

EXECUTE IMMEDIATE 'SELECT c1, c2 INTO ?, ? FROM t1 WHERE c1 = 1' USING OUT v1, OUT v2;

DBMS_OUTPUT.PUT_LINE( 'v1 = ' || v1 );

DBMS_OUTPUT.PUT_LINE( 'v2 = ' || v2 );

END;

/


v1 = 1

v2 = 100

Anonymous PL block executed.

16099 (SQLSTATE: 42000): the number of elements in the INTO list is mismatch

Cause

SELECT 결과 컬럼 수와 INTO 의 개수가 다르다.


gSQL> \var v1 INTEGER

gSQL> \var v2 INTEGER


gSQL> SELECT c1, c2 INTO :v1 FROM t1 WHERE c1 = 1;


ERR-42000(16099): the number of elements in the INTO list is mismatch :

SELECT c1, c2 INTO :v1 FROM t1 WHERE c1 = 1

*

ERROR at line 1:

Action

SELECT 결과 컬럼 수와 INTO 의 개수를 동일하게 한다.


gSQL> SELECT c1, c2 INTO :v1, :v2 FROM t1 WHERE c1 = 1;


V1 V2

-- ---

1 100


1 row selected.

16100 (SQLSTATE: HY000): single-row subquery returns more than one row

Cause

subquery 의 결과 건수가 1건보다 많다.


gSQL> SELECT * FROM t1 WHERE t1.c1 = ( SELECT t2.c1 FROM t2 );


ERR-HY000(16100): single-row subquery returns more than one row :

SELECT * FROM t1 WHERE t1.c1 = ( SELECT t2.c1 FROM t2 )

*

ERROR at line 1:

Action

아래와 같이 하나의 결과를 만들 수 있는 subquery 를 사용한다.


gSQL> SELECT * FROM t1 WHERE t1.c1 = ( SELECT MAX(t2.c1) FROM t2 );


C1 C2

-- ---

1 100


1 row selected.

16101 (SQLSTATE: 42000): parallel factor is out of range( 0 to %d )

Cause

PARALLEL 값이 범위를 벗어났다.


gSQL> CREATE INDEX idx1 ON t1(c1) PARALLEL 100;


ERR-42000(16101): parallel factor is out of range( 0 to 64 ) :

CREATE INDEX idx1 ON t1(c1) PARALLEL 100

*

ERROR at line 1:

Action

아래와 같이 PARALLEL 의 유효한 범위값 ( 0 ~ 64 ) 을 사용한다.


gSQL> CREATE INDEX idx1 ON t1(c1) PARALLEL 8;

Index created.

16102 (SQLSTATE: 42000): invalid MEMORY clause for alter of %s %s TABLESPACE

Cause

MEMORY DATA TABLESPACE 에 대해 ADD MEMORY 절을 사용할 수 없다.


gSQL> ALTER TABLESPACE mem_data_tbs ADD MEMORY 'test_memory' SIZE 10M;


ERR-42000(16102): invalid MEMORY clause for alter of MEMORY DATA TABLESPACE :

ALTER TABLESPACE mem_data_tbs ADD MEMORY 'test_memory' SIZE 10M

*

ERROR at line 1:

Action

아래와 같이 MEMORY DATA TABLESPACE 는 ADD DATAFILE 절을 사용한다.


gSQL> ALTER TABLESPACE mem_data_tbs ADD DATAFILE 'test_file' SIZE 10M;


Tablespace altered.

16103 (SQLSTATE: 3C000): cursor '%s' is already declared

Cause

동일한 cursor 이름을 선언하였다.


gSQL> DECLARE cur1 CURSOR FOR SELECT c2 FROM t1 WHERE c1 = 1;


Cursor declared.


gSQL> DECLARE cur1 CURSOR FOR SELECT c1 FROM t2 WHERE c1 = 1;


ERR-3C000(16103): cursor 'CUR1' is already declared :

DECLARE cur1 CURSOR FOR SELECT c1 FROM t2 WHERE c1 = 1

*

ERROR at line 1:

Action

아래와 같이 서로 다른 cursor 이름을 사용한다.


gSQL> DECLARE cur2 CURSOR FOR SELECT c1 FROM t2 WHERE c1 = 1;


Cursor declared.

16104 (SQLSTATE: 42000): invalid cursor query: '%s'

Cause

DELETE 는 cursor query 로 사용할 수 없다.


gSQL> DECLARE cur1 CURSOR FOR DELETE FROM t1 WHERE c1 = 1;


ERR-42000(16104): invalid cursor query: 'DELETE FROM' :

DECLARE cur1 CURSOR FOR DELETE FROM t1 WHERE c1 = 1

*

ERROR at line 1:

Action

아래와 같이 DELETE RETURN query 를 사용한다.


gSQL> DECLARE cur1 CURSOR FOR DELETE FROM t1 WHERE c1 = 1 RETURN c2;


Cursor declared.

16105 (SQLSTATE: 42000): invalid cursor property

Cause

DML query 는 holdable cursor 로 선언할 수 없다.


gSQL> DECLARE cur1 CURSOR WITH HOLD FOR DELETE FROM t1 WHERE c1 > 0 RETURN c2;


ERR-42000(16105): invalid cursor property : holdable cursor should be read only cursor

Action

holdable cursor 는 SELECT 구문만 사용가능하다.


gSQL> DECLARE cur1 CURSOR WITH HOLD FOR SELECT c2 FROM t1 WHERE c1 > 0;


Cursor declared.

16106 (SQLSTATE: 34000): cursor '%s' does not exist

Cause

선언하지 않은 cursor 이름을 사용하였다.


gSQL> DECLARE cur1 CURSOR FOR SELECT c2 FROM t1 WHERE c1 = 1;


Cursor declared.


gSQL> OPEN invalid_cursor;


ERR-34000(16106): cursor 'INVALID_CURSOR' does not exist :

OPEN invalid_cursor

*

ERROR at line 1:

Action

선언한 cursor 이름을 사용한다.


gSQL> OPEN cur1;


Cursor is open.

16107 (SQLSTATE: 34000): cursor '%s' is already open

Cause

cursor 가 이미 OPEN 되어 있다.


gSQL> DECLARE cur1 CURSOR FOR SELECT c2 FROM t1 WHERE c1 = 1;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> OPEN cur1;


ERR-34000(16107): cursor 'CUR1' is already open :

OPEN cur1

*

ERROR at line 1:

Action

cursor 를 CLOSE 하고 다시 OPEN 한다.


gSQL> CLOSE cur1;


Cursor closed.


gSQL> OPEN cur1;


Cursor is open.

16108 (SQLSTATE: 34000): cursor '%s' is not open

Cause

cursor 가 OPEN 되어 있지 않다.


gSQL> DECLARE cur1 CURSOR FOR SELECT c2 FROM t1 WHERE c1 = 1;


Cursor declared.


gSQL> \var v1 INTEGER

gSQL> FETCH cur1 INTO :v1;


ERR-34000(16108): cursor 'CUR1' is not open

Action

cursor 를 OPEN 후에 사용한다.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> FETCH cur1 INTO :v1;


V1

---

100


1 row fetched.

16109 (SQLSTATE: 42000): invalid use: cursor '%s' is not a declared cursor

Cause

ODBC의 SQLSetCursorName() 함수 또는 JDBC ResultSet.getCursorName() 을 이용하여

설정한 cursor 이름은 OPEN, FETCH, CLOSE cursor 구문과 함께 사용할 수 없다.

Action

SQL 구문 DECLARE CURSOR 로 선언한 cursor 만이 OPEN, FETCH, CLOSE cursor 구문을 사용할 수 있다.

16110 (SQLSTATE: 42000): invalid use: cursor '%s' is not an ODBC/JDBC cursor

Cause

SQL 구문인 DECLARE CURSOR 구문으로 선언한 cursor 는 ODBC 함수인 SQLSetCursorName() 함수로 cursor 이름을 변경할 수 없다.

Action

SQL 구문으로 선언한 cursor 이름과 ODBC/ JDBC API 를 이용한 cursor 이름을 혼용하여 사용하지 않는다.

16111 (SQLSTATE: 42000): cursor '%s' is not scrollable

Cause

FETCH FIRST/LAST/PRIOR/CURRENT 등의 구문은 scrollable cursor 에서 사용 가능하다.


gSQL> DECLARE cur1 CURSOR FOR SELECT c1 FROM t1;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> FETCH LAST FROM cur1 INTO :v1;


ERR-42000(16111): cursor 'CUR1' is not scrollable :

FETCH LAST FROM cur1 INTO :v1

*

ERROR at line 1:

Action

아래와 같이 scrollable cursor 를 선언하여 사용한다.


gSQL> DECLARE cur1 SCROLL CURSOR FOR SELECT c1 FROM t1;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> FETCH LAST FROM cur1 INTO :v1;


V1

--

5


1 row fetched.


gSQL> FETCH PRIOR FROM cur1 INTO :v1;


V1

--

4


1 row fetched.

16112 (SQLSTATE: 42000): query expression is not updatable

Cause

update 할 수 없는 질의이다.


gSQL> SELECT COUNT(c1) FROM t1 WHERE c1 > 3 FOR UPDATE;


ERR-42000(16112): query expression is not updatable

Action

아래와 같이 질의 결과가 각 row 를 식별할 수 있는 query 여야 한다.


gSQL> SELECT c1 FROM t1 WHERE c1 > 3 FOR UPDATE;


C1

--

4

5


2 rows selected.

16113 (SQLSTATE: 42000): invalid phase(%s): executable phase of '%s' is between %s and %s

Cause

MOUNT 단계에서 실행할 수 없는 SQL 문이다.


gSQL> CREATE TABLE my_table ( c1 INTEGER );


ERR-42000(16113): invalid phase(MOUNT): executable phase of 'CREATE TABLE' is between OPEN and OPEN

Action

OPEN 단계로 변경 후 실행하여야 한다.


gSQL> ALTER SYSTEM OPEN DATABASE;


System altered.


gSQL> CREATE TABLE my_table ( c1 INTEGER );


Table created.

16114 (SQLSTATE: 42000): database is already mounted

Cause

이미 MOUNT 단계이다.


gSQL> ALTER SYSTEM MOUNT DATABASE;


ERR-42000(16114): database is already mounted

Action

현재 상태를 확인하고 원하는 start-up 단계로 변경한다.


gSQL> SELECT status FROM x$instance;


STATUS

-------

MOUNTED


1 row selected.


gSQL> ALTER SYSTEM OPEN DATABASE;


System altered.

16115 (SQLSTATE: 42000): database is already local opened

Cause

cluster database 가 이미 LOCAL OPEN 단계이다.


gSQL> ALTER SYSTEM OPEN LOCAL DATABASE;


ERR-42000(16115): database is already local opened

Action

현재 상태를 확인하고 원하는 start-up 단계로 변경한다.


gSQL> SELECT status FROM x$instance@LOCAL;


STATUS

----------

LOCAL OPEN


1 row selected.


gSQL> ALTER SYSTEM OPEN GLOBAL DATABASE;


System altered.

16116 (SQLSTATE: 42000): transaction is READ ONLY

Cause

READ ONLY 트랜잭션 상태이다.


gSQL> SET TRANSACTION READ ONLY;


Transaction set.


gSQL> INSERT INTO t1 VALUES ( 1 );


ERR-42000(18003): Transaction is READ ONLY

Action

아래와 같이 READ WRITE 로 변경하고 실행한다.


gSQL> SET TRANSACTION READ WRITE;


Transaction set.


gSQL> INSERT INTO t1 VALUES ( 1 );


1 row created.

16117 (SQLSTATE: 42000): database not mounted

Cause

database 가 MOUNT 되지 않았다.


gSQL> ALTER SYSTEM OPEN DATABASE;


ERR-42000(16117): database is not mounted

Action

현재 상태를 확인하고 start-up 단계를 차례로 올린다.


gSQL> SELECT status FROM x$instance;


STATUS

-------

STARTED


1 row selected.



gSQL> ALTER SYSTEM MOUNT DATABASE;


System altered.


gSQL> ALTER SYSTEM OPEN DATABASE;


System altered.

16118 (SQLSTATE: 42000): supplemental logging attribute primary key exists

Cause

이미 supplemental logging 속성이 설정되어 있다.


gSQL> ALTER TABLE t1 ADD SUPPLEMENTAL LOG DATA ( PRIMARY KEY ) COLUMNS;


Table altered.


gSQL> ALTER TABLE t1 ADD SUPPLEMENTAL LOG DATA ( PRIMARY KEY ) COLUMNS;


ERR-42000(16118): supplemental logging attribute primary key exists

Action

테이블의 supplental logging 설정 여부를 확인한다.


gSQL> SELECT * FROM SUPPLEMENTAL_LOG_TABLE_INFO WHERE table_name = 'T1';


TABLE_SCHEMA TABLE_NAME SUPPLEMENTAL_LOG_DATA_PK DROPPED

------------ ---------- ------------------------ -------

PUBLIC T1 EXPLICIT NO


1 row selected.

16119 (SQLSTATE: 42000): cannot drop nonexistent primary key supplemental logging

Cause

supplemental logging 속성이 설정되어 있지 않다.


gSQL> ALTER TABLE T1 DROP SUPPLEMENTAL LOG DATA ( PRIMARY KEY ) COLUMNS;


ERR-42000(16119): cannot drop nonexistent primary key supplemental logging

Action

테이블의 supplemental logging 설정 여부를 확인한다.


gSQL> SELECT * FROM SUPPLEMENTAL_LOG_TABLE_INFO WHERE table_name = 'T1';


TABLE_SCHEMA TABLE_NAME SUPPLEMENTAL_LOG_DATA_PK DROPPED

------------ ---------- ------------------------ -------

PUBLIC T1 NO NO


1 row selected.

16120 (SQLSTATE: 42000): column referenced by views

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16121 (SQLSTATE: 42000): column has a check constraint defined

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16122 (SQLSTATE: 42000): pseudo column not allowed here

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16123 (SQLSTATE: 42000): cannot select ROWID from not writable table

Cause

ROWID 가 존재할 수 없는 fixed table 이다.


gSQL> SELECT ROWID FROM dual;


ERR-42000(16123): cannot select ROWID from not writable table :

SELECT ROWID FROM dual

*

ERROR at line 1:

Action

ROWID pseudo column 을 가지는 base table 에 대해 사용한다.


gSQL> SELECT ROWID FROM t1 LIMIT 2;


ROWID

-----------------------

AAAAAAAAYf2AACAAAAEiAAA

AAAAAAAAYf2AACAAAAEiAAB


2 rows selected.

16124 (SQLSTATE: 42000): table can have only one identity column

Cause

하나의 테이블은 하나의 identity column 만을 가질 수 있다.


gSQL> CREATE TABLE t1 ( c1 INTEGER GENERATED BY DEFAULT AS IDENTITY, c2 INTEGER GENERATED BY DEFAULT AS IDENTITY );


ERR-42000(16124): table can have only one identity column :

CREATE TABLE t1 ( c1 INTEGER GENERATED BY DEFAULT AS IDENTITY, c2 INTEGER GENERATED BY DEFAULT AS IDENTITY )

*

ERROR at line 1:

Action

아래와 같이 한 column 만 identity column 으로 정의한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER GENERATED BY DEFAULT AS IDENTITY, c2 INTEGER );


Table created.

16125 (SQLSTATE: 42000): column being added already exists in table

Cause

이미 존재하는 컬럼이다.


gSQL> ALTER TABLE t1 ADD COLUMN c1 VARCHAR(32);


ERR-42000(16125): column being added already exists in table :

ALTER TABLE t1 ADD COLUMN c1 VARCHAR(32)

*

ERROR at line 1:

Action

컬럼 이름이 중복되지 않도록 한다.


gSQL> ALTER TABLE t1 ADD COLUMN new_column VARCHAR(32);


Table altered.

16126 (SQLSTATE: 42000): table must be empty to add mandatory (%s) column ('%s')

Cause

data 가 존재하는 테이블에 대해 NOT NULL 제약조건을 가진 컬럼을 추가할 수 없다.


gSQL> ALTER TABLE t1 ADD COLUMN c2 INTEGER NOT NULL;


ERR-42000(16126): table must be empty to add mandatory (NOT NULL) column ('C2')

Action

아래와 같이 DEFAULT 값을 주어 컬럼을 추가한다.


gSQL> ALTER TABLE t1 ADD COLUMN c2 INTEGER DEFAULT 0 NOT NULL;


Table altered.

16127 (SQLSTATE: 42000): cannot modify INITIAL storage option

Cause

INITIAL storage option 은 변경할 수 없다.


gSQL> ALTER TABLE t1 STORAGE ( INITIAL 10M );


ERR-42000(16127): cannot modify INITIAL storage option :

ALTER TABLE t1 STORAGE ( INITIAL 10M )

*

ERROR at line 1:

Action

테이블 생성 시점에 설정한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) STORAGE ( INITIAL 10M );


Table created.

16128 (SQLSTATE: 42000): name '%s' is already used by an existing tablespace

Cause

tablespace 가 이미 존재한다.


gSQL> CREATE TABLESPACE mem_data_tbs DATAFILE 'test_file' SIZE 100M;


ERR-42000(16128): name 'MEM_DATA_TBS' is already used by an existing tablespace :

CREATE TABLESPACE mem_data_tbs DATAFILE 'test_file' SIZE 100M

*

ERROR at line 1:

Action

새로운 테이블스페이스 이름을 사용한다.


gSQL> CREATE TABLESPACE new_data_tbs DATAFILE 'test_file' SIZE 100M;


Tablespace created.

16129 (SQLSTATE: 42000): duplicate datafile name

Cause

중복된 filename 을 사용하였다.


gSQL> ALTER TABLESPACE mem_data_tbs ADD DATAFILE 'file1.dbf' SIZE 10M,


'file2.dbf' SIZE 10M,

'file1.dbf' SIZE 10M;


ERR-42000(16129): duplicate datafile name :

'file1.dbf' SIZE 10M

*

ERROR at line 3:

Action

서로 다른 filename 을 사용한다.


gSQL> ALTER TABLESPACE mem_data_tbs ADD DATAFILE 'file1.dbf' SIZE 10M,

'file2.dbf' SIZE 10M,

'file3.dbf' SIZE 10M;


Tablespace altered.

16130 (SQLSTATE: 42000): File already exists - '%s'

Cause

datafile 이 이미 존재한다.


gSQL> ALTER TABLESPACE mem_data_tbs ADD DATAFILE 'test_file' SIZE 100M;


ERR-42000(16130): file already exists - '/xxx/xxx/db/test_file' :

ALTER TABLESPACE mem_data_tbs ADD DATAFILE 'test_file' SIZE 100M

*

ERROR at line 1:

Action

새로운 filename 을 사용한다.


gSQL> ALTER TABLESPACE mem_data_tbs ADD DATAFILE 'new_test_file' SIZE 100M;


Tablespace altered.

16131 (SQLSTATE: 42000): cannot rename the built-in tablespace

Cause

built-in tablespace 의 이름을 변경할 수 없다.


gSQL> ALTER TABLESPACE mem_data_tbs RENAME TO new_tbs;


ERR-42000(16131): cannot rename the built-in tablespace :

ALTER TABLESPACE mem_data_tbs RENAME TO new_tbs

*

ERROR at line 1:

Action

built-in tablespace 의 이름은 변경할 수 없다.

16132 (SQLSTATE: 42000): cannot rename the OFFLINE tablespace

Cause

OFFLINE 상태인 TABLESPACE 의 이름을 변경할 수 없다.


gSQL> ALTER TABLESPACE test_tbs OFFLINE;

Tablespace altered.


gSQL> ALTER TABLESPACE test_tbs RENAME TO new_tbs;


ERR-42000(16132): cannot rename the OFFLINE tablespace :

ALTER TABLESPACE test_tbs RENAME TO new_tbs

*

ERROR at line 1:

Action

ONLINE 상태로 변경한 후 이름을 변경한다.


gSQL> ALTER TABLESPACE test_tbs ONLINE;

Tablespace altered.


gSQL> ALTER TABLESPACE test_tbs RENAME TO new_tbs;


Tablespace altered.

16133 (SQLSTATE: 42000): cannot drop tablespace: %s

Cause

TABLESPACE 를 제거할 수 없다.


gSQL> DROP TABLESPACE mem_data_tbs;


ERR-42000(16133): cannot drop tablespace: "MEM_DATA_TBS" is built-in tablespace :

DROP TABLESPACE mem_data_tbs

*

ERROR at line 1:

Action

built-in TABLESPACE 는 제거할 수 없다.

16134 (SQLSTATE: 42000): cannot drop constraint - nonexistent constraint

Cause

해당 constraint 가 존재하지 않는다.


gSQL> ALTER TABLE t1 DROP CONSTRAINT invalid_constraint;


ERR-42000(16134): cannot drop constraint - nonexistent constraint :

ALTER TABLE t1 DROP CONSTRAINT invalid_constraint

*

ERROR at line 1:

Action

존재하는 constraint 이름을 확인한다.


gSQL> ALTER TABLE t1 DROP CONSTRAINT t1_unique;


Table altered.

16135 (SQLSTATE: 42000): cannot drop constraint - nonexistent primary key

Cause

Table 에 PRIMARY KEY 가 존재하지 않는다.


gSQL> ALTER TABLE t1 DROP PRIMARY KEY;


ERR-42000(16135): cannot drop constraint - nonexistent primary key :

ALTER TABLE t1 DROP PRIMARY KEY

*

ERROR at line 1:

Action

Table 에 PRIMARY KEY 가 존재하는지 확인한다.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) TRUE

16136 (SQLSTATE: 42000): cannot drop constraint - nonexistent unique key

Cause

해당 UNIQUE 제약 조건이 존재하지 않는다.


gSQL> ALTER TABLE t1 DROP UNIQUE(c1);


ERR-42000(16136): cannot drop constraint - nonexistent unique key :

ALTER TABLE t1 DROP UNIQUE(c1)

*

ERROR at line 1:

Action

table 의 UNIQUE 제약 조건을 확인한다.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) TRUE

C2 NUMBER(10,0) TRUE


INDEX_NAME TABLESPACE_NAME INDEX_TYPE IS_UNIQUE COLUMNS

------------------ --------------- ---------- --------- -------

T1_UNIQUE_C2_INDEX MEM_TEMP_TBS BTREE TRUE C2


CONSTRAINT_NAME CONSTRAINT_TYPE ASSOCIATED_INDEX COLUMNS

--------------- --------------- ------------------ -------

T1_UNIQUE_C2 UNIQUE T1_UNIQUE_C2_INDEX C2



gSQL> ALTER TABLE t1 DROP UNIQUE(c2);


Table altered.

16137 (SQLSTATE: 42000): the CDS database cannot be closed with ABORT option

Cause

CDS mode 에서는 shutdown abort 를 수행할 수 없다.

Action

CDS mode 에서는 shutdown normal 또는 shutdown transactional 을 사용한다.

16138 (SQLSTATE: 42000): the DS database can be closed with NORMAL option - deprecated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16139 (SQLSTATE: 42000): multiple ORDER BY clauses not allowed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16140 (SQLSTATE: 42000): multiple OFFSET clauses not allowed

Cause

OFFSET 과 LIMIT 은 함께 사용할 수 없다.


gSQL> SELECT c1 FROM t1 OFFSET 1 LIMIT 1, 2;


ERR-42000(16140): multiple OFFSET clauses not allowed :

SELECT c1 FROM t1 OFFSET 1 LIMIT 1, 2

*

ERROR at line 1:

Action

아래와 같이 OFFSET FETCH 구문을 사용하거나 LIMIT 만을 사용한다.


gSQL> SELECT c1 FROM t1 OFFSET 1 FETCH 2;


C1

--

2

3


2 rows selected.


gSQL> SELECT c1 FROM t1 LIMIT 1, 2;


C1

--

2

3


2 rows selected.

16141 (SQLSTATE: 42000): multiple LIMIT clauses not allowed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16142 (SQLSTATE: 42000): column ambiguously defined

Cause

해당 컬럼을 식별하기가 모호하다.


gSQL> SELECT t1.c1, t2.c1 FROM t1, t2 WHERE t1.c1 = c1;


ERR-42000(16142): column ambiguously defined :

SELECT t1.c1, t2.c1 FROM t1, t2 WHERE t1.c1 = c1

*

ERROR at line 1:

Action

컬럼 이름이 동일할 경우 아래와 같이 식별할 수 있도록 한다.


gSQL> SELECT t1.c1 AS a1, t2.c1 AS a2 FROM t1, t2 WHERE t1.c1 = t2.c1;


A1 A2

-- --

1 1


1 row selected.

16143 (SQLSTATE: 42000): column part of USING clause cannot have qualifier

Cause

USING 을 이용한 INNER JOIN 은 table 이름을 명시할 수 없다.


gSQL> SELECT t1.c1 FROM t1 INNER JOIN t2 USING(c1);


ERR-42000(16143): column part of USING clause cannot have qualifier :

SELECT t1.c1 FROM t1 INNER JOIN t2 USING(c1)

*

ERROR at line 1:

Action

Natural Join 계열의 join 결과는 table name 이 존재하지 않는다.

아래와 같이 table name 을 기술하지 않아야 한다.


gSQL> SELECT c1 FROM t1 INNER JOIN t2 USING(c1);


C1

--

1


1 row selected.

16144 (SQLSTATE: 42000): invalid OFFSET option value

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16145 (SQLSTATE: 42000): invalid LIMIT option value

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16146 (SQLSTATE: 42000): common column name '%s' appears more than once in %s table

Cause

Natural Join 시 동일한 컬럼 이름을 여러 번 사용하였다.


gSQL> SELECT * FROM ( SELECT c1, c1 FROM t1 ) v1 NATURAL JOIN ( SELECT c1, c1 FROM t2 ) v2;


ERR-42000(16146): common column name 'C1' appears more than once in left table :

SELECT * FROM ( SELECT c1, c1 FROM t1 ) v1 NATURAL JOIN ( SELECT c1, c1 FROM t2 ) v2

*

ERROR at line 1:

Action

아래와 같이 서로 다른 컬럼 이름을 갖도록 한다.


gSQL> SELECT * FROM ( SELECT c1, c1 AS a2 FROM t1 ) v1 NATURAL JOIN ( SELECT c1, c1 AS a2 FROM t2 ) v2;


C1 A2

-- --

1 1


1 row selected.

16147 (SQLSTATE: 42000): file is already used in database

Cause

file 이 이미 기존 tablespace 의 datafile 로 사용되고 있다.


gSQL> CREATE DATA TABLESPACE space1 DATAFILE 'myfile.dbf' SIZE 10M;


Tablespace created.


gSQL> CREATE DATA TABLESPACE space2 DATAFILE 'myfile.dbf' SIZE 10M REUSE;


ERR-42000(16147): file is already used in database :

CREATE DATA TABLESPACE space2 DATAFILE 'myfile.dbf' SIZE 10M REUSE

*

ERROR at line 1:

Action

아래와 같이 기존 tablespace 에서 사용하지 않는 datafile 을 사용하거나 새로운 datafile 을 명시한다.


gSQL> CREATE DATA TABLESPACE space2 DATAFILE 'other_file.dbf' SIZE 10M REUSE;


Tablespace created.

16148 (SQLSTATE: 42000): tablespace not empty, use INCLUDING CONTENTS option

Cause

객체가 존재하는 tablespace 는 DROP 할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) TABLESPACE space1;


Table created.


gSQL> DROP TABLESPACE space1;


ERR-42000(16148): tablespace not empty, use INCLUDING CONTENTS option

Action

INCLUDING CONTENTS 옵션을 이용하여 제거한다.


gSQL> DROP TABLESPACE space1 INCLUDING CONTENTS;


Tablespace dropped.

16149 (SQLSTATE: 42000): datafile does not exist in tablespace

Cause

해당 tablespace 의 datafile 이 존재하지 않는다.


gSQL> ALTER TABLESPACE space1 RENAME DATAFILE 'file_1.dbf' TO 'file_2.dbf';


ERR-42000(16149): datafile does not exist in tablespace :

ALTER TABLESPACE space1 RENAME DATAFILE 'file_1.dbf' TO 'file_2.dbf'

*

ERROR at line 1:

Action

datafile 의 이름을 변경하고자 할 경우 아래와 같은 절차로 변경한다.


  • tablespace 를 OFFLINE 상태로 변경


gSQL> ALTER TABLESPACE space1 OFFLINE;


Tablespace altered.


  • 변경하고자 하는 file name 을 변경 또는 복사


% cp $GOLDILOCKS_HOME/db/file_1.dbf $GOLDILOCKS_HOME/db/file_2.dbf


  • RENAME DATAFILE 을 수행


gSQL> ALTER TABLESPACE space1 RENAME DATAFILE 'file_1.dbf' TO 'file_2.dbf';


Tablespace altered.


  • tablespace 를 ONLINE 상태로 변경


gSQL> ALTER TABLESPACE space1 ONLINE;


Tablespace altered.

16150 (SQLSTATE: 42000): cannot drop datafile of OFFLINE tablespace

Cause

OFFLINE 상태에서 datafile 을 제거할 수 없다.


gSQL> ALTER TABLESPACE test_tbs DROP DATAFILE 'TEST_TBS2.dbf';


ERR-42000(16150): cannot drop datafile of OFFLINE tablespace :

ALTER TABLESPACE test_tbs DROP DATAFILE 'TEST_TBS2.dbf'

*

ERROR at line 1:

Action

datafile 은 ONLINE 상태이고 사용하지 않은 경우 제거 가능하다.

16151 (SQLSTATE: 42000): cannot drop first datafile of tablespace

Cause

TABLESPACE 의 첫 번째 datafile 은 삭제할 수 없다.


gSQL> CREATE TABLESPACE test_tbs DATAFILE 'file1.dbf' SIZE 10M, 'file2.dbf' SIZE 10M;


Tablespace created.


gSQL> ALTER TABLESPACE test_tbs DROP DATAFILE 'file1.dbf';


ERR-42000(16151): cannot drop first datafile of tablespace :

ALTER TABLESPACE test_tbs DROP DATAFILE 'file1.dbf'

*

ERROR at line 1:

Action

아래와 같이 사용하지 않은 두 번째 datafile 부터 삭제 가능하다.


gSQL> ALTER TABLESPACE test_tbs DROP DATAFILE 'file2.dbf';


Tablespace altered.

16152 (SQLSTATE: 42000): memory is already used in database

Cause

해당 memory 이름이 이미 사용 중이다.


gSQL> CREATE TEMPORARY TABLESPACE temp_tbs MEMORY 'temp1' SIZE 10M;


Tablespace created.


gSQL> ALTER TABLESPACE temp_tbs ADD MEMORY 'temp1' SIZE 10M;


ERR-42000(16152): memory is already used in database :

ALTER TABLESPACE temp_tbs ADD MEMORY 'temp1' SIZE 10M

*

ERROR at line 1:

Action

아래와 같이 새로운 memory 이름을 사용한다.


gSQL> ALTER TABLESPACE temp_tbs ADD MEMORY 'temp2' SIZE 10M;


Tablespace altered.

16153 (SQLSTATE: 42000): memory does not exist in tablespace

Cause

존재하지 않는 memory 이름이다.


gSQL> CREATE TEMPORARY TABLESPACE temp_tbs MEMORY 'temp1' SIZE 10M;


Tablespace created.


gSQL> ALTER TABLESPACE temp_tbs RENAME MEMORY 'invalid' TO 'temp3';


ERR-42000(16153): memory does not exist in tablespace :

ALTER TABLESPACE temp_tbs RENAME MEMORY 'invalid' TO 'temp3'

*

ERROR at line 1:

Action

아래와 같이 존재하는 memory 이름을 사용한다.


gSQL> ALTER TABLESPACE temp_tbs RENAME MEMORY 'temp2' TO 'temp3';


Tablespace altered.

16154 (SQLSTATE: 42000): cannot drop first memory of tablespace

Cause

TABLESPACE 의 첫 번째 memory 는 제거할 수 없다.


gSQL> CREATE TEMPORARY TABLESPACE temp_tbs MEMORY 'temp1' SIZE 10M, 'temp2' SIZE 10M;


Tablespace created.


gSQL> ALTER TABLESPACE temp_tbs DROP MEMORY 'temp1';


ERR-42000(16154): cannot drop first memory of tablespace :

ALTER TABLESPACE temp_tbs DROP MEMORY 'temp1'

*

ERROR at line 1:

Action

아래와 같이 사용 중이지 않은 두 번째 memory 부터 제거 가능하다.


gSQL> ALTER TABLESPACE temp_tbs DROP MEMORY 'temp2';


Tablespace altered.

16155 (SQLSTATE: 42000): tablespace '%s' is not writable for logging index

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16156 (SQLSTATE: 42000): tablespace '%s' is not writable for nologging index

Cause

Global Temporary Table 에 생성하는 index 를 data tablespace 에 생성할 수 없다.


gSQL> CREATE GLOBAL TEMPORARY TABLE temp1 ( c1 INTEGER UNIQUE INDEX idx1 TABLESPACE mem_data_tbs );


ERR-42000(16156): tablespace 'MEM_DATA_TBS' is not writable for nologging index

Action

Global Temporary Table 에 생성하는 index 는 temporary tablespace 에 생성해야 한다.


gSQL> CREATE GLOBAL TEMPORARY TABLE temp1 ( c1 INTEGER UNIQUE INDEX idx1 TABLESPACE mem_temp_tbs );


Table created.

16157 (SQLSTATE: 42000): ORDER BY item must be the number of a SELECT-list expression

Cause

ORDER BY number 는 SELECT 리스트의 유효한 위치여야 한다.


gSQL> SELECT c1, c2 FROM t1 ORDER BY 3;


ERR-42000(16157): ORDER BY item must be the number of a SELECT-list expression :

SELECT c1, c2 FROM t1 ORDER BY 3

*

ERROR at line 1:

Action

아래와 같이 SELECT 리스트에 해당하는 번호를 사용한다.


gSQL> SELECT c1, c2 FROM t1 ORDER BY 1;


C1 C2

-- --

1 A

2 B

3 C


3 rows selected.

16158 (SQLSTATE: 42000): group function is not allowed here

Cause

Grouping 함수를 WHERE 절에 사용할 수 없다.


gSQL> SELECT c1, MAX(c2) FROM t1 WHERE MAX(c2) > 'A' GROUP BY c1;


ERR-42000(16158): group function is not allowed here :

SELECT c1, MAX(c2) FROM t1 WHERE MAX(c2) > 'A' GROUP BY c1

*

ERROR at line 1:

Action

아래와 같이 HAVING 절을 사용한다.


gSQL> SELECT c1, MAX(c2) FROM t1 GROUP BY c1 HAVING MAX(c2) > 'A' ;


C1 MAX(C2)

-- -------

2 B

3 C


2 rows selected.

16159 (SQLSTATE: 42000): invalid number of arguments

Cause

IN 의 인자 사용이 잘못되었다.


gSQL> SELECT * FROM t1 WHERE (c1, c2) IN ( 1, 'A' );


ERR-42000(16159): invalid number of arguments :

SELECT * FROM t1 WHERE (c1, c2) IN ( 1, 'A' )

*

ERROR at line 1:

Action

IN 의 왼쪽 인자가 두 개 이상인 경우 아래와 같이 괄호로 묶어주어야 한다.


gSQL> SELECT * FROM t1 WHERE (c1, c2) IN ( (1, 'A') );


C1 C2

-- --

1 A


1 row selected.


gSQL> SELECT * FROM t1 WHERE (c1, c2) IN ( (1, 'A'), (2, 'B') );


C1 C2

-- --

1 A

2 B


2 rows selected.

16160 (SQLSTATE: 42000): group function is nested too deeply

Cause

Group Function 사용이 depth 를 초과하였다.


gSQL> SELECT MAX(c1), MAX( MAX( MAX(c2) ) ) FROM t1 GROUP BY c1;


ERR-42000(16160): group function is nested too deeply :

SELECT MAX(c1), MAX( MAX( MAX(c2) ) ) FROM t1 GROUP BY c1

*

ERROR at line 1:

Action

아래와 같이 2-depth 까지 사용할 수 있다.


gSQL> SELECT MAX(c1), MAX( MAX(c2) ) FROM t1 GROUP BY c1;


MAX(C1) MAX( MAX(C2) )

------- --------------

3 C


1 row selected.

16161 (SQLSTATE: 42000): not a single-group group function

Cause

하나의 group 을 생성하는 질의가 아니다.


gSQL> SELECT c1, MAX(c2) FROM t1;


ERR-42000(16161): not a single-group group function :

SELECT c1, MAX(c2) FROM t1

*

ERROR at line 1:

Action

아래와 같이 GROUP BY 를 기술하거나, Group Function 만을 사용한다.


gSQL> SELECT c1, MAX(c2) FROM t1 GROUP BY c1;


C1 MAX(C2)

-- -------

1 A

2 B

3 C


3 rows selected.


gSQL> SELECT MAX(c2) FROM t1;


MAX(C2)

-------

C


1 row selected.

16162 (SQLSTATE: 42000): mismatched datafile pairs

Cause

RENAME 할 datafile 개수가 일치하지 않는다.


gSQL> ALTER TABLESPACE test_tbs RENAME DATAFILE 'file1.dbf', 'file2.dbf' TO 'file3.dbf';


ERR-42000(16162): mismatched datafile pairs :

ALTER TABLESPACE test_tbs RENAME DATAFILE 'file1.dbf', 'file2.dbf' TO 'file3.dbf'

*

ERROR at line 1:

Action

아래와 같이 RENAME 할 datafile 개수를 동일하게 한다.


gSQL> ALTER TABLESPACE test_tbs OFFLINE;


Tablespace altered.


gSQL> ALTER TABLESPACE test_tbs RENAME DATAFILE 'file1.dbf', 'file2.dbf' TO 'file3.dbf', 'file4.dbf';


Tablespace altered.


gSQL> ALTER TABLESPACE test_tbs ONLINE;


Tablespace altered.

16163 (SQLSTATE: 42000): cannot rename datafile of ONLINE tablespace

Cause

ONLINE 상태의 tablespace 의 datafile 은 이름을 변경할 수 없다.


gSQL> ALTER TABLESPACE test_tbs RENAME DATAFILE 'file1.dbf' TO 'file3.dbf';


ERR-42000(16163): cannot rename datafile of ONLINE tablespace :

ALTER TABLESPACE test_tbs RENAME DATAFILE 'file1.dbf' TO 'file3.dbf'

*

ERROR at line 1:

Action

아래와 같이 OFFLINE 으로 변경한 후 RENAME 한다.


gSQL> ALTER TABLESPACE test_tbs OFFLINE;


Tablespace altered.


gSQL> ALTER TABLESPACE test_tbs RENAME DATAFILE 'file1.dbf' TO 'file3.dbf';


Tablespace altered.

16164 (SQLSTATE: 42000): file does not exist

Cause

파일이 존재하지 않는다.


gSQL> ANALYZE TABLE t1 IMPORT 'invalid.stat';


ERR-42000(16164): file does not exist :

ANALYZE TABLE t1 IMPORT 'invalid.stat'

*

ERROR at line 1:

Action

아래와 같이 존재하는 파일을 사용한다.


gSQL> ANALYZE TABLE t1 EXPORT REPLACE 't1.stat';


Table analyzed.


gSQL> ANALYZE TABLE t1 IMPORT 't1.stat';


Table analyzed.

16165 (SQLSTATE: 42000): tablespace is not online

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16166 (SQLSTATE: 42000): tablespace is not offline

Cause

다음 구문을 수행할 때 대상 tablespace 가 ONLINE 상태이다.


gSQL> SELECT is_online FROM v$tablespace WHERE TBS_NAME = 'TEST_TBS';


IS_ONLINE

---------

TRUE


1 row selected.


gSQL> ALTER DATABASE RECOVER DATAFILE 'test.dbf';


ERR-42000(16166): tablespace is not offline

Action

대상 tablespace 를 OFFLINE 상태로 전환한 후, 다시 시도한다.


gSQL> ALTER TABLESPACE test_tbs OFFLINE;


Tablespace altered.


gSQL> SELECT is_online FROM v$tablespace WHERE TBS_NAME = 'TEST_TBS';


IS_ONLINE

---------

FALSE


1 row selected.


gSQL> ALTER DATABASE RECOVER DATAFILE 'test.dbf';


Database altered.

16167 (SQLSTATE: 42000): cannot offline temporary tablespace

Cause

TEMPORARY TABLESPACE 는 OFFLINE 으로 변경할 수 없다.


gSQL> ALTER TABLESPACE mem_temp_tbs OFFLINE;


ERR-42000(16167): cannot offline temporary tablespace :

ALTER TABLESPACE mem_temp_tbs OFFLINE

*

ERROR at line 1:

Action

OFFLINE 으로 변경하고자 하는 TABLESPACE 의 용도를 확인한다.


gSQL> SELECT tablespace_name, contents FROM dba_tablespaces WHERE tablespace_name = 'MEM_TEMP_TBS';


TABLESPACE_NAME CONTENTS

--------------- ---------

MEM_TEMP_TBS TEMPORARY


1 row selected.

16168 (SQLSTATE: 42000): cannot offline dictionary tablespace

Cause

Dictionary TABLESPACE 는 OFFLINE 으로 변경할 수 없다.


gSQL> ALTER TABLESPACE dictionary_tbs OFFLINE;


ERR-42000(16168): cannot offline dictionary tablespace :

ALTER TABLESPACE dictionary_tbs OFFLINE

*

ERROR at line 1:

Action

OFFLINE 으로 변경하고자 하는 TABLESPACE 의 용도를 확인한다.


gSQL> SELECT tablespace_name, contents FROM dba_tablespaces WHERE tablespace_name = 'DICTIONARY_TBS';


TABLESPACE_NAME CONTENTS

--------------- ----------

DICTIONARY_TBS DICTIONARY


1 row selected.

16169 (SQLSTATE: 42000): cannot offline undo tablespace

Cause

Undo TABLESPACE 는 OFFLINE 으로 변경할 수 없다.


gSQL> ALTER TABLESPACE mem_undo_tbs OFFLINE;


ERR-42000(16169): cannot offline undo tablespace :

ALTER TABLESPACE mem_undo_tbs OFFLINE

*

ERROR at line 1:

Action

OFFLINE 으로 변경하고자 하는 TABLESPACE 의 용도를 확인한다.


gSQL> SELECT tablespace_name, contents FROM dba_tablespaces WHERE tablespace_name = 'MEM_UNDO_TBS';


TABLESPACE_NAME CONTENTS

--------------- --------

MEM_UNDO_TBS UNDO


1 row selected.

16170 (SQLSTATE: 42000): invalid WAIT interval

Cause

유효하지 않는 WAIT 시간을 사용하였다.


gSQL> LOCK TABLE t1 IN EXCLUSIVE MODE WAIT 1000000001;


ERR-42000(16170): invalid WAIT interval :

LOCK TABLE t1 IN EXCLUSIVE MODE WAIT 1000000001

*

ERROR at line 1:

Action

유효시간 (second) 0 ~ 1000000000 범위의 값을 사용한다.


gSQL> LOCK TABLE t1 IN EXCLUSIVE MODE WAIT 10;


Table locked.

16171 (SQLSTATE: 42000): column is not updatable

Cause

update 할 수 없는 컬럼이다.


gSQL> SELECT t1.c1, view1.a1 FROM t1, view1 WHERE t1.c1 = view1.a1 FOR UPDATE OF view1.a1;


ERR-42000(16171): column is not updatable :

SELECT t1.c1, view1.a1 FROM t1, view1 WHERE t1.c1 = view1.a1 FOR UPDATE OF view1.a1

*

ERROR at line 1:

Action

아래와 같이 table 의 column 을 사용한다.


gSQL> SELECT t1.c1, view1.a1 FROM t1, view1 WHERE t1.c1 = view1.a1 FOR UPDATE OF t1.c1;


C1 A1

-- --

1 1

2 2


2 rows selected.

16172 (SQLSTATE: 22003): data is outside the range of the data type to which the number is being converted

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16173 (SQLSTATE: 22015): one or more fields of data value were truncated during conversion

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16174 (SQLSTATE: 42000): system session cannot be killed

Cause

system session 은 제거할 수 없다.


gSQL> ALTER SYSTEM DISCONNECT SESSION 5, 1;


ERR-42000(16174): system session cannot be killed

Action

session 정보 확인 후 user session 을 제거한다.


gSQL> SELECT id, serial, program FROM x$session WHERE program = 'gsql';


ID SERIAL PROGRAM

-- ------ -------

28 7 gsql

29 4 gsql

30 4 gsql


3 rows selected.


gSQL> ALTER SYSTEM DISCONNECT SESSION 28, 7;


System altered.

16175 (SQLSTATE: 42000): hint not allowed in positioned DELETE

Cause

DELETE WHERE CURRENT OF 구문은 hint 를 사용할 수 없다.


gSQL> DECLARE cur1 CURSOR FOR SELECT * FROM t1 WHERE c1 > 0 FOR UPDATE;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> \var v2 INTEGER

gSQL> FETCH cur1 INTO :v1, :v2;


V1 V2

-- --

1 1


1 row fetched.


gSQL> DELETE /*+ INDEX(T1, T1_IDX) */ FROM T1 WHERE CURRENT OF cur1;


ERR-42000(16175): hint not allowed in positioned DELETE

Action

Hint 없이 사용한다.


gSQL> DELETE FROM T1 WHERE CURRENT OF cur1;


1 row deleted.

16176 (SQLSTATE: 42000): hint not allowed in positioned UPDATE

Cause

UPDATE WHERE CURRENT OF 구문은 hint 를 사용할 수 없다.


gSQL> DECLARE cur1 CURSOR FOR SELECT * FROM t1 WHERE c1 > 0 FOR UPDATE;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> \var v2 INTEGER

gSQL> FETCH cur1 INTO :v1, :v2;


V1 V2

-- --

2 2


1 row fetched.


gSQL> UPDATE /*+ INDEX(T1, T1_IDX) */ T1 SET c2 = :v1 + :v2 WHERE CURRENT OF cur1;


ERR-42000(16176): hint not allowed in positioned UPDATE

Action

Hint 없이 사용한다.


gSQL> UPDATE T1 SET c2 = :v1 + :v2 WHERE CURRENT OF cur1;


1 row deleted.

16177 (SQLSTATE: 34000): cursor '%s' is not updatable

Cause

cursor 가 FOR UPDATE 로 선언되지 않았다.


gSQL> DECLARE cur1 CURSOR FOR SELECT * FROM t1 WHERE c1 > 0;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> \var v2 INTEGER

gSQL> FETCH cur1 INTO :v1, :v2;


V1 V2

-- --

2 2


1 row fetched.


gSQL> UPDATE T1 SET c2 = :v1 + :v2 WHERE CURRENT OF cur1;


ERR-34000(16177): cursor 'CUR1' is not updatable :

UPDATE T1 SET c2 = :v1 + :v2 WHERE CURRENT OF cur1

*

ERROR at line 1:

Action

아래와 같이 updatable cursor 를 선언하여 사용한다.


gSQL> DECLARE cur1 CURSOR FOR SELECT * FROM t1 WHERE c1 > 0 FOR UPDATE;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> \var v2 INTEGER

gSQL> FETCH cur1 INTO :v1, :v2;


V1 V2

-- --

2 4


1 row fetched.


gSQL> UPDATE T1 SET c2 = :v1 + :v2 WHERE CURRENT OF cur1;


1 row updated.

16178 (SQLSTATE: 34000): cursor cannot identify the underlying table

Cause

cursor 가 참조하지 않는 table 이 UPDATE WHERE CURRENT OF 구문에 사용되었다.


gSQL> DECLARE cur1 CURSOR FOR SELECT * FROM t1 WHERE c1 > 0 FOR UPDATE;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> \var v2 INTEGER

gSQL> FETCH cur1 INTO :v1, :v2;


V1 V2

-- --

2 6


1 row fetched.


gSQL> UPDATE t2 SET c2 = :v1 + :v2 WHERE CURRENT OF cur1;


ERR-34000(16178): cursor cannot identify the underlying table :

UPDATE t2 SET c2 = :v1 + :v2 WHERE CURRENT OF cur1

*

ERROR at line 1:

Action

아래와 같이 cursor 가 참조하는 table 을 사용한다.


gSQL> UPDATE t1 SET c2 = :v1 + :v2 WHERE CURRENT OF cur1;


1 row updated.

16179 (SQLSTATE: HY109): cursor was not positioned on a certain row

Cause

cursor 가 특정 row 에 위치하지 않았다.


gSQL> DECLARE cur1 CURSOR FOR SELECT c1 FROM t1 WHERE c1 > 0 FOR UPDATE;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> UPDATE t1 SET c1 = 3 WHERE CURRENT OF cur1;


ERR-HY109(16179): cursor was not positioned on a certain row

Action

아래와 같이 FETCH cursor 후에 사용한다.


gSQL> \var v1 INTEGER

gSQL> FETCH cur1 INTO :v1;


V1

--

2


1 row fetched.


gSQL> UPDATE t1 SET c1 = 3 WHERE CURRENT OF cur1;


1 row updated.

16180 (SQLSTATE: HY109): cursor was positioned on a row that had been deleted

Cause

cursor 가 위치한 row 가 이미 삭제되었다.


gSQL> DECLARE cur1 CURSOR FOR SELECT c1 FROM t1 FOR UPDATE;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> FETCH cur1 INTO :v1;


V1

--

1


1 row fetched.


gSQL> DELETE t1 WHERE CURRENT OF cur1;


1 row deleted.


gSQL> DELETE t1 WHERE CURRENT OF cur1;


ERR-HY109(16180): cursor was positioned on a row that had been deleted

Action

아래와 같이 다음 row 를 FETCH 후 삭제한다.


gSQL> FETCH cur1 INTO :v1;


V1

--

2


1 row fetched.


gSQL> DELETE t1 WHERE CURRENT OF cur1;


1 row deleted.

16181 (SQLSTATE: 42000): the CDS database cannot be closed with OPERATIONAL option

Cause

CDS mode 에서는 shutdown operational 을 수행할 수 없다.

Action

CDS mode 에서는 shutdown normal 또는 shutdown transactional 을 사용한다.

16182 (SQLSTATE: 42000): invalid segment identifier

Cause

ALTER DATABASE REGISTER IRRECOVERABLE SEGMENT 구문을 수행할 때, 유효하지 않은 segment id 를 지정했다.

Action

ALTER DATABASE REGISTER IRRECOVERABLE SEGMENT 구문은 14056 에러로 인해 recovery 가 실패한 상황에서, 해당 segment 를 제외하고 recovery 를 완료하고자 할 때 사용된다.

에러 메시지에 표시된 physical id 에 해당하는 값을 segment id 로 지정하여 구문을 다시 수행한다.


14056 에러 - failed to apply redo log ( lsn : %ld, lpsn : %d, physical id : %ld )

16183 (SQLSTATE: 42000): FETCH position must be numeric value

Cause

FETCH 위치는 숫자값을 사용해야 한다.


gSQL> DECLARE cur1 SCROLL CURSOR FOR SELECT c1, c2 FROM t1 ORDER BY c1;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v1 INTEGER

gSQL> \var v2 VARCHAR(32)

gSQL> FETCH ABSOLUTE 'A' FROM cur1 INTO :v1, :v2;


ERR-42000(16183): FETCH position must be numeric value :

FETCH ABSOLUTE 'A' FROM cur1 INTO :v1, :v2

*

ERROR at line 1:

ERR-22018(12006): data value is not a numeric literal

Action

아래와 같이 FETCH 위치값은 숫자를 사용한다.


gSQL> FETCH ABSOLUTE 3 FROM cur1 INTO :v1, :v2;


V1 V2

-- --

3 C


1 row fetched.

16184 (SQLSTATE: 42000): cannot drop all columns in a table

Cause

모든 컬럼을 DROP 할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.


gSQL> ALTER TABLE t1 SET UNUSED COLUMN ( c1 );


ERR-42000(16184): cannot drop all columns in a table

Action

테이블은 적어도 하나 이상의 컬럼이 존재해야 한다.

16185 (SQLSTATE: 42000): column already has a NOT NULL constraint

Cause

컬럼에 이미 NOT NULL 제약조건이 존재한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER NOT NULL );


Table created.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET NOT NULL;


ERR-42000(16185): column already has a NOT NULL constraint

Action

테이블의 constraint 정보를 확인한다.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) FALSE


CONSTRAINT_NAME CONSTRAINT_TYPE ASSOCIATED_INDEX COLUMNS

--------------- --------------- ---------------- -------

T1_NOT_NULL_C1 NOT NULL C1

16186 (SQLSTATE: 42000): column does not have a NOT NULL constraint

Cause

컬럼에 대한 NOT NULL 제약 조건이 존재하지 않는다.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 DROP NOT NULL;


ERR-42000(16186): column does not have a NOT NULL constraint

Action

컬럼에 NOT NULL 제약 조건이 확인한다.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) TRUE

16187 (SQLSTATE: 42000): null values found

Cause

컬럼에 null 값이 존재하여 NOT NULL 제약 조건을 설정할 수 없다.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET NOT NULL;


ERR-42000(16187): null values found

Action

컬럼에 NULL 값이 존재하는지 확인한다.


gSQL> SELECT * FROM t1 WHERE c1 IS NULL;


C1

----

null


1 row selected.

16188 (SQLSTATE: HY000): result set does not exist

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16189 (SQLSTATE: 42000): column is not an identity column

Cause

Identity Column 이 아니다.


gSQL> CREATE TABLE t1 ( c1 INTEGER GENERATED BY DEFAULT AS IDENTITY, c2 INTEGER );


Table created.


gSQL> ALTER TABLE t1 ALTER COLUMN c2 RESTART;


ERR-42000(16189): column is not an identity column

Action

해당 테이블의 Identity Column 을 확인한다.


gSQL> SELECT column_name, is_identity FROM columns WHERE table_name = 'T1';


COLUMN_NAME IS_IDENTITY

----------- -----------

C1 TRUE

C2 FALSE


2 rows selected.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 RESTART;


Table altered.

16190 (SQLSTATE: 42000): column cannot be cast to incompatible type

Cause

컬럼의 data type 을 호환되지 않는 data type 으로 변경할 수 없다.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE VARCHAR(20);


ERR-42000(16190): column cannot be cast to incompatible type :

ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE VARCHAR(20)

*

ERROR at line 1:

Action

컬럼의 data type 을 확인한다.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(10,0) FALSE

C2 NUMBER(10,0) TRUE


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE NUMBER(20,0);


Table altered.

16191 (SQLSTATE: 42000): column cannot be cast to decrease precision or scale

Cause

컬럼의 data type 변경 시 precision 이나 scale 을 줄일 수 없다.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE NUMBER(10,0);


ERR-42000(16191): column cannot be cast to decrease precision or scale :

ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE NUMBER(10,0)

*

ERROR at line 1:

Action

컬럼의 data type 을 확인한다.


gSQL> \desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ------------ -----------

C1 NUMBER(20,0) FALSE

C2 NUMBER(10,0) TRUE

16192 (SQLSTATE: 42000): column cannot be cast to decrease string length

Cause

컬럼의 data type 변경 시 length 를 줄일 수 없다.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE VARCHAR(5);


ERR-42000(16192): column cannot be cast to decrease string length :

ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE VARCHAR(5)

*

ERROR at line 1:

Action

컬럼의 data type 을 확인한다.


gSQL> desc t1


COLUMN_NAME TYPE IS_NULLABLE

----------- ----------- -----------

C1 VARCHAR(10) TRUE


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE VARCHAR(20);


Table altered.

16193 (SQLSTATE: 42000): column cannot be cast to incompatible char length unit

Cause

data type 의 크기 변경 시 character length unit 을 변경할 수 없다.


gSQL> CREATE TABLE t1 ( c1 VARCHAR(10 CHARACTERS) );


Table created.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE VARCHAR(10 OCTETS);


ERR-42000(16193): column cannot be cast to incompatible char length unit :

ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE VARCHAR(10 OCTETS)

*

ERROR at line 1:

Action

크기 변경 시 동일한 character length unit 을 사용한다.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE VARCHAR(20 CHARACTERS);


Table altered.

16194 (SQLSTATE: 42000): column cannot be cast to incompatible interval indicator

Cause

data type 변경 시 호환되지 않는 interval indicator 를 사용하였다.


gSQL> CREATE TABLE t1 ( c1 INTERVAL YEAR TO MONTH );


Table created.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE INTERVAL YEAR;


ERR-42000(16194): column cannot be cast to incompatible interval indicator :

ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE INTERVAL YEAR

*

ERROR at line 1:

Action

동일한 interval indicator 를 사용한다.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DATA TYPE INTERVAL YEAR(6) TO MONTH;


Table altered.

16195 (SQLSTATE: 42000): float precision specifier is out of range( %d to %d )

Cause

FLOAT 의 precision이 범위를 벗어났다.


gSQL> SELECT CAST( 1.5 AS FLOAT(1000) ) FROM dual;


ERR-42000(16195): float precision specifier is out of range( 1 to 126 ) :

SELECT CAST( 1.5 AS FLOAT(1000) ) FROM dual

*

ERROR at line 1:

Action

FLOAT 의 유효한 precision 범위는 1 ~ 126 이다.


gSQL> SELECT CAST( 1.5 AS FLOAT(100) ) FROM dual;


CAST( 1.5 AS FLOAT(100) )

-------------------------

1.5


1 row selected.

16196 (SQLSTATE: 42000): file is already used in log stream - '%s'

Cause

다음 구문을 수행할 때, 지정한 로그 파일이 현재 사용 중이다.


gSQL> ALTER DATABASE ADD LOGFILE GROUP 4 ( 'redo_0_0.log' ) SIZE 100M REUSE;


ERR-42000(16196): file is already used in log stream - '/test/wal/redo_0_0.log' :

ALTER DATABASE ADD LOGFILE GROUP 4 ( 'redo_0_0.log' ) SIZE 100M REUSE

*

ERROR at line 1:

Action

현재 사용되지 않는 이름으로 구문을 다시 수행한다.


다음은 현재 사용 중인 로그 파일을 확인하는 방법이다.


gSQL> SELECT group_id, file_name FROM v$logfile;


GROUP_ID FILE_NAME

-------- ----------------------

0 /test/wal/redo_0_0.log

1 /test/wal/redo_1_0.log

2 /test/wal/redo_2_0.log

3 /test/wal/redo_3_0.log


4 rows selected.


gSQL> ALTER DATABASE ADD LOGFILE GROUP 4 ( 'redo_4_0.log' ) SIZE 100M REUSE;


Database altered

16197 (SQLSTATE: 42000): duplicate logfile name

Cause

다음 구문을 수행할 때, 지정한 로그 파일이 중복으로 존재한다.


gSQL> ALTER DATABASE ADD LOGFILE MEMBER 'redo_4_1.log', 'redo_4_1.log' TO GROUP 4;


ERR-42000(16197): duplicate logfile name :

ALTER DATABASE ADD LOGFILE MEMBER 'redo_4_1.log', 'redo_4_1.log' TO GROUP 4

*

ERROR at line 1:

Action

서로 다른 로그 파일을 사용하여 구문을 다시 수행한다.


gSQL> ALTER DATABASE ADD LOGFILE MEMBER 'redo_4_1.log', 'redo_4_2.log' TO GROUP 4;


Database altered.

16198 (SQLSTATE: 42000): size of log file is smaller than minimum size of log file(%ld bytes).

Cause

ALTER DATABASE ADD LOGFILE GROUP 구문을 수행할 때, 로그 파일의 크기가 다음 조건보다 작은 경우에 발생하는 에러이다.


다음은 LOG_BUFFER_SIZE 가 10 MB 이고, PENDING_LOG_BUFFER_COUNT 가 4인 경우의 예이다.


gSQL> ALTER DATABASE ADD LOGFILE GROUP 4 ( 'redo_4_0.log' ) SIZE 10M REUSE;


ERR-42000(16198): size of log file is smaller than minimum size of log file(14680064 bytes).

Action

조건보다 크거나 같은 크기를 지정하여 구문을 다시 수행한다.


gSQL> ALTER DATABASE ADD LOGFILE GROUP 4 ( 'redo_4_0.log' ) SIZE 14M REUSE;


Database altered.

16199 (SQLSTATE: 42000): can not find specified log member.

Cause

다음 구문을 수행할 때, 지정한 log member 가 존재하지 않는다.


gSQL> ALTER DATABASE DROP LOGFILE MEMBER 'redo_3_1.log';


ERR-42000(16199): can not find specified log member. :

ALTER DATABASE DROP LOGFILE MEMBER 'redo_3_1.log'

*

ERROR at line 1:

Action

Log member 존재 여부를 확인한 후 구문을 다시 수행한다.


다음은 현재 사용 중인 log member 를 확인하는 방법이다.


gSQL> SELECT group_id, file_name FROM v$logfile;


GROUP_ID FILE_NAME

-------- ----------------------

0 /test/wal/redo_0_0.log

1 /test/wal/redo_1_0.log

2 /test/wal/redo_2_0.log

3 /test/wal/redo_3_0.log


4 rows selected.

16200 (SQLSTATE: 42000): the number of source logfiles is different from the number of targets

Cause

다음 구문을 수행할 때, source 로그 파일의 개수와 target 로그 파일의 개수가 다르다.


gSQL> ALTER DATABASE RENAME LOGFILE 'redo_0_0.log', 'redo_1_0.log' TO 'new_redo_0_0.log';


ERR-42000(16200): the number of source logfiles is different from the number of targets

Action

Source 로그 파일의 개수와 동일한 수의 target 로그 파일을 지정하여 구문을 다시 수행한다.


gSQL> ALTER DATABASE RENAME LOGFILE 'redo_0_0.log', 'redo_1_0.log' TO 'new_redo_0_0.log', 'new_redo_1_0.log';


Database altered.

16201 (SQLSTATE: 42000): can not find specified log file.

Cause

ALTER DATABASE RENAME LOGFILE 구문을 수행할 때, target 로그 파일이 디스크 상에 존재하지 않는다.


gSQL> ALTER DATABASE RENAME LOGFILE 'redo_0_0.log' TO 'new_redo_0_0.log';


ERR-42000(16201): can not find specified log file. :

ALTER DATABASE RENAME LOGFILE 'redo_0_0.log' TO 'new_redo_0_0.log'

*

ERROR at line 1:

Action

Target 로그 파일이 디스크 상에 존재하는지 확인한 후, 구문을 다시 수행한다.

16202 (SQLSTATE: 42000): name '%s' is already used by an existing schema

Cause

생성할 유저의 기본 스키마와 동일한 이름의 스키마가 이미 존재한다.


gSQL> CREATE SCHEMA u1;


Schema created.


gSQL> CREATE USER u1 IDENTIFIED BY u1;


ERR-42000(16202): name 'U1' is already used by an existing schema :

CREATE USER u1 IDENTIFIED BY u1

*

ERROR at line 1:

Action

아래와 같이 스키마 없는 유저를 생성하거나, 다른 이름의 유저를 생성한다.


gSQL> CREATE USER u1 IDENTIFIED BY u1 WITHOUT SCHEMA;


User created.


gSQL> CREATE USER u2 IDENTIFIED BY u2;


User created.

16203 (SQLSTATE: 42000): schema not empty, use CASCADE option

Cause

스키마에 속한 객체가 존재한다.


gSQL> DROP SCHEMA s1;


ERR-42000(16203): schema not empty, use CASCADE option

Action

아래와 같이 CASCADE 옵션을 이용한다.


gSQL> DROP SCHEMA s1 CASCADE;


Schema dropped.

16204 (SQLSTATE: RD000): another checkpoint is in progress

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16205 (SQLSTATE: 42000): boolean expression expected

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16206 (SQLSTATE: RD000): maximum number of arguments exceeded

Cause

함수 인자의 최대 개수를 초과하였다.


gSQL>


SELECT GREATEST( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

11, 12, 13, 14, 15, 16, 17, 18, 19, 20,

...

...

1021, 1022, 1023, 1024, 1025 )

FROM dual;


ERR-RD000(16206): maximum number of arguments exceeded :

SELECT GREATEST(

*

ERROR at line 1:

Action

함수 인자의 최대 개수를 확인한다.


gSQL> SELECT func_name, minargs, maxargs FROM v$sqlfn_metadata WHERE func_name = 'GREATEST';


FUNC_NAME MINARGS MAXARGS

--------- ------- -------

GREATEST 1 1024


1 row selected.

16207 (SQLSTATE: 42000): %s and %s cannot be matched

Cause

비교할 수 없는 data type 을 사용하였다.


gSQL> SELECT * FROM t1 WHERE birth_date IN ( DATE'2000-01-01', 2000 );


ERR-42000(12119): comparison is not applicable: DATE and NUMBER :

SELECT * FROM t1 WHERE birth_date IN ( DATE'2000-01-01', 2000 )

*

ERROR at line 1:

Action

아래와 같이 비교 가능한 값을 사용한다.


gSQL> SELECT * FROM t1 WHERE birth_date IN ( DATE'2000-01-01', DATE'2000-01-02' );


BIRTH_DATE

----------

2000-01-01

2000-01-02


2 rows selected.

16208 (SQLSTATE: 42000): insufficient privileges

Cause

해당 구문을 수행할 권한이 없다.


gSQL> DROP TABLE t1;


ERR-42000(16208): insufficient privileges

Action

객체의 소유자가 수행하거나, 해당 사용자에게 적절한 권한을 부여해야 한다.

16209 (SQLSTATE: 42000): user %s lacks CREATE SESSION privilege; logon denied

Cause

CREATE SESSION 권한이 없다.


% gsql u1 u1_password


ERR-42000(16209): user U1 lacks CREATE SESSION privilege; logon denied

Action

해당 유저에게 CREATE SESSION 권한을 부여해야 한다.


gSQL> GRANT CREATE SESSION ON DATABASE TO u1;


Grant succeeded.


아래와 같이 해당 유저로 접속할 수 있다.


% gsql u1 u1_password


Connected to Database.

16210 (SQLSTATE: 42000): lacks privilege (%s ON DATABASE)

Cause

ALTER SYSTEM 을 수행할 권한이 없다.


gSQL> ALTER SYSTEM CHECKPOINT;


ERR-42000(16210): lacks privilege (ALTER SYSTEM ON DATABASE)

Action

해당 유저에게 ALTER SYSTEM ON DATABASE 권한을 부여해야 한다.


gSQL> GRANT ALTER SYSTEM ON DATABASE TO u1;


Grant succeeded.


해당 유저로 구문을 수행할 수 있다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> ALTER SYSTEM CHECKPOINT;


System altered.

16211 (SQLSTATE: 42000): lacks privilege (%s ON TABLESPACE "%s")

Cause

해당 유저가 SQL 구문 수행을 위해 필요한 TABLESPACE 권한이 없다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


ERR-42000(16211): lacks privilege (CREATE OBJECT ON TABLESPACE "MEM_DATA_TBS")

Action

해당 유저에게 CREATE OBJECT ON TABLESPACE "MEM_DATA_TBS" 권한을 부여해야 한다.


gSQL> GRANT CREATE OBJECT ON TABLESPACE mem_data_tbs TO u1;


Grant succeeded.


해당 유저는 아래와 같이 CREATE TABLE 구문을 수행할 수 있다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.

16212 (SQLSTATE: 42000): lacks privilege (%s ON SCHEMA "%s")

Cause

해당 유저가 스키마에 테이블을 생성할 권한이 없다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


ERR-42000(16212): lacks privilege (CREATE TABLE ON SCHEMA "U1")

Action

해당 유저에게 CREATE TABLE ON SCHEMA "U1" 권한을 부여해야 한다.


gSQL> GRANT CREATE TABLE ON SCHEMA u1 TO u1;


Grant succeeded.


해당 유저는 아래와 같이 CREATE TABLE 구문을 수행할 수 있다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.

16213 (SQLSTATE: 42000): user name '%s' conflicts with another user or role name

Cause

동일한 user 나 role 이 존재한다.


gSQL> CREATE USER u1 IDENTIFIED BY u1_password;


ERR-42000(16213): user name 'U1' conflicts with another user or role name :

CREATE USER u1 IDENTIFIED BY u1_password

*

ERROR at line 1:

Action

동일한 user 나 role 이 존재하는지 확인한다.


gSQL> SELECT username FROM dba_users WHERE username = 'U1';


USERNAME

--------

U1


1 row selected.


gSQL> SELECT role_name FROM dba_roles WHERE role_name = 'U1';


no rows selected.

16214 (SQLSTATE: 42000): tablespace '%s' is not of usage type DATA

Cause

DEFAULT TABLESPACE 로 지정할 수 없는 tablespace 이다.


gSQL> ALTER USER u1 DEFAULT TABLESPACE mem_temp_tbs;


ERR-42000(16214): tablespace 'MEM_TEMP_TBS' is not of usage type DATA :

ALTER USER u1 DEFAULT TABLESPACE mem_temp_tbs

*

ERROR at line 1:

Action

DEFAULT TABLESPACE 는 data tablespace 를 지정해야 한다.


gSQL> ALTER USER u1 DEFAULT TABLESPACE mem_data_tbs;


User altered.

16215 (SQLSTATE: 42000): tablespace '%s' is not temporary tablespace

Cause

TEMPORARY TABLESPACE 로 지정할 수 없는 tablespace 이다.


gSQL> ALTER USER u1 TEMPORARY TABLESPACE mem_data_tbs;


ERR-42000(16215): tablespace 'MEM_DATA_TBS' is not temporary tablespace :

ALTER USER u1 TEMPORARY TABLESPACE mem_data_tbs

*

ERROR at line 1:

Action

TEMPORARY TABLESPACE 는 temporary tablespace 를 지정해야 한다.


gSQL> ALTER USER u1 TEMPORARY TABLESPACE mem_temp_tbs;


User altered.

16216 (SQLSTATE: 28000): user '%s' does not exist

Cause

해당 사용자가 존재하지 않는다.


gSQL> ALTER USER invalid IDENTIFIED BY new_password;


ERR-28000(16216): user 'INVALID' does not exist :

ALTER USER invalid IDENTIFIED BY new_password

*

ERROR at line 1:

Action

존재하는 사용자를 명시한다.


gSQL> ALTER USER u1 IDENTIFIED BY new_password;


User altered.

16217 (SQLSTATE: 42000): user has own schema: DROP SCHEMA first

Cause

사용자가 소유한 스키마가 존재한다.


gSQL> DROP USER u1;


ERR-42000(16217): user has own schema: DROP SCHEMA first

Action

사용자가 소유한 스키마를 모두 제거 후 DROP USER 한다.


gSQL> DROP SCHEMA u1 CASCADE;


Schema dropped.


gSQL> DROP USER u1 CASCADE;


User dropped.

16218 (SQLSTATE: 42000): CASCADE must be specified to drop user '%s'

Cause

사용자가 소유한 객체가 존재한다.


gSQL> DROP USER u1;


ERR-42000(16218): CASCADE must be specified to drop user 'U1'

Action

CASCADE 옵션을 사용하여 DROP USER 한다.


gSQL> DROP USER u1 CASCADE;


User dropped.

16219 (SQLSTATE: 42000): you may not GRANT/REVOKE privileges to/from yourself

Cause

자기 자신에게 권한을 부여하거나 철회할 수 없다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

TEST


1 row selected.


gSQL> GRANT CREATE SESSION ON DATABASE TO test;


ERR-42000(16219): you may not GRANT/REVOKE privileges to/from yourself :

GRANT CREATE SESSION ON DATABASE TO test

*

ERROR at line 1:

Action

다른 사용자에게 권한을 부여하거나 철회한다.


gSQL> GRANT CREATE SESSION ON DATABASE TO u1;


Grant succeeded.

16220 (SQLSTATE: 42000): duplicate authorization name in grantee/revokee list

Cause

grantee 목록에 중복된 계정이 사용되었다.


gSQL> GRANT CREATE SESSION ON DATABASE TO u1, u2, u1;


ERR-42000(16220): duplicate authorization name in grantee/revokee list :

GRANT CREATE SESSION ON DATABASE TO u1, u2, u1

*

ERROR at line 1:

Action

계정이 중복되지 않도록 한다.


gSQL> GRANT CREATE SESSION ON DATABASE TO u1, u2, u3;


Grant succeeded.

16221 (SQLSTATE: 42000): user default schema dropped

Cause

사용자의 default schema 가 drop 되었다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


ERR-42000(15013): user default schema dropped


gSQL> SELECT current_schema FROM dual;


ERR-42000(15013): user default schema dropped :

SELECT current_schema FROM dual

*

ERROR at line 1:

Action

아래와 같이 사용자를 위한 기본 schema 를 설정한다.


gSQL> CREATE SCHEMA u1 AUTHORIZATION u1;


Schema created.


gSQL> ALTER USER u1 SCHEMA PATH ( u1 );


User altered.


gSQL> \connect u1 u1

gSQL> SELECT current_schema FROM dual;


CURRENT_SCHEMA

--------------

U1


1 row selected.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.

16222 (SQLSTATE: 42000): user default data tablespace dropped

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16223 (SQLSTATE: 42000): user default temporary tablespace dropped

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16224 (SQLSTATE: 42000): no privileges to GRANT ALL PRIVILEGES

Cause

현재 사용자가 다른 사용자에게 부여할 수 있는 권한이 없다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> GRANT ALL PRIVILEGES ON DATABASE TO u2;


ERR-42000(16224): no privileges to GRANT ALL PRIVILEGES

Action

객체의 소유자이거나 grantable 권한일 때만 다른 사용자에게 부여할 수 있다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> SELECT privilege FROM all_db_privs WHERE grantee = 'U1' AND grantable = 'YES';


no rows selected.


gSQL>


SELECT table_schema, table_name, privilege_type

FROM table_privileges

WHERE grantee = 'U1'

AND is_grantable = TRUE;


TABLE_SCHEMA TABLE_NAME PRIVILEGE_TYPE

------------ ---------- --------------

U1 T1 SELECT

U1 T1 INSERT

U1 T1 UPDATE

U1 T1 DELETE

U1 T1 TRIGGER

U1 T1 REFERENCES

U1 T1 LOCK

U1 T1 INDEX

U1 T1 ALTER


9 rows selected.


gSQL> GRANT ALL PRIVILEGES ON u1.t1 TO u2;


Grant succeeded.

16225 (SQLSTATE: 42000): insufficient privilege to GRANT

Cause

GRANT 할 권한이 없다.


gSQL> GRANT SELECT ON u1.t1 TO u3;


ERR-42000(16225): insufficient privilege to GRANT :

GRANT SELECT ON u1.t1 TO u3

*

ERROR at line 1:


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U2


1 row selected.

Action

해당 권한이 GRANTABLE 한지 확인한다.


gSQL> SELECT table_schema, table_name, privilege, grantable FROM all_tab_privs WHERE grantee = 'U2';


TABLE_SCHEMA TABLE_NAME PRIVILEGE GRANTABLE

------------ ---------- ---------- ---------

U1 T1 SELECT NO

U1 T1 INSERT NO

U1 T1 UPDATE NO

U1 T1 DELETE NO

U1 T1 TRIGGER NO

U1 T1 REFERENCES NO

U1 T1 LOCK NO

U1 T1 INDEX NO

U1 T1 ALTER NO


9 rows selected.

16226 (SQLSTATE: 42000): duplicate privilege listed

Cause

권한이 중복 나열되었다.


gSQL> GRANT SELECT, INSERT, SELECT ON u1.t1 TO u3;


ERR-42000(16226): duplicate privilege listed :

GRANT SELECT, INSERT, SELECT ON u1.t1 TO u3

*

ERROR at line 1:

Action

아래와 같이 중복되지 않게 나열한다.


gSQL> GRANT SELECT, INSERT, DELETE ON u1.t1 TO u3;


Grant succeeded.

16227 (SQLSTATE: 42000): cannot drop a user that is currently connected

Cause

현재 접속한 자기 자신을 DROP 할 수 없다.


gSQL> DROP USER u1;


ERR-42000(16227): cannot drop a user that is currently connected :

DROP USER u1

*

ERROR at line 1:

Action

DROP 할 유저가 자신인지 확인한다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.

16228 (SQLSTATE: 42000): fixed table not grantable/revokable

Cause

fixed table 에 대한 권한을 부여할 수 없다.


gSQL> GRANT SELECT ON TABLE x$tables TO u1;


ERR-42000(16228): fixed table not grantable/revokable :

GRANT SELECT ON TABLE x$tables TO u1

*

ERROR at line 1:

Action

fixed table 의 권한은 제어할 수 없다.

16229 (SQLSTATE: 42000): invalid old password

Cause

기존 password 가 잘못되었다.


gSQL> ALTER USER test IDENTIFIED BY new_password REPLACE invalid_password;


ERR-42000(16229): invalid old password :

ALTER USER test IDENTIFIED BY new_password REPLACE invalid_password

*

ERROR at line 1:

Action

password 변경시 기존 password 를 정확히 입력한다.


gSQL> ALTER USER test IDENTIFIED BY new_password REPLACE old_password;


User altered.

16230 (SQLSTATE: 42000): schema element does not match schema identifier

Cause

CREATE SCHEMA 시 생성하는 CREATE TABLE 의 schema 이름이 잘못되었다.


gSQL>

CREATE SCHEMA s1

CREATE TABLE u1.t1 ( c1 INTEGER );


ERR-42000(16230): schema element does not match schema identifier :

CREATE TABLE u1.t1 ( c1 INTEGER )

*

ERROR at line 2:

Action

CREATE SCHEMA 시 함께 생성하는 객체는 동일한 schema 이름을 사용해야 한다.


gSQL> CREATE SCHEMA s1

CREATE TABLE s1.t1 ( c1 INTEGER );


Schema created.

16231 (SQLSTATE: 28000): cannot GRANT/REVOKE privileges to/from built-in authorization

Cause

built-in 계정에 권한을 줄 수 없다.


gSQL> GRANT SELECT ON t1 TO sys;


ERR-28000(16231): cannot GRANT/REVOKE privileges to/from built-in authorization :

GRANT SELECT ON t1 TO sys

*

ERROR at line 1:

Action

built-in 계정의 권한은 제어할 수 없다.

16232 (SQLSTATE: 28000): cannot REVOKE privileges you did not grant to '%s'

Cause

자신이 GRANT 하지 않은 권한은 REVOKE 할 수 없다.


gSQL> REVOKE SELECT ON u1.t1 FROM u3;


ERR-28000(16232): cannot REVOKE privileges you did not grant to 'U3' :

REVOKE SELECT ON u1.t1 FROM u3

*

ERROR at line 1:

Action

해당 권한을 GRANT 한 사용자가 REVOKE 할 수 있다.


gSQL> \connect u1 u1

gSQL> REVOKE SELECT ON u1.t1 FROM u3;


Revoke succeeded.

16233 (SQLSTATE: HY000): OFFLINE IMMEDIATE disallowed; noarchivelog mode

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16234 (SQLSTATE: HY000): OFFLINE IMMEDIATE disallowed; no logging tablespace

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16235 (SQLSTATE: 2B000): dependent privilege descriptors still exist

Cause

의존 관계가 존재하는 privilege 가 존재한다.


gSQL> \connect u1 u1

gSQL> GRANT SELECT ON u1.t1 TO u2 WITH GRANT OPTION;


Grant succeeded.


gSQL> \connect u2 u2

gSQL> GRANT SELECT ON u1.t1 TO u3 WITH GRANT OPTION;


Grant succeeded.


gSQL> \connect u1 u1

gSQL> REVOKE SELECT ON u1.t1 FROM u2 RESTRICT;


ERR-2B000(16235): dependent privilege descriptors still exist

Action

REVOKE 시 RESTRICT 옵션을 사용하지 않는다.


gSQL> REVOKE SELECT ON u1.t1 FROM u2;


Revoke succeeded.

16236 (SQLSTATE: 0A000): not supported query%s

Cause

지원하지 않는 query 유형이다.


SELECT COUNT(*) FROM t1 LEFT OUTER JOIN t2 USING(c1);


ERR-0A000(16236): not supported query (outer join including using clause) :

SELECT COUNT(*) FROM t1 LEFT OUTER JOIN t2 USING(c1)

*

ERROR at line 1:

Action

LEFT OUTER JOIN 은 ON 절을 이용하여 join 조건을 기술한다.


gSQL> SELECT t1.c1, t2.c1 FROM t1 LEFT OUTER JOIN t2 ON t1.c1 = t2.c1;


C1 C1

-- ----

1 1

2 null


2 rows selected.

16237 (SQLSTATE: 42000): a subquery block has incorrect number of result columns

Cause

결과 컬럼의 개수가 서로 다르다.


gSQL>

SELECT c1 FROM t1

UNION ALL

SELECT * FROM t2;


ERR-42000(16237): a subquery block has incorrect number of result columns :

SELECT * FROM t2

*

ERROR at line 3:

Action

아래와 같이 결과 컬럼의 개수를 동일하게 한다.


gSQL>

SELECT c1 FROM t1

UNION ALL

SELECT c1 FROM t2;


C1

--

1

2

1


3 rows selected.

16238 (SQLSTATE: 42000): ORDER BY item must be the number of a SELECT-list expression

Cause

ORDER BY 의 위치값이 결과 컬럼의 개수보다 크다.


gSQL> SELECT c1, c2 FROM t2 ORDER BY 3;


ERR-42000(16157): ORDER BY item must be the number of a SELECT-list expression :

SELECT c1, c2 FROM t2 ORDER BY 3

*

ERROR at line 1:

Action

아래와 같이 결과 컬럼의 위치를 지정할 수 있는 숫자를 사용한다.


gSQL> SELECT c1, c2 FROM t2 ORDER BY 1;


C1 C2

-- ----

1 null


1 row selected.

16239 (SQLSTATE: 42000): expression must have same datatype as corresponding expression

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16240 (SQLSTATE: 42000): subquery expressions not allowed here

Cause

DEFAULT 값으로 subquery 를 사용할 수 없다.


gSQL> CREATE TABLE t3 ( c1 INTEGER DEFAULT ( SELECT COUNT(*) FROM t1 ) );


ERR-42000(16240): subquery expressions not allowed here :

CREATE TABLE t3 ( c1 INTEGER DEFAULT ( SELECT COUNT(*) FROM t1 ) )

*

ERROR at line 1:

Action

아래와 같이 상수값을 사용한다.


gSQL> CREATE TABLE t3 ( c1 INTEGER DEFAULT 0 );


Table created.

16241 (SQLSTATE: 42000): invalid number of column names specified

Cause

결과 컬럼 수와 뷰의 컬럼 수가 다르다.


gSQL> CREATE VIEW v1(a1) AS SELECT * FROM t1;


ERR-42000(16241): invalid number of column names specified :

CREATE VIEW v1(a1) AS SELECT * FROM t1

*

ERROR at line 1:

Action

아래와 같이 뷰의 컬럼 수와 결과 컬럼 수를 동일하게 한다.


gSQL> CREATE VIEW v1(a1) AS SELECT c1 FROM t1;


View created.

16242 (SQLSTATE: 42000): must name this expression with a column alias

Cause

뷰 컬럼의 이름을 부여해야 한다.


gSQL> CREATE VIEW v1 AS SELECT c1 + 1, c2 FROM t1;


ERR-42000(16242): must name this expression with a column alias :

CREATE VIEW v1 AS SELECT c1 + 1, c2 FROM t1

*

ERROR at line 1:

Action

아래와 같이 컬럼의 이름을 지정해 준다.


gSQL> CREATE VIEW v1(a1, a2) AS SELECT c1 + 1, c2 FROM t1;


View created.


gSQL> CREATE VIEW v1 AS SELECT c1 + 1 AS a1, c2 FROM t1;


View created.

16243 (SQLSTATE: 01000): Warning: View definition has compilation errors

Cause

뷰가 compile error 가 존재하는 상태로 생성되었다.


gSQL> CREATE FORCE VIEW v1 AS SELECT c1, c2 FROM future_table;


ERR-01000(16243): Warning: View definition has compilation errors

ERR-42000(16040): table or view does not exist :

CREATE FORCE VIEW v1 AS SELECT c1, c2 FROM future_table

*

ERROR at line 1:

View created.


gSQL> COMMIT;


Commit complete.


뷰는 생성되었으나 조회할 수 없다.


gSQL> SELECT * FROM v1;


ERR-42000(16245): view "PUBLIC.V1" has errors :

SELECT * FROM v1

*

ERROR at line 1:

ERR-42000(16040): table or view does not exist :

SELECT c1, c2 FROM future_table

*

ERROR at line 1:

Action

뷰의 compile error 를 해소하면 해당 뷰를 정상적으로 사용할 수 있다.


gSQL> CREATE TABLE future_table( c1 INTEGER, c2 INTEGER );


Table created.


gSQL> SELECT * FROM v1;


no rows selected.

16244 (SQLSTATE: 42000): bind variables not allowed for data definition operations

Cause

DDL 에는 호스트 변수를 사용할 수 없다.


gSQL> \var v1 INTEGER

gSQL> CREATE VIEW v1 AS SELECT c1, c2 FROM t1 WHERE c1 > :v1;


ERR-42000(16244): bind variables not allowed for data definition operations

Action

호스트 변수가 없는 CREATE VIEW 구문을 수행한다.


gSQL> CREATE VIEW v1 AS SELECT c1, c2 FROM t1 WHERE c1 > 1;


View created.

16245 (SQLSTATE: 42000): view "%s.%s" has errors

Cause

뷰에 compile error 가 있다.


gSQL> CREATE VIEW v1 AS SELECT c1, c2 FROM t1;


View created.


gSQL> DROP TABLE t1;


Table dropped.


gSQL> SELECT * FROM v1;


ERR-42000(16245): view "PUBLIC.V1" has errors :

SELECT * FROM v1

*

ERROR at line 1:

ERR-42000(16040): table or view does not exist :

SELECT c1, c2 FROM t1

*

ERROR at line 1:

Action

뷰의 compile error 를 해소하면 뷰를 조회할 수 있다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );


Table created.


gSQL> SELECT * FROM v1;


no rows selected.

16246 (SQLSTATE: 42000): illegal use of %s data type

Cause

인덱스 키로 LONG VARCHAR 컬럼을 지정할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER, c3 LONG VARCHAR );


Table created.


gSQL> CREATE INDEX idx1 ON t1(c3);


ERR-42000(16246): illegal use of LONG VARCHAR data type :

CREATE INDEX idx1 ON t1(c3)

*

ERROR at line 1:

Action

LONG VARCHAR 등의 컬럼은 키로 사용할 수 없다.

16247 (SQLSTATE: HY000): cannot BACKUP; noarchivelog mode

Cause

noarchivelog mode에서는 database 및 tablespace의 backup을 할 수 없다.


gSQL> ALTER DATABASE BEGIN BACKUP;


ERR-HY000(16247): cannot BACKUP; noarchivelog mode


gSQL> ALTER TABLESPACE DISK_DATA_TBS BEGIN BACKUP;


ERR-HY000(16247): cannot BACKUP; noarchivelog mode

Action

backup 기능을 위해서는 database를 archivelog mode (ARCHIVELOG_MODE)로 전환 후 재시작한다.

16248 (SQLSTATE: HY000): cannot RECOVER TABLESPACE; tablespace is in use

Cause

사용 중인 tablespace(online)에 대해서 recover를 할 수 없다.


gSQL> ALTER DATABASE RECOVER TABLESPACE TEST_TBS;


ERR-HY000(16248): cannot RECOVER TABLESPACE; tablespace is in use :

ALTER DATABASE RECOVER TABLESPACE TEST_TBS

*

ERROR at line 1:

Action

tablespace를 offline 상태로 변경 후 recover를 수행할 수 있다.


gSQL> ALTER TABLESPACE TEST_TBS OFFLINE;


Tablespace altered.


gSQL> ALTER DATABASE RECOVER TABLESPACE TEST_TBS;


Database altered.

16249 (SQLSTATE: HY000): cannot SHUTDOWN; backup in progress

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16250 (SQLSTATE: HY000): RECOVER UNTIL CANCEL can be issued by directly attached session only - deprecated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다

16251 (SQLSTATE: 42000): single-row subquery returns more than one row

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16252 (SQLSTATE: 42000): circular view definition encountered

Cause

상호 참조하는 뷰가 생성되었다.


gSQL> CREATE FORCE VIEW v1 AS SELECT c1 FROM v2;


ERR-01000(16243): Warning: View definition has compilation errors

ERR-42000(16040): table or view does not exist :

CREATE FORCE VIEW v1 AS SELECT c1 FROM v2

*

ERROR at line 1:

View created.


gSQL> CREATE FORCE VIEW v2 AS SELECT c1 FROM v1;


ERR-01000(16243): Warning: View definition has compilation errors

ERR-42000(16245): view "PUBLIC.V1" has errors :

CREATE FORCE VIEW v2 AS SELECT c1 FROM v1

*

ERROR at line 1:

ERR-42000(16040): table or view does not exist :

SELECT c1 FROM v2

*

ERROR at line 1:

ERR-01000(16243): Warning: View definition has compilation errors

View created.


gSQL> SELECT * FROM v1;


ERR-42000(16245): view "PUBLIC.V1" has errors :

SELECT * FROM v1

*

ERROR at line 1:

ERR-42000(16252): circular view definition encountered :

SELECT c1 FROM v1

*

ERROR at line 1:

Action

뷰 생성시 상호 참조하지 않도록 한다.

16253 (SQLSTATE: 42000): only base table columns are allowed to GRANT/REVOKE

Cause

컬럼 권한 제어는 base table 에 대해서만 가능하다.


gSQL> GRANT SELECT(c1) ON v1 TO u1;


ERR-42000(16253): only base table columns are allowed to GRANT/REVOKE :

GRANT SELECT(c1) ON v1 TO u1

*

ERROR at line 1:

Action

뷰에 대한 권한 제어는 아래와 같이 컬럼을 기술하지 않는다.


gSQL> GRANT SELECT ON v1 TO u1;


Grant succeeded.


테이블에 대한 컬럼 권한 제어는 가능하다.


gSQL> GRANT SELECT(c1) ON t1 TO u1;


Grant succeeded.

16254 (SQLSTATE: 42000): lacks privilege (%s ON TABLE "%s"."%s")

Cause

해당 테이블에 대해 SELECT 를 수행할 권한이 없다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> SELECT * FROM public.t1;


ERR-42000(16254): lacks privilege (SELECT ON TABLE "PUBLIC"."T1")

Action

객체 소유자가 권한을 부여하면 관련 구문을 실행할 수 있다.


gSQL> GRANT SELECT ON public.t1 TO u1;


Grant succeeded.


gSQL> \connect u1 u1

gSQL> SELECT * FROM public.t1;


no rows selected.

16255 (SQLSTATE: 42000): lacks privilege (USAGE ON SEQUENCE "%s"."%s")

Cause

해당 시퀀스를 사용할 권한이 없다.


gSQL> SELECT public.seq1.NEXTVAL FROM dual;


ERR-42000(16255): lacks privilege (USAGE ON SEQUENCE "PUBLIC"."SEQ1") :

SELECT public.seq1.NEXTVAL FROM dual

*

ERROR at line 1:

Action

객체 소유자가 권한을 부여하면 시퀀스를 사용할 수 있다.


gSQL> GRANT USAGE ON SEQUENCE public.seq1 TO u1;


Grant succeeded.


gSQL> connect u1 u1

gSQL> SELECT public.seq1.NEXTVAL FROM dual;


NEXTVAL

-------

1


1 row selected.

16256 (SQLSTATE: 07001): wrong number of parameters

Cause

SQL 구문에 사용된 호스트 변수의 개수와 Application 에서 사용한 호스트 변수의 개수가 다르다.

Action

Application 의 bind parameter 사용을 확인한다.

16257 (SQLSTATE: HY000): argument of CASE/WHEN must be type boolean

Cause

CASE/WHEN 의 인자는 boolean 타입이어야 한다.


gSQL> SELECT CASE WHEN ( c1 ) THEN 'GOOD' ELSE 'BAD' END AS result FROM t1;


ERR-42000(16075): inconsistent datatypes : expected BOOLEAN :

SELECT CASE WHEN ( c1 ) THEN 'GOOD' ELSE 'BAD' END AS result FROM t1

*

ERROR at line 1:

Action

CASE/WHEN 에는 조건식을 사용한다.


gSQL> SELECT CASE WHEN ( c1 = 1 ) THEN 'GOOD' ELSE 'BAD' END AS result FROM t1;


RESULT

------

GOOD


1 row selected.

16258 (SQLSTATE: HY000): the XID does not exist

Cause

시스템에 존재하지 않는 xa transaction을 in-doubt commit/rollback 할 수 없다.


gSQL> COMMIT FORCE '0.3130.00';


ERR-HY000(16258): the XID does not exist :

COMMIT FORCE '0.3130.00'

*

ERROR at line 1:


gSQL> ROLLBACK FORCE '0.3130.00';


ERR-HY000(16258): the XID does not exist :

ROLLBACK FORCE '0.3130.00'

*

ERROR at line 1:

Action

V$XA_TRANSACTION (V$XA_TRANSACTION) 을 조회하여 commit/rollback을 수행할 xa transaction을 확인한다.

16259 (SQLSTATE: HY000): the XID string is not valid

Cause

in-doubt commit/rollback을 수행하려고 하는 target xa transaction의 xid가 valid하지 않다.


gSQL> COMMIT FORCE '0.';


ERR-HY000(16259): the XID string is not valid:

COMMIT FORCE '0.'

*

ERROR at line 1:

ERR-HY000(12162): invalid XID string


gSQL> ROLLBACK FORCE '0.';


ERR-HY000(16259): the XID string is not valid:

ROLLBACK FORCE '0.'

*

ERROR at line 1:

ERR-HY000(12162): invalid XID string

Action

V$XA_TRANSACTION (V$XA_TRANSACTION) 을 조회하여 commit/rollback을 수행할 xa transaction을 확인한다.

16260 (SQLSTATE: HY000): the global transaction is in progress

Cause

in-doubt commit/rollback을 수행하려는 target xa transaction이 associate 된 상태이다.


gSQL> COMMIT FORCE '0.3130.00';


ERR-HY000(16260): the global transaction is in progress :

COMMIT FORCE '0.3130.00'

*

ERROR at line 1:


gSQL> ROLLBACK FORCE '0.3130.00';


ERR-HY000(16260): the global transaction is in progress :

ROLLBACK FORCE '0.3130.00'

*

ERROR at line 1:

Action

V$XA_TRANSACTION (V$XA_TRANSACTION) 을 조회하여 commit/rollback을 수행할 xa transaction을 확인한다.

16261 (SQLSTATE: 42000): invalid INCREMENTAL BACKUP LEVEL specified : %d

Cause

증분 백업의 level이 valid 하지 않다.


gSQL> ALTER DATABASE BACKUP INCREMENTAL LEVEL 5;


ERR-42000(16261): invalid INCREMENTAL BACKUP LEVEL specified : 5

Action

(ALTER DATABASE BACKUP) 증분 백업의 level은 0부터 4까지 지정할 수 있다.

16262 (SQLSTATE: 42000): INCREMENTAL BACKUP LEVEL 0 cannot have any BACKUP options

Cause

level 0 증분 backup은 backup option (CUMULATIVE/DIFFERENTIAL)을 이용하지 않는다.


gSQL> ALTER DATABASE BACKUP INCREMENTAL LEVEL 0 CUMULATIVE;


ERR-42000(16262): INCREMENTAL BACKUP LEVEL 0 cannot have any BACKUP options


gSQL> ALTER DATABASE BACKUP INCREMENTAL LEVEL 0 DIFFERENTIAL;


ERR-42000(16262): INCREMENTAL BACKUP LEVEL 0 cannot have any BACKUP options

Action

level 0 증분 backup은 backup option을 이용하지 않고 수행한다.

16263 (SQLSTATE: HY000): cannot RESTORE TABLESPACE; tablespace is in use

Cause

사용 중인 tablespace (online)에 대해서 restore를 할 수 없다.


gSQL> ALTER DATABASE RESTORE TABLESPACE TEST_TBS;


ERR-HY000(16263): cannot RESTORE TABLESPACE; tablespace is in use :

ALTER DATABASE RESTORE TABLESPACE TEST_TBS

*

ERROR at line 1:

Action

tablespace를 offline 상태로 변경 후 restore를 수행할 수 있다.


gSQL> ALTER TABLESPACE TEST_TBS OFFLINE;


Tablespace altered.


gSQL> ALTER DATABASE RESTORE TABLESPACE TEST_TBS;


Database altered.

16264 (SQLSTATE: HY000): transaction is in progress

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16265 (SQLSTATE: 42000): outer join operator (+) cannot be used with ANSI joins

Cause

outer join operator (+) 를 INNER JOIN 과 함께 기술할 수 없다.


gSQL> SELECT t1.c1, t2.c1 FROM t1 INNER JOIN t2 ON t1.c1 = t2.c1 (+);


ERR-42000(16265): outer join operator (+) cannot be used with ANSI joins :

SELECT t1.c1, t2.c1 FROM t1 INNER JOIN t2 ON t1.c1 = t2.c1 (+)

*

ERROR at line 1:

Action

INNER JOIN 을 수행할 의도였다면 (+) 기호를 제거하고


gSQL> SELECT t1.c1, t2.c1 FROM t1 INNER JOIN t2 ON t1.c1 = t2.c1;


C1 C1

-- --

1 1


1 row selected.


LEFT OUTER JOIN 을 수행할 의도였다면, SQL 표준 LEFT OUTER JOIN 을 구문을 사용한다.


gSQL> SELECT t1.c1, t2.c1 FROM t1 LEFT OUTER JOIN t2 ON t1.c1 = t2.c1;


C1 C1

-- ----

1 1


2 null


2 rows selected.


아래와 같이 비표준 구문으로 (+) 기호를 사용할 경우

위의 LEFT OUTER JOIN 과 동일한 결과를 얻을 수 있으나,

SQL 표준 구문인 LEFT OUTER JOIN 을 사용할 것을 권고한다.


gSQL> SELECT t1.c1, t2.c1 FROM t1, t2 WHERE t1.c1 = t2.c1 (+);


C1 C1

-- ----

1 1


2 null


2 rows selected.

16266 (SQLSTATE: 42000): outer join operator (+) not allowed in %s

Cause

outer join operator (+) 를 SELECT list 에 기술할 수 없다.


gSQL> SELECT t1.c1(+) FROM t1;


ERR-42000(16266): outer join operator (+) not allowed in select-list :

SELECT t1.c1(+) FROM t1

*

ERROR at line 1:

Action

비표준 연산자인 outer join operator (+) 는 WHERE 절에 사용할 수 있으나,


gSQL> SELECT t1.c1, t2.c1 FROM t1, t2 WHERE t1.c1 = t2.c1 (+);


C1 C1

-- ----

1 1


2 null


2 rows selected.


아래와 같이 SQL 표준인 LEFT OUTER JOIN 을 사용하는 것이 바람직하다.


gSQL> SELECT t1.c1, t2.c1 FROM t1 LEFT OUTER JOIN t2 ON t1.c1 = t2.c1;


C1 C1

-- ----

1 1


2 null


2 rows selected.

16267 (SQLSTATE: 42000): an outer join cannot be specified on a correlation column

Cause

outer join operator (+) 는 외부 컬럼에 대해 표현할 수 없다.


gSQL> SELECT c1 FROM t1 WHERE EXISTS ( SELECT * FROM t2 WHERE t2.c1 = t1.c1(+) );


ERR-42000(16267): an outer join cannot be specified on a correlation column :

SELECT c1 FROM t1 WHERE EXISTS ( SELECT * FROM t2 WHERE t2.c1 = t1.c1(+) )

*

ERROR at line 1:

Action

아래와 같이 outer join operator (+) 를 제거한다.


gSQL> SELECT c1 FROM t1 WHERE EXISTS ( SELECT * FROM t2 WHERE t2.c1 = t1.c1 );


C1

--

1


1 row selected.

16268 (SQLSTATE: 42000): a predicate may reference only one outer-joined table

Cause

outer join operator (+) 를 여러 table 에 걸쳐 사용할 수 없다.


gSQL> SELECT t1.c1, t2.c1, t3.c1 FROM t1, t2, t3 WHERE t1.c1 = t2.c1(+) + t3.c1(+);


ERR-42000(16268): a predicate may reference only one outer-joined table :

SELECT t1.c1, t2.c1, t3.c1 FROM t1, t2, t3 WHERE t1.c1 = t2.c1(+) + t3.c1(+)

*

ERROR at line 1:

Action

SQL 표준인 LEFT OUTER JOIN 을 사용하여 의도에 맞게 변경한다.


gSQL> SELECT t1.c1, t2_c1, t3_c1

FROM t1 LEFT OUTER JOIN

( SELECT t2.c1 AS t2_c1, t3.c1 AS t3_c1 FROM t2, t3 ) v1

ON t1.c1 = v1.t2_c1 + v1.t3_c1;


C1 T2_C1 T3_C1

-- ----- -----

2 1 1


1 null null


2 rows selected.

16269 (SQLSTATE: 42000): a table may be outer joined to at most one other table

Cause

outer join operator (+) 를 이용한 outer join 관계는 하나의 table 은 다른 하나의 table 에 대해서만 표현할 수 있다.


gSQL> SELECT t1.c1, t2.c1, t3.c1 FROM t1, t2, t3 WHERE t1.c1 = t3.c1(+) AND t2.c2 = t3.c2(+);


ERR-42000(16269): a table may be outer joined to at most one other table :

SELECT t1.c1, t2.c1, t3.c1 FROM t1, t2, t3 WHERE t1.c1 = t3.c1(+) AND t2.c2 = t3.c2(+)

*

ERROR at line 1:

Action

SQL 표준인 LEFT OUTER JOIN 을 이용하여 목적에 맞게 변환한다.


데이터가 아래와 같다고 하자


gSQL> SELECT * FROM t1;


C1 C2

-- --

1 1

2 2


2 rows selected.


gSQL> SELECT * FROM t2;


C1 C2

-- --

1 1

3 3


2 rows selected.


gSQL> SELECT * FROM t3;


C1 C2

-- --

1 1


1 row selected.


다수 테이블에 대한 LEFT OUTER JOIN 은 연산 순서에 따라

결과가 달라지므로 연산 순서를 명확히 하여야 한다.


  • 사례 1 : t1 LEFT OUTER JOIN ( t2 LEFT OUTER JOIN t3 )


gSQL> SELECT t1.c1, t2.c1, t3.c1 FROM t1 LEFT OUTER JOIN ( t2 LEFT OUTER JOIN t3 ON t2.c2 = t3.c2 ) ON t1.c1 = t3.c1;


C1 C1 C1

-- ---- ----

1 1 1


2 null null


2 rows selected.


  • 사례 2 : t2 LEFT OUTER JOIN ( t1 LEFT OUTER JOIN t3 )


gSQL> SELECT t1.c1, t2.c1, t3.c1 FROM t2 LEFT OUTER JOIN ( t1 LEFT OUTER JOIN t3 ON t1.c1 = t3.c1 ) ON t1.c2 = t3.c2;


C1 C1 C1

-- -- --

1 1 1

1 3 1


2 rows selected.

16270 (SQLSTATE: 42000): two tables cannot be outer-joined to each other

Cause

outer join operator (+) 가 서로 교차되는 형태로 사용하였다.


gSQL> SELECT t1.c1, t2.c1 FROM t1, t2 WHERE t1.c1(+) = t2.c1 AND t1.c1 = t2.c1(+);


ERR-42000(16270): two tables cannot be outer-joined to each other :

SELECT t1.c1, t2.c1 FROM t1, t2 WHERE t1.c1(+) = t2.c1 AND t1.c1 = t2.c1(+)

*

ERROR at line 1:

Action

outer join operator(+) 를 사용한 의도에 따라,

SQL 표준인 LEFT OUTER JOIN 또는 FULL OUTER JOIN 을 사용한다.


gSQL> SELECT t1.c1, t2.c1 FROM t1 FULL OUTER JOIN t2 ON t1.c1 = t2.c1;


C1 C1

-- ----

1 1


2 null


2 rows selected.

16271 (SQLSTATE: 42000): RESTART value cannot be made to be less than the MINVALUE

Cause

시퀀스의 RESTART value 가 MINVALUE 보다 작다.


gSQL> CREATE SEQUENCE seq1 MINVALUE 1 MAXVALUE 10000000;


Sequence created.


gSQL> ALTER SEQUENCE seq1 RESTART WITH 0;


ERR-42000(16271): RESTART value cannot be made to be less than the MINVALUE :

ALTER SEQUENCE seq1 RESTART WITH 0

*

ERROR at line 1:

Action

RESTART value 는 MINVALUE 와 같거나 큰 값을 사용한다.


gSQL> ALTER SEQUENCE seq1 RESTART WITH 1;


Sequence altered.

16272 (SQLSTATE: 42000): RESTART value cannot be made to exceed the MAXVALUE

Cause

시퀀스의 RESTART value 가 MAXVALUE 보다 크다.


gSQL> ALTER SEQUENCE seq1 RESTART WITH 20000;


ERR-42000(16272): RESTART value cannot be made to exceed the MAXVALUE :

ALTER SEQUENCE seq1 RESTART WITH 20000

*

ERROR at line 1:

Action

RESTART value 는 MINVALUE ~ MAXVALUE 범위의 값을 사용해야 한다.


gSQL> ALTER SEQUENCE seq1 RESTART WITH 1;


Sequence altered.

16273 (SQLSTATE: 42000): MINVALUE cannot be made to exceed the current value

Cause

시퀀스의 현재값보다 큰 MINVALUE 로 변경할 수 없다.


gSQL> SELECT seq1.NEXTVAL FROM dual;


NEXTVAL

-------

2


1 row selected.


gSQL> ALTER SEQUENCE seq1 MINVALUE 3;


ERR-42000(16273): MINVALUE cannot be made to exceed the current value :

ALTER SEQUENCE seq1 MINVALUE 3

*

ERROR at line 1:

Action

현재값보다 작은 MINVALUE 값으로 변경해야 한다.


gSQL> ALTER SEQUENCE seq1 MINVALUE 1;


Sequence altered.

16274 (SQLSTATE: 42000): MAXVALUE cannot be made to be less than the current value

Cause

시퀀스의 현재값보다 작은 MAXVALUE 로 변경할 수 없다.


gSQL> SELECT seq1.NEXTVAL FROM dual;


NEXTVAL

-------

5


1 row selected.


gSQL> ALTER SEQUENCE seq1 MAXVALUE 4;


ERR-42000(16274): MAXVALUE cannot be made to be less than the current value :

ALTER SEQUENCE seq1 MAXVALUE 4

*

ERROR at line 1:

Action

현재값보다 큰 MAXVALUE 값으로 변경해야 한다.


gSQL> ALTER SEQUENCE seq1 MAXVALUE 1000;


Sequence altered.

16275 (SQLSTATE: 42000): MINVALUE cannot be made to exceed the START WITH value

Cause

시퀀스의 MINVALUE 가 START WITH 값보다 크다.


gSQL> CREATE SEQUENCE seq1 START WITH 10;


Sequence created.


gSQL> ALTER SEQUENCE seq1 RESTART WITH 100 MINVALUE 20;


ERR-42000(16275): MINVALUE cannot be made to exceed the START WITH value :

ALTER SEQUENCE seq1 RESTART WITH 100 MINVALUE 20

*

ERROR at line 1:

Action

MINVALUE 변경 시 START WITH 보다 작거나 같은 값을 사용한다.


gSQL> CREATE SEQUENCE seq1 START WITH 10;


Sequence created.


gSQL> ALTER SEQUENCE seq1 RESTART WITH 100 MINVALUE 1;


Sequence altered.

16276 (SQLSTATE: 42000): MAXVALUE cannot be made to be less than START WITH value

Cause

시퀀스의 MAXVALUE 값이 START WITH 값보다 작다.


gSQL> CREATE SEQUENCE seq1 START WITH 1000 INCREMENT BY -1 MAXVALUE 1000;


Sequence created.


gSQL> SELECT seq1.NEXTVAL FROM t1;


NEXTVAL

-------

1000

999

998


3 rows selected.


gSQL> ALTER SEQUENCE seq1 MAXVALUE 999;


ERR-42000(16276): MAXVALUE cannot be made to be less than START WITH value :

ALTER SEQUENCE seq1 MAXVALUE 999

*

ERROR at line 1:

Action

START WITH 보다 큰 MAXVALUE 값을 사용한다.


gSQL> ALTER SEQUENCE seq1 MAXVALUE 100000;


Sequence altered.

16277 (SQLSTATE: 42000): log group id is already used

Cause

시스템에 이미 존재하는 log group id로 새로운 log group을 추가할 수 없다.


gSQL> ALTER DATABASE ADD LOGFILE GROUP 10 ( 'abc.log' ) SIZE 20M;


Database altered.


gSQL> ALTER DATABASE ADD LOGFILE GROUP 10 ( 'abc2.log' ) SIZE 20M;


ERR-42000(16277): log group id is already used :

ALTER DATABASE ADD LOGFILE GROUP 10 ( 'abc2.log' ) SIZE 20M

*

ERROR at line 1:

Action

log group을 추가할 때 시스템에 존재하지 않는 새로운 log group id를 설정한다.

16278 (SQLSTATE: 42000): identity column cannot have a default value

Cause

Identity Column 에는 DEFAULT 값을 지정할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER GENERATED BY DEFAULT AS IDENTITY, c2 INTEGER );


Table created.


gSQL> ALTER TABLE t1 ALTER COLUMN c1 SET DEFAULT 1;


ERR-42000(16278): identity column cannot have a default value :

ALTER TABLE t1 ALTER COLUMN c1 SET DEFAULT 1

*

ERROR at line 1:

Action

테이블의 Identity Column 을 확인한다.


gSQL> SELECT table_name, column_name FROM user_tab_identity_cols;


TABLE_NAME COLUMN_NAME

---------- -----------

T1 C1


1 row selected.


gSQL> ALTER TABLE t1 ALTER COLUMN c2 SET DEFAULT 1;


Table altered.

16279 (SQLSTATE: 42000): DEFAULT expression has errors

Cause

DEFAULT 값에 에러가 발생하였다.


gSQL> CREATE SEQUENCE seq1;


Sequence created.


gSQL> CREATE TABLE t1 ( c1 INTEGER DEFAULT 1, c2 INTEGER DEFAULT seq1.NEXTVAL );


Table created.


gSQL> INSERT INTO t1 VALUES ( DEFAULT, DEFAULT );


1 row created.


gSQL> DROP SEQUENCE seq1;


Sequence dropped.


gSQL> INSERT INTO t1 VALUES ( DEFAULT, DEFAULT );


ERR-42000(16279): DEFAULT expression has errors :

INSERT INTO t1 VALUES ( DEFAULT, DEFAULT )

*

ERROR at line 1:

ERR-42000(16036): 'SEQ1.NEXTVAL': invalid identifier :

DEFAULT seq1.NEXTVAL

*

ERROR at line 1:

Action

컬럼의 DEFAULT 를 다시 설정한다.


gSQL> ALTER TABLE t1 ALTER COLUMN c2 SET DEFAULT 1;


Table altered.


gSQL> INSERT INTO t1 VALUES ( DEFAULT, DEFAULT );


1 row created.

16280 (SQLSTATE: 42000): the statement is disallowed

Cause

제품 개발 단계에서 특정 테스트를 위해 사용하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16281 (SQLSTATE: 42000): resource manager doing work outside transaction

Cause

세션에 수행 중인 트랜잭션이 존재할 때 in-doubt xa transaction을 commit/rollback 할 수 없다.


gSQL> INSERT INTO T1 VALUES ( 1 );


1 row created.


gSQL> ROLLBACK FORCE '0.3130.00';


ERR-42000(16281): resource manager doing work outside transaction


gSQL> COMMIT FORCE '0.3130.00';


ERR-42000(16281): resource manager doing work outside transaction

Action

세션에 수행 중인 트랜잭션을 완료 후 in-doubt xa transaction을 완료한다.


gSQL> INSERT INTO T1 VALUES ( 1 );


1 row created.


gSQL> COMMIT;


Commit complete.


gSQL> COMMIT FORCE '0.3130.00';


Commit complete.

16282 (SQLSTATE: 42000): MEMORY tablespace does not support an AUTOEXTEND option

Cause

memory tablespace의 datafile은 autoextend를 지원하지 않는다.


gSQL> ALTER DATABASE DATAFILE 'system_data.dbf' AUTOEXTEND ON;


ERR-42000(16282): MEMORY tablespace does not support an AUTOEXTEND option :

ALTER DATABASE DATAFILE 'system_data.dbf' AUTOEXTEND ON

*

ERROR at line 1:

Action

disk tablespace의 datafile에 대해서만 autoextend를 지원한다.


gSQL> ALTER DATABASE DATAFILE 'system_disk_data.dbf' AUTOEXTEND ON;


Database altered.

16283 (SQLSTATE: HY000): invalid ROWID

Cause

유효하지 않은 ROWID 값이 사용되었다.


gSQL> SELECT rowid FROM t1;


ROWID

-----------------------

AAAAAAAAYgeAACAAgCAjAAA

AAAAAAAAYgeAACAAgCAjAAB


2 rows selected.


gSQL> SELECT c1 FROM t2 WHERE ROWID = 'AAAAAAAAYgeAACAAgCAjAAA';


ERR-HY000(16283): invalid ROWID

Action

ROWID 를 획득한 table 에 대해 조회해야 한다.


gSQL> SELECT c1 FROM t1 WHERE ROWID = 'AAAAAAAAYgeAACAAgCAjAAA';


C1

--

1


1 row selected.

16284 (SQLSTATE: 42000): unable to execute in CDS mode

Cause

CDS 모드에서 실행할 수 없는 구문이다.


gSQL> ALTER DATABASE RESTORE TABLESPACE TEST_TBS2;

ERR-HY000(16286) unable to execute in CDS mode

Action

N/A

16285 (SQLSTATE: RP000): failed to create system threads

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16286 (SQLSTATE: HY000): valid incremental backup does not exist

Cause

다음 구문들을 수행할 때 현재 incremental backup 이 존재하지 않는다.


gSQL> ALTER DATABASE RESTORE;


ERR-HY000(14092): not exist incremental backup

Action

Incremental backup의 존재 여부를 확인한 후 다시 수행한다.


다음은 incremental backup 을 확인하는 방법이다.


gSQL> SELECT backup_name, backup_scope, incremental_level FROM v$incremental_backup;


BACKUP_NAME BACKUP_SCOPE INCREMENTAL_LEVEL

--------------------------------------- ------------ -----------------

database_D20260304_T133953_L0_Q0_P0.inc database 0

control_D20260304_T133954_L0_Q1.inc control 0


2 rows selected.

16287 (SQLSTATE: 42000): log group id does not exist

Cause

ALTER DATABASE ADD LOGFILE 구문을 수행할 때 log group id 에 해당하는 그룹이 존재하지 않는다.


gSQL> ALTER DATABASE ADD LOGFILE MEMBER 'redo_4_0.log' TO GROUP 4;


ERR-42000(16287): log group id does not exist :

ALTER DATABASE ADD LOGFILE MEMBER 'redo_4_0.log' TO GROUP 4

*

ERROR at line 1:

Action

log group id의 존재 여부를 확인한 후 다시 수행한다.


다음은 log group id 를 확인하는 방법이다.


gSQL> SELECT group_id, COUNT(group_id) FROM v$logfile GROUP BY group_id;


GROUP_ID COUNT(GROUP_ID)

-------- ---------------

0 1

1 1

2 1

3 1


4 rows selected.

16288 (SQLSTATE: 42000): invalid string value specified

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16289 (SQLSTATE: 42000): into clause can have only one row

Cause

SELECT INTO 의 결과 건수가 여러 개이다.


gSQL> \var v1 INTEGER

gSQL> SELECT c1 INTO :v1 FROM t1;


ERR-42000(16289): into clause can have only one row

Action

하나의 결과만 생성될 수 있도록 한다.


gSQL> SELECT c1 INTO :v1 FROM t1 WHERE c1 = 1;


V1

--

1


1 row selected.

16290 (SQLSTATE: 42000): SHUTDOWN must be executed in dedicated session

Cause

Shutdown 은 shared session 에서 실행할 수 없다.

Action

Shutdown 은 dedicated session 에서 실행해야 한다.

16291 (SQLSTATE: 40002): transaction rollback: integrity constraint violation

Cause

지연가능한 제약조건을 위반한 상태로 COMMIT 하여 transaction 이 ROLLBACK 되었다.


gSQL> CREATE TABLE t1 ( c1 INTEGER UNIQUE DEFERRABLE INITIALLY DEFERRED, c2 INTEGER );


Table created.


gSQL> INSERT INTO t1 VALUES ( 1, 1 );


1 row created.


gSQL> INSERT INTO t1 VALUES ( 1, 2 );


1 row created.


gSQL> COMMIT;


ERR-40002(16291): transaction rollback: integrity constraint violation : T1_UNIQUE_C1(1)

Action

아래와 같이 제약조건을 위배하지 않도록 하여 COMMIT 해야 한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER UNIQUE DEFERRABLE INITIALLY DEFERRED, c2 INTEGER );


Table created.


gSQL> INSERT INTO t1 VALUES ( 1, 1 );


1 row created.


gSQL> INSERT INTO t1 VALUES ( 1, 2 );


1 row created.


gSQL> UPDATE t1 SET c1 = 2 WHERE c2 = 2;


1 row updated.


gSQL> COMMIT;


Commit complete.

16292 (SQLSTATE: 42000): column length specifier is out of range( 1 to %d ) for columnar table

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16293 (SQLSTATE: 42000): columnar table does not support LONG VARCHAR and LONG VARBINARY

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16294 (SQLSTATE: 42000): cannot defer a constraint that is not deferrable

Cause

NOT DEFERRABLE 제약조건에 DEFERRED 설정을 할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER UNIQUE );


Table created.


gSQL> ALTER TABLE t1 ALTER UNIQUE(c1) NOT DEFERRABLE INITIALLY DEFERRED;


ERR-42000(16294): cannot defer a constraint that is not deferrable :

ALTER TABLE t1 ALTER UNIQUE(c1) NOT DEFERRABLE INITIALLY DEFERRED

*

ERROR at line 1:

Action

아래와 같이 DEFERRABLE 을 기술해 주어야 한다.


gSQL> ALTER TABLE t1 ALTER UNIQUE(c1) DEFERRABLE INITIALLY DEFERRED;


Table altered.

16295 (SQLSTATE: 42000): invalid NOT NULL constraint specified on an identity column

Cause

Identity Column 에 대해 deferrable NOT NULL 제약조건을 설정할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL DEFERRABLE );


ERR-42000(16295): invalid NOT NULL constraint specified on an identity column :

CREATE TABLE t1 ( c1 INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL DEFERRABLE )

*

ERROR at line 1:

Action

아래와 같이 DEFERRABLE 을 제거한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL );


Table created.

16296 (SQLSTATE: 42000): constraint '%s' is not deferrable

Cause

지연가능한 제약조건이 아니다.


gSQL> CREATE TABLE t1 ( c1 INTEGER CONSTRAINT t1_uk UNIQUE );


Table created.


gSQL> SET CONSTRAINTS t1_uk DEFERRED;


ERR-42000(16296): constraint 'T1_UK' is not deferrable :

SET CONSTRAINTS t1_uk DEFERRED

*

ERROR at line 1:

Action

지연가능한 제약조건에 한해 SET CONSTRAINTS 구문을 사용할 수 있다.


gSQL> CREATE TABLE t1 ( c1 INTEGER CONSTRAINT t1_uk UNIQUE DEFERRABLE );


Table created.


gSQL> SET CONSTRAINTS t1_uk DEFERRED;


Constraints set.

16297 (SQLSTATE: 42000): duplicate constraint name specified

Cause

동일한 제약조건 이름을 사용하였다.


gSQL> CREATE TABLE t1 ( c1 INTEGER CONSTRAINT t1_uk1 UNIQUE, c2 INTEGER CONSTRAINT t1_uk2 UNIQUE );


Table created.



gSQL> ALTER TABLE t1 RENAME CONSTRAINT t1_uk2 TO t1_uk1;


ERR-42000(16297): duplicate constraint name specified :

ALTER TABLE t1 RENAME CONSTRAINT t1_uk2 TO t1_uk1

*

ERROR at line 1:

Action

새로운 제약조건 이름을 사용한다.


gSQL> ALTER TABLE t1 RENAME CONSTRAINT t1_uk2 TO t1_uk_new;


Table altered.

16298 (SQLSTATE: 42000): cannot make primary key supplemental log data with primary key constraint violation

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16299 (SQLSTATE: 42000): datafile does not exist in database

Cause

ALTER DATABASE RECOVER DATAFILE 구문을 수행할 때 지정한 datafile 이 디스크 상에는 존재하지만 database 에서 사용 중인 파일이 아니다.


gSQL> ALTER DATABASE RECOVER DATAFILE 'test.dbf';


ERR-42000(16299): datafile does not exist in database

Action

해당 datafile 이 데이터베이스에서 사용 중인지 확인한 후 다시 수행한다.


다음은 사용 중인 datafile 을 확인하는 방법이다.


gSQL> SELECT tbs_name, datafile_name FROM v$datafile;


TBS_NAME DATAFILE_NAME

-------------- ----------------------------------------------------------------------

DICTIONARY_TBS /test/db/system_dict.dbf

MEM_UNDO_TBS /test/db/system_undo.dbf

MEM_DATA_TBS /test/db/system_data.dbf

MEM_TEMP_TBS system_temp

DISK_DATA_TBS /test/db/system_disk_data.dbf

MEM_AUX_TBS /test/db/system_aux.dbf

MEM_TRANS_TBS /test/db/system_trans.dbf


7 rows selected.

16300 (SQLSTATE: 42000): too many SQL resource

Cause

expression 최대 개수 (2,147,483,648)를 초과하였다.


예: SELECT 1+2+3+...........+2147483647+2147483648 FROM dual;

Action

해당 에러 발생 시 고객센터에 문의한다.

16301 (SQLSTATE: 42000): name '%s' is already used by an existing public synonym

Cause

동일한 이름의 public synonym 이 존재한다.


gSQL> CREATE PUBLIC SYNONYM ps1 FOR t1;


Synonym created.


gSQL> CREATE PUBLIC SYNONYM ps1 FOR t2;


ERR-42000(16301): name 'PS1' is already used by an existing public synonym :

CREATE PUBLIC SYNONYM ps1 FOR t2

*

ERROR at line 1:

Action

기존에 사용 되지 않은 synonym 이름을 사용한다.


gSQL> CREATE PUBLIC SYNONYM ps2 FOR t2;


Synonym created.

16302 (SQLSTATE: 42000): private synonym '%s' to be dropped does not exist

Cause

private synonym 이 존재하지 않는다.


gSQL> DROP SYNONYM s1;


ERR-42000(16302): private synonym 'S1' to be dropped does not exist :

DROP SYNONYM s1

*

ERROR at line 1:

Action

private synonym 이 존재하는지 확인한다.


gSQL> SELECT synonym_name FROM user_synonyms;


SYNONYM_NAME

------------

S2


1 row selected.


gSQL> DROP SYNONYM s2;


Synonym dropped.

16303 (SQLSTATE: 42000): public synonym '%s' to be dropped does not exist

Cause

public synonym 이 존재하지 않는다.


gSQL> DROP PUBLIC SYNONYM ps3;


ERR-42000(16303): public synonym 'PS3' to be dropped does not exist :

DROP PUBLIC SYNONYM ps3

*

ERROR at line 1:

Action

public synonym 이 존재하는지 확인한다.


gSQL> SELECT synonym_name FROM all_synonyms WHERE synonym_schema IS NULL;


SYNONYM_NAME

-------------------

DUAL

...

...

PS1

PS2


317 rows selected.


gSQL> DROP PUBLIC SYNONYM ps1;


Synonym dropped.

16304 (SQLSTATE: 42000): looping chain of synonyms

Cause

자기 자신을 참조하는 looping chain 이 발생하였다.


gSQL> CREATE SYNONYM s1 FOR s1;


ERR-42000(16304): looping chain of synonyms :

CREATE SYNONYM s1 FOR s1

*

ERROR at line 1:

Action

looping chain 이 발생하지 않도록 한다.


gSQL> CREATE SYNONYM s1 FOR t1;


Synonym created.

16305 (SQLSTATE: 42000): synonym translation is no longer valid

Cause

synonym 이 참조하는 객체가 존재하지 않는다.


gSQL> CREATE SYNONYM s1 FOR invalid;


Synonym created.


gSQL> SELECT * FROM s1;


ERR-42000(16040): table or view does not exist :

SELECT * FROM s1

*

ERROR at line 1:

Action

참조하는 객체가 존재하는 synonym 을 생성한다.


gSQL> CREATE SYNONYM s1 FOR t1;


Synonym created.


gSQL> SELECT * FROM s1;


C1

--

1


1 row selected.

16306 (SQLSTATE: 42000): expression is out of iteration time scope

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16307 (SQLSTATE: 42000): constant value expression expected

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16308 (SQLSTATE: 42000): invalid or redundant resource

Cause

중복된 profile parameter 가 사용되었다.


gSQL> CREATE PROFILE p1 LIMIT FAILED_LOGIN_ATTEMPTS 1 FAILED_LOGIN_ATTEMPTS 2;


ERR-42000(16308): invalid or redundant resource :

CREATE PROFILE p1 LIMIT FAILED_LOGIN_ATTEMPTS 1 FAILED_LOGIN_ATTEMPTS 2

*

ERROR at line 1:

Action

중복된 profile parameter 를 제거한다.


gSQL> CREATE PROFILE p1 LIMIT FAILED_LOGIN_ATTEMPTS 1;


Profile created.

16309 (SQLSTATE: 42000): the account is locked

Cause

계정이 잠겨있다.


gSQL> ALTER USER u1 ACCOUNT LOCK;


User altered.


gSQL> \connect u1 u1


ERR-28000(16309): the account is locked

Action

계정 잠금을 해제한다.


gSQL> ALTER USER u1 ACCOUNT UNLOCK;


User altered.


gSQL> \connect u1 u1

gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.

16310 (SQLSTATE: 42000): the password will expire in %ld days

Cause

password 가 해당 기간 후에 만료된다.


gSQL> \connect u1 u1


ERR-28000(16310): the password will expire in 1 days

Action

사용자의 password 를 변경한다.

16311 (SQLSTATE: 42000): the password will expire soon

Cause

사용자의 password 가 특정기간 (GRACE TIME) 이후 만료된다.


% gsql u1 u1


ERR-28000(16311): the password will expire soon


Connected to Database.

Action

사용자의 password 를 변경한다.


사용자의 계정 상태는 아래와 같이 확인할 수 있다.


gSQL> SELECT username, account_status, lock_date, expiry_date FROM user_users;


USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE

-------- -------------- --------- --------------------------

U1 EXPIRED(GRACE) null 2024-02-29 14:40:50.140375


1 row selected.


gSQL> ALTER USER u1 IDENTIFIED BY u1_new REPLACE u1;


User altered.


gSQL> SELECT username, account_status, lock_date, expiry_date FROM user_users;


USERNAME ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE

-------- -------------- --------- --------------------------

U1 OPEN null 2025-02-28 14:51:18.110624


1 row selected.

16312 (SQLSTATE: 42000): the password has expired

Cause

login 은 성공하였으나 password 가 만료되었다.


% gsql u1 u1


ERR-28000(16312): the password has expired

Changing password for u1

New password:

Action

새로운 password 를 입력한다.


Changing password for u1

New password: ******

Retype new password: ******


Connected to Database.

16313 (SQLSTATE: 42000): the password cannot be reused

Cause

동일한 password 로 변경할 수 없다.


gSQL> ALTER USER u1 IDENTIFIED BY u1 REPLACE u1;


ERR-28000(16313): the password cannot be reused

Action

기존과 다른 password 를 사용한다.


gSQL> ALTER USER u1 IDENTIFIED BY u1_new REPLACE u1;


User altered.

16314 (SQLSTATE: 42000): cannot lock "SYS" account

Cause

계정을 잠글 수 없다.


gSQL> ALTER USER sys ACCOUNT LOCK;


ERR-42000(16314): cannot lock "SYS" account

Action

SYS 계정은 잠글 수 없다.

16315 (SQLSTATE: 42000): profile '%s' already exists

Cause

동일한 profile 이 이미 존재한다.


gSQL> CREATE PROFILE prof1 LIMIT PASSWORD_REUSE_MAX 2;


ERR-42000(16315): profile 'PROF1' already exists :

CREATE PROFILE prof1 LIMIT PASSWORD_REUSE_MAX 2

*

ERROR at line 1:

Action

기존에 존재하지 않는 profile 을 생성한다.


gSQL> CREATE PROFILE prof2 LIMIT PASSWORD_REUSE_MAX 2;


Profile created.

16316 (SQLSTATE: 42000): function '%s' not found

Cause

존재하지 않는 PASSWORD_VERIFY_FUNCTION 을 사용하였다.


gSQL> ALTER PROFILE prof1 LIMIT PASSWORD_VERIFY_FUNCTION invalid;


ERR-42000(16316): function 'INVALID' not found :

ALTER PROFILE prof1 LIMIT PASSWORD_VERIFY_FUNCTION invalid

*

ERROR at line 1:

Action

아래와 같이 존재하는 PASSWORD_VERIFY_FUNCTION 을 사용한다.


gSQL> ALTER PROFILE prof1 LIMIT PASSWORD_VERIFY_FUNCTION KISA_VERIFY_FUNCTION;


Profile altered.

16317 (SQLSTATE: 42000): profile '%s' has users assigned, cannot drop without CASCADE

Cause

해당 profile 이 사용자에게 설정되어 있다.


gSQL> DROP PROFILE prof1;


ERR-42000(16317): profile 'PROF1' has users assigned, cannot drop without CASCADE

Action

CASCADE 옵션을 사용한다.


gSQL> DROP PROFILE prof1 CASCADE;


Profile dropped.

16318 (SQLSTATE: 42000): profile '%s' does not exist

Cause

profile 이 존재하지 않는다.


gSQL> DROP PROFILE prof1;


ERR-42000(16318): profile 'PROF1' does not exist :

DROP PROFILE prof1

*

ERROR at line 1:

Action

해당 profile 이 존재하는지 확인한다.


gSQL> SELECT DISTINCT profile_name FROM dba_profiles;


PROFILE_NAME

------------

DEFAULT

PROF2


2 rows selected.

16319 (SQLSTATE: 42000): cannot assign PROFILE to "SYS" account

Cause

계정에 profile 을 설정할 수 없다.


gSQL> ALTER USER sys PROFILE prof2;


ERR-42000(16319): cannot assign PROFILE to "SYS" account

Action

SYS 계정에는 profile 을 설정할 수 없다.

16320 (SQLSTATE: 42000): cannot assign DEFAULT parameter value to "DEFAULT" profile

Cause

"DEFAULT" profile 에는 DEFAULT 값을 설정할 수 없다.


gSQL> ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS DEFAULT;


ERR-42000(16320): cannot assign DEFAULT parameter value to "DEFAULT" profile :

ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS DEFAULT

*

ERROR at line 1:

Action

"DEFAULT" profile 에는 다른 profile 에서 사용할 DEFAULT 값이 설정되어 있다.

따라서 "DEFAULT" profile 에는 유효한 값으로 설정해야 한다.


gSQL> SELECT * FROM dba_profiles WHERE profile_name = 'DEFAULT';


PROFILE_NAME RESOURCE_NAME RESOURCE_TYPE LIMIT_VALUE COMMON

------------ ------------------------ ------------- ----------- ------

DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 YES

DEFAULT PASSWORD_LOCK_TIME PASSWORD 1 YES

DEFAULT PASSWORD_LIFE_TIME PASSWORD 180 YES

DEFAULT PASSWORD_GRACE_TIME PASSWORD 7 YES

DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED YES

DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED YES

DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL YES


7 rows selected.


gSQL> ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 20;


Profile altered.

16321 (SQLSTATE: 42000): password length less than '%d'

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중에 password 길이 제약을 만족하지 못하였다.


gSQL> CREATE PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION KISA_VERIFY_FUNCTION;


Profile created.


gSQL> ALTER USER u1 PROFILE p1;


User altered.


gSQL> ALTER USER u1 IDENTIFIED BY u1;


ERR-42000(16321): password length less than '8'

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER u1 IDENTIFIED BY axUt_z3qt;


User altered.

16322 (SQLSTATE: 42000): password must contain at least '%d' letter(s)

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중에 password 문자 사용 제약을 만족하지 못하였다.


gSQL> CREATE PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION KISA_VERIFY_FUNCTION;


Profile created.


gSQL> ALTER USER u1 PROFILE p1;


User altered.


gSQL> ALTER USER u1 IDENTIFIED BY "1234567801";


ERR-42000(16322): password must contain at least '1' letter(s)

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER u1 IDENTIFIED BY axUt_z3qt;


User altered.

16323 (SQLSTATE: 42000): password must contain at least uppercase '%d' character(s)

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중에 password 의 대문자 횟수 제약을 만족하지 못하였다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION ORA12C_STRONG_VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER u1 PROFILE p1;


User altered.


gSQL> ALTER USER u1 IDENTIFIED BY a1b2_c3fdja;


ERR-42000(16323): password must contain at least uppercase '2' character(s)

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER u1 IDENTIFIED BY a1B2_C3f_dja;


User altered.

16324 (SQLSTATE: 42000): password must contain at least lowercase '%d' character(s)

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중에 password 의 소문자 횟수 제약을 만족하지 못하였다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION ORA12C_STRONG_VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER u1 PROFILE p1;


User altered.


gSQL> ALTER USER u1 IDENTIFIED BY A1U2DX_12;


ERR-42000(16324): password must contain at least lowercase '2' character(s)

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER u1 IDENTIFIED BY a1B2_C3f_dja;


User altered.

16325 (SQLSTATE: 42000): password must contain at least '%d' digit(s)

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중에 password 의 숫자 횟수 제약을 만족하지 못하였다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION KISA_VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER u1 PROFILE p1;


User altered.


gSQL> ALTER USER u1 IDENTIFIED BY AuDX_zqT;


ERR-42000(16325): password must contain at least '1' digit(s)

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER u1 IDENTIFIED BY a1B2_C3f_dja;


User altered.

16326 (SQLSTATE: 42000): password must contain at least '%d' special character(s)

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중에 password 의 특수문자 횟수 제약을 만족하지 못하였다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION KISA_VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER u1 PROFILE p1;


User altered.


gSQL> ALTER USER u1 IDENTIFIED BY A1uDX9zqT;


ERR-42000(16326): password must contain at least '1' special character(s)

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER u1 IDENTIFIED BY a1B2_C3f_dja;


User altered.

16327 (SQLSTATE: 42000): password same as or similar to user name

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중에 password 에 사용자 이름을 포함하였다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER test1user PROFILE p1;


User altered.


gSQL> ALTER USER test1user IDENTIFIED BY atest1User_1;


ERR-42000(16327): password same as or similar to user name

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER test1user IDENTIFIED BY a1B2_C3f_dja;


User altered.

16328 (SQLSTATE: 42000): password contains the user name reversed

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중 password 에 사용자 이름의 역순이 사용되었다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER test1user PROFILE p1;


User altered.


gSQL> ALTER USER test1User IDENTIFIED BY aresU1tset_;


ERR-42000(16328): password contains the user name reversed

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER test1user IDENTIFIED BY a1B2_C3f_dja;


User altered.

16329 (SQLSTATE: 42000): password same as or similar to database name

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중 password 에 database 이름이 사용되었다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER test1user PROFILE p1;


User altered.


gSQL> ALTER USER test1User IDENTIFIED BY test_db100;


ERR-42000(16329): password same as or similar to database name


gSQL> SELECT catalog_name FROM catalog_name;


CATALOG_NAME

------------

TEST_DB


1 row selected.

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER test1user IDENTIFIED BY a1B2_C3f_dja;


User altered.

16330 (SQLSTATE: 42000): password too simple

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중 password 의 형태가 너무 단순하다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER test1user PROFILE p1;


User altered.


gSQL> ALTER USER test1User IDENTIFIED BY password1;


ERR-42000(16330): password too simple

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER test1user IDENTIFIED BY a1B2_C3f_dja;


User altered.

16331 (SQLSTATE: 42000): Password should differ from the old password by at least '%d' characters

Cause

PASSWORD_VERIFY_FUNCTION 의 제약 중 새로운 password 가 기존 password 대비 3 글자 이상 달라야 한다.


gSQL> ALTER PROFILE p1 LIMIT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;


Profile altered.


gSQL> ALTER USER u1 PROFILE p1;


User altered.


gSQL> \connect u1 zAc123_2


gSQL> ALTER USER u1 IDENTIFIED BY zAc123_3 REPLACE zAc123_2;


ERR-42000(16331): Password should differ from the old password by at least '3' characters

Action

지정된 PASSWORD_VERIFY_FUNCTION 의 제약을 준수하는 password 를 사용한다.


gSQL> ALTER USER u1 IDENTIFIED BY TuzY1__6 REPLACE zAc123_2;


User altered.

16332 (SQLSTATE: 42000): constant value does not support LONG VARCHAR and LONG VARBINARY

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16333 (SQLSTATE: 42000): value of parameter number (%d) must be consistent datatype

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16334 (SQLSTATE: 42000): invalid value is prevented in parameter number (%d)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16335 (SQLSTATE: 42000): UPDATE primary key not allowed for supplemental log table

Cause

SUPPLEMENTAL LOG 가 설정된 테이블의 primary key UPDATE 를 허용하지 않는다.


gSQL> CREATE TABLE t1 ( c1 INTEGER PRIMARY KEY, c2 INTEGER );


Table created.


gSQL> ALTER TABLE t1 ADD SUPPLEMENTAL LOG DATA ( PRIMARY KEY ) COLUMNS;


Table altered.


gSQL> ALTER SESSION SET DISABLE_UPDATE_PK_CDC_GIVEUP = ON;


Session altered.


gSQL> UPDATE t1 SET c1 = 2 WHERE c2 = 1;


ERR-42000(16335): UPDATE primary key not allowed for supplemental log table

Action

DISABLE_UPDATE_PK_CDC_GIVEUP 프로퍼티가 설정된 경우 primary key 를 UPDATE 할 수 없다.

16336 (SQLSTATE: 42000): cluster group '%s' does not exist

Cause

cluster group 이 존재하지 않는다.


gSQL> DROP CLUSTER GROUP invalid_group;


ERR-42000(16336): cluster group 'INVALID_GROUP' does not exist :

DROP CLUSTER GROUP invalid_group

*

ERROR at line 1:

Action

존재하는 cluster group 이름을 확인한다.


gSQL> SELECT DISTINCT group_name FROM dba_cluster;


GROUP_NAME

----------

G2

G1

G3


3 rows selected.

16337 (SQLSTATE: 42000): duplicate cluster object listed

Cause

동일한 cluster member 이름을 나열하였다.


gSQL>


CREATE CLUSTER GROUP g4

CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 10410,

CLUSTER MEMBER g4n2 HOST '127.0.0.1' PORT 10420,

CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 10430;


ERR-42000(16337): duplicate cluster object listed :

CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 10430

*

ERROR at line 4:

Action

동일한 cluster member 이름을 사용하지 않는다.

16338 (SQLSTATE: 42000): cluster domain '%s' does not exist

Cause

cluster domain 이 존재하지 않는다.


gSQL> SELECT * FROM t1@INVALID;


ERR-42000(16338): cluster domain 'INVALID' does not exist :

SELECT * FROM t1@INVALID

*

ERROR at line 1:

Action

유효한 cluster domain 이름을 사용한다.


gSQL> SELECT * FROM t1@G1;


C1

--

1


1 row selected.


gSQL> SELECT * FROM t1@G1N1;


C1

--

1


1 row selected.

16339 (SQLSTATE: 42000): invalid hash shard count (must between %d and %d)

Cause

hash shard count 값의 범위를 벗어났다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) SHARDING BY (c1) SHARD COUNT 513;


ERR-42000(16339): invalid hash shard count (must between 1 and 512) :

CREATE TABLE t1 ( c1 INTEGER ) SHARDING BY (c1) SHARD COUNT 513

*

ERROR at line 1:

Action

유효한 hash shard count ( 1 ~ 512 ) 값을 사용한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) SHARDING BY (c1) SHARD COUNT 60;


Table created.

16340 (SQLSTATE: 42000): not found available sharding key column

Cause

LONG VARCHAR 컬럼으로만 구성된 테이블은 DEFAULT_SHARDING 프로퍼티로 sharding 할 수 없다.


gSQL> ALTER SESSION SET DEFAULT_SHARDING = 1;


Session altered.


gSQL> CREATE TABLE t1 ( c1 LONG VARCHAR );


ERR-42000(16340): not found available sharding key column

Action

LONG VARCHAR 컬럼으로만 구성된 테이블은 cloned 로 생성한다.


gSQL> ALTER SESSION SET DEFAULT_SHARDING = 1;


Session altered.


gSQL> CREATE TABLE t1 ( c1 LONG VARCHAR ) CLONED;


Table created.

16341 (SQLSTATE: 42000): cannot specifiy sharding strategy and placement for a table on dictionary schema '%s'

Cause

system schema 에 생성하는 테이블은 sharding 정책을 명시할 수 없다.


gSQL> CREATE TABLE INFORMATION_SCHEMA.t1 ( c1 INTEGER ) CLONED;


ERR-42000(16341): cannot specify sharding strategy and placement for a table on dictionary schema 'INFORMATION_SCHEMA'

Action

system schema 에 사용자 객체를 생성하지 않는다.

16342 (SQLSTATE: HYC00): not implemented feature for cluster system, in a function %s

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16343 (SQLSTATE: 42000): invalid syntax for a stand-alone system

Cause

stand-alone 시스템에서 사용할 수 없는 구문이다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.


gSQL> ALTER TABLE t1 ADD GLOBAL SECONDARY INDEX;


ERR-42000(16343): invalid syntax for a stand-alone system :

ALTER TABLE t1 ADD GLOBAL SECONDARY INDEX

*

ERROR at line 1:

Action

cluster 시스템인지 확인한다.


gSQL> SELECT is_cluster FROM x$instance;


IS_CLUSTER

----------

FALSE


1 row selected.

16344 (SQLSTATE: 42000): database is not local opened

Cause

현재 start-up 단계가 local opened 상태가 아니다.


gSQL> \startup nomount


Startup success


gSQL> ALTER SYSTEM OPEN GLOBAL DATABASE;


ERR-42000(16344): database is not local opened

Action

현재 상태를 확인하고 단계적으로 start-up 단계를 변경한다.


gSQL> \startup nomount


Startup success


gSQL> ALTER SYSTEM MOUNT DATABASE;


System altered.


gSQL> ALTER SYSTEM OPEN LOCAL DATABASE;


System altered.


gSQL> ALTER SYSTEM OPEN GLOBAL DATABASE;


System altered.

16345 (SQLSTATE: 42000): database is already opened

Cause

database 가 이미 open 되었다.


gSQL> ALTER SYSTEM MOUNT DATABASE;


ERR-42000(16345): database is already opened

Action

현재 상태를 확인한다.


gSQL> SELECT status FROM x$instance;


STATUS

------

OPEN


1 row selected.

16346 (SQLSTATE: 42000): name '%s' is already used by an existing cluster object

Cause

이미 사용 중인 cluster object 이름이다.


gSQL> ALTER CLUSTER GROUP g1 ADD


CLUSTER MEMBER g1n1 HOST '127.0.0.1' PORT 10101;

ERR-42000(16346): name 'G1N1' is already used by an existing cluster object :

CLUSTER MEMBER g1n1 HOST '127.0.0.1' PORT 10101

*

ERROR at line 2:

Action

이미 사용 중인 cluster object 이름인지 확인한다.


gSQL> SELECT group_name, member_name FROM dba_cluster;


GROUP_NAME MEMBER_NAME

---------- -----------

G1 G1N1

G1 G1N2

G2 G2N1

G2 G2N2

G3 G3N1

G3 G3N2


6 rows selected.

16347 (SQLSTATE: 42000): cluster port is out of range( %d to %d )

Cause

cluster port 값이 잘못되었다.


gSQL> ALTER CLUSTER LOCATION g1n9 PORT 11;


ERR-42000(16347): cluster port is out of range( 1024 to 49151 ) :

ALTER CLUSTER LOCATION g1n9 PORT 11

*

ERROR at line 1:

Action

유효한 범위 (1024 ~ 49151) 의 cluster port 를 사용해야 한다.


gSQL> ALTER CLUSTER LOCATION g1n9 PORT 11111;


Location altered.

16348 (SQLSTATE: 42000): duplicate cluster connection listed

Cause

중복된 cluster connection 을 나열하였다.


gSQL>


CREATE CLUSTER GROUP g4

CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 10410,

CLUSTER MEMBER g4n2 HOST '127.0.0.2' PORT 10410,

CLUSTER MEMBER g4n3 HOST '127.0.0.1' PORT 10410;


ERR-42000(16348): duplicate cluster connection listed :

CLUSTER MEMBER g4n3 HOST '127.0.0.1' PORT 10410

*

ERROR at line 4:

Action

HOST 와 PORT 조합은 cluster system 내에서 유일해야 한다.

16349 (SQLSTATE: 42000): the first cluster group does not contain local cluster member '%s'

Cause

cluster system 에서 최초 cluster group 생성 시 현재 접속한 cluster member 를 포함해야 한다.


gSQL> SELECT local_member_name FROM x$instance;


LOCAL_MEMBER_NAME

-----------------

G1N1


1 row selected.


gSQL> CREATE CLUSTER GROUP G1 CLUSTER MEMBER G1N2 HOST '127.0.0.1' PORT 12150;


ERR-42000(16349): the first cluster group does not contain local cluster member 'G1N1'

Action

최초 cluster group 생성 시 현재 접속한 cluster member 만으로 구성할 수 있다.


gSQL> SELECT local_member_name FROM x$instance;


LOCAL_MEMBER_NAME

-----------------

G1N1


1 row selected.


gSQL> CREATE CLUSTER GROUP G1 CLUSTER MEMBER G1N1 HOST '127.0.0.1' PORT 11150;


Cluster Group created.

16350 (SQLSTATE: 42000): maximum number of cluster members exceeded

Cause

하나의 cluster group 에 생성할 수 있는 cluster member 개수를 초과하였다.


gSQL>


CREATE CLUSTER GROUP g4

CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 10410,

CLUSTER MEMBER g4n2 HOST '127.0.0.1' PORT 10420,

CLUSTER MEMBER g4n3 HOST '127.0.0.1' PORT 10430,

CLUSTER MEMBER g4n4 HOST '127.0.0.1' PORT 10440,

CLUSTER MEMBER g4n5 HOST '127.0.0.1' PORT 10405,

CLUSTER MEMBER g4n6 HOST '127.0.0.1' PORT 10406,

CLUSTER MEMBER g4n7 HOST '127.0.0.1' PORT 10407,

CLUSTER MEMBER g4n8 HOST '127.0.0.1' PORT 10408,

CLUSTER MEMBER g4n9 HOST '127.0.0.1' PORT 10409,

CLUSTER MEMBER g4n10 HOST '127.0.0.1' PORT 10410,

CLUSTER MEMBER g4n11 HOST '127.0.0.1' PORT 10411,

CLUSTER MEMBER g4n12 HOST '127.0.0.1' PORT 10412,

CLUSTER MEMBER g4n13 HOST '127.0.0.1' PORT 10413,

CLUSTER MEMBER g4n14 HOST '127.0.0.1' PORT 10414,

CLUSTER MEMBER g4n15 HOST '127.0.0.1' PORT 10415,

CLUSTER MEMBER g4n16 HOST '127.0.0.1' PORT 10416,

CLUSTER MEMBER g4n17 HOST '127.0.0.1' PORT 10417,

CLUSTER MEMBER g4n18 HOST '127.0.0.1' PORT 10418,

CLUSTER MEMBER g4n19 HOST '127.0.0.1' PORT 10419,

CLUSTER MEMBER g4n20 HOST '127.0.0.1' PORT 10420,

CLUSTER MEMBER g4n21 HOST '127.0.0.1' PORT 10421,

CLUSTER MEMBER g4n22 HOST '127.0.0.1' PORT 10422,

CLUSTER MEMBER g4n23 HOST '127.0.0.1' PORT 10423,

CLUSTER MEMBER g4n24 HOST '127.0.0.1' PORT 10424,

CLUSTER MEMBER g4n25 HOST '127.0.0.1' PORT 10425,

CLUSTER MEMBER g4n26 HOST '127.0.0.1' PORT 10426,

CLUSTER MEMBER g4n27 HOST '127.0.0.1' PORT 10427,

CLUSTER MEMBER g4n28 HOST '127.0.0.1' PORT 10428,

CLUSTER MEMBER g4n29 HOST '127.0.0.1' PORT 10429,

CLUSTER MEMBER g4n30 HOST '127.0.0.1' PORT 10430,

CLUSTER MEMBER g4n31 HOST '127.0.0.1' PORT 10431,

CLUSTER MEMBER g4n32 HOST '127.0.0.1' PORT 10432,

CLUSTER MEMBER g4n33 HOST '127.0.0.1' PORT 10433

;


ERR-42000(16350): maximum number of cluster members exceeded

Action

하나의 cluster group 은 최대 32 까지의 cluster member 로 구성할 수 있다.

16351 (SQLSTATE: HY000): failed to connect to the cluster member '%s'

Cause

대상 노드가 구동 중이 아니거나 host 또는 port 값을 잘못 지정한 경우에 발생할 수 있다.


gSQL> alter cluster group g3 add cluster member g3n3 host '127.0.0.1' port 13350;


ERR-HY000(16351): failed to connect to the cluster member 'G3N3'

ERR-HY000(56022): failed to connect to a host

ERR-HY000(11067): failed to connect to a host with a socket : poll() - port '13350' : stnConnect() returned errno(111)

Action

대상 노드의 location 정보를 확인한 후 구문을 변경하여 다시 시도한다.

16352 (SQLSTATE: 42000): mismatch local cluster member with location file

Cause

새로운 멤버나 그룹을 추가할 때, 대상 멤버의 location 정보와 구문에 지정된 location 정보가 일치하지 않으면 발생한다.


gSQL> CREATE CLUSTER GROUP g4 CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 11111;


ERR-42000(16352): mismatch local cluster member with location file :

CREATE CLUSTER GROUP g4 CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 11111

*

ERROR at line 1:

Action

대상 노드의 location 정보를 확인한 후 구문을 변경하여 다시 시도한다.

16353 (SQLSTATE: 42000): conflict between new cluster member and location file

Cause

새로운 멤버나 그룹을 추가할 때 구문에 지정된 location 정보가 기존에 운영 중인 노드의 location 정보와 충돌하는 경우에 발생한다.


gSQL> CREATE CLUSTER GROUP g4 CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 11150;


ERR-42000(16353): conflict between new cluster member and location file :

CREATE CLUSTER GROUP g4 CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 11150

*

ERROR at line 1:

Action

기존에 운영 중인 노드의 location 정보를 확인한 후 구문을 변경하여 다시 시도한다.

16354 (SQLSTATE: HY000): connection of member '%s' is broken

Cause

특정 cluster member 와의 연결이 단절되었다.


gSQL> SELECT * FROM x$instance;


ERR-HY000(16354): connection of member 'G2N2' is broken

Action

연결이 가능한 유효한 domain 을 명시하거나


gSQL> SELECT local_member_name FROM x$instance@LOCAL;


LOCAL_MEMBER_NAME

-----------------

G1N1


1 row selected.


해당 에러를 warning 으로 처리하는 CLUSTER_IGNORE_INACTIVE_MEMBER 옵션을 사용한다.


gSQL> ALTER SESSION SET CLUSTER_IGNORE_INACTIVE_MEMBER = ON;


Session altered.


gSQL> SELECT local_member_name FROM x$instance;


ERR-01000(16394): Warning: connection of member 'G2N2' is broken

LOCAL_MEMBER_NAME

-----------------

G1N1

G3N2

G3N1

G1N2

G2N1


5 rows selected.

16355 (SQLSTATE: 42000): non-deterministic function not allowed here

Cause

값이 일정치 않은 non-deterministic function 을 사용할 수 없다.


gSQL>


CREATE TABLE t1 ( sk INTEGER )

SHARDING BY RANGE (sk)

SHARD s1 VALUES LESS THAN ( RANDOM(1,100) ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( RANDOM(1,200) ) AT CLUSTER GROUP g2,

SHARD s3 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g3;


ERR-42000(16374): range shard bound value must be one of: valid constant or MAXVALUE

ERR-42000(16355): non-deterministic function not allowed here :

SHARD s1 VALUES LESS THAN ( RANDOM(1,100) ) AT CLUSTER GROUP g1,

*

ERROR at line 3:

Action

아래와 같이 상수값을 사용한다.


gSQL>


CREATE TABLE t1 ( sk INTEGER )

SHARDING BY RANGE (sk)

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( 200 ) AT CLUSTER GROUP g2,

SHARD s3 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g3;


Table created.

16356 (SQLSTATE: 42000): version conflict

Cause

서버 내부에서 제어하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16357 (SQLSTATE: 42R01): must be accessible to at least one member of group '%s'

Cause

해당 cluster group 을 구성하는 모든 cluster member 에 접근할 수 없다.


gSQL> INSERT INTO t1 VALUES ( 12, 12 );


ERR-42R01(16357): must be accessible to at least one member of group 'G4'

Action

최소 하나의 cluster member 를 복구해야 한다.

단, 다른 cluster group 에 대한 연산은 수행할 수 있다.


gSQL> UPDATE T_RANGE SET I1 = 2 WHERE I1 = 1;


1 row updated.

16358 (SQLSTATE: 42R01): accessible member does not exist

Cause

해당 domain 에 접근할 수 있는 cluster member 가 존재하지 않는다.


gSQL> SELECT COUNT(*) FROM t_cloned@g1;


ERR-42R01(16358): accessible member does not exist

Action

접근 가능한 cluster domain 을 사용한다.


gSQL> SELECT COUNT(*) FROM t_cloned@g3;


COUNT(*)

--------

1


1 row selected.

16359 (SQLSTATE: 42000): no inactive members

Cause

모든 cluster member 가 연결되어 있다.


gSQL> ALTER DATABASE DROP INACTIVE CLUSTER MEMBERS;


ERR-42000(16359): no inactive members

Action

연결이 끊긴 cluster member 를 제거하고자 할 때 수행한다.

16360 (SQLSTATE: 42R02): cloned table "%s"."%s" must have at least one usable replica

Cause

inactive cluster member 를 모두 drop 할 경우 clone table 의 data 를 모두 잃는다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) CLONED AT CLUSTER GROUP g4;


Table created.


이후 G4 group 을 구성하는 모든 cluster member 의 연결이 단절된 후 수행한다.


gSQL> ALTER DATABASE DROP INACTIVE CLUSTER MEMBERS;


ERR-42R02(16360): cloned table "PUBLIC"."T1" must have at least one usable replica

Action

data loss 를 유발하는 cluster member 의 DROP 은 허용하지 않는다.

data loss 가 발생하지 않도록 최소 하나의 cluster member 를 복원해야 한다.

16361 (SQLSTATE: 42R02): sharded table "%s"."%s" must have at least one usable replica of group '%s'

Cause

inactive cluster member 를 모두 drop 할 경우 sharded table 의 특정 shard data 를 모두 잃는다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) SHARDING BY (c1);


Table created.


이후 shard 가 배치된 G4 group 을 구성하는 모든 cluster member 의 연결이 단절된 후 수행한다.


gSQL> ALTER DATABASE DROP INACTIVE CLUSTER MEMBERS;


ERR-42R02(16361): sharded table "PUBLIC"."T1" must have at least one usable replica of group 'G4'

Action

data loss 를 유발하는 cluster member 의 DROP 은 허용하지 않는다.

data loss 가 발생하지 않도록 최소 하나의 cluster member 를 복원해야 한다.

16362 (SQLSTATE: 42000): NODE SHARDED table cannot be rebalanced

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16363 (SQLSTATE: 42000): the cluster member '%s' does not join in a cluster system

Cause

cluster system 에 join 한 cluster member 가 아니다.


gSQL> ALTER SYSTEM JOIN DATABASE;


ERR-42000(16363): the cluster member 'G3N3' failed to join the cluster system

Action

접속한 cluster member 는 cluster system 에 참여한 member 가 아니므로 cluster system 에 추가한 후 사용할 수 있다.

16364 (SQLSTATE: 42000): cluster group has sharded data

Cause

Sharded table에 data 가 존재하는 cluster group 은 제거할 수 없다.


gSQL> DROP CLUSTER GROUP g4;

ERR-42000(16364): cluster group has sharded data

Action

Data loss를 유발하는 DROP CLUSTER GROUP 은 수행할 수 없다.

16365 (SQLSTATE: 42000): schema name of instant table must be SESSION_SCHEMA

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16366 (SQLSTATE: 42000): hash shard count smaller than AT CLUSTER GROUP list

Cause

hash shard 의 개수보다 나열한 cluster group 의 개수가 작다


gSQL>


CREATE TABLE t1 ( c1 INTEGER ) SHARDING BY (c1)

SHARD COUNT 2

AT CLUSTER GROUP g1, g2, g3;

ERR-42000(16366): hash shard count smaller than AT CLUSTER GROUP list

Action

SHARD COUNT 값을 cluster group 개수보다 크게 설정한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER ) SHARDING BY (c1)

SHARD COUNT 60

AT CLUSTER GROUP g1, g2, g3;


Table created.

16367 (SQLSTATE: 42000): cannot drop sharding key column

Cause

sharding key 로 사용하고 있는 컬럼은 제거할 수 없다.


gSQL> CREATE TABLE t1 ( sk INTEGER, c2 INTEGER, c3 INTEGER ) SHARDING BY (sk);


Table created.


gSQL> ALTER TABLE t1 SET UNUSED COLUMN (sk);


ERR-42000(16367): cannot drop sharding key column

Action

sharding key 에 포함되지 않은 컬럼만 제거할 수 있다.


gSQL> ALTER TABLE t1 SET UNUSED COLUMN (c2);


Table altered.

16368 (SQLSTATE: 42000): not a fixed table

Cause

대상 테이블이 fixed table 이 아니다.


gSQL> ALTER FIXED TABLE t1 RESET;


ERR-42000(16368): not a fixed table :

ALTER FIXED TABLE t1 RESET

*

ERROR at line 1:

Action

fixed table 에 대해서만 수행할 수 있는 SQL 문이다.


gSQL> ALTER FIXED TABLE x$sql_system_info RESET;


Table altered.

16369 (SQLSTATE: 42000): not a statistics table

Cause

누적 통계 정보를 갖는 fixed table 이 아니다.


gSQL> ALTER FIXED TABLE X$AGABLE_INFO RESET;


ERR-42000(16369): not a statistics table :

ALTER FIXED TABLE X$AGABLE_INFO RESET

*

ERROR at line 1:

Action

누적 통계정보를 갖는 fixed table 에 대해서만 수행할 수 있는 SQL 문이다.


gSQL> ALTER FIXED TABLE x$sql_system_info RESET;


Table altered.

16370 (SQLSTATE: 42000): have to create one or more datafiles to each member

Cause

특정 cluster member 에만 tablespace 를 생성할 수 없다.


gSQL> CREATE TABLESPACE TEST_TBS DATAFILE 'test_tbs_g1.dbf' SIZE 10M AT G1;


ERR-42000(16370): MEMBER(G2N1): have to create one or more datafiles to each member :

CREATE TABLESPACE TEST_TBS DATAFILE 'test_tbs_g1.dbf' SIZE 10M AT G1

*

ERROR at line 1:

Action

tablespace 는 모든 cluster member 에 생성해야 한다.


gSQL> CREATE TABLESPACE TEST_TBS DATAFILE 'test_tbs_g1.dbf' SIZE 10M;


Tablespace created.

16371 (SQLSTATE: 42000): conversion is not applicable

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16372 (SQLSTATE: 42000): duplicate shard name

Cause

동일한 shard 이름을 사용하였다.


gSQL>


CREATE TABLE t1

(

c1 INTEGER,

c2 INTEGER,

c3 INTEGER

)

SHARDING BY RANGE ( c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s1 VALUES LESS THAN ( 200 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;



ERR-42000(16372): duplicate shard name :

SHARD s1 VALUES LESS THAN ( 200 ),

*

ERROR at line 10:

Action

아래와 같이 서로 다른 shard 이름을 사용한다.


gSQL>


CREATE TABLE t1

(

c1 INTEGER,

c2 INTEGER,

c3 INTEGER

)

SHARDING BY RANGE ( c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( 200 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;


Table created.

16373 (SQLSTATE: 42000): the number of elements in shard bound mismatch the sharding key columns

Cause

shard key column 개수와 value 개수가 다르다.


gSQL>


CREATE TABLE t1

(

c1 INTEGER,

c2 INTEGER,

c3 INTEGER

)

SHARDING BY RANGE ( c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( 200, 300 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;

ERR-42000(16373): the number of elements in shard bound mismatch the sharding key columns :

SHARD s2 VALUES LESS THAN ( 200, 300 ),

*

ERROR at line 10:

Action

아래와 같이 shard bound 에 사용되는 값의 개수를 일치시킨다.


gSQL>


CREATE TABLE t1

(

c1 INTEGER,

c2 INTEGER,

c3 INTEGER

)

SHARDING BY RANGE ( c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( 200 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;


Table created.

16374 (SQLSTATE: 42000): range shard bound value must be one of: valid constant or MAXVALUE

Cause

shard bound value 에 NULL 값을 사용하였다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY RANGE (c1)

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( NULL ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;


ERR-42000(16374): range shard bound value must be one of: valid constant or MAXVALUE :

SHARD s2 VALUES LESS THAN ( NULL ),

*

ERROR at line 5:

Action

아래와 같이 NULL 값이 아닌 상수를 사용한다.


gSQL>


CREATE TABLE t1

(

c1 INTEGER,

c2 INTEGER,

c3 INTEGER

)

SHARDING BY RANGE ( c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( 200 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;


Table created.

16375 (SQLSTATE: 42000): only MAXVALUE allowed after MAXVALUE

Cause

MAXVALUE 이후에 상수값을 사용하였다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER )

SHARDING BY RANGE (c1, c2)

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100, MAXVALUE ),

SHARD s2 VALUES LESS THAN ( MAXVALUE, 200 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE, MAXVALUE )

;


ERR-42000(16375): only MAXVALUE allowed after MAXVALUE :

SHARD s2 VALUES LESS THAN ( MAXVALUE, 200 ),

*

ERROR at line 5:

Action

아래와 같이 MAXVALUE 의 위치를 조정한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER )


SHARDING BY RANGE (c1, c2)

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100, MAXVALUE ),

SHARD s2 VALUES LESS THAN ( 200, MAXVALUE ),

SHARD s3 VALUES LESS THAN ( MAXVALUE, MAXVALUE )

;


Table created.

16376 (SQLSTATE: 42000): multiple MAX shard defined

Cause

MAX shard 를 여러 번 지정하였다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY RANGE (c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( MAXVALUE ),

SHARD s2 VALUES LESS THAN ( 200 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;


ERR-42000(16376): multiple MAX shard defined :

SHARD s3 VALUES LESS THAN ( MAXVALUE )

*

ERROR at line 6:

Action

아래와 같이 MAX shard 는 하나만 존재해야 한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY RANGE ( c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( 200 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;


Table created.

16377 (SQLSTATE: 42000): MAX shard not defined

Cause

MAX shard 를 정의하지 않았다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY RANGE (c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 )

;


ERR-42000(16377): MAX shard not defined :

SHARD s1 VALUES LESS THAN ( 100 )

*

ERROR at line 4:

Action

아래와 같이 MAX shard 를 정의한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY RANGE ( c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( MAXVALUE )

;


Table created.

16378 (SQLSTATE: 42000): duplicate shard bound value

Cause

동일한 shard bound value 를 사용하였다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER )

SHARDING BY RANGE (c1)

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( 100 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;


ERR-42000(16378): duplicate shard bound value :

SHARD s2 VALUES LESS THAN ( 100 ),

*

ERROR at line 5:

Action

아래와 같이 서로 다른 shard bound value 를 사용한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY RANGE ( c1 )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( 200 ),

SHARD s3 VALUES LESS THAN ( MAXVALUE )

;


Table created.

16379 (SQLSTATE: 42000): of the total '%d' tables, '%d' tables failed to rebalance

Cause

일부 테이블의 rebalance 가 정상적으로 완료되지 않았다.


gSQL> ALTER DATABASE REBALANCE;


ERR-42000(16379): of the total '5' tables, '2' tables failed to rebalance :

concurrent execution : 2

inactive member : 0

replica usablility : 0

offline tablespace : 0

others : 0


Database altered.


  • concurrent execution

    • 다른 세션과의 동시성 문제로 인해서 실패한 경우

  • inactive member

    • 모든 active member의 replica 들이 offline 상태이고 inactive member 가 있는 경우

  • replica usability

    • Local replica 가 unusable 상태이거나

    • 모든 active member 의 replica 들이 unusable 상태인 경우

  • offline tablespace

    • Local replica 가 오프라인 된 tablespace 에 만들어진 경우

  • others

    • 위에 기술된 원인을 제외한 나머지 경우

Action

  • concurrent execution

    • 동시성 문제로 인해 다른 세션에서의 DDL 수행을 중지하고 다시 시도한다.

  • inactive member

    • inactive member 를 cluster 에 join 한 후 다시 시도한다.

  • replica usability

  • offline tablespace

  • others

    • system.trc 에서 원인을 확인하고 조치를 취한 후 다시 시도한다.

16380 (SQLSTATE: HYC00): UNIQUE or PRIMARY KEY must include all sharding key columns for cluster system

Cause

PRIMARY KEY 가 shard key 를 포함하지 않았다.


gSQL> CREATE TABLE t1 ( sk INTEGER, c1 INTEGER, c2 INTEGER ) SHARDING BY (sk);


Table created.


gSQL> ALTER TABLE t1 ADD PRIMARY KEY (c1);


ERR-HYC00(16380): UNIQUE or PRIMARY KEY must include all sharding key columns for cluster system

Action

아래와 같이 shard key 를 포함하여 생성한다.


gSQL> ALTER TABLE t1 ADD PRIMARY KEY (c1, sk);


Table altered.

16381 (SQLSTATE: 42000): invalid shard count (must between %d and %d)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16382 (SQLSTATE: 42000): cluster member '%s' does not exist

Cause

cluster member 가 존재하지 않는다.


gSQL> COMMENT ON CLUSTER MEMBER invalid IS 'test comment';


ERR-42000(16382): cluster member 'INVALID' does not exist :

COMMENT ON CLUSTER MEMBER invalid IS 'test comment'

*

ERROR at line 1:

Action

유효한 cluster member 이름을 사용한다.


gSQL> COMMENT ON CLUSTER MEMBER g2n1 IS 'test comment';


Comment created.

16383 (SQLSTATE: 42000): domain '%s' is unknown

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16384 (SQLSTATE: 42000): multiple DEFAULT shard defined

Cause

DEFAULT shard 를 여러 개 정의하였다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY LIST (c1 )

AT CLUSTER WIDE

SHARD s1 VALUES IN ( DEFAULT ),

SHARD s2 VALUES IN ( 200 ),

SHARD s3 VALUES IN ( DEFAULT )

;


ERR-42000(16384): multiple DEFAULT shard defined :

SHARD s3 VALUES IN ( DEFAULT )

*

ERROR at line 6:

Action

아래와 같이 하나의 DEFAULT shard 만 정의한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY LIST (c1 )

AT CLUSTER WIDE

SHARD s1 VALUES IN ( 100 ),

SHARD s2 VALUES IN ( 200 ),

SHARD s3 VALUES IN ( DEFAULT )

;


Table created.

16385 (SQLSTATE: 42000): DEFAULT shard not defined

Cause

DFEAULT shard 를 정의하지 않았다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY LIST (c1 )

AT CLUSTER WIDE

SHARD s1 VALUES IN ( 100 )

;


ERR-42000(16385): DEFAULT shard not defined :

SHARD s1 VALUES IN ( 100 )

*

ERROR at line 4:

Action

아래와 같이 DEFAULT shard 를 정의한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY LIST (c1 )

AT CLUSTER WIDE

SHARD s1 VALUES IN ( 100 ),

SHARD s2 VALUES IN ( DEFAULT )

;


Table created.

16386 (SQLSTATE: 42000): DEFAULT cannot be specified with other values

Cause

DEFAULT 는 다른 값과 사용할 수 없다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY LIST (c1 )

AT CLUSTER WIDE

SHARD s1 VALUES IN ( 100 ),

SHARD s2 VALUES IN ( DEFAULT, 200 );


ERR-42000(16386): DEFAULT cannot be specified with other values :

SHARD s2 VALUES IN ( DEFAULT, 200 )

*

ERROR at line 5:

Action

DEFAULT 는 아래와 같이 단독으로 사용한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY LIST (c1 )

AT CLUSTER WIDE

SHARD s1 VALUES IN ( 100, 200 ),

SHARD s2 VALUES IN ( DEFAULT );


Table created.

16387 (SQLSTATE: 42000): list shard bound value must be one of: valid constant or NULL or DEFAULT

Cause

shard bound 값으로 유효하지 않은 함수를 사용하였다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY LIST (c1)

AT CLUSTER WIDE

SHARD s1 VALUES IN ( 100 ),

SHARD s2 VALUES IN ( SUM(200) ),

SHARD s3 VALUES IN ( DEFAULT )

;


ERR-42000(16387): list shard bound value must be one of: valid constant or NULL or DEFAULT

ERR-42000(16158): group function is not allowed here :

SHARD s2 VALUES IN ( SUM(200) ),

*

ERROR at line 5:

Action

아래와 같이 유효한 상수, NULL, DEFAULT 등을 사용한다.


gSQL>


CREATE TABLE t1 ( c1 INTEGER )

SHARDING BY LIST (c1)

AT CLUSTER WIDE

SHARD s1 VALUES IN ( 100 ),

SHARD s2 VALUES IN ( NULL ),

SHARD s3 VALUES IN ( DEFAULT )

;


Table created.

16388 (SQLSTATE: HYC00): does not support deferrable constraints in the cluster system

Cause

cluster system 에서 deferrable constraint 를 사용할 수 없다.


gSQL>


CREATE TABLE t1

(

c1 INTEGER PRIMARY KEY DEFERRABLE,

c2 INTEGER

)

SHARDING BY HASH( c1 );


ERR-HYC00(16388): does not support deferrable constraints in the cluster system :

c1 INTEGER PRIMARY KEY DEFERRABLE,

*

ERROR at line 3:

Action

아래와 같이 DEFERRABLE 옵션을 제거한다.


gSQL>


CREATE TABLE t1

(

c1 INTEGER PRIMARY KEY,

c2 INTEGER

)

SHARDING BY HASH( c1 );


Table created.

16389 (SQLSTATE: 42000): domain names of the datafile for renaming don't mismatch

Cause

서로 다른 domain 이름을 사용하였다.


gSQL> ALTER TABLESPACE TEST_TBS RENAME DATAFILE 'TEST_TBS_1.dbf' AT G2N2 TO 'TEST_TBS_111.dbf' AT G2N1;


ERR-42000(16389): domain names of the datafile for renaming don't mismatch

Action

아래와 같이 동일한 domain 이름을 사용하거나 제거한다.


gSQL> ALTER TABLESPACE TEST_TBS RENAME DATAFILE 'TEST_TBS_1.dbf' AT G2N2 TO 'TEST_TBS_111.dbf' AT G2N2;


Tablespace altered.


gSQL> ALTER TABLESPACE TEST_TBS RENAME DATAFILE 'TEST_TBS_1.dbf' AT G2N2 TO 'TEST_TBS_111.dbf';


Tablespace altered.

16390 (SQLSTATE: 42000): invalid table for sharding strategy and placement specified

Cause

함수의 인자로 사용하는 테이블이 sharded table 이 아니다.


gSQL> SELECT SHARD_ID( x$instance, 1 ) FROM DUAL;


ERR-42000(16390): invalid table for sharding strategy and placement specified :

SELECT SHARD_ID( x$instance, 1 ) FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 sharded table 을 인자로 사용한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) SHARDING BY (c1);


Table created.


gSQL> SELECT SHARD_ID( t1, 1 ) FROM DUAL;


SHARD_ID( T1, 1 )

-----------------

1


1 row selected.

16391 (SQLSTATE: 42000): the number of sharding key in function is mismatch

Cause

shard key 의 개수와 인자의 개수가 다르다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c1 INTEGER, c2 INTEGER )

SHARDING BY RANGE( sk )

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( 200 ) AT CLUSTER GROUP g2,

SHARD s3 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g3

;


Table created.


gSQL> SELECT SHARD_NAME( t1, 10, 20 ) FROM dual;


ERR-42000(16391): the number of sharding key in function is mismatch :

SELECT SHARD_NAME( t1, 10, 20 ) FROM dual

*

ERROR at line 1:

Action

아래와 같이 shard key 의 개수만큼 값을 사용한다.


gSQL> SELECT SHARD_NAME( t1, 300 ) FROM dual;


SHARD_NAME( T1, 300 )

---------------------

S3


1 row selected.

16392 (SQLSTATE: HYC00): the number of sharding key in function is mismatch

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16393 (SQLSTATE: 01000): Warning: accessible member does not exist

Cause

View에 domain과 함께 IGNORE_INACTIVE_MEMBER 옵션을 사용하였으나 접근할 수 있는 cluster member 가 없다.


gSQL> SELECT c1 FROM view1@G4N2[RANDOM_MEMBER, IGNORE_INACTIVE_MEMBER] ORDER BY 1;


ERR-01000(16393): Warning: accessible member does not exist

no rows selected.

Action

접근할 수 있는 member 를 포함한 domain 을 기술한다.


gSQL> SELECT c1 FROM view1@G4[RANDOM_MEMBER, IGNORE_INACTIVE_MEMBER] ORDER BY 1;


C1

----

G1N1

G1N2

G2N1

G2N2

G2N3

G3N1

G3N2

G4N1

G4N2


9 rows selected.

16394 (SQLSTATE: 01000): Warning: connection of member '%s' is broken

Cause

질의 결과는 얻었으나 특정 cluster member 의 연결 오류가 감지되었다.


gSQL>


SELECT

table_name,

blocks

FROM ALL_TABLES

WHERE table_schema = 'PUBLIC'

AND table_name IN ( 'TAB_CLONED' )

ORDER BY 1;


ERR-01000(16394): Warning: connection of member 'G4N2' is broken

TABLE_NAME BLOCKS

---------- ------

TAB_CLONED 448


1 row selected.

Action

해당 cluster member 를 cluster system 에 join 한다.

16395 (SQLSTATE: 01000): Warning: must be accessible to at least one member of group '%s'

Cause

질의 결과는 얻었으나 특정 cluster group 의 data에 접근하지 못하였다.


gSQL> SELECT COUNT(*) FROM t_range@GLOBAL[ IGNORE_INACTIVE_MEMBER ];


ERR-01000(16395): Warning: must be accessible to at least one member of group 'G1'

COUNT(*)

--------

1


1 row selected.

Action

해당 cluster group 을 cluster system 에 join 한다.

16396 (SQLSTATE: 42000): exceeds the maximum number of nodes

Cause

cluster system 에 추가할 수 있는 cluster member 의 최대 개수를 초과하였다.

Action

MAX_NODE_COUNT 프로퍼티 값만큼 cluster member 를 추가할 수 있다.

16397 (SQLSTATE: 42000): exceeds the maximum number of groups

Cause

cluster system 에 추가할 수 있는 cluster group 의 최대 개수를 초과하였다.

Action

MAX_GROUP_COUNT 프로퍼티 값만큼 cluster group 을 추가할 수 있다.

16398 (SQLSTATE: 42000): the domain of property does not match with domain '%s'

Cause

특정 domain 에서만 변경할 수 없는 property 이다.


gSQL> ALTER SYSTEM SET NLS_DATE_FORMAT = 'YYYY-MM-DD' DEFERRED AT G1;


ERR-42000(16398): the domain of property does not match with domain 'G1' :

ALTER SYSTEM SET NLS_DATE_FORMAT = 'YYYY-MM-DD' DEFERRED AT G1

*

ERROR at line 1:

Action

아래와 같이 AT 절을 사용하지 않는다.


gSQL> ALTER SYSTEM SET NLS_DATE_FORMAT = 'YYYY-MM-DD' DEFERRED;


System altered.

16399 (SQLSTATE: 42000): cannot insert or update a generated always identity column, value shall be a DEFAULT

Cause

GENERATED ALWAYS AS IDENTITY 로 생성한 컬럼은 값을 명시할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER GENERATED ALWAYS AS IDENTITY );


Table created.


gSQL> INSERT INTO t1 VALUES ( 1 );


ERR-42000(16399): cannot insert or update a generated always identity column, value shall be a DEFAULT :

INSERT INTO t1 VALUES ( 1 )

*

ERROR at line 1:

Action

아래와 같이 DEFAULT 를 사용해야 한다.


gSQL> INSERT INTO t1 VALUES ( DEFAULT );


1 row created.


gSQL> INSERT INTO t1 VALUES ( DEFAULT );


1 row created.


gSQL> SELECT * FROM t1;


C1

--

1

2


2 rows selected.

16400 (SQLSTATE: HY000): cannot RECOVER UNTIL CHANGE SCN; invalid SCN format

Cause

특정 scn까지 복구를 수행하기 위한 scn_format이 유효하지 않다.


gSQL> ALTER DATABASE RECOVER UNTIL CHANGE SCN '10.*.*';

ERR-HY000(16400): cannot RECOVER UNTIL CHANGE SCN; invalid SCN format

gSQL> ALTER DATABASE RECOVER UNTIL CHANGE SCN '10.10';

ERR-HY000(16400): cannot RECOVER UNTIL CHANGE SCN; invalid SCN format

Action

ALTER DATABASE RECOVER 구문에서 설명한 유효한 scn_format을 사용하여 불완전 복구를 수행한다.


gSQL> ALTER DATABASE RECOVER UNTIL CHANGE SCN '10.*';


Database altered.


gSQL> ALTER DATABASE RECOVER UNTIL CHANGE SCN '10.10.*';


Database altered.

16401 (SQLSTATE: 42000): invalid SAMPLE size specified

Cause

SAMPLE 의 크기가 유효하지 않다.


gSQL> ANALYZE TABLE t1 ESTIMATE STATISTICS SAMPLE 0 ROWS;


ERR-42000(16401): invalid SAMPLE size specified :

ANALYZE TABLE t1 ESTIMATE STATISTICS SAMPLE 0 ROWS

*

ERROR at line 1:

Action

SAMPLE 의 크기는 양의 정수를 사용한다.


gSQL> ANALYZE TABLE t1 ESTIMATE STATISTICS SAMPLE 1000000 ROWS;


Table analyzed.

16402 (SQLSTATE: 42000): duplicate index name

Cause

동일한 index 를 나열하였다.


gSQL> ANALYZE TABLE t1 COMPUTE STATISTICS FOR INDEXES idx1, idx1;


ERR-42000(16402): duplicate index name :

ANALYZE TABLE t1 COMPUTE STATISTICS FOR INDEXES idx1, idx1

*

ERROR at line 1:

Action

서로 다른 index 이름을 기술한다.


gSQL> ANALYZE TABLE t1 COMPUTE STATISTICS FOR INDEXES idx1, idx2;


Table analyzed.

16403 (SQLSTATE: 42000): failed to join some of nodes to the global database

Cause

GLOBAL OPEN 단계로 전환할 때, cluster 를 구성하는 모든 멤버가 참여하지 못한 경우 발생하는 경고 메시지이다.


gSQL> ALTER SYSTEM OPEN GLOBAL DATABASE;


ERR-42000(16403): of the total '6' nodes, '3' nodes failed to join the global database

ERR-HY000(56022): failed to connect to a host

ERR-HY000(11067): failed to connect to a host with a socket : poll() - port '21250' : stnConnect() returned errno(111)

System altered.

Action

참여하지 못한 노드는 필요한 조치를 수행한 후 ALTER SYSTEM JOIN DATABASE 구문을 사용하여 개별적으로 참여시킬 수 있다.

16404 (SQLSTATE: 42000): cannot execute the statement with OS user permissions

Cause

설치 계정이 아닌 계정으로 DA 모드에서 파일 수정이 필요한 DDL 을 수행할 경우에 발생한다.

Action

파일 수정을 수반하는 DA 모드 DDL은 설치 계정에서만 수행한다.

16405 (SQLSTATE: 42000): of the total '%d' tables in the database, '%d' tables need to be rebalanced

Cause

일부 테이블을 온라인 상태로 변경하지 못했다.


gSQL> ALTER SYSTEM JOIN DATABASE;


ERR-42000(16405): of the total '5' tables in the database, '2' tables need to be rebalanced :

concurrent execution : 0

inactive member : 0

replica usablility : 0

offline tablespace : 0

low table scn : 2

others : 0


System altered.


  • concurrent execution

    • 다른 세션과의 동시성 문제로 인해서 실패한 경우

  • inactive member

    • 모든 active member의 replica 들이 offline 상태이고 inactive member 가 있는 경우

  • replica usability

    • Local replica 가 unusable 상태이거나

    • 모든 active member 의 replica 들이 unusable 상태인 경우

  • offline tablespace

    • Local replica 가 오프라인 된 tablespace 에 만들어진 경우

  • low table scn

    • Local replica 가 최신이 아닌 경우

  • others

    • 위에 기술된 원인을 제외한 나머지 경우

Action

  • concurrent execution

    • 동시성 문제로 인해 다른 세션에서의 DDL 수행을 중지하고 다시 시도한다.

  • inactive member

    • inactive member 를 cluster 에 join 한 후 다시 시도한다.

  • replica usability

  • offline tablespace

  • low table scn

  • others

    • system.trc 에서 원인을 확인하고 조치를 취한 후 다시 시도한다.

16406 (SQLSTATE: 42000): invalid routine name

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16407 (SQLSTATE: 42000): procedure or function does not exist

Cause

유효하지 않은 procedure 이름을 사용하였다.


gSQL> ALTER PROCEDURE invalid COMPILE;


ERR-42000(16407): procedure or function does not exist :

ALTER PROCEDURE invalid COMPILE

*

ERROR at line 1:

Action

존재하는 procedure 이름을 사용한다.


gSQL> ALTER PROCEDURE proc1 COMPILE;


Procedure altered.

16408 (SQLSTATE: 42000): bind variables not allowed for procedures or functions

Cause

procedure 생성 시 bind 변수를 사용할 수 없다.


gSQL>


CREATE PROCEDURE proc1( a1 INTEGER )

AS

x1 INTEGER;

BEGIN

x1 := :v1;

END;

/


ERR-42000(16244): bind variables not allowed for data definition operations

Action

procedure 생성 시 bind 변수를 사용하지 않는다.


gSQL>


CREATE PROCEDURE proc1( a1 INTEGER )

AS

x1 INTEGER;

BEGIN

x1 := a1;

END;

/


Procedure created.

16409 (SQLSTATE: 01000): Warning: Routine definition has compilation errors

Cause

routine(procedure/function) 은 생성되었으나 compile error 가 존재한다.


gSQL>


CREATE PROCEDURE proc1( a1 INTEGER )

AS

BEGIN

INSERT INTO t1 VALUES ( a1 );

END;

/


ERR-01000(16409): Warning: Routine(PROC1) has compilation errors :

(1) at (4:4): ERR-42000(16053): not enough values

Procedure created.

Action

compile error 를 확인하고 이를 수정한다.


gSQL>


CREATE OR REPLACE PROCEDURE proc1( a1 INTEGER, a2 INTEGER )

AS

BEGIN

INSERT INTO t1 VALUES ( a1, a2 );

END;

/


Procedure created.

16410 (SQLSTATE: 42000): Startup driver node must have the latest data - a suitable startup driver node is '%s' member

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16411 (SQLSTATE: 42000): maximum number of recursive SQL levels (%d) exceeded.

Cause

최대 재귀호출 회수를 초과하였다.


gSQL>


CREATE OR REPLACE PROCEDURE proc1( A1 INTEGER )

IS

BEGIN

IF( A1 > 0 ) THEN

DBMS_OUTPUT.PUT_LINE( 'A1 = ' || A1 );

PROC1( A1 -1 );

END IF;

END;

/


Procedure created.


gSQL> CALL proc1(100);


A1 = 100

A1 = 99

A1 = 98

A1 = 97

...

... (중략)

...

A1 = 55

A1 = 54

A1 = 53


ERR-42000(16411): maximum number of recursive SQL levels (50) exceeded. : ERROR at PROCEDURE("PUT_LINE")


ERROR at PROCEDURE("PROC1")

Action

재귀호출 procedure 를 수정하거나 재귀호출 회수를 위반하지 않도록 사용한다.


gSQL> CALL proc1(5);


A1 = 5

A1 = 4

A1 = 3

A1 = 2

A1 = 1


Procedure Call complete.

16412 (SQLSTATE: 42R02): all of shards in a table must be online.

Cause

DDL 대상 테이블에 offline 상태의 shard 가 존재한다.


gSQL> CREATE INDEX tix3 ON t1( i3 );


ERR-42R02(16412): all of shards in a table 'T1' must be online. :

CREATE INDEX t1x3 ON t1( i3 )

*

ERROR at line 1:

Action

테이블의 offline 상태를 확인하고 이를 조치한다.


gSQL> SELECT MEMBER_NAME, MEMBER_OFFLINE FROM USER_TAB_PLACE WHERE TABLE_NAME = 'T1' ORDER BY MEMBER_NAME;


ERR-01000(16394): Warning: connection of member 'G3N3' is broken

MEMBER_NAME MEMBER_OFFLINE

----------- --------------

G1N1 FALSE

G1N2 FALSE

G2N1 FALSE

G2N2 FALSE

G3N1 TRUE

G3N2 TRUE

G3N3 TRUE


7 rows selected.

16413 (SQLSTATE: 42000): LOCAL_OFFLINE domain must be specified to base table

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16414 (SQLSTATE: 42000): domain option not allowed here

Cause

domain 이름과 domain 옵션을 함께 사용할 수 없다.


gSQL> SELECT c1 FROM t1@G1|LOCAL;


ERR-42000(16414): domain option not allowed here :

SELECT c1 FROM t1@G1|LOCAL

*

ERROR at line 1:

Action

아래와 같이 domain 을 사용한다.


gSQL> SELECT c1 FROM t1@G1;


C1

--

1


1 row selected.


gSQL> SELECT c1 FROM t1@LOCAL;


C1

--

1


1 row selected.


gSQL> SELECT c1 FROM t1@G1|G2;


C1

--

1


1 row selected.

16415 (SQLSTATE: 42000): LOCAL_OFFLINE domain cannot be used with other domains

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16416 (SQLSTATE: 42000): lacks privilege (EXECUTE ON PROCEDURE "%s"."%s")

Cause

해당 사용자가 procedure 를 실행할 권한이 없다.


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> CALL proc1();


ERR-42000(16416): lacks privilege (EXECUTE ON PROCEDURE "PUBLIC"."PROC1")

Action

procedure 의 소유자가 해당 사용자에게 procedure 를 실행할 권한을 부여한다.


gSQL> GRANT EXECUTE ON PROCEDURE proc1 TO u1;


Grant succeeded.


gSQL> \connect u1 u1


gSQL> CALL proc1();


Procedure Call complete.

16417 (SQLSTATE: 42000): active member '%s' cannot be offlined

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16418 (SQLSTATE: 42000): cluster member '%s' does not exist in cluster group '%s'

Cause

cluster group 에 속한 cluster member 가 아니다.


gSQL> ALTER CLUSTER GROUP g1 OFFLINE CLUSTER MEMBER g2n2;


ERR-42000(16418): cluster member 'G2N2' does not exist in cluster group 'G1' :

ALTER CLUSTER GROUP g1 OFFLINE CLUSTER MEMBER g2n2

*

ERROR at line 1:

Action

cluster group 에 속한 cluster member 이름을 사용한다.


gSQL> SELECT member_name FROM dba_cluster WHERE group_name = 'G1';


MEMBER_NAME

-----------

G1N2

G1N1


2 rows selected.

16419 (SQLSTATE: 42000): object identifier not allowed here

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16420 (SQLSTATE: 0A000): does not support adding identity column in the cluster system

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16421 (SQLSTATE: 0A000): does not support deferred unqiue integrity in the cluster system

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16422 (SQLSTATE: 0A000): does not support SERIALIZABLE in the cluster system

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16423 (SQLSTATE: 42000): does not support non-deterministic DML in the cluster system : global secondary index expected

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16424 (SQLSTATE: 42000): function generating different values is not allowed here

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16425 (SQLSTATE: 42000): procedure, function, package, or type is not allowed here

Cause

DEFAULT 값으로 stored function 을 사용할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER DEFAULT func1 );


ERR-42000(16425): procedure, function, package, or type is not allowed here :

CREATE TABLE t1 ( c1 INTEGER DEFAULT func1 )

*

ERROR at line 1:

Action

아래와 같이 상수를 사용한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER DEFAULT 0 );


Table created.

16426 (SQLSTATE: 42000): does not support ADD COLUMN DEFAULT generating different values in the cluster system

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16427 (SQLSTATE: 42000): invalid events (%s)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16428 (SQLSTATE: 42000): cluster system is modified by concurrent cluster DDL execution

Cause

Cluster DDL 은 동시에 실행할 수 없다.

Action

Cluster DDL 들을 순차적으로 실행한다.

16429 (SQLSTATE: 42000): does not support cursor in the cluster system : global secondary index expected

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16430 (SQLSTATE: 42000): in the GLOBAL OPEN phase, the cluster database can be closed only with ABORT option

Cause

GLOBAL OPEN 단계에서는 개별 노드 shutdown에 ABORT 옵션만 사용할 수 있다.


gSQL> shutdown


ERR-42000(16430): in the GLOBAL OPEN phase, the cluster database can be closed only with ABORT option :

ALTER SYSTEM CLOSE DATABASE NORMAL

*

ERROR at line 1:

Action

ABORT 옵션을 지정하여 다시 수행한다.


gSQL> shutdown abort


Shutdown success

16431 (SQLSTATE: 42000): non-deterministic expression not allowed here : may lead to a replica synchronization failure

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16432 (SQLSTATE: 42000): global secondary index already exists in table

Cause

테이블에 이미 global secondary index 가 존재한다.


gSQL> ALTER TABLE t1 ADD GLOBAL SECONDARY INDEX;


ERR-42000(16432): global secondary index already exists in table

Action

아래와 같이 global secondary index 가 없는 테이블들을 조회할 수 있다.


gSQL>


SELECT table_name FROM user_tables

EXCEPT

SELECT table_name FROM user_global_secondary_indexes;


TABLE_NAME

----------

T2


1 row selected.

16433 (SQLSTATE: 42000): global secondary index does not exist in table

Cause

해당 table 에 global secondary index 가 존재하지 않는다.


gSQL> ALTER TABLE t2 DROP GLOBAL SECONDARY INDEX;


ERR-42000(16433): global secondary index does not exist in table :

ALTER TABLE t2 DROP GLOBAL SECONDARY INDEX

*

ERROR at line 1:

Action

아래와 같이 global secondary index 가 존재하는 테이블을 조회한다.


gSQL> SELECT table_name FROM user_global_secondary_indexes;


TABLE_NAME

----------

T1


1 row selected.

16434 (SQLSTATE: HY000): invalid grid is prevented in cluster operation, in a function %s

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16435 (SQLSTATE: HY000): duplicate source datafile name

Cause

동일한 source datafile 이름을 사용하였다.


gSQL>


ALTER TABLESPACE TEST_TBS RENAME DATAFILE 'TEST_TBS_0.dbf', 'TEST_TBS_0.dbf'

TO 'TEST_0.dbf' , 'TEST_1.dbf';


ERR-HY000(16435): duplicate source datafile name :

ALTER TABLESPACE TEST_TBS RENAME DATAFILE 'TEST_TBS_0.dbf', 'TEST_TBS_0.dbf'

*

ERROR at line 1:

Action

아래와 같이 서로 다른 source datafile 을 사용한다.


gSQL>


ALTER TABLESPACE TEST_TBS RENAME DATAFILE 'TEST_TBS_0.dbf', 'TEST_TBS_1.dbf'

TO 'TEST_0.dbf' , 'TEST_1.dbf';


Tablespace altered.

16436 (SQLSTATE: HY000): duplicate target datafile name

Cause

동일한 target datafile 이름을 사용하였다.


gSQL>


ALTER TABLESPACE TEST_TBS RENAME DATAFILE 'TEST_TBS_0.dbf', 'TEST_TBS_1.dbf'

TO 'TEST_0.dbf' , 'TEST_0.dbf';


ERR-HY000(16436): duplicate target datafile name :

TO 'TEST_0.dbf' , 'TEST_0.dbf'

*

ERROR at line 2:

Action

아래와 같이 서로 다른 target datafile 을 사용한다.


gSQL>


ALTER TABLESPACE TEST_TBS RENAME DATAFILE 'TEST_TBS_0.dbf', 'TEST_TBS_1.dbf'

TO 'TEST_0.dbf' , 'TEST_1.dbf';

Tablespace altered.

16437 (SQLSTATE: HY000): cannot execute on cloned tables

Cause

RENAME SHARD 는 cloned table 에 대해 수행할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER ) CLONED;


Table created.


gSQL> ALTER TABLE t1 RENAME SHARD s1 TO s2;


ERR-42000(16437): cannot execute on cloned tables :

ALTER TABLE t1 RENAME SHARD s1 TO s2

*

ERROR at line 1:

Action

RENAME SHARD 는 sharded table 에 대해 실행할 수 있다.

16438 (SQLSTATE: HY000): invalid shard name - '%s'

Cause

존재하지 않는 shard 이름을 사용하였다.


gSQL> ALTER TABLE t1 RENAME SHARD invalid TO s_new;


ERR-42000(16438): invalid shard name :

ALTER TABLE t1 RENAME SHARD invalid TO s_new

*

ERROR at line 1:

Action

아래와 같이 table 에 존재하는 shard name 을 확인한다.


gSQL> SELECT table_name, shard_name FROM user_tab_shards WHERE table_name = 'T1';


TABLE_NAME SHARD_NAME

---------- ----------

T1 S1

T1 S2

T1 S3


3 rows selected.

16439 (SQLSTATE: HY000): cannot move shard to the same group

Cause

동일한 cluster group 으로 shard 를 이동할 수 없다.


gSQL> ALTER DATABASE MOVE SHARD FROM CLUSTER GROUP G1 TO CLUSTER GROUP G1;


ERR-42000(16439): cannot move shard to the same group :

ALTER DATABASE MOVE SHARD FROM CLUSTER GROUP G1 TO CLUSTER GROUP G1

*

ERROR at line 1:

Action

DATABASE 단위의 shard 이동은 서로 다른 cluster group 간에 가능하다.

16440 (SQLSTATE: HY000): cannot execute on cluster wide sharded tables

Cause

cluster wide 로 생성한 sharded table 은 MOVE SHARD 할 수 없다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c2 INTEGER ) SHARDING BY RANGE ( sk )

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( MAXVALUE );


Table created.


gSQL> ALTER TABLE t1 MOVE SHARD FROM CLUSTER GROUP g1 TO CLUSTER GROUP g2;


ERR-42000(16440): cannot execute on cluster wide sharded tables :

ALTER TABLE t1 MOVE SHARD FROM CLUSTER GROUP g1 TO CLUSTER GROUP g2

*

ERROR at line 1:

Action

아래와 같이 cluster group 을 명시한 sharded table 에 대해 MOVE SHARD 할 수 있다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )

SHARDING BY RANGE (sk)

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g2;


Table created.


gSQL> ALTER TABLE t1 MOVE SHARD FROM CLUSTER GROUP g2 TO CLUSTER GROUP g3;


Table altered.

16441 (SQLSTATE: 42000): not analyzed table

Cause

해당 table 이 ANALYZE 된 적이 없다.


gSQL> ANALYZE TABLE t1 EXPORT 't1.stat';


ERR-42000(16441): not analyzed table :

ANALYZE TABLE t1 EXPORT 't1.stat'

*

ERROR at line 1:

Action

ANALYZE TABLE 후에 수행한다.


gSQL> ANALYZE TABLE t1;


Table analyzed.


gSQL> ANALYZE TABLE t1 EXPORT 't1.stat';


Table analyzed.

16442 (SQLSTATE: 42000): invalid analyzed file format (%s)

Cause

analyzed file format 이 유효하지 않다.


--# result: error

ANALYZE TABLE t1 IMPORT 't2.stat';


ERR-42000(16442): invalid analyzed file format (table mismatch: T1 and T2)

Action

유효한 analyzed file 을 사용한다.


gSQL> ANALYZE TABLE t1 IMPORT 't1.stat';


Table analyzed.

16443 (SQLSTATE: 42000): old plan

Cause

서버 내부에서 제어하는 에러이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16444 (SQLSTATE: 42000): invalid cluster group name

Cause

존재하지 않는 cluster group 이름을 사용하였다.


gSQL> ALTER TABLE t1 MOVE SHARD FROM CLUSTER GROUP invalid TO CLUSTER GROUP g2;


ERR-42000(16444): invalid cluster group name :

ALTER TABLE t1 MOVE SHARD FROM CLUSTER GROUP invalid TO CLUSTER GROUP g2

*

ERROR at line 1:

Action

유효한 cluster group 이름을 사용한다.


gSQL> ALTER TABLE t1 MOVE SHARD FROM CLUSTER GROUP g3 TO CLUSTER GROUP g2;


Table altered.

16445 (SQLSTATE: 42000): REBALANCE EXCLUDE can be executed only on cluster wide sharded tables

Cause

REBALANCE EXCLUDE 구문은 group-specific shard table 에 대해 수행할 수 없다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )

SHARDING BY RANGE (sk)

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g2;


Table created.


gSQL> ALTER TABLE t1 REBALANCE EXCLUDE CLUSTER GROUP g2


ERR-42000(16445): REBALANCE EXCLUDE can be executed only on cluster wide sharded tables :

ALTER TABLE t1 REBALANCE EXCLUDE CLUSTER GROUP g2

*

ERROR at line 1:

Action

아래와 같이 REBALANCE EXCLUDE 구문은 cluster-wide shard table 에 대해 수행할 수 있다.


gSQL>


CREATE TABLE t2 ( sk INTEGER, c2 INTEGER )

SHARDING BY RANGE (sk)

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( MAXVALUE )

;


Table created.


gSQL> ALTER TABLE t2 REBALANCE EXCLUDE CLUSTER GROUP g2;


Table altered.

16446 (SQLSTATE: 42000): REBALANCE EXCLUDE target group is empty

Cause

모든 cluster group 을 REBALANCE EXCLUDE 할 수 없다.


gSQL>


CREATE TABLE t2 ( sk INTEGER, c2 INTEGER )

SHARDING BY RANGE (sk)

AT CLUSTER WIDE

SHARD s1 VALUES LESS THAN ( 100 ),

SHARD s2 VALUES LESS THAN ( MAXVALUE )

;


gSQL> ALTER TABLE t2 REBALANCE EXCLUDE CLUSTER GROUP g1, g2, g3;


ERR-42000(16446): REBALANCE EXCLUDE target group is empty :

ALTER TABLE t2 REBALANCE EXCLUDE CLUSTER GROUP g1, g2, g3

*

ERROR at line 1:

Action

일부 cluster group 만 REBALANCE EXCLUDE 할 수 있다.


gSQL> ALTER TABLE t2 REBALANCE EXCLUDE CLUSTER GROUP g2;


Table altered.

16447 (SQLSTATE: HY000): internal error ( %s, %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16448 (SQLSTATE: 42000): of the total '%d' tables, '%d' tables failed to move shard

Cause

ALTER DATABASE MOVE SHARD 구문을 수행할 때 일부 shard 이동에 실패했다.


다음은 7개 테이블 중에 1개 테이블에서 shard 이동이 실패한 예이다.


gSQL> ALTER DATABASE MOVE SHARD FROM CLUSTER GROUP g1 TO CLUSTER GROUP g2;


ERR-42000(16448): of the total '7' tables, '1' tables failed to move shard

Database altered.

Action

System trace 로그를 확인하여 원인을 해결한 후 다시 수행한다.


다음은 이동 실패 시 system trace 로그에 기록되는 에러 메시지이다.


[2026-03-04 10:58:27.880218 INSTANCE(G1N1) THREAD(50590,140314313557824)] [WARNING]

[MOVE SHARD] failed to move shard table 'PUBLIC.T1 - global transaction id(0.124553461858)

(G1N1) ERR-HYT00(14026): resource busy or timeout expired

16449 (SQLSTATE: 42000): cluster group does not have sharded data

Cause

ALTER DATABASE MOVE SHARD 구문을 수행할 때 source 그룹에 이동할 shard 가 존재하지 않는다.


gSQL> ALTER TABLE t1 MOVE SHARD FROM CLUSTER GROUP g1 TO CLUSTER GROUP g2;


ERR-42000(16449): cluster group does not have sharded data :

ALTER TABLE t1 MOVE SHARD FROM CLUSTER GROUP g1 TO CLUSTER GROUP g2

*

ERROR at line 1:

Action

테이블의 shard 가 저장된 그룹을 확인하고 다시 수행한다.


다음은 테이블의 shard 저장 그룹을 확인하는 방법이다.


gSQL> SELECT group_name, member_name FROM user_tab_place WHERE table_name = 'T1';


GROUP_NAME MEMBER_NAME

---------- -----------

G2 G2N1

G2 G2N2

G3 G3N1

G3 G3N2


4 rows selected.

16450 (SQLSTATE: 42000): exceeded global property lock timeout

Cause

여러 세션에서 동시에 global 프로퍼티 값을 변경하려는 경우, 정해진 대기 시간을 초과하면 발생한다.

Action

GLOBAL_PROPERTY_LOCK_TIMEOUT 값을 늘려서 다시 시도한다.

16451 (SQLSTATE: 42000): rownum not allowed here

Cause

ROWNUM 을 DEFAULT 값으로 사용할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER DEFAULT ROWNUM );


ERR-42000(16451): rownum not allowed here :

CREATE TABLE t1 ( c1 INTEGER DEFAULT ROWNUM )

*

ERROR at line 1:

Action

아래와 같이 상수를 DEFAULT 값으로 사용한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER DEFAULT 0 );


Table created.

16452 (SQLSTATE: 42000): rownum not allowed in sensitive cursor

Cause

sensitive cursor 에서 ROWNUM 을 사용할 수 없다.


gSQL>


DECLARE cur1 SENSITIVE SCROLL CURSOR

FOR SELECT ROWNUM

FROM t1

WHERE c1 > 0

FOR UPDATE;


ERR-42000(16452): rownum not allowed in sensitive cursor

Action

sensitive cursor 사용 시 ROWNUM 을 SELECT target 으로 사용하지 않는다.


gSQL>


DECLARE cur1 SENSITIVE SCROLL CURSOR

FOR SELECT c1

FROM t1

WHERE c1 > 0

FOR UPDATE;


Cursor declared.

16453 (SQLSTATE: 42000): rownum not allowed in positioned UPDATE

Cause

UPDATE CURRENT OF cursor 구문에서 ROWNUM 을 사용할 수 없다.


gSQL> \var v1 INTEGER


gSQL>


DECLARE cur1 CURSOR

FOR SELECT ROWNUM

FROM t1

WHERE ROWNUM < 4

FOR UPDATE;

Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> FETCH cur1 INTO :v1;


V1

--

1


1 row fetched.


gSQL> UPDATE t1 SET c1 = ROWNUM WHERE CURRENT OF cur1;


ERR-42000(16453): rownum not allowed in positioned UPDATE

Action

UPDATE CURRENT OF cursor 구문에서 ROWNUM 을 사용하지 않는다.


gSQL> UPDATE t1 SET c1 = c1 + 10 WHERE CURRENT OF cur1;

16454 (SQLSTATE: 42000): function '%s' not allowed here

Cause

INSERT RETURN 구문에서 해당 함수를 사용할 수 없다.


gSQL> INSERT INTO t1 VALUES ( DEFAULT ) RETURN LAST_IDENTITY_VALUE() INTO :v1;


ERR-42000(16454): function 'LAST_IDENTITY_VALUE' not allowed here :

INSERT INTO t1 VALUES ( DEFAULT ) RETURN LAST_IDENTITY_VALUE() INTO :v1

*

ERROR at line 1:

Action

INSERT RETURN 구문에서 해당 함수를 사용하지 않는다.


gSQL> INSERT INTO t1 VALUES ( DEFAULT ) RETURN c1 INTO :v1;


V1

--

10


1 row created.

16455 (SQLSTATE: 42000): routine "%s.%s" has errors

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16456 (SQLSTATE: 42000): the startup phase '%s' of cluster member '%s' is mismatch with the required startup phase '%s'

Cause

추가하려는 cluster member 의 startup phase 가 OPEN 상태가 아니다.


gSQL> CREATE CLUSTER GROUP G4 CLUSTER MEMBER G4N1 HOST '127.0.0.1' PORT 14150;


ERR-42000(16456): the startup phase 'LOCAL OPEN' of cluster member 'G4N1' is mismatch with the required startup phase 'OPEN'

Action

해당 cluster member 의 startup phase 를 OPEN 상태로 변경한다.

16457 (SQLSTATE: 42000): the connection map of cluster member '%s' is mismatch with local connection map

Cause

ALTER SYSTEM JOIN DATABASE 수행 시 발생할 수 있는 에러로, local 노드의 connection map 이 remote 노드의 connection map 과 일치하지 않을 경우에 발생한다.

일반적으로는 발생하지 않지만, 구문 수행 중 remote 노드가 중지되는 경우에 발생할 수 있다.

Action

중지된 remote 노드의 failover 가 완료된 후 다시 시도한다.

16458 (SQLSTATE: 42000): reserved domain cannot be used with other domains

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16459 (SQLSTATE: 42000): cannot execute on hash sharded tables

Cause

MERGE SHARDS 구문은 hash sharded table 에서는 사용할 수 없다.


gSQL> CREATE TABLE T1( I1 INTEGER ) SHARDING BY HASH( I1 );


Table created.


gSQL> ALTER TABLE T1 MERGE SHARDS S1, S2 INTO S1;


ERR-42000(16459): cannot execute on hash sharded tables :

ALTER TABLE T1 MERGE SHARDS S1, S2 INTO S1

*

ERROR at line 1:

Action

MERGE SHARDS 구문은 range/ list sharded table 에서 사용할 수 있다.

16460 (SQLSTATE: 42000): cannot execute on range sharded tables

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16461 (SQLSTATE: 42000): invalid shard values

Cause

range sharded table 에 대해 SPLIT SHARD 시 IN shard value 를 사용하였다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )

SHARDING BY RANGE (sk)

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g2;


Table created.


gSQL>


ALTER TABLE t1 SPLIT SHARD s2 INTO

(

SHARD s3 VALUES IN ( 50 ) AT CLUSTER GROUP G3

);


ERR-42000(16461): invalid shard values :

SHARD s3 VALUES IN ( 50 ) AT CLUSTER GROUP G3

*

ERROR at line 3:

Action

아래와 같이 LESS THAN shard value 를 사용한다.


gSQL> ALTER TABLE t1 SPLIT SHARD s2 INTO

(

SHARD s3 VALUES LESS THAN ( 200 ) AT CLUSTER GROUP G3

);


Table altered.

16462 (SQLSTATE: 42000): cannot split shard - source shard cannot be empty

Cause

SPLIT 을 할 경우 source shard 의 IN shard value 가 empty 상태가 된다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )

SHARDING BY LIST (sk)

SHARD s1 VALUES IN ( 1,2 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES IN ( DEFAULT ) AT CLUSTER GROUP g2;


Table created.


gSQL>


ALTER TABLE t1 SPLIT SHARD s1 INTO

(

SHARD S1_1 VALUES IN ( 1 ) AT CLUSTER GROUP g1,

SHARD S1_2 VALUES IN ( 2 ) AT CLUSTER GROUP g2

);


ERR-42000(16462): cannot split shard - source shard cannot be empty :

ALTER TABLE t1 SPLIT SHARD s1 INTO

*

ERROR at line 1:

Action

아래와 같이 source shard 의 IN shard value 가 존재할 수 있도록 SPLIT 한다.


gSQL>


ALTER TABLE t1 SPLIT SHARD s1 INTO

(

SHARD S1_2 VALUES IN ( 2 ) AT CLUSTER GROUP g2

);


Table altered.

16463 (SQLSTATE: 42000): first CREATE CLUSTER GROUP must include only one cluster member

Cause

cluster system 생성을 위한 최초 cluster group 생성 시에는 자기 자신의 cluster member 만 포함할 수 있다.


gSQL>


CREATE CLUSTER GROUP g1

CLUSTER MEMBER g1n1 HOST '192.168.0.101' PORT 11000,

CLUSTER MEMBER g1n2 HOST '192.168.0.102' PORT 12000;


ERR-42000(16463): first CREATE CLUSTER GROUP must include only one cluster member

Action

아래와 같이 최초 cluster group 생성 시에는 자기 자신의 cluster member 만 포함한다.


gSQL>


CREATE CLUSTER GROUP g1

CLUSTER MEMBER g1n1 HOST '192.168.0.101' PORT 11000;


Cluster Group created.

16464 (SQLSTATE: HY000): unsupported feature with temporary table

Cause

global temporary table 에는 사용할 수 없는 기능이다.


gSQL> CREATE GLOBAL TEMPORARY TABLE t1 ( c1 INTEGER );


Table created.


gSQL> ALTER TABLE t1 PCTFREE 100;


ERR-HY000(16464): unsupported feature with temporary table :

ALTER TABLE t1 PCTFREE 100

*

ERROR at line 1:

Action

global temporary table 에 대해 storage option 을 사용할 수 없다.

16465 (SQLSTATE: 42000): cannot drop local cluster group

Cause

현재 접속한 cluster group 을 DROP 할 수 없다.


gSQL> DROP CLUSTER GROUP g1;


ERR-42000(16465): cannot drop local cluster group :

DROP CLUSTER GROUP g1

*

ERROR at line 1:

Action

현재 접속한 cluster group 을 확인한다.


gSQL> SELECT local_group_name() FROM dual;


LOCAL_GROUP_NAME()

------------------

G1


1 row selected.

16466 (SQLSTATE: 42000): cannot execute with SERIALIZABLE

Cause

ISOLATION LEVEL SERIALIZABLE 모드에서는 REBALANCE 를 실행할 수 없다.


gSQL> SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE;


Session set.


gSQL> ALTER TABLE T1 REBALANCE;


ERR-42000(16466): cannot execute with SERIALIZABLE

Action

ISOLATION LEVEL 을 READ COMMITTED 로 변경하고 수행한다.


gSQL> SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED;


Session set.


gSQL> ALTER TABLE t1 REBALANCE;


Table altered.

16467 (SQLSTATE: 42000): table '%s' is READ ONLY

Cause

READ ONLY table 에 대해 DML을 수행할 수 없다.


gSQL> ALTER TABLE t1 READ ONLY;


Table altered.


gSQL> INSERT INTO t1 VALUES ( 1 );


ERR-42000(16467): table 'T1' is READ ONLY :

INSERT INTO t1 VALUES ( 1 )

*

ERROR at line 1:

Action

READ WRITE 로 변경하고 DML 을 수행한다.


gSQL> ALTER TABLE t1 READ WRITE;


Table altered.


gSQL> INSERT INTO t1 VALUES ( 1 );


1 row created.

16468 (SQLSTATE: HY000): cannot create TEMPORARY object in a NON-TEMPORARY tablespace '%s'

Cause

global temporary table 은 data tablespace 에 생성할 수 없다.


gSQL> CREATE GLOBAL TEMPORARY TABLE t1 ( c1 INTEGER ) TABLESPACE mem_data_tbs;


ERR-HY000(16468): cannot create TEMPORARY object in a NON-TEMPORARY tablespace 'MEM_DATA_TBS' :

CREATE GLOBAL TEMPORARY TABLE t1 ( c1 INTEGER ) TABLESPACE mem_data_tbs

*

ERROR at line 1:

Action

global temporary table 은 temporary tablespace 에 생성해야 한다.


gSQL> CREATE GLOBAL TEMPORARY TABLE t1 ( c1 INTEGER ) TABLESPACE mem_temp_tbs;


Table created.

16469 (SQLSTATE: 0A000): cannot execute on global connection

Cause

Global connection 환경에서는 global temporary table 을 사용할 수 없다.


gSQL> CREATE GLOBAL TEMPORARY TABLE t1 ( c1 INTEGER );


Table created.


gSQL> COMMIT;


Commit complete.


gSQL> INSERT INTO t1 VALUES ( 1 );


ERR-0A000(16469): cannot execute on global connection

Action

Global connection의 제약 사항을 참조한다.

16470 (SQLSTATE: 42000): datafile size specified is smaller than minimum required '%ld'

Cause

Tablespace 의 datafile 크기가 범위를 벗어났다.


gSQL>


CREATE TABLESPACE TEST_TBS DATAFILE 'TEST_TBS.dbf'

SIZE 1M

EXTSIZE 1048576;


ERR-RD000(16080): file size is out of range( 4194304 to 32212254720 ) :

SIZE 1M

*

ERROR at line 2:

Action

Tablespace 의 datafile 크기는 4M ~ 32G 여야 한다.

16471 (SQLSTATE: 42000): audit policy '%s' does not exists

Cause

해당 audit policy 가 존재하지 않는다.


gSQL> AUDIT POLICY invalid;


ERR-42000(16471): audit policy 'INVALID' does not exists :

AUDIT POLICY invalid

*

ERROR at line 1:

Action

아래와 같이 audit policy 가 존재하는지 확인한다.


gSQL> SELECT policy_name FROM audit_policies;


POLICY_NAME

-----------

P1


1 row selected.

16472 (SQLSTATE: 42000): audit policy cannot be dropped as it is currently enabled

Cause

현재 활성화되어 있는 audit policy 를 DROP 할 수 없다.


gSQL> AUDIT POLICY p1;


Audit succeeded.


gSQL> DROP AUDIT POLICY p1;


ERR-42000(16472): audit policy cannot be dropped as it is currently enabled :

DROP AUDIT POLICY p1

*

ERROR at line 1:

Action

아래와 같이 비활성화 한 후 DROP 한다.


gSQL> NOAUDIT POLICY p1;


Noaudit succeeded.


gSQL> DROP AUDIT POLICY p1;


Audit Policy dropped.

16473 (SQLSTATE: 42000): audit policy '%s' already exists

Cause

audit policy 객체가 이미 존재한다.


gSQL> CREATE AUDIT POLICY p1 ACTIONS CREATE TABLE;


ERR-42000(16473): audit policy 'P1' already exists :

CREATE AUDIT POLICY p1 ACTIONS CREATE TABLE

*

ERROR at line 1:

Action

아래와 같이 audit policy 객체가 존재하는지 확인한다.


gSQL> SELECT policy_name FROM audit_policies;


POLICY_NAME

-----------

P1


1 row selected.

16474 (SQLSTATE: 42000): not auditable option

Cause

권한 감사에 사용할 수 없는 privilege 이다.


gSQL>


CREATE AUDIT POLICY p1

PRIVILEGES CREATE SESSION

;


ERR-42000(16474): not auditable option :

PRIVILEGES CREATE SESSION

*

ERROR at line 2:

Action

아래와 같이 PRIVILEGES audit option 은 database privilege 만 가능하다.


gSQL>


CREATE AUDIT POLICY p1

PRIVILEGES SELECT ANY TABLE

;


Audit Policy created.


audit 가능한 database privilege 는 아래와 같이 조회한다.


gSQL> SELECT privilege_name FROM v$auditable_db_privileges;


PRIVILEGE_NAME

-----------------

ADMINISTRATION

ALTER DATABASE

...

...

...

EXECUTE ANY LIBRARY


55 rows selected.

16475 (SQLSTATE: 42000): audit policy already applied with the BY clause

Cause

이미 BY user 로 audit policy 가 활성화되었다.


gSQL> AUDIT POLICY p1 BY u1;


Audit succeeded.


gSQL> AUDIT POLICY p1 EXCEPT u1;


ERR-42000(16475): audit policy already applied with the BY clause

Action

아래와 같이 BY user 로 audit policy 를 비활성화 한 후 EXCEPT user 로 활성화한다.


gSQL> NOAUDIT POLICY p1 BY u1;


Noaudit succeeded.


gSQL> AUDIT POLICY p1 EXCEPT u1;


Audit succeeded.

16476 (SQLSTATE: 42000): audit policy already applied with the EXCEPT clause

Cause

audit policy 가 EXCEPT user 로 이미 활성화되었다.


gSQL> AUDIT POLICY p1 EXCEPT u1;


Audit succeeded.


gSQL> AUDIT POLICY p1 BY u1;


ERR-42000(16476): audit policy already applied with the EXCEPT clause

Action

audit policy 를 BY/EXCEPT 옵션 없이 비활성화 한 후 BY user 로 활성화한다.


gSQL> NOAUDIT POLICY p1;


Noaudit succeeded.


gSQL> AUDIT POLICY p1 BY u1;


Audit succeeded.

16477 (SQLSTATE: 42000): not auditable object

Cause

감사 가능한 object 가 아니다.


gSQL>


CREATE AUDIT POLICY p1

ACTIONS ALL ON X$SESSION

;


ERR-42000(16477): not auditable object :

ACTIONS ALL ON X$SESSION

*

ERROR at line 2:

Action

사용자가 생성한 table 에 대해서만 audit 이 가능하다.


gSQL>


CREATE AUDIT POLICY p1

ACTIONS ALL ON t1

;


Audit Policy created.

16478 (SQLSTATE: 42000): tablespace '%s' is not temporary tablespace or data tablespace

Cause

지정한 tablespace 가 INDEX TABLESPACE 로 사용할 수 없다.


gSQL> ALTER USER u1 INDEX TABLESPACE mem_undo_tbs;


ERR-42000(16478): tablespace 'MEM_UNDO_TBS' is not temporary tablespace or data tablespace :

ALTER USER u1 INDEX TABLESPACE mem_undo_tbs

*

ERROR at line 1:

Action

temporary tablespace 나 data tablespace 를 INDEX TABLESPACE 로 지정한다.


gSQL> ALTER USER u1 INDEX TABLESPACE mem_temp_tbs;


User altered.

16479 (SQLSTATE: 42000): failed to update system version - %s

Cause

여러 개의 세션에서 동시에 system version 을 갱신할 때 정해진 대기 시간을 초과하면 발생한다.

Action

System version 은 global connection을 사용하는 클라이언트에게 cluster 의 topology 변경 사항을 알리기 위해 증가된다.

Global connection 을 사용하는 경우, ALTER SYSTEM RECONNECT GLOBAL CONNECTION 구문을 사용하여 system version 을 수동으로 증가시킬 수 있다.

16480 (SQLSTATE: 42000): cannot set irrecoverable on the local cluster member

Cause

ALTER SYSTEM IRRECOVERABLE CLUSTER MEMBER 구문을 수행할 때 지정된 member 이름이 local member 이름과 동일하다.


gSQL> SELECT local_member_name() FROM dual;


LOCAL_MEMBER_NAME()

-------------------

G1N1


1 row selected.


gSQL> ALTER SYSTEM IRRECOVERABLE CLUSTER MEMBER g1n1;


ERR-42000(16480): cannot set irrecoverable on the local cluster member :

ALTER SYSTEM IRRECOVERABLE CLUSTER MEMBER g1n1

*

ERROR at line 1:

Action

지정할 member 이름을 확인한 후 다시 수행한다.

16481 (SQLSTATE: 42000): global tempoary table segment no longer exists

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16482 (SQLSTATE: 42R02): database is not accessible; '%s' has detached from the cluster

Cause

현재 접속한 member(G3N3) 가 cluster system 에서 떨어져 있는 상태이다.


gSQL> SELECT COUNT(*) FROM t1;


ERR-42R02(16482): database is not accessible; 'G3N3' has detached from the cluster

ERR-42R01(16357): must be accessible to at least one member of group 'G1'

Action

해당 cluster member(G3N3) 를 cluster system 에 join 한다.

16483 (SQLSTATE: 42000): of the total '%d' sequences, '%d' sequences failed to synchronize

Cause

노드를 추가하거나 참여시키는 과정에서 발생할 수 있으며, sequence 동기화 대상 객체들 중에 실패한 개수를 표시한다.

실패한 원인은 대부분 lock 으로 인한 동시성 문제이다.

Action

모든 sequence 가 성공적으로 동기화될 때까지 ALTER DATABASE SYNCHRONIZE SEQUENCE 구문을 시도한다.

16484 (SQLSTATE: 42000): of the total '%d' identity columns, '%d' identity columns failed to synchronize

Cause

노드를 추가하거나 참여시키는 과정에서 발생할 수 있으며, identity column 동기화 대상들 중에 실패한 개수를 표시한다.

실패한 원인은 대부분 lock 으로 인한 동시성 문제이다.

Action

모든 identity column이 성공적으로 동기화될 때까지 ALTER DATABASE SYNCHRONIZE SEQUENCE 구문을 시도한다.

16485 (SQLSTATE: 42000): table '%s' does not have an identity column

Cause

해당 table 은 identity column 을 가지고 있지 않다.


gSQL> ALTER TABLE t2 SYNCHRONIZE IDENTITY COLUMN;


ERR-42000(16485): table '%s' does not have an identity column :

ALTER TABLE t2 SYNCHRONIZE IDENTITY COLUMN

*

ERROR at line 1:

Action

아래와 같이 identity column 을 가지는 테이블을 확인한다.


gSQL> SELECT table_name, column_name FROM user_tab_identity_cols;


TABLE_NAME COLUMN_NAME

---------- -----------

T1 C1


1 row selected.


gSQL> ALTER TABLE t1 SYNCHRONIZE IDENTITY COLUMN;


Table altered.

16486 (SQLSTATE: RD000): maximum file size is out of range( %ld to %ld )

Cause

최대 file 크기를 초과하였다.


gSQL> CREATE DISK TABLESPACE DISK_TBS DATAFILE 'DISK_TBS.dbf' SIZE 10M AUTOEXTEND ON MAXSIZE 31G;


ERR-RD000(16486): maximum file size is out of range( 4194304 to 32212254720 ) :

CREATE DISK TABLESPACE DISK_TBS DATAFILE 'DISK_TBS.dbf' SIZE 10M AUTOEXTEND ON MAXSIZE 31G

*

ERROR at line 1:

Action

file 크기는 다음과 같은 범위 ( 4M ~ 30G ) 에서 지정 가능하다.

16487 (SQLSTATE: 42000): only range sharded table is allowed

Cause

MERGE SHARDS start_shard_name TO end_shard_name 구문은 list sharded table 에서 사용할 수 없다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )

SHARDING BY LIST(sk)

SHARD s1 VALUES IN ( 101, 201 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES IN ( 102, 202 ) AT CLUSTER GROUP g1,

SHARD s3 VALUES IN ( 103, 203 ) AT CLUSTER GROUP g1,

SHARD s4 VALUES IN ( DEFAULT ) AT CLUSTER GROUP g2

;


Table created.


gSQL> ALTER TABLE T1 MERGE SHARDS s1 TO s2 INTO s5 AT CLUSTER GROUP g3;


ERR-42000(16487): only range sharded table is allowed :

ALTER TABLE T1 MERGE SHARDS s1 TO s2 INTO s5 AT CLUSTER GROUP g3

*

ERROR at line 1:

Action

MERGE SHARDS start_shard_name TO end_shard_name 구문은 range sharded table 에서 사용 가능하다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )

SHARDING BY RANGE(sk)

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( 200 ) AT CLUSTER GROUP g1,

SHARD s3 VALUES LESS THAN ( 300 ) AT CLUSTER GROUP g1,

SHARD s4 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g2

;


Table created.


gSQL> ALTER TABLE T1 MERGE SHARDS s1 TO s2 INTO s5 AT CLUSTER GROUP g3;


Table altered.

16488 (SQLSTATE: 42000): shards being merged are not adjacent

Cause

인접하지 않은 shard 들을 merge 할 수 없다.


gSQL>


CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )

SHARDING BY RANGE(sk)

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( 200 ) AT CLUSTER GROUP g1,

SHARD s3 VALUES LESS THAN ( 300 ) AT CLUSTER GROUP g1,

SHARD s4 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g2

;


Table created.


gSQL> ALTER TABLE T1 MERGE SHARDS s1, s3 INTO s5 AT CLUSTER GROUP g3;


ERR-42000(16488): shards being merged are not adjacent :

ALTER TABLE T1 MERGE SHARDS s1, s3 INTO s5 AT CLUSTER GROUP g3

*

ERROR at line 1:

Action

아래와 같이 인접한 shard 들을 merge 해야 한다.


gSQL> ALTER TABLE T1 MERGE SHARDS s1, s2, s3 INTO s5 AT CLUSTER GROUP g3;


Table altered.

16489 (SQLSTATE: 42000): cluster group name must be specified

Cause

cluster group 이름을 명시하지 않았다.


gSQL> CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )


SHARDING BY RANGE(sk)

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( 200 ) AT CLUSTER GROUP g1,

SHARD s3 VALUES LESS THAN ( 300 ) AT CLUSTER GROUP g1,

SHARD s4 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g2

;


Table created.


gSQL> ALTER TABLE T1 MERGE SHARDS s1, s2 INTO s5;


ERR-42000(16489): cluster group name must be specified :

ALTER TABLE T1 MERGE SHARDS s1, s2 INTO s5

*

ERROR at line 1:

Action

아래와 같이 cluster group 이름을 명시한다.


gSQL> ALTER TABLE T1 MERGE SHARDS s1, s2 INTO s5 AT CLUSTER GROUP g3;


Table altered.

16490 (SQLSTATE: 42000): mismatch the group name of the source shard '%s'

Cause

동일한 shard 가 source shard 와 destine shard 에서 사용될 때 해당 shard 의 cluster group 이름이 다르게 기술되었다.


gSQL> CREATE TABLE t1 ( sk INTEGER, c2 INTEGER )


SHARDING BY RANGE(sk)

SHARD s1 VALUES LESS THAN ( 100 ) AT CLUSTER GROUP g1,

SHARD s2 VALUES LESS THAN ( 200 ) AT CLUSTER GROUP g1,

SHARD s3 VALUES LESS THAN ( 300 ) AT CLUSTER GROUP g1,

SHARD s4 VALUES LESS THAN ( MAXVALUE ) AT CLUSTER GROUP g2

;


Table created.


gSQL> ALTER TABLE T1 MERGE SHARDS s1, s2 INTO s2 AT CLUSTER GROUP g2;


ERR-42000(16490): mismatch the group name of the source shard 'S2' :

ALTER TABLE T1 MERGE SHARDS s1, s2 INTO s2 AT CLUSTER GROUP g2

*

ERROR at line 1:

Action

동일한 shard 가 source shard 와 destine shard 에서 사용될 때 해당 shard 의 cluster group 이름을 기술해야 한다.


gSQL> ALTER TABLE T1 MERGE SHARDS s1, s2 INTO s2 AT CLUSTER GROUP g1;


Table altered.

16491 (SQLSTATE: 42000): exceed the maximum number of shards (%d)

Cause

최대 shard 개수를 초과하였다.


gSQL>


CREATE TABLE t1

(

c1 INTEGER,

c2 INTEGER

)

SHARDING BY RANGE (c1)

AT CLUSTER WIDE

SHARD s0001 VALUES LESS THAN (10001),

SHARD s0002 VALUES LESS THAN (10002),

SHARD s0003 VALUES LESS THAN (10003),

SHARD s0004 VALUES LESS THAN (10004),

...

...

...

SHARD s0510 VALUES LESS THAN (10510),

SHARD s0511 VALUES LESS THAN (10511),

SHARD s0512 VALUES LESS THAN (10512),

SHARD s0513 VALUES LESS THAN (MAXVALUE)

;


ERR-42000(16491): exceed the maximum number of shards (512) :

SHARD s0513 VALUES LESS THAN (MAXVALUE)

*

ERROR at line 520:

Action

정의할 수 있는 최대 shard 개수는 512 개이다.

16492 (SQLSTATE: 42000): can not perform DDL/DML over objects in Recycle Bin

Cause

gSQL> create table t1 ( c1 integer ) ;


Table created.


gSQL> drop table t1;


Table dropped.


gSQL> select OBJECT_NAME, ORIGINAL_NAME from dba_recyclebin;


OBJECT_NAME ORIGINAL_NAME

------------------------------------ -------------

BIN$A202F0C6E59611EE8E17DF67981EB0BF T1


1 row selected.


gSQL> drop table BIN$A202F0C6E59611EE8E17DF67981EB0BF;


ERR-42000(16492): can not perform DDL/DML over objects in Recycle Bin :

drop table BIN$A202F0C6E59611EE8E17DF67981EB0BF

*

ERROR at line 1:

Action

휴지통에 저장된 OBJECT는 DDL/DML을 수행할 수 없다. FLASHBACK TABLE 구문을 사용하여 복구한 후에 DDL/DML을 수행할 수 있다.

16493 (SQLSTATE: 42000): object not in Recycle Bin

Cause

gSQL> select OBJECT_NAME, ORIGINAL_NAME from dba_recyclebin;


OBJECT_NAME ORIGINAL_NAME

------------------------------------ -------------

BIN$A202F0C6E59611EE8E17DF67981EB0BF T1


1 row selected.


gSQL> purge table t2;


ERR-42000(16493): object not in Recycle Bin :

purge table t2

*

ERROR at line 1:


gSQL> flashback table t2 to before drop;


ERR-42000(16493): object not in Recycle Bin :

flashback table t2 to before drop

*

ERROR at line 1:

Action

휴지통에 저장된 OBJECT를 삭제하거나 복구할 때에는 올바른 OBJECT NAME을 사용해야 한다.


gSQL> purge table t1;


Table purged.

16494 (SQLSTATE: 42000): original name is used by an existing object

Cause

gSQL> select OBJECT_NAME, ORIGINAL_NAME from dba_recyclebin;


OBJECT_NAME ORIGINAL_NAME

------------------------------------ -------------

BIN$9D8ADDDAE59911EE8E17DF67981EB0BF T1


1 row selected.


gSQL> create table t1 ( c1 integer ) ;


Table created.


gSQL> flashback table t1 to before drop;


ERR-42000(16494): original name is used by an existing object :

flashback table t1 to before drop

*

ERROR at line 1:

Action

휴지통에 저장된 OBJECT을 복구할 때 동일한 이름의 OBJECT가 존재하는 경우 발생하는 에러이다.


gSQL> flashback table t1 to before drop rename to t2;


Flashback complete.

16495 (SQLSTATE: HY000): package or package body does not exist

Cause

해당 package 가 존재하지 않는다.


gSQL> DROP PACKAGE invalid;


ERR-42000(16495): package or package body does not exist :

DROP PACKAGE invalid

*

ERROR at line 1:

Action

아래와 같이 존재하는 package 를 확인한다.


gSQL> SELECT object_name FROM user_objects WHERE object_type = 'PACKAGE';


OBJECT_NAME

-----------

PKG1


1 row selected.

16496 (SQLSTATE: 42000): built-in package '%s' is not modifiable

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16497 (SQLSTATE: 42000): lacks privilege (EXECUTE ON PACKAGE "%s"."%s")

Cause

사용자에게 EXECUTE ON PACKAGE 권한이 없다.


gSQL> SELECT pkg1.func1(100) FROM dual;


ERR-42000(16497): lacks privilege (EXECUTE ON PACKAGE "PUBLIC"."PKG1") :

SELECT pkg1.func1(100) FROM dual

*

ERROR at line 1:


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.

Action

Package 소유자가 해당 사용자에게 권한을 부여해야 한다.


gSQL> GRANT EXECUTE ON PACKAGE "PUBLIC"."PKG1" TO u1;


Grant succeeded.


gSQL> \connect u1 u1


gSQL> SELECT current_user FROM dual;


CURRENT_USER

------------

U1


1 row selected.


gSQL> SELECT pkg1.func1(100) FROM dual;


PKG1.FUNC1(100)

---------------

100


1 row selected.

16498 (SQLSTATE: 42000): Only Btree indexes can be rebuilt

Cause

Global temporary index에 INDEX REBUILD 구문을 사용할 때 발생하는 에러이다.


gSQL> CREATE GLOBAL TEMPORARY TABLE t1 ( c1 INTEGER );


Table created.


gSQL> CREATE INDEX t1_idx ON t1 ( c1 );


Index created.


gSQL> COMMIT;


Commit complete.


gSQL> ALTER INDEX t1_idx REBUILD;


ERR-42000(16498): Only Btree indexes can be rebuilt :

ALTER INDEX t1_idx REBUILD

*

ERROR at line 1:

Action

Global temporary index 는 REBUILD 구문을 지원하지 않는다.

16499 (SQLSTATE: 42000): operation is not allowed on immutable table '%s'

Cause

Immutable table 에 대해 해당 구문을 수행할 수 없다.


gSQL> CREATE IMMUTABLE TABLE t1 ( c1 INTEGER );


Table created.


gSQL> INSERT INTO t1 VALUES ( 1 );


1 row created.


gSQL> DELETE FROM t1 WHERE c1 = 1;


ERR-42000(16499): operation is not allowed on immutable table 'T1' :

DELETE FROM t1 WHERE c1 = 1

*

ERROR at line 1:

Action

Immutable table 은 INSERT 만 가능한 테이블이다.

16500 (SQLSTATE: 0A000): cannot execute on global session

Cause

Global session 환경의 client 에서 DDL 을 수행할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


ERR-0A000(16500): cannot execute on global session

Action

Global connection, global session 에서의 제약 사항을 확인한다.

16501 (SQLSTATE: 42000): size of log file is larger than maximum size of log file(%ld bytes).

Cause

ALTER DATABASE ADD LOGFILE GROUP 구문을 수행할 때 지정한 SIZE 절 값이 1 Terabyte 를 초과하였다.


gSQL> ALTER DATABASE ADD LOGFILE GROUP 4 ( 'redo_4_0.log' ) SIZE 2T REUSE;


ERR-42000(16501): size of log file is larger than maximum size of log file(1099511627776 bytes).

Action

SIZE 절을 1 Terabyte 보다 작게 설정한 후에 다시 수행한다.

16502 (SQLSTATE: 42000): recursive WITH clause must reference itself directly in one of the UNION ALL branches

Cause

recursive WITH 절 기술 방식이 잘못되었다.


gSQL>


WITH w1 ( w_emp, w_mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION

SELECT emp, mgr

FROM t1, w1

WHERE t1.mgr = w1.w_emp

)

SELECT * FROM w1;


ERR-42000(16502): recursive WITH clause must reference itself directly in one of the UNION ALL branches :

SELECT emp, mgr

*

ERROR at line 3:

Action

아래와 같이 UNION ALL 로 기술한다.


gSQL> WITH w1 ( w_emp, w_mgr ) AS


(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT emp, mgr

FROM t1, w1

WHERE t1.mgr = w1.w_emp

)


SELECT * FROM w1;


W_EMP W_MGR

----- -----

kim null

park kim

choi kim

tom park


4 rows selected.

16503 (SQLSTATE: 42000): recursive WITH clause must reference itself in the last UNION ALL branch

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16504 (SQLSTATE: 42000): recursive WITH clause must use UNION ALL operation

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16505 (SQLSTATE: 42000): recursive WITH clause must have column alias list

Cause

recursive WITH 절에는 column alias 를 기술해야 한다.


gSQL>


WITH w1 AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)


SELECT * FROM w1;

ERR-42000(16505): recursive WITH clause must have column alias list :

WITH w1 AS

*

ERROR at line 1:

Action

아래와 같이 query name (w1) 에 column alias 를 기술한다.


gSQL>


WITH w1(emp, mgr) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)


SELECT * FROM w1;


EMP MGR

---- ----

kim null

park kim

choi kim

tom park


4 rows selected.

16506 (SQLSTATE: 42000): unsupported join in recursive WITH query

Cause

recursive WITH 절의 recursive query part 에 LEFT OUTER JOIN 을 사용할 수 없다.


gSQL>


WITH w1(emp, mgr) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1 LEFT OUTER JOIN

w1 ON t1.mgr = w1.emp

)

SELECT * FROM w1;


ERR-42000(16506): unsupported join in recursive WITH query :

w1 ON t1.mgr = w1.emp

*

ERROR at line 9:

Action

recursive WITH 절의 recursive query part 는 INNER JOIN 을 사용한다.


gSQL>


WITH w1(emp, mgr) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)

SELECT * FROM w1;


EMP MGR

---- ----

kim null

park kim

choi kim

tom park


4 rows selected.

16507 (SQLSTATE: 42000): cycle mark value and non-cycle mark value must be one byte character

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16508 (SQLSTATE: 42000): only recursive WITH element can have recursive search clause

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16509 (SQLSTATE: 42000): unsupported operation in recursive branch of recursive WITH clause

Cause

recursive WITH 절의 recursive query part 에는 GROUP BY 등을 사용할 수 없다.


gSQL> WITH w1(emp, mgr) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, MAX(t1.mgr)

FROM t1, w1

WHERE t1.mgr = w1.emp

GROUP BY t1.emp

)


SELECT * FROM w1;


ERR-42000(16509): unsupported operation in recursive branch of recursive WITH clause :

GROUP BY t1.emp

*

ERROR at line 10:

Action

아래와 같이 GROUP BY, DISTINCT 등을 제거한다.


gSQL>


WITH w1(emp, mgr) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)


SELECT * FROM w1;


EMP MGR

---- ----

kim null

park kim

choi kim

tom park


4 rows selected.

16510 (SQLSTATE: 42000): unsupported use of WITH clause

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16511 (SQLSTATE: 42000): cycle detected while executing recursive WITH query

Cause

recursive WITH 절 실행 과정에서 cycle 이 발견되었다.


gSQL> WITH w1(emp, mgr) AS


(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)


SELECT * FROM w1;


ERR-42000(16511): cycle detected while executing recursive WITH query

Action

아래와 같이 CYCLE 절을 이용한다.


gSQL> WITH w1(emp, mgr) AS


(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp, mgr SET w_cycle TO 'T' DEFAULT 'F'


SELECT * FROM w1;


EMP MGR W_CYCLE

---- ---- -------

kim null F

kim tom F

park kim F

choi kim F

park kim F

choi kim F

tom park F

tom park F

kim tom F

kim tom T

park kim T

choi kim F


12 rows selected.

16512 (SQLSTATE: 42000): CONNECT BY clause required in this query block

Cause

LEVEL 은 CONNECT BY 절과 함께 사용하는 hierarchy function 이다.


gSQL>


SELECT emp, mgr, LEVEL

FROM t1

;


ERR-42000(16512): CONNECT BY clause required in this query block :

SELECT emp, mgr, LEVEL

*

ERROR at line 1:

Action

SELECT emp, mgr, LEVEL


FROM t1

START WITH emp = 'kim'

CONNECT BY mgr = PRIOR emp

;


EMP MGR LEVEL

---- ---- -----

kim null 1

choi kim 2

park kim 2

tom park 3


4 rows selected.

16513 (SQLSTATE: 42000): hierarchy function not allowed here

Cause

hierarchy function 은 PRIOR 와 함께 SELECT target 에 사용할 수 없다.


gSQL>


SELECT emp, mgr, PRIOR SYS_CONNECT_BY_PATH( emp, '/' )

FROM t1

START WITH emp = 'kim'

CONNECT BY mgr = PRIOR emp

;


ERR-42000(16513): hierarchy function not allowed here :

SELECT emp, mgr, PRIOR SYS_CONNECT_BY_PATH( emp, '/' )

*

ERROR at line 1:

Action

아래와 같이 PRIOR 를 제거한다.


gSQL>


SELECT emp, mgr, SYS_CONNECT_BY_PATH( emp, '/' )

FROM t1

START WITH emp = 'kim'

CONNECT BY mgr = PRIOR emp

;


EMP MGR SYS_CONNECT_BY_PATH( EMP, '/' )

---- ---- -------------------------------

kim null /kim

choi kim /kim/choi

park kim /kim/park

tom park /kim/park/tom


4 rows selected.

16514 (SQLSTATE: 42000): cycle detected while executing CONNECT BY Clause

Cause

CONNECT BY 실행 중 cycle 이 감지되었다.


gSQL>


SELECT emp, mgr

FROM t1

START WITH emp = 'kim'

CONNECT BY mgr = PRIOR emp

;


ERR-42000(16511): cycle detected while executing recursive WITH query

Action

아래와 같이 NOCYCLE 옵션을 사용한다.


gSQL> SELECT emp, mgr


FROM t1

START WITH emp = 'kim'

CONNECT BY NOCYCLE mgr = PRIOR emp

;


EMP MGR

---- ----

kim null

choi kim

park kim

tom park


4 rows selected.

16515 (SQLSTATE: 42000): ORDER SIBLINGS BY requires specific target expressions

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16516 (SQLSTATE: 42000): invalid argument expressions for SYS_CONNECT_BY_PATH

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16517 (SQLSTATE: 42000): NOCYCLE keyword is required with CONNECT_BY_ISCYCLE

Cause

NOCYCLE 옵션이 누락되었다.


gSQL>


SELECT emp, mgr, CONNECT_BY_ISCYCLE

FROM t1

START WITH emp = 'kim'

CONNECT BY mgr = PRIOR emp

;


ERR-42000(16517): NOCYCLE keyword is required with CONNECT_BY_ISCYCLE :

SELECT emp, mgr, CONNECT_BY_ISCYCLE

*

ERROR at line 1:

Action

hierarchy function CONNECT_BY_ISCYCLE 은 NOCYCLE 옵션과 함께 사용해야 한다.


gSQL>


SELECT emp, mgr, CONNECT_BY_ISCYCLE

FROM t1

START WITH emp = 'kim'

CONNECT BY NOCYCLE mgr = PRIOR emp

;


EMP MGR CONNECT_BY_ISCYCLE

---- ---- ------------------

kim null 0

choi kim 0

park kim 0

tom park 1


4 rows selected.

16518 (SQLSTATE: 42000): LOCAL_OFFLINE domain expected

Cause

현재 접속한 local data 가 offline 상태이므로 LOCAL_OFFLINE 옵션으로 사용해야 한다.


gSQL> SELECT * FROM t1@local;


ERR-42000(16518): LOCAL_OFFLINE domain expected :

SELECT * FROM t1@local

*

ERROR at line 1:

Action

아래와 같이 현재 접속한 local data 가 offline 상태임을 확인할 수 있다.


gSQL> SELECT local_member_name() FROM dual;


LOCAL_MEMBER_NAME()

-------------------

G2N2


1 row selected.


gSQL> SELECT table_name, member_name, member_offline FROM user_tab_place WHERE table_name = 'T1';


TABLE_NAME MEMBER_NAME MEMBER_OFFLINE

---------- ----------- --------------

T1 G1N1 FALSE

T1 G1N2 FALSE

T1 G2N1 FALSE

T1 G2N2 TRUE

T1 G3N1 FALSE

T1 G3N2 FALSE


6 rows selected.


table(t1) 을 REBALANCE 하거나 아래와 같이 LOCAL_OFFLINE domain 으로 조회할 수 있다.


gSQL> SELECT * FROM t1@local_offline;


C1

--

1


1 row selected.

16519 (SQLSTATE: 42000): global secondary index expected in cluster DML

Cause

non-deterministic DML 을 수행하기 위해서는 global secondary index 가 필요하다.


gSQL> CREATE TABLE t1 ( id INTEGER ) SHARDING BY(id) WITHOUT GLOBAL SECONDARY INDEX;


Table created.


gSQL> DELETE FROM t1 LIMIT 3;


ERR-42000(16519): global secondary index expected in cluster DML

Action

아래와 같이 global secondary index 를 추가한 후 실행한다.


gSQL> ALTER TABLE t1 ADD GLOBAL SECONDARY INDEX;


Table altered.


gSQL> DELETE FROM t1 LIMIT 3;


no rows deleted.

16520 (SQLSTATE: 42000): long varying memory manager does not exist

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16521 (SQLSTATE: 42000): invalid hash bucket count (must between 1 and %ld)

Cause

hash bucket count 값을 잘못 설정하였다.


gSQL> ALTER SESSION SET HINT_ERROR = ON;


Session altered.


gSQL> \explain plan


SELECT /*+ USE_HASH(t2, 0) */

t1.id, t1.name

FROM t1, t2

WHERE t1.id = t2.id;


ERR-42000(16521): invalid hash bucket count (must between 1 and 9223372036854775807) :

SELECT /*+ USE_HASH(t2, 0) */

*

ERROR at line 1:

Action

아래와 같이 유효한 범위의 값을 사용한다.


gSQL> \explain plan


SELECT /*+ USE_HASH(t2, 1024) */

t1.id, t1.name

FROM t1, t2

WHERE t1.id = t2.id;


ID NAME

-- ----

1 kim


1 row selected.


>>> start print plan


... 중략 ...


<<< end print plan

16522 (SQLSTATE: 42000): invalid cluster member position

Cause

지정한 cluster member position 을 사용할 수 없다.


gSQL>


ALTER CLUSTER GROUP g4 ADD

CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 14150 POSITION 5;


ERR-42000(16522): invalid cluster member position :

CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 14150 POSITION 5

*

ERROR at line 2:

Action

아래와 같이 cluster member 가 할당되지 않은 cluster member position 을 확인한다.


gSQL>


SELECT member_name,

member_position

FROM dba_cluster

WHERE member_position < 9

ORDER BY member_position

;


MEMBER_NAME MEMBER_POSITION

----------- ---------------

G1N1 0

G1N2 1

G2N1 2

G2N2 3

G3N1 4

G3N2 5

null 6

G4N2 7

null 8


9 rows selected.


gSQL>


ALTER CLUSTER GROUP g4 ADD

CLUSTER MEMBER g4n1 HOST '127.0.0.1' PORT 14150 POSITION 6;


Cluster Group altered.

16523 (SQLSTATE: 08S01): the database system is shutting down

Cause

shutdown 을 진행하는 동안 SQL 구문을 실행하였다.

Action

shutdown 과정 중에는 SQL 구문을 실행할 수 없다.

16524 (SQLSTATE: 42000): package specification '%s' does not exist. package body requires its package specification

Cause

package specification 이 유효하지 않아 package body 를 compile 할 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.


gSQL>


CREATE PACKAGE pkg1

AS

v1 t1.c1%TYPE;

FUNCTION f1 RETURN INTEGER;

END;

/


Package created.


gSQL>


CREATE PACKAGE BODY pkg1

AS

FUNCTION f1 RETURN INTEGER

AS

BEGIN

RETURN v1;

END;

END;

/


Package created.


gSQL> DROP TABLE t1;


Table dropped.


gSQL> ALTER PACKAGE pkg1 COMPILE BODY;


ERR-2F000(17102): PACKAGE(PKG1) Body has compilation errors :

(1) : ERR-42000(16524): Cannot compile package body of 'PUBLIC.PKG1' without its specification

Package altered.

Action

package specification 오류 원인을 수정한 후 package body 를 compile 한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.


gSQL> ALTER PACKAGE pkg1 COMPILE BODY;


Package altered.

16525 (SQLSTATE: 42000): duplicate name found in WITH name list for WITH clause

Cause

중복된 WITH name 이 사용되었다.


gSQL>


WITH w1 AS ( SELECT name FROM t1 WHERE id = 1 )

, w1 AS ( SELECT name FROM t1 WHERE id = 2 )

SELECT name FROM w1;


ERR-42000(16525): duplicate name found in WITH name list for WITH clause :

, w1 AS ( SELECT name FROM t1 WHERE id = 2 )

*

ERROR at line 2:

Action

아래와 같이 중복된 WITH name 이 없도록 수정한다.


gSQL>


WITH w1 AS ( SELECT name FROM t1 WHERE id = 1 )

, w2 AS ( SELECT name FROM t1 WHERE id = 2 )

SELECT name FROM w1;


NAME

----

kim


1 row selected.

16526 (SQLSTATE: 42000): only recursive WITH element can have recursive search clause

Cause

SEARCH 절을 사용할 수 없다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

) SEARCH DEPTH FIRST BY emp SET w_seq

SELECT * FROM w1;


ERR-42000(16526): only recursive WITH element can have recursive search clause :

) SEARCH DEPTH FIRST BY emp SET w_seq

*

ERROR at line 6:

Action

SEARCH 절은 recursive WITH 절에만 사용할 수 있다.


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH DEPTH FIRST BY emp SET w_seq

SELECT * FROM w1;


EMP MGR W_SEQ

---- ---- -----

kim null 1

choi kim 2

park kim 3

tom park 4


4 rows selected.

16527 (SQLSTATE: 42000): only recursive WITH element can have recursive cycle clause

Cause

CYCLE 절을 사용할 수 없다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

) CYCLE emp SET w_cycle TO 1 DEFAULT 0

SELECT * FROM w1;


ERR-42000(16527): only recursive WITH element can have recursive cycle clause :

) CYCLE emp SET w_cycle TO 1 DEFAULT 0

*

ERROR at line 6:

Action

CYCLE 절은 recursive WITH 절에만 사용할 수 있다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp SET w_cycle TO 1 DEFAULT 0

SELECT * FROM w1;


EMP MGR W_CYCLE

---- ---- -------

kim null 0

park kim 0

choi kim 0

tom park 0


4 rows selected.

16528 (SQLSTATE: 42000): illegal reference of a query name in WITH clause

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16529 (SQLSTATE: 42000): recursive query name referenced more than once in recursive branch of recursive WITH clause element

Cause

recursive query name (w1) 이 여러 recursive branch 에서 사용되었다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)

SELECT * FROM w1;


ERR-42000(16529): recursive query name referenced more than once in recursive branch of recursive WITH clause element :

FROM t1, w1

*

ERROR at line 12:

Action

recursive query name (w1) 은 마지막 UNION ALL 에만 기술한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1

WHERE t1.emp = 'park'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)

SELECT * FROM w1;


EMP MGR

---- ----

kim null

park kim

park kim

choi kim

tom park

tom park


6 rows selected.

16530 (SQLSTATE: 42000): number of WITH clause column names does not match number of elements in select list

Cause

WITH 절의 column 개수와 SELECT 의 column 개수가 다르다.


gSQL>


WITH w1 ( emp, mgr, invalid ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)


SELECT * FROM w1;


ERR-42000(16530): number of WITH clause column names does not match number of elements in select list :

WITH w1 ( emp, mgr, invalid ) AS

*

ERROR at line 1:

Action

WITH 절의 column 개수를 SELECT 의 column 개수와 일치시킨다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

)

SELECT * FROM w1;


EMP MGR

---- ----

kim null

park kim

choi kim

tom park


4 rows selected.

16531 (SQLSTATE: 42000): sequence column name for SEARCH clause must not be part of the column alias list

Cause

SEARCH 절의 sequence name 은 WITH column alias 와 다른 이름을 사용해야 한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH BREADTH FIRST BY emp SET emp

SELECT * FROM w1;


ERR-42000(16531): sequence column name for SEARCH clause must not be part of the column alias list :

) SEARCH BREADTH FIRST BY emp SET emp

*

ERROR at line 10:

Action

SEARCH 절의 sequence name 은 WITH column alias 와 다른 이름을 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH BREADTH FIRST BY emp SET seq

SELECT * FROM w1;


EMP MGR SEQ

---- ---- ---

kim null 1

choi kim 2

park kim 3

tom park 4


4 rows selected.

16532 (SQLSTATE: 42000): cycle mark column name for CYCLE clause must not be part of the column alias list

Cause

CYCLE 절의 mark column name 은 WITH column alias 와 다른 이름을 사용해야 한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp SET mgr TO 'T' DEFAULT 'F'

SELECT * FROM w1;


ERR-42000(16532): cycle mark column name for CYCLE clause must not be part of the column alias list :

) CYCLE emp SET mgr TO 'T' DEFAULT 'F'

*

ERROR at line 10:

Action

CYCLE 절의 mark column name 은 WITH column alias 와 다른 이름을 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp SET cyl TO 'T' DEFAULT 'F'

SELECT * FROM w1;


EMP MGR CYL

---- ---- ---

kim null F

park kim F

choi kim F

tom park F


4 rows selected.

16533 (SQLSTATE: 42000): sequence column for SEARCH clause must be different from the cycle mark column for CYCLE clause

Cause

SEARCH 절의 sequence column 과 CYCLE 절의 mark column 은 서로 다른 이름을 사용해야 한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH BREADTH FIRST BY emp SET x1

CYCLE emp SET x1 TO 'T' DEFAULT 'F'

SELECT * FROM w1;


ERR-42000(16533): sequence column for SEARCH clause must be different from the cycle mark column for CYCLE clause :

) SEARCH BREADTH FIRST BY emp SET x1

*

ERROR at line 10:

Action

아래와 같이 서로 다른 이름을 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH BREADTH FIRST BY emp SET x1

CYCLE emp SET x2 TO 'T' DEFAULT 'F'

SELECT * FROM w1;


EMP MGR X1 X2

---- ---- -- --

kim null 1 F

choi kim 2 F

park kim 3 F

tom park 4 F


4 rows selected.

16534 (SQLSTATE: 42000): element in sort specification list of SEARCH clause did not appear in the column alias list of the WITH clause element

Cause

SEARCH 절의 sort column 이 WITH 절의 column list 에 존재하지 않는다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH BREADTH FIRST BY invalid SET seq


SELECT * FROM w1;


ERR-42000(16534): element in sort specification list of SEARCH clause did not appear in the column alias list of the WITH clause element :

) SEARCH BREADTH FIRST BY invalid SET seq

*

ERROR at line 10:

Action

SEARCH 절의 sort column 은 WITH 절의 column list 를 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH BREADTH FIRST BY emp SET seq

SELECT * FROM w1;


EMP MGR SEQ

---- ---- ---

kim null 1

choi kim 2

park kim 3

tom park 4


4 rows selected.

16535 (SQLSTATE: 42000): element in cycle column list of CYCLE clause must appear in the column alias list of the WITH clause element

Cause

CYCLE 검사를 위한 column 이 WITH column list 에 존재하지 않는다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE invalid SET cyc TO 'T' DEFAULT 'F'

SELECT * FROM w1;


ERR-42000(16535): element in cycle column list of CYCLE clause must appear in the column alias list of the WITH clause element :

) CYCLE invalid SET cyc TO 'T' DEFAULT 'F'

*

ERROR at line 10:

Action

CYCLE column 은 WITH 절의 column list 를 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp SET cyc TO 'T' DEFAULT 'F'

SELECT * FROM w1;


EMP MGR CYC

---- ---- ---

kim null F

park kim F

choi kim F

tom park F


4 rows selected.

16536 (SQLSTATE: 42000): duplicate name found in search column list for SEARCH clause of WITH clause

Cause

SEARCH 절에 중복된 이름이 사용되었다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH BREADTH FIRST BY emp, emp SET seq

SELECT * FROM w1;


ERR-42000(16536): duplicate name found in search column list for SEARCH clause of WITH clause :

) SEARCH BREADTH FIRST BY emp, emp SET seq

*

ERROR at line 10:

Action

SEARCH 절에는 서로 다른 column 이름을 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) SEARCH BREADTH FIRST BY emp, mgr SET seq

SELECT * FROM w1;


EMP MGR SEQ

---- ---- ---

kim null 1

choi kim 2

park kim 3

tom park 4


4 rows selected.

16537 (SQLSTATE: 42000): duplicate name found in cycle column list for CYCLE clause of WITH clause

Cause

CYCLE 절에 중복된 이름이 사용되었다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp, emp SET cyc TO 'T' DEFAULT 'F'

SELECT * FROM w1;


ERR-42000(16537): duplicate name found in cycle column list for CYCLE clause of WITH clause :

) CYCLE emp, emp SET cyc TO 'T' DEFAULT 'F'

*

ERROR at line 10:

Action

CYCLE 절에는 서로 다른 column 이름을 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp, mgr SET cyc TO 'T' DEFAULT 'F'


SELECT * FROM w1;


EMP MGR CYC

---- ---- ---

kim null F

park kim F

choi kim F

tom park F


4 rows selected.

16538 (SQLSTATE: 42000): cycle mark value and non-cycle mark value must be one byte character string values

Cause

cycle mark value 는 1 byte 문자만 사용할 수 있다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp, mgr SET cyc TO 'TRUE' DEFAULT 'F'

SELECT * FROM w1;


ERR-42000(16538): cycle mark value and non-cycle mark value must be one byte character string values :

) CYCLE emp, mgr SET cyc TO 'TRUE' DEFAULT 'F'

*

ERROR at line 10:

Action

cycle mark value 는 1 byte 문자를 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp, mgr SET cyc TO 'T' DEFAULT 'F'


SELECT * FROM w1;


EMP MGR CYC

---- ---- ---

kim null F

park kim F

choi kim F

tom park F


4 rows selected.

16539 (SQLSTATE: 42000): cycle value for CYCLE clause must be different from the non-cycle value

Cause

cycle value 와 non-cycle value 가 동일한 값이다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp, mgr SET cyc TO 'O' DEFAULT 'O'

SELECT * FROM w1;


ERR-42000(16539): cycle value for CYCLE clause must be different from the non-cycle value :

) CYCLE emp, mgr SET cyc TO 'O' DEFAULT 'O'

*

ERROR at line 10:

Action

아래와 같이 서로 다른 mark value 를 사용한다.


gSQL>


WITH w1 ( emp, mgr ) AS

(

SELECT emp, mgr

FROM t1

WHERE emp = 'kim'

UNION ALL

SELECT t1.emp, t1.mgr

FROM t1, w1

WHERE t1.mgr = w1.emp

) CYCLE emp, mgr SET cyc TO 'O' DEFAULT 'X'

SELECT * FROM w1;


EMP MGR CYC

---- ---- ---

kim null X

park kim X

choi kim X

tom park X


4 rows selected.

16540 (SQLSTATE: 42000): multiple WITH clauses not allowed

Cause

WITH 절을 여러 번 사용할 수 없다.


gSQL>


WITH w1 AS ( SELECT emp, mgr FROM t1 )

(

WITH w2 AS ( SELECT emp, mgr FROM w1 WHERE emp = 'park' )

SELECT * FROM w2

);


ERR-42000(16540): multiple WITH clauses not allowed :

WITH w1 AS ( SELECT emp, mgr FROM t1 )

*

ERROR at line 1:

Action

아래와 같이 하나의 WITH 절에 순서대로 query name 을 나열한다.


gSQL>


WITH w1 AS ( SELECT emp, mgr FROM t1 )

, w2 AS ( SELECT emp, mgr FROM w1 WHERE emp = 'park' )

SELECT * FROM w2;


EMP MGR

---- ---

park kim


1 row selected.

16541 (SQLSTATE: 42000): cannot affect row a second time

Cause

upsert 시 하나의 row 가 두 번 UPDATE 된다.


DROP TABLE t1;

CREATE TABLE t1 ( c1 INTEGER UNIQUE );

INSERT INTO t1 VALUES ( 1 );

COMMIT;


gSQL> SELECT * FROM t1;


C1

--

1


1 row selected.


gSQL> INSERT INTO t1 VALUES ( 1 ), ( 1 ) ON DUPLICATE KEY UPDATE SET c1 = c1 + 1;


ERR-42000(16541): cannot affect row a second time

Action

아래와 같이 하나의 row 가 두 번 영향을 받지 않도록 한다.


gSQL> INSERT INTO t1 VALUES ( 1 ) ON DUPLICATE KEY UPDATE SET c1 = c1 + 1;


1 row created.


gSQL> INSERT INTO t1 VALUES ( 1 ) ON DUPLICATE KEY UPDATE SET c1 = c1 + 1;


1 row created.


gSQL> SELECT * FROM t1;


C1

--

1

2


2 rows selected.

16542 (SQLSTATE: 42000): upsert not allowed for the row that caused more than one unique constraint violation

Cause

둘 이상의 unique violation 을 유발하는 upsert 는 허용하지 않는다.


DROP TABLE t1;

CREATE TABLE t1 ( c1 INTEGER UNIQUE , c2 INTEGER UNIQUE );

INSERT INTO t1 VALUES ( 1, 1 );

INSERT INTO t1 VALUES ( 2, 2 );

INSERT INTO t1 VALUES ( 3, 3 );

COMMIT;


gSQL> SELECT * FROM t1;


C1 C2

-- --

1 1

2 2

3 3


3 rows selected.


gSQL> INSERT INTO t1 VALUES ( 1, 2 ) ON DUPLICATE KEY UPDATE SET c1 = c1 + 1;


ERR-42000(16542): upsert not allowed for the row that caused more than one unique constraint violation

Action

둘 이상의 unique violation 을 유발하지 않도록 한다.


gSQL> INSERT INTO t1 VALUES ( 3, 4 ) ON DUPLICATE KEY UPDATE SET c1 = c1 + 1;


1 row created.


gSQL> SELECT * FROM t1;


C1 C2

-- --

1 1

2 2

4 3


3 rows selected.

16543 (SQLSTATE: 42000): upsert is not allowed for the table with a deferrable constraint (%s.%s)

Cause

제약 조건이 DEFERRED 로 설정된 상태에서는 upsert 구문을 수행할 수 없다.


DROP TABLE t1;

CREATE TABLE t1 ( id INTEGER PRIMARY KEY DEFERRABLE INITIALLY IMMEDIATE, cnt INTEGER );

INSERT INTO t1 VALUES ( 1, 1 );

COMMIT;


gSQL> SET CONSTRAINTS ALL DEFERRED;


Constraints set.


gSQL> INSERT INTO t1 VALUES ( 1, 1 ) ON DUPLICATE KEY UPDATE SET cnt = cnt + 1;


ERR-42000(16543): upsert is not allowed for the table with a deferrable constraint (PUBLIC.T1_PRIMARY_KEY)

Action

제약 조건을 IMMEDIATE 로 변경한 후 수행한다.


gSQL> SET CONSTRAINTS ALL IMMEDIATE;


Constraints set.


gSQL> INSERT INTO t1 VALUES ( 1, 1 ) ON DUPLICATE KEY UPDATE SET cnt = cnt + 1;


1 row created.

16544 (SQLSTATE: 01000): Warning: Package '%s.%s' has compilation errors

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16545 (SQLSTATE: 42R02): cloned table "%s"."%s" must have at least one online usable replica

Cause

CLONED 타입의 테이블에서 발생하는 오류로서, 모든 replica 들이 OFFLINE 상태이고 inactive 멤버가 존재할 때 다음 구문을 수행하면 발생한다.


다음은 2x2 cluster 에서 모든 replica 가 OFFLINE 상태이고 inactive 멤버가 존재하는 경우의 예이다.


gSQL> SELECT map.group_id, map.member_id, map.is_offline

2 FROM table_member_map@local map,

3 definition_schema.tables@local tbl

4 WHERE map.table_id = tbl.table_id AND tbl.table_name = 'T1'

5 ORDER BY 1, 2

6 ;


GROUP_ID MEMBER_ID IS_OFFLINE

-------- --------- ----------

1 1 TRUE

1 2 TRUE

2 3 TRUE

2 4 TRUE


4 rows selected.


gSQL> SELECT member_id, STATUS FROM v$cluster_member@local;


MEMBER_ID STATUS

--------- --------

1 ACTIVE

2 ACTIVE

3 ACTIVE

4 INACTIVE


4 rows selected.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


ERR-42R02(16545): cloned table "PUBLIC"."T1" must have at least one online usable replica

Action

ALTER TABLE name SYNCHRONIZE 구문을 수행할 때 에러가 발생하는 이유는 inactive member 가 존재하기 때문이다. 모든 inactive member 들을 cluster 에 참여시킨 후에 다시 시도한다.


gSQL> SELECT local_member_id() FROM dual;


LOCAL_MEMBER_ID()

-----------------

4


1 row selected.


gSQL> ALTER SYSTEM JOIN DATABASE;


System altered.


gSQL> SELECT member_id, STATUS FROM v$cluster_member@local;


MEMBER_ID STATUS

--------- ------

1 ACTIVE

2 ACTIVE

3 ACTIVE

4 ACTIVE


4 rows selected.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


Table altered.

16546 (SQLSTATE: 42R02): sharded table "%s"."%s" must have at least one online usable replica of group '%s'

Cause

SHARDED 타입의 테이블에서 발생하는 오류로서, 특정 그룹의 모든 replica 들이 OFFLINE 상태이고 그룹 내에 inactive 멤버가 존재할 때 다음 구문을 수행하면 발생한다.


다음은 2x2 cluster 에서 g2 의 모든 replica 들이 OFFLINE 상태이고 inactive 멤버가 존재하는 경우의 예이다.


gSQL> SELECT map.group_id, map.member_id, map.is_offline

2 FROM table_member_map@local map,

3 definition_schema.tables@local tbl

4 WHERE map.table_id = tbl.table_id AND tbl.table_name = 'T1'

5 ORDER BY 1, 2

6 ;


GROUP_ID MEMBER_ID IS_OFFLINE

-------- --------- ----------

1 1 FALSE

1 2 FALSE

2 3 TRUE

2 4 TRUE


4 rows selected.


gSQL> SELECT group_id, member_id, STATUS FROM v$cluster_member@local;


MEMBER_ID STATUS

--------- --------

1 ACTIVE

2 ACTIVE

3 ACTIVE

4 INACTIVE


4 rows selected.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


ERR-42R02(16546): sharded table "PUBLIC"."T1" must have at least one online usable replica of group 'G2'

Action

모든 inactive member 들을 cluster 에 참여시킨 후에 다시 시도한다.


gSQL> SELECT local_member_id() FROM dual;


LOCAL_MEMBER_ID()

-----------------

4


1 row selected.


gSQL> ALTER SYSTEM JOIN DATABASE;


System altered.


gSQL> SELECT member_id, STATUS FROM v$cluster_member@local;


MEMBER_ID STATUS

--------- ------

1 ACTIVE

2 ACTIVE

3 ACTIVE

4 ACTIVE


4 rows selected.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


Table altered.

16547 (SQLSTATE: 01000): of the total '%d' tables in the database, '%d' tables have offline replica

Cause

ALTER SYSTEM {MOUNT | OPEN} DATABASE 구문은 모든 멤버를 cluster 에 참여시킨 후 OFFLINE 상태의 replica 들을 ONLINE 상태로 변경하려고 시도한다.

이 때 ONLINE 상태로 변경할 수 없는 테이블이 있을 경우 발생하는 경고 메시지이다.

ONLINE 전환 실패는 ONLINE replica 의 SCN 이 OFFLINE replica 의 SCN 보다 큰 경우에 발생한다.


다음은 g1 그룹만 있는 1x2 cluster 에서 ALTER SYSTEM OPEN GLOBAL DATABASE 구문을 수행할 때 테이블 t1 의 replica 를 ONLINE 상태로 전환하지 못한 예이다.


gSQL> ALTER SYSTEM OPEN GLOBAL DATABASE;


ERR-01000(16547): of the total '4' tables in the database, '1' tables have offline replica

System altered.


gSQL> SELECT global_scn FROM gv$relation@g1n1 WHERE name = 'T1';


GLOBAL_SCN

----------

9.1.0


1 row selected.


gSQL> SELECT global_scn FROM gv$relation@g1n2 WHERE name = 'T1';


GLOBAL_SCN

----------

5.0.0


1 row selected.

Action

ALTER TABLE name SYNCHRONIZE 또는 ALTER DATABASE SYNCHRONIZE 구문을 수행하여 테이블을 ONLINE 상태로 전환한다.


gSQL> SELECT map.group_id, map.member_id, map.is_offline

2 FROM table_member_map@local map,

3 definition_schema.tables@local tbl

4 WHERE map.table_id = tbl.table_id AND tbl.table_name = 'T1'

5 ORDER BY 1, 2

6 ;


GROUP_ID MEMBER_ID IS_OFFLINE

-------- --------- ----------

1 1 FALSE

1 2 TRUE


2 rows selected.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


Table altered.


gSQL> SELECT map.group_id, map.member_id, map.is_offline

2 FROM table_member_map@local map,

3 definition_schema.tables@local tbl

4 WHERE map.table_id = tbl.table_id AND tbl.table_name = 'T1'

5 ORDER BY 1, 2

6 ;


GROUP_ID MEMBER_ID IS_OFFLINE

-------- --------- ----------

1 1 FALSE

1 2 FALSE


2 rows selected.

16548 (SQLSTATE: 01000): of the total '%d' tables in the member to be dropped, %d' tables have offline replica

Cause

ALTER DATABASE DROP FORCE INACTIVE CLUSTER MEMBERS 구문은 inactive 멤버를 삭제한 후 OFFLINE 상태의 replica 를 ONLINE 상태로 변경하려고 시도한다.

이 때 ONLINE 상태로 변경할 수 없는 테이블이 있을 경우 발생하는 경고 메시지이다.

ONLINE 전환 실패는 ONLINE replica 의 SCN 이 OFFLINE replica 의 SCN 보다 큰 경우에 발생한다.


다음은 g1 그룹만 있는 1x3 cluster 에서 inactive 멤버 (g1n3)를 강제로 삭제하는 예이다.


gSQL> SELECT member_id, status FROM v$cluster_member@local;


MEMBER_ID STATUS

--------- --------

1 ACTIVE

2 ACTIVE

3 INACTIVE


3 rows selected.


gSQL> ALTER DATABASE DROP FORCE INACTIVE CLUSTER MEMBERS;


ERR-01000(16548): of the total '4' tables in the member to be dropped, '1' tables have offline replica

Database altered.


gSQL> SELECT global_scn FROM gv$relation@g1n1 WHERE name = 'T1';


GLOBAL_SCN

----------

15.1.0


1 row selected.


gSQL> SELECT global_scn FROM gv$relation@g1n2 WHERE name = 'T1';


GLOBAL_SCN

----------

7.0.0


1 row selected.

Action

ALTER TABLE name SYNCHRONIZE 또는 ALTER DATABASE SYNCHRONIZE TABLE 구문을 수행하여 테이블을 ONLINE 상태로 전환한다.


gSQL> SELECT map.group_id, map.member_id, map.is_offline

2 FROM table_member_map@local map,

3 definition_schema.tables@local tbl

4 WHERE map.table_id = tbl.table_id AND tbl.table_name = 'T1'

5 ORDER BY 1, 2

6 ;


GROUP_ID MEMBER_ID IS_OFFLINE

-------- --------- ----------

1 1 FALSE

1 2 TRUE


2 rows selected.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


Table altered.


gSQL> SELECT map.group_id, map.member_id, map.is_offline

2 FROM table_member_map@local map,

3 definition_schema.tables@local tbl

4 WHERE map.table_id = tbl.table_id AND tbl.table_name = 'T1'

5 ORDER BY 1, 2

6 ;


GROUP_ID MEMBER_ID IS_OFFLINE

-------- --------- ----------

1 1 FALSE

1 2 FALSE


2 rows selected.

16549 (SQLSTATE: 42000): invalid bind parameter

Cause

bind parameter 가 유효하지 않다.


gSQL> DECLARE cur1 CURSOR FOR SELECT id, name FROM t1;


Cursor declared.


gSQL> OPEN cur1;


Cursor is open.


gSQL> \var v_id INTEGER


gSQL> \var v_name VARCHAR(32)


gSQL> FETCH cur1 INTO v_id, :v_name;


ERR-42000(16549): invalid bind parameter :

FETCH cur1 INTO v_id, :v_name

*

ERROR at line 1:

Action

아래와 같이 호스트 변수는 (:) 과 함께 사용하여야 한다.


gSQL> FETCH cur1 INTO :v_id, :v_name;


V_ID V_NAME

---- ------

1 kim


1 row fetched.

16550 (SQLSTATE: HY000): failed to offline the already dropped cluster member

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

별도의 조치는 필요없다.

16551 (SQLSTATE: HY000): shutdown cannot be performed on ipc

Cause

IPC connection 에서는 shutdown 할 수 없다.

Action

TCP connection 으로 shutdown 을 수행한다.

16552 (SQLSTATE: 42000): cannot execute on NODE SHARDED table

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16553 (SQLSTATE: 42000): of the total '%d' tables, '%d' tables failed to drop offline segments

Cause

ALTER DATABASE DROP OFFLINE SEGMENTS 구문 수행 중 특정 테이블의 segment 삭제에 실패하였다.

이는 대부분 동시성 제어 과정에서 필요한 lock을 획득하지 못한 경우에 발생한다.

Action

DDL_LOCK_TIMEOUT 값을 증가시킨 후에 다시 수행한다.

16554 (SQLSTATE: 42000): NODE SHARDED table cannot be synchronized

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16555 (SQLSTATE: 42000): of the total '%d' tables, '%d' tables failed to synchronize

Cause

일부 테이블의 synchronize 가 정상적으로 완료되지 않았다.


gSQL> ALTER DATABASE SYNCHRONIZE;


ERR-42000(16379): of the total '5' tables, '2' tables failed to synchronize :

concurrent execution : 2

inactive member : 0

replica usablility : 0

offline tablespace : 0

others : 0


Database altered.


  • concurrent execution

    • 다른 세션과의 동시성 문제로 인해서 실패한 경우

  • inactive member

    • 모든 active member의 replica 들이 offline 상태이고 inactive member 가 있는 경우

  • replica usability

    • Local replica 가 unusable 상태이거나

    • 모든 active member 의 replica 들이 unusable 상태인 경우

  • offline tablespace

    • Local replica 가 오프라인 된 tablespace 에 만들어진 경우

  • others

    • 위에 기술된 원인을 제외한 나머지 경우

Action

  • concurrent execution

    • 동시성 문제로 인해 다른 세션에서의 DDL 수행을 중지하고 다시 시도한다.

  • inactive member

    • inactive member 를 cluster 에 join 한 후 다시 시도한다.

  • replica usability

  • offline tablespace

  • others

    • system.trc 에서 원인을 확인하고 조치를 취한 후 다시 시도한다.

16556 (SQLSTATE: 42000): scan partition is out of range( 1 to %d )

Cause

다음과 같은 구문을 수행할 때 지정한 SCAN PARTITION 의 값이 최대값 (1000)을 초과하였다.


gSQL> ALTER TABLE t1 REORGANIZE SCAN PARTITION 1001;


ERR-42000(16556): scan partition is out of range( 1 to 1000 ) :

ALTER TABLE t1 REORGANIZE SCAN PARTITION 1001

*

ERROR at line 1:

Action

SCAN PARTITION 값을 1000 이하로 변경한 후에 다시 수행한다.

16557 (SQLSTATE: 42000): duplicate window name specified

Cause

동일한 window name 을 선언하였다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER w1 AS year_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

, w1 AS ( PARTITION BY s_quarter )

;


ERR-42000(16557): duplicate window name specified :

, w1 AS ( PARTITION BY s_quarter )

*

ERROR at line 7:

Action

아래와 같이 서로 다른 window name 을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER w1 AS year_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

, w2 AS ( PARTITION BY s_quarter )

;


S_YEAR S_QUARTER S_REVENUE YEAR_SUM

------ --------- --------- --------

2010 1/4 100 800

2010 2/4 200 800

2010 3/4 300 800

2010 4/4 200 800

2011 1/4 100 770

2011 2/4 220 770

2011 3/4 250 770

2011 4/4 200 770


8 rows selected.

16558 (SQLSTATE: 42000): window does not exist

Cause

window 가 존재하지 않는다.


gSQL> SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER w_invalid AS year_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

;


ERR-42000(16558): window does not exist :

, SUM( s_revenue ) OVER w_invalid AS year_sum

*

ERROR at line 4:

Action

아래와 같이 선언한 window name 을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER w1 AS year_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

;


S_YEAR S_QUARTER S_REVENUE YEAR_SUM

------ --------- --------- --------

2010 1/4 100 800

2010 2/4 200 800

2010 3/4 300 800

2010 4/4 200 800

2011 1/4 100 770

2011 2/4 220 770

2011 3/4 250 770

2011 4/4 200 770


8 rows selected.

16559 (SQLSTATE: 42000): missing ORDER BY expression in the window specification

Cause

window frame 절을 사용하기 위해서는 ORDER BY 절과 함께 사용해야 한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( w1 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) AS until_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

;


ERR-42000(16559): missing ORDER BY expression in the window specification :

, SUM( s_revenue ) OVER ( w1 ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) AS until_sum

*

ERROR at line 4:

Action

아래와 같이 OVER 절에 ORDER BY 를 함께 기술한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( w1 ORDER BY s_quarter ROWS BETWEEN 4 PRECEDING AND CURRENT ROW ) AS until_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

;


S_YEAR S_QUARTER S_REVENUE UNTIL_SUM

------ --------- --------- ---------

2010 1/4 100 100

2010 2/4 200 300

2010 3/4 300 600

2010 4/4 200 800

2011 1/4 100 100

2011 2/4 220 320

2011 3/4 250 570

2011 4/4 200 770


8 rows selected.

16560 (SQLSTATE: 42000): DISTINCT is not implemented for window functions

Cause

window function 에 DISTINCT 를 기술할 수 없다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( DISTINCT s_revenue ) OVER w1 AS year_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

;


ERR-42000(16560): DISTINCT is not implemented for window functions :

, SUM( DISTINCT s_revenue ) OVER w1 AS year_sum

*

ERROR at line 4:

Action

window function 내의 DISTINCT 를 제거한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER w1 AS year_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

;


S_YEAR S_QUARTER S_REVENUE YEAR_SUM

------ --------- --------- --------

2010 1/4 100 800

2010 2/4 200 800

2010 3/4 300 800

2010 4/4 200 800

2011 1/4 100 770

2011 2/4 220 770

2011 3/4 250 770

2011 4/4 200 770


8 rows selected.

16561 (SQLSTATE: 42000): frame start cannot be UNBOUNDED FOLLOWING

Cause

window frame 의 start 에는 UNBOUNDED FOLLOWING 을 사용할 수 없다.


gSQL> SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN UNBOUNDED FOLLOWING AND CURRENT ROW ) AS until_sum

FROM t1

;


ERR-42000(16561): frame start cannot be UNBOUNDED FOLLOWING :

ROWS BETWEEN UNBOUNDED FOLLOWING AND CURRENT ROW ) AS until_sum

*

ERROR at line 5:

Action

window frame 의 start 에는 UNBOUNDED PRECEDING 등을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS until_sum

FROM t1

;


S_YEAR S_QUARTER S_REVENUE UNTIL_SUM

------ --------- --------- ---------

2010 1/4 100 100

2010 2/4 200 300

2010 3/4 300 600

2010 4/4 200 800

2011 1/4 100 100

2011 2/4 220 320

2011 3/4 250 570

2011 4/4 200 770


8 rows selected.

16562 (SQLSTATE: 42000): frame end cannot be UNBOUNDED PRECEDING

Cause

window frame end 에는 UNBOUNDED PRECEDING 을 사용할 수 없다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN CURRENT ROW AND UNBOUNDED PRECEDING ) AS after_sum

FROM t1

;


ERR-42000(16562): frame end cannot be UNBOUNDED PRECEDING :

ROWS BETWEEN CURRENT ROW AND UNBOUNDED PRECEDING ) AS after_sum

*

ERROR at line 5:

Action

window frame 의 end 에는 UNBOUNDED FOLLOWING 등을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ) AS after_sum

FROM t1

;


S_YEAR S_QUARTER S_REVENUE AFTER_SUM

------ --------- --------- ---------

2010 1/4 100 800

2010 2/4 200 700

2010 3/4 300 500

2010 4/4 200 200

2011 1/4 100 770

2011 2/4 220 670

2011 3/4 250 450

2011 4/4 200 200


8 rows selected.

16563 (SQLSTATE: 42000): frame starting from current row cannot have preceding rows

Cause

window frame start 가 CURRENT ROW 인 경우 frame end 에 PRECEDING 을 기술할 수 없다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN CURRENT ROW AND 1 PRECEDING ) AS sum_two_quarter

FROM t1

;


ERR-42000(16563): frame starting from current row cannot have preceding rows :

ROWS BETWEEN CURRENT ROW AND 1 PRECEDING ) AS sum_two_quarter

*

ERROR at line 5:

Action

window frame start 가 CURRENT ROW 인 경우 frame end 에 FOLLOWING 등을 기술한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING ) AS sum_two_quarter

FROM t1

;


S_YEAR S_QUARTER S_REVENUE SUM_TWO_QUARTER

------ --------- --------- ---------------

2010 1/4 100 300

2010 2/4 200 500

2010 3/4 300 500

2010 4/4 200 200

2011 1/4 100 320

2011 2/4 220 470

2011 3/4 250 450

2011 4/4 200 200


8 rows selected.

16564 (SQLSTATE: 42000): frame starting from following row cannot have preceding rows

Cause

window frame start 가 FOLLOWING 인 경우 window frame end 에 PRECEDING 을 사용할 수 없다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN 1 FOLLOWING AND 1 PRECEDING ) AS sum_two_quarter

FROM t1

;


ERR-42000(16564): frame starting from following row cannot have preceding rows :

ROWS BETWEEN 1 FOLLOWING AND 1 PRECEDING ) AS sum_two_quarter

*

ERROR at line 5:

Action

window frame start 가 FOLLOWING 인 경우 window frame end 도 FOLLOWING 을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING ) AS sum_two_quarter

FROM t1

;


S_YEAR S_QUARTER S_REVENUE SUM_TWO_QUARTER

------ --------- --------- ---------------

2010 1/4 100 500

2010 2/4 200 500

2010 3/4 300 200

2010 4/4 200 null

2011 1/4 100 470

2011 2/4 220 450

2011 3/4 250 200

2011 4/4 200 null


8 rows selected.

16565 (SQLSTATE: 42000): window functions are not allowed here

Cause

window function 은 WHERE 절에 사용할 수 없다.


gSQL> SELECT s_year

, s_quarter

, s_revenue

FROM t1

WHERE SUM( s_revenue ) OVER () > 0

;


ERR-42000(16565): window functions are not allowed here :

WHERE SUM( s_revenue ) OVER () > 0

*

ERROR at line 5:

Action

window function 은 SELECT, ORDER BY 에 사용할 수 있다.


gSQL> SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER () AS total_sum

FROM t1

WHERE s_revenue > 0

;


S_YEAR S_QUARTER S_REVENUE TOTAL_SUM

------ --------- --------- ---------

2010 1/4 100 1570

2010 2/4 200 1570

2010 3/4 300 1570

2010 4/4 200 1570

2011 1/4 100 1570

2011 2/4 220 1570

2011 3/4 250 1570

2011 4/4 200 1570


8 rows selected.

16566 (SQLSTATE: 42000): window specification referencing a window name cannot have PARTITION BY clause

Cause

다른 window name (w1) 을 참조하는 window 정의 (w2) 는 PARTITION BY 절을 사용할 수 없다.


gSQL> SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( w2 ) AS until_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

, w2 AS ( w1 PARTITION BY s_quarter )

;


ERR-42000(16566): window specification referencing a window name cannot have PARTITION BY clause :

, w2 AS ( w1 PARTITION BY s_quarter )

*

ERROR at line 7:

Action

다른 window name (w1) 을 참조하는 window 정의 (w2) 는 ORDER BY 와 window frame 을 기술할 수 있다.


gSQL> SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( w2 ) AS until_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year )

, w2 AS ( w1 ORDER BY s_quarter )

;


S_YEAR S_QUARTER S_REVENUE UNTIL_SUM

------ --------- --------- ---------

2010 1/4 100 100

2010 2/4 200 300

2010 3/4 300 600

2010 4/4 200 800

2011 1/4 100 100

2011 2/4 220 320

2011 3/4 250 570

2011 4/4 200 770


8 rows selected.

16567 (SQLSTATE: 42000): referenced window name with ORDER BY clause specified already

Cause

참조되는 window name(w1) 이 이미 ORDER BY 절을 포함하고 있다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( w1 ORDER BY s_quater ) AS until_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year ORDER BY s_quarter )

;


ERR-42000(16567): referenced window name with ORDER BY clause specified already :

, SUM( s_revenue ) OVER ( w1 ORDER BY s_quater ) AS until_sum

*

ERROR at line 4:

Action

아래와 같이 OVER () 절에서 ORDER BY 를 제거한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( w1 ) AS until_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year ORDER BY s_quarter )

;


S_YEAR S_QUARTER S_REVENUE UNTIL_SUM

------ --------- --------- ---------

2010 1/4 100 100

2010 2/4 200 300

2010 3/4 300 600

2010 4/4 200 800

2011 1/4 100 100

2011 2/4 220 320

2011 3/4 250 570

2011 4/4 200 770


8 rows selected.

16568 (SQLSTATE: 42000): cannot reference a window name defined with WINDOW FRAME clause

Cause

참조하는 window name 이 이미 window frame 을 포함하고 있다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( w1 ) AS until_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW )

;


ERR-42000(16568): cannot reference a window name defined with WINDOW FRAME clause :

, SUM( s_revenue ) OVER ( w1 ) AS until_sum

*

ERROR at line 4:

Action

OVER ( w1 ) 일 경우 default window frame 이 적용되므로 괄호없이 OVER w1 으로 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER w1 AS until_sum

FROM t1

WINDOW w1 AS ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW )

;


S_YEAR S_QUARTER S_REVENUE UNTIL_SUM

------ --------- --------- ---------

2010 1/4 100 100

2010 2/4 200 300

2010 3/4 300 600

2010 4/4 200 800

2011 1/4 100 100

2011 2/4 220 320

2011 3/4 250 570

2011 4/4 200 770


8 rows selected.

16569 (SQLSTATE: 42000): window frame offset must not be negative

Cause

window frame 의 offset 값은 음수를 사용할 수 없다.


gSQL> SELECT s_year


, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN -1 PRECEDING AND 1 FOLLOWING ) AS sum_three_quarter

FROM t1

;


ERR-42000(16569): window frame offset must not be negative

Action

아래와 같이 양수값을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) AS sum_three_quarter

FROM t1

;


S_YEAR S_QUARTER S_REVENUE SUM_THREE_QUARTER

------ --------- --------- -----------------

2010 1/4 100 300

2010 2/4 200 600

2010 3/4 300 700

2010 4/4 200 500

2011 1/4 100 320

2011 2/4 220 570

2011 3/4 250 670

2011 4/4 200 450


8 rows selected.

16570 (SQLSTATE: 42000): RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column

Cause

RANGE offset 을 사용할 경우 ORDER BY 절은 하나의 컬럼이어야 한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, MAX( s_year ) OVER w1 AS max_year

, MAX( s_quarter ) OVER w1 AS max_quarter

FROM t1

WINDOW w1 AS ( ORDER BY s_revenue, s_year

RANGE BETWEEN 50 PRECEDING AND 50 FOLLOWING )

;


ERR-42000(16570): RANGE with offset PRECEDING/FOLLOWING requires exactly one ORDER BY column :

WINDOW w1 AS ( ORDER BY s_revenue, s_year

*

ERROR at line 7:

Action

아래와 같이 ORDER BY 절에 RANGE offset 에 대응하는 하나의 column 만 기술한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, MAX( s_year ) OVER w1 AS max_year

, MAX( s_quarter ) OVER w1 AS max_quarter

FROM t1

WINDOW w1 AS ( ORDER BY s_revenue

RANGE BETWEEN 50 PRECEDING AND 50 FOLLOWING )

;


S_YEAR S_QUARTER S_REVENUE MAX_YEAR MAX_QUARTER

------ --------- --------- -------- -----------

2010 1/4 100 2011 1/4

2011 1/4 100 2011 1/4

2010 2/4 200 2011 4/4

2010 4/4 200 2011 4/4

2011 4/4 200 2011 4/4

2011 2/4 220 2011 4/4

2011 3/4 250 2011 4/4

2010 3/4 300 2011 3/4


8 rows selected.

16571 (SQLSTATE: 42000): RANGE with offset PRECEDING/FOLLOWING is not supported for column type

Cause

RANGE offset 을 사용할 수 없는 data type 이다.


gSQL> SELECT s_year


, s_quarter

, s_revenue

, MAX( s_quarter ) OVER ( PARTITION BY s_year ORDER BY s_quarter

RANGE BETWEEN 50 PRECEDING AND 50 FOLLOWING ) AS max_quarter

FROM t1

;


ERR-42000(16571): RANGE with offset PRECEDING/FOLLOWING is not supported for column type :

, MAX( s_quarter ) OVER ( PARTITION BY s_year ORDER BY s_quarter

*

ERROR at line 4:

Action

RANGE offset 은 숫자와 datetime 만 가능하다.


gSQL> SELECT s_year


, s_quarter

, s_revenue

, MAX( s_quarter ) OVER ( PARTITION BY s_year ORDER BY s_revenue

RANGE BETWEEN 50 PRECEDING AND 50 FOLLOWING ) AS max_quarter

FROM t1

;


S_YEAR S_QUARTER S_REVENUE MAX_QUARTER

------ --------- --------- -----------

2010 1/4 100 1/4

2010 2/4 200 4/4

2010 4/4 200 4/4

2010 3/4 300 3/4

2011 1/4 100 1/4

2011 4/4 200 4/4

2011 2/4 220 4/4

2011 3/4 250 4/4


8 rows selected.

16572 (SQLSTATE: 42000): window frame offset must not be null

Cause

window frame offset 에는 null 값을 사용할 수 없다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN null PRECEDING AND 1 FOLLOWING ) AS three_quarter_sum

FROM t1

;


ERR-42000(16572): window frame offset must not be null

Action

아래와 같이 양수값을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, SUM( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_quarter

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) AS three_quarter_sum

FROM t1

;


S_YEAR S_QUARTER S_REVENUE THREE_QUARTER_SUM

------ --------- --------- -----------------

2010 1/4 100 300

2010 2/4 200 600

2010 3/4 300 700

2010 4/4 200 500

2011 1/4 100 320

2011 2/4 220 570

2011 3/4 250 670

2011 4/4 200 450


8 rows selected.

16573 (SQLSTATE: 42000): argument of ntile must be greater than zero

Cause

NTILE() 함수의 인자로 양수가 아닌 값을 사용하였다.


gSQL> SELECT s_year


, s_quarter

, s_revenue

, NTILE( 0 ) OVER ( ORDER BY s_revenue ) AS ntile_value

FROM t1

;


ERR-42000(16573): argument of ntile must be greater than zero

Action

NTILE() 함수의 인자로 양수를 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, NTILE( 4 ) OVER ( ORDER BY s_revenue ) AS ntile_value

FROM t1

;


S_YEAR S_QUARTER S_REVENUE NTILE_VALUE

------ --------- --------- -----------

2010 1/4 100 1

2011 1/4 100 1

2010 2/4 200 2

2010 4/4 200 2

2011 4/4 200 3

2011 2/4 220 3

2011 3/4 250 4

2010 3/4 300 4


8 rows selected.

16574 (SQLSTATE: 42000): window order by is not allowed here

Cause

KEEP ( DENSE_RANK FIRST ORDER BY ) 절을 사용할 경우 OVER() 절에 ORDER BY 를 사용할 수 없다.


gSQL> SELECT s_year


, s_quarter

, s_revenue

, s_price

, MAX( s_revenue ) KEEP ( DENSE_RANK FIRST ORDER BY s_price )

OVER ( PARTITION BY s_year ORDER BY s_price ) AS min_price_max_revenue

FROM t1

;


ERR-42000(16574): window order by is not allowed here :

, MAX( s_revenue ) KEEP ( DENSE_RANK FIRST ORDER BY s_price )

*

ERROR at line 5:

Action

아래와 같이 OVER() 절에서 ORDER BY 를 제거한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, s_price

, MAX( s_revenue ) KEEP ( DENSE_RANK FIRST ORDER BY s_price )

OVER ( PARTITION BY s_year ) AS min_price_max_revenue

FROM t1

;


S_YEAR S_QUARTER S_REVENUE S_PRICE MIN_PRICE_MAX_REVENUE

------ --------- --------- ------- ---------------------

2010 1/4 100 10 200

2010 2/4 200 10 200

2010 4/4 200 10 200

2010 3/4 300 20 200

2011 3/4 250 10 250

2011 4/4 200 10 250

2011 1/4 100 20 250

2011 2/4 220 20 250


8 rows selected.

16575 (SQLSTATE: 42000): window frame is not allowed here

Cause

RANK() 등의 window function 은 window frame 을 기술할 수 없다.


gSQL> SELECT s_year

, s_quarter

, s_revenue

, RANK() OVER ( PARTITION BY s_year ORDER BY s_revenue DESC

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING ) AS rank_revenue

FROM t1

;


ERR-42000(16575): window frame is not allowed here :

, RANK() OVER ( PARTITION BY s_year ORDER BY s_revenue DESC

*

ERROR at line 4:

Action

아래와 같이 window frame 을 제거한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, RANK() OVER ( PARTITION BY s_year ORDER BY s_revenue DESC ) AS rank_revenue

FROM t1

;


S_YEAR S_QUARTER S_REVENUE RANK_REVENUE

------ --------- --------- ------------

2010 3/4 300 1

2010 2/4 200 2

2010 4/4 200 2

2010 1/4 100 4

2011 3/4 250 1

2011 2/4 220 2

2011 4/4 200 3

2011 1/4 100 4


8 rows selected.

16576 (SQLSTATE: 42000): argument should be a function of expressions in PARTITION BY

Cause

NTILE() 함수의 인자가 상수가 아니라면 PARTITION BY 의 expression 이어야 한다.


SELECT s_year

, s_quarter

, s_revenue

, NTILE( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_revenue ) AS ntile_value

FROM t1

;


ERR-42000(16576): argument should be a function of expressions in PARTITION BY :

, NTILE( s_revenue ) OVER ( PARTITION BY s_year ORDER BY s_revenue ) AS ntile_value

*

ERROR at line 4:

Action

아래와 같이 양수 또는 PARTITION BY 의 expression 을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, NTILE( 100 ) OVER ( PARTITION BY s_year ORDER BY s_revenue ) AS ntile_value

FROM t1

;


S_YEAR S_QUARTER S_REVENUE NTILE_VALUE

------ --------- --------- -----------

2010 1/4 100 1

2010 2/4 200 26

2010 4/4 200 51

2010 3/4 300 76

2011 1/4 100 1

2011 4/4 200 26

2011 2/4 220 51

2011 3/4 250 76


8 rows selected.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, NTILE( s_year ) OVER ( PARTITION BY s_year ORDER BY s_revenue ) AS ntile_value

FROM t1

;


S_YEAR S_QUARTER S_REVENUE NTILE_VALUE

------ --------- --------- -----------

2010 1/4 100 1

2010 2/4 200 503

2010 4/4 200 1006

2010 3/4 300 1508

2011 1/4 100 1

2011 4/4 200 503

2011 2/4 220 1006

2011 3/4 250 1509


8 rows selected.

16577 (SQLSTATE: 42000): offset argument is out of range

Cause

LEAD() 함수의 offset 값으로 음수를 사용할 수 없다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, LEAD( s_revenue, -1 ) OVER ( ORDER BY s_revenue ) AS lead_value

FROM t1

;


ERR-42000(16577): offset argument is out of range

Action

아래와 같이 양수 offset 값을 사용한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, LEAD( s_revenue, 1 ) OVER ( ORDER BY s_revenue ) AS lead_value

FROM t1

;


S_YEAR S_QUARTER S_REVENUE LEAD_VALUE

------ --------- --------- ----------

2010 1/4 100 100

2011 1/4 100 200

2010 2/4 200 200

2010 4/4 200 200

2011 4/4 200 220

2011 2/4 220 250

2011 3/4 250 300

2010 3/4 300 null


8 rows selected.

16578 (SQLSTATE: 42000): percentile value should be a number between 0 and 1

Cause

PERCENTILE_DISC() 함수의 인자값이 잘못되었다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, PERCENTILE_DISC( 10 ) WITHIN GROUP ( ORDER BY s_revenue ) OVER ( PARTITION BY s_year ) AS pertile_value

FROM t1

;


ERR-42000(16578): percentile value should be a number between 0 and 1

Action

PERCENTILE_DISC() 함수의 값은 비율을 의미하는 0 ~ 1 사이의 값이어야 한다.


gSQL>


SELECT s_year

, s_quarter

, s_revenue

, PERCENTILE_DISC( 0.5 ) WITHIN GROUP ( ORDER BY s_revenue ) OVER ( PARTITION BY s_year ) AS pertile_value

FROM t1

;


S_YEAR S_QUARTER S_REVENUE PERTILE_VALUE

------ --------- --------- -------------

2010 1/4 100 200

2010 2/4 200 200

2010 4/4 200 200

2010 3/4 300 200

2011 1/4 100 200

2011 4/4 200 200

2011 2/4 220 200

2011 3/4 250 200


8 rows selected.

16579 (SQLSTATE: 42000): INDEX COALESCE only supports b-tree type index

Cause

Global temporary index에 INDEX COALESCE 구문을 사용할 때 발생하는 에러이다.


gSQL> CREATE GLOBAL TEMPORARY TABLE t1 ( c1 INTEGER );


Table created.


gSQL> CREATE INDEX t1_idx ON t1 ( c1 );


Index created.


gSQL> COMMIT;


Commit complete.


gSQL> ALTER INDEX t1_idx COALESCE;


ERR-42000(16579): INDEX COALESCE only supports b-tree type index :

ALTER INDEX t1_idx COALESCE

*

ERROR at line 1:

Action

Global temporary index 는 COALESCE 구문을 지원하지 않는다.

16580 (SQLSTATE: 42000): table '%s' is not online on cluster domain '%s'

Cause

해당 cluster member 에서 이미 offline 상태이다.


gSQL> ALTER TABLE t1 SET OFFLINE AT g2n2;


ERR-42000(16580): table 'T1' is not online on cluster domain 'G2N2'

Action

다음과 같이 table 의 offline 여부를 확인한다.


gSQL> SELECT member_name, member_offline FROM user_tab_place WHERE table_name = 'T1';


MEMBER_NAME MEMBER_OFFLINE

----------- --------------

G1N1 FALSE

G1N2 FALSE

G2N1 FALSE

G2N2 TRUE

G3N1 FALSE

G3N2 FALSE


6 rows selected.

16581 (SQLSTATE: 42000): cannot find global transaction logfile

Cause

ALTER DATABASE RENAME GLOBAL TRANSACTION LOGFILE 구문을 수행할 때 지정한 source TCL (Transacion Commit Log) 로그 파일이 현재 사용 중인 로그 파일이 아니다.


gSQL> ALTER DATABASE RENAME GLOBAL TRANSACTION LOGFILE 'commit_2.log' TO 'new_commit_2.log';


ERR-42000(16581): cannot find global transaction logfile :

ALTER DATABASE RENAME GLOBAL TRANSACTION LOGFILE 'commit_2.log' TO 'new_commit_2.log'

*

ERROR at line 1:

Action

변경하려는 로그 파일이 현재 사용 중인 TCL 로그 파일인지 확인한 후, 올바른 로그 파일을 지정하여 다시 수행한다.


다음은 현재 사용 중인 TCL 로그 파일을 확인하는 방법이다.


gSQL> SELECT group_id, file_name, group_state FROM v$tcl_logfile;


GROUP_ID FILE_NAME GROUP_STATE

-------- ---------------------- -----------

0 /test/wal/commit_0.log CURRENT

1 /test/wal/commit_1.log UNUSED


2 rows selected.

16582 (SQLSTATE: 42000): there are active cluster members in the target cluster group '%s'

Cause

active cluster member 가 존재한다.


gSQL> DROP CLUSTER GROUP g4;


ERR-42000(16582): there are active cluster members in the target cluster group 'G4'

Action

active cluster member 가 존재하는 cluster group 은 DROP 할 수 없다.

16583 (SQLSTATE: 42000): cannot transactional service: %s

Cause

login 시 password 변경이 필요하나 password 변경을 위한 transaction service 가 가능한 상태가 아니다.

Action

cluster system 을 서비스 가능한 global open 단계로 변경한다.

16584 (SQLSTATE: 42000): index type '%s' exceeds maximum shard sequence

Cause

ALTER TABLE name MOVE SHARD 구문에서 발생할 수 있으며, shard 이동시 인덱스에 저장된 shard 는 물리적으로 삭제되지 않고 논리적으로 삭제된다.

논리적 삭제는 최대 255 번까지 수행할 수 있으며, 이를 초과하면 오류가 발생한다.


gSQL> ALTER TABLE t1 MOVE SHARD s2 TO CLUSTER GROUP g1;


ERR-42000(16584): index 'T1X' exceeds maximum shard sequence

Action

ALTER INDEX name COALESCE 또는 ALTER INDEX name REBUILD 구문을 수행한 후에 MOVE SHARD 구문을 다시 시도한다.

16585 (SQLSTATE: 42000): cannot drop cluster group that includes a global coordinator

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

16586 (SQLSTATE: 42000): role name '%s' conflicts with another user or role name

Cause

동일한 user 또는 role 이름이 존재한다.


gSQL> CREATE ROLE r1;


ERR-42000(16586): role name 'R1' conflicts with another user or role name :

CREATE ROLE r1

*

ERROR at line 1:

Action

아래와 같이 동일한 이름을 갖는 user 나 role 이 존재하는지 확인한다.


gSQL>


SELECT role_name, 'ROLE' AS auth FROM dba_roles WHERE role_name = 'R1'

UNION ALL

SELECT username, 'USER' AS auth FROM dba_users WHERE username = 'R1';


ROLE_NAME AUTH

--------- ----

R1 ROLE


1 row selected.

16587 (SQLSTATE: 28000): role '%s' does not exists

Cause

해당 role 이 존재하지 않는다.


gSQL> DROP ROLE r1;


ERR-28000(16587): role 'R1' does not exists :

DROP ROLE r1

*

ERROR at line 1:

Action

아래와 같이 해당 role 이 존재하는지 확인한다.


gSQL> SELECT role_name FROM dba_roles WHERE role_name = 'R1';


no rows selected.

16588 (SQLSTATE: 42000): cannot GRANT to a role/public WITH GRANT OPTION

Cause

role 이나 public 에는 WITH GRANT OPTION 으로 권한을 부여할 수 없다.


gSQL> GRANT SELECT ON t1 TO PUBLIC WITH GRANT OPTION;


ERR-42000(16588): cannot GRANT to a role/public WITH GRANT OPTION

Action

아래와 같이 WITH GRANT OPTION 없이 권한을 부여한다.


gSQL> GRANT SELECT ON t1 TO PUBLIC;


Grant succeeded.

16589 (SQLSTATE: 0P000): circular role grant detected

Cause

role 부여 시 cycle 이 발생하였다.


gSQL> GRANT role1 TO role2;


Grant succeeded.


gSQL> GRANT role2 TO role1;


ERR-0P000(16589): circular role grant detected

Action

role 부여 시 cycle 이 발생하지 않도록 한다.

16590 (SQLSTATE: 42000): duplicate role name in role granted/revoked list

Cause

중복된 role name 이 사용되었다.


gSQL> GRANT role1, role2, role1 TO u1;


ERR-42000(16590): duplicate role name in role granted/revoked list :

GRANT role1, role2, role1 TO u1

*

ERROR at line 1:

Action

아래와 같이 중복된 role name 을 제거한다.


gSQL> GRANT role1, role2 TO u1;


Grant succeeded.

16591 (SQLSTATE: 28000): cannot GRANT/REVOKE built-in role(SYSDBA, ADMIN) to/from authorization

Cause

sysdba 와 admin ROLE 은 다른 user 나 role 에게 부여할 수 없다.


gSQL> GRANT sysdba TO role1;


ERR-28000(16591): cannot GRANT/REVOKE built-in role(SYSDBA, ADMIN) to/from authorization :

GRANT sysdba TO role1

*

ERROR at line 1:

Action

sysdba 와 admin ROLE 은 다른 user 나 role 에게 부여하거나 철회할 수 없다.

16592 (SQLSTATE: 0P000): invalid role specification

Cause

존재하지 않는 role 이다.


gSQL> SET ROLE invalid;


ERR-0P000(16592): invalid role specification

Action

설정 가능한 role name 을 사용한다.


gSQL> SET ROLE dba;


Session set.

16593 (SQLSTATE: 25001): invalid transaction state: active transaction exists

Cause

transaction 이 진행 중인 상태에서 SET ROLE 을 수행할 수 없다.


gSQL> INSERT INTO t1 VALUES ( 1 );


1 row created.


gSQL> SET ROLE role1;


ERR-25001(16593): invalid transaction state: active transaction exists

Action

transaction 을 종료한 후 SET ROLE 을 수행한다.


gSQL> COMMIT;


Commit complete.


gSQL> SET ROLE role1;


Session set.

16594 (SQLSTATE: 42000): role '%s' not granted or need ADMIN OPTION

Cause

ADMIN OPTION 이 없는 role 은 다른 사용자에게 role 을 부여할 수 없다.


gSQL> GRANT role1 TO u2;


ERR-42000(16594): role 'ROLE1' not granted or need ADMIN OPTION

Action

아래와 같이 자신에게 부여된 role 정보를 확인할 수 있으며, ADMIN OPTION 이 존재하는 role만 다른 사용자에게 부여할 수 있다.


gSQL> SELECT username, granted_role, admin_option FROM user_role_privs;


USERNAME GRANTED_ROLE ADMIN_OPTION

-------- ------------ ------------

U1 ROLE1 NO

U1 ROLE2 YES


2 rows selected.


gSQL> GRANT role2 TO u2;


Grant succeeded.

16595 (SQLSTATE: 42000): role '%s' not granted to '%s'

Cause

사용자가 부여하지 않은 role 은 철회할 수 없다.


gSQL> REVOKE role1 FROM u2;


ERR-42000(16595): role 'ROLE1' not granted to 'U2'

Action

아래와 같이 사용자가 부여한 role 을 철회할 수 있다.


gSQL> REVOKE role2 FROM u2;


Revoke succeeded.

16596 (SQLSTATE: 42000): transactional service temporarily unavailable 

Cause

ALTER SYSTEM JOIN DATABASE 가 진행 중인 상태에서 참여 중인 노드에 접속하여 transaction 서비스를 요청할 경우에 발생한다.

Action

ALTER SYSTEM JOIN DATABASE 가 완료된 후에 다시 시도한다.

16597 (SQLSTATE: 42000): too many grouping sets present (maximum %ld)

Cause

ROLLUP 등 grouping set 에 나열할 수 있는 column 개수는 MAX_GROUPING_SETS_COUNT 설정값보다 작아야 한다.


gSQL>

SELECT SUM( COUNT(*) )

FROM t1

GROUP BY ROLLUP( c1, c2, c3, c4, c5, c6, c7, c8, c9, c10,

c11, c12, c13, c14, c15, c16, c17, c18, c19, c20,

c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,

c31, c32, c33, c34, c35, c36, c37, c38, c39, c40,

c41, c42, c43, c44, c45, c46, c47, c48, c49, c50,

c1, c2, c3, c4, c5, c6, c7, c8, c9, c10,

c11, c12, c13, c14, c15, c16, c17, c18, c19, c20,

c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,

...

...

...

c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,

c31, c32, c33, c34, c35, c36, c37, c38, c39, c40,

c41, c42, c43, c44, c45, c46, c47, c48, c49, c50, -- 4000

c1, c2, c3, c4, c5, c6, c7, c8, c9, c10,

c11, c12, c13, c14, c15, c16, c17, c18, c19, c20,

c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,

c31, c32, c33, c34, c35, c36, c37, c38, c39, c40,

c41, c42, c43, c44, c45, c46, c47, c48, c49, c50,

c1, c2, c3, c4, c5, c6, c7, c8, c9, c10,

c11, c12, c13, c14, c15, c16, c17, c18, c19, c20,

c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,

c31, c32, c33, c34, c35, c36, c37, c38, c39, c40,

c41, c42, c43, c44, c45, c46 );


ERR-42000(16597): too many grouping sets present (maximum 4096)

Action

MAX_GROUPING_SETS_COUNT 프로퍼티 값을 조정한 후 다시 시도한다.

16598 (SQLSTATE: 42000): GROUPING function requires GROUP BY clause

Cause

GROUPING 함수는 GROUP BY 와 함께 사용해야 한다.


gSQL>


SELECT GROUPING( c1 )

AS RESULT

FROM t1;


ERR-42000(16598): GROUPING function requires GROUP BY clause :

SELECT GROUPING( c1 )

*

ERROR at line 1:

Action

gSQL>


SELECT c1,

c2,

c3,

COUNT(*),

GROUPING( c1, c2, c3 )

FROM t1

GROUP BY ROLLUP(c1, c2, c3);


C1 C2 C3 COUNT(*) GROUPING( C1, C2, C3 )

---- ---- ---- -------- ----------------------

1 1 1 2 0

1 1 2 1 0

1 2 2 1 0

2 2 2 1 0

2 2 null 1 1

1 2 null 1 1

1 1 null 3 1

1 null null 4 3

2 null null 1 3

null null null 5 7


10 rows selected.

16599 (SQLSTATE: 42000): not a GROUP BY expression

Cause

GROUPING() 함수의 인자가 GROUP BY 에 사용된 expression 이 아니다.


gSQL>


SELECT c1,

COUNT(*)

FROM t1

HAVING GROUPING(c1) = 0;


ERR-42000(16599): not a GROUP BY expression :

HAVING GROUPING(c1) = 0

*

ERROR at line 4:

Action

아래와 같이 GROUP BY 에 사용된 컬럼을 GROUPING() 함수의 인자로 사용해야 한다.


gSQL>


SELECT c1,

COUNT(*)

FROM t1

GROUP BY c1

HAVING GROUPING(c1) = 0;


C1 COUNT(*)

-- --------

1 4

2 1


2 rows selected.

16600 (SQLSTATE: 42000): The number of columns in a column group must be in the range (%d ~ %d)

Cause

다음과 같이 COLUMN GROUPS에 나열된 column의 개수가 2 ~ 4 개 범위를 벗어났다.


gSQL> ANALYZE TABLE t1 COMPUTE STATISTICS FOR COLUMN GROUPS ( c1, c2, c3, c4, c5 );

ERR-42000(16600): The number of columns in a column group must be in the range(2 ~ 4) :

Action

Column group을 나열할 때 2 ~ 4 개의 column을 사용한다.


gSQL> ANALYZE TABLE t1 COMPUTE STATISTICS FOR COLUMN GROUPS ( c1, c2 );

Table analyzed.

16601 (SQLSTATE: 42000): specified column group statistics already exists

Cause

이미 정의된 column group 통계 정보가 존재한다.


gSQL> ANALYZE TABLE t1 COMPUTE STATISTICS FOR COLUMN GROUPS ( c1, c2 );

ERR-42000(16601): specified column group statistics already exists

Action

이미 존재하는 column group 인지 확인하고


gSQL> SELECT column_groups FROM USER_STAT_COLUMN_GROUP WHERE TABLE_NAME = 'T1';

COLUMN_GROUPS

-------------

( C1, C2 )


재구축하고자 할 경우 다음과 같이 삭제하고 다시 구축한다.


gSQL> ANALYZE TABLE t1 DELETE STATISTICS FOR COLUMN GROUPS ( c1, c2 );

16602 (SQLSTATE: 42000): specified column group statistics not exists

Cause

Column group 통계 정보가 존재하지 않는다.


gSQL> ANALYZE TABLE t1 DELETE STATISTICS FOR COLUMN GROUPS ( c1, c2 );

ERR-42000(16602): specified column group statistics not exists

Action

다음과 같이 존재하는 column group 인지 확인한다.


gSQL> SELECT column_groups FROM USER_STAT_COLUMN_GROUP WHERE TABLE_NAME = 'T1';

no rows selected.

16603 (SQLSTATE: 42000): system session cannot be canceled

Cause

System session이나 cluster session에는 ALTER SYSTEM CANCEL SESSION 구문이 적용되지 않는다.

Action

Session id와 serial number가 정확한지 확인한다.

16604 (SQLSTATE: 42000): pivot operations are not supported on lateral views

Cause

Lateral view에 대한 pivot은 지원하지 않는다.


gSQL> SELECT * FROM t1, LATERAL( SELECT c1 FROM dual) PIVOT( COUNT(*) FOR c1 IN ( 1 ) );

ERR-42000(16604): pivot operations are not supported on lateral views :

SELECT * FROM t1, LATERAL( SELECT c1 FROM dual) PIVOT( COUNT(*) FOR c1 IN ( 1 ) )

*

ERROR at line 1:

Action

Lateral view를 대상으로 하는 pivot 구문은 기술하지 않는다.

16605 (SQLSTATE: 42000): unpivot operations are not supported on lateral views

Cause

Lateral view에 대한 unpivot은 지원하지 않는다.


gSQL> SELECT * FROM t1, LATERAL( SELECT c1 FROM dual) UNPIVOT( col_val FOR col_name IN ( c1 ) );

ERR-42000(16605): unpivot operations are not supported on lateral views :

SELECT * FROM t1, LATERAL( SELECT c1 FROM dual) UNPIVOT( col_val FOR col_name IN ( c1 ) )

*

ERROR at line 1:

Action

Lateral view를 대상으로 하는 unpivot 구문은 기술하지 않는다

16606 (SQLSTATE: 42000): the number of elements in pivot values mismatch the pivot columns

Cause

Pivot 구문에 기술된 pivot column의 개수와 pivot value의 개수가 다르다.


gSQL> SELECT * FROM t1 PIVOT( COUNT(*) FOR ( c1, c2 ) IN ( ( 1, 2 ), ( 3 ) ) );

ERR-42000(16606): the number of elements in pivot values mismatch the pivot columns :

SELECT * FROM t1 PIVOT( COUNT(*) FOR ( c1, c2 ) IN ( ( 1, 2 ), ( 3 ) ) )

*

ERROR at line 1:

Action

Pivot 구문에 기술된 pivot column의 개수와 pivot value의 개수가 일치하는지 확인한다.

16607 (SQLSTATE: 42000): the number of elements in unpivot values mismatch the unpivot columns

Cause

Unpivot 구문에 기술된 unpivot column의 개수와 unpivot value의 개수가 다르다.


gSQL> SELECT * FROM t1 UNPIVOT( col_val FOR ( col1, col2 ) IN ( ( c1, c2 ), ( c3 ) ) );

ERR-42000(16607): the number of elements in unpivot values mismatch the unpivot columns :

SELECT * FROM t1 UNPIVOT( col_val FOR ( col1, col2 ) IN ( ( c1, c2 ), ( c3 ) ) )

*

ERROR at line 1:

Action

Unpivot 구문에 기술된 unpivot column의 개수와 unpivot value의 개수가 일치하는지 확인한다.

16608 (SQLSTATE: 42000): non-constant expression is not allowed for pivot|unpivot values

Cause

Pivot value 또는 unpivot value는 상수 expression만 허용한다.


gSQL> SELECT * FROM t1 UNPIVOT( col_ FOR c1 IN ( c1 AS RANDOM( 1, 1 ) ) );

ERR-42000(16608): non-constant expression is not allowed for pivot|unpivot values :

SELECT * FROM t1 UNPIVOT( col_ FOR c1 IN ( c1 AS RANDOM( 1, 1 ) ) )

*

ERROR at line 1:


gSQL> SELECT * FROM t1 UNPIVOT( col_ FOR c1 IN ( c1 AS CLOCK_DATE() ) );

ERR-42000(16608): non-constant expression is not allowed for pivot|unpivot values :

SELECT * FROM t1 UNPIVOT( col_ FOR c1 IN ( c1 AS CLOCK_DATE() ) )

*

ERROR at line 1:

Action

상수가 아닌 expression을 pivot value 또는 unpivot value로 사용하지 않는다.

16609 (SQLSTATE: 42000): lacks privilege (EXECUTE ON LIBRARY \"%s\".\"%s\")

Cause

EXECUTE ON LIBRARY 권한이 없다.


gSQL>


CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER ) RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY u2.ext_lib1 NAME "sample"

PARAMETERS ( p1 INT,

RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) : ERR-42000(16609): lacks privilege (EXECUTE ON LIBRARY "U2"."EXT_LIB1")

Function created.

Action

아래와 같이 소유자가 권한을 부여한 후 실행한다.


gSQL> GRANT EXECUTE ON LIBRARY u2.ext_lib1 TO u1;


Grant succeeded.


gSQL> \connect u1 u1


gSQL>


CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER ) RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY u2.ext_lib1 NAME "sample"

PARAMETERS ( p1 INT,

RETURN INT );

/


Function created.

16610 (SQLSTATE: 42000): library does not exist

Cause

해당 library 가 존재하지 않는다.


gSQL>


CREATE OR REPLACE FUNCTION func1 RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY invalid NAME "sample"

PARAMETERS( RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (3:9): ERR-42000(16610): library does not exist

Function created.

Action

아래와 같이 존재하는 library 이름을 사용한다.


gSQL> SELECT library_name FROM user_libraries;


LIBRARY_NAME

------------

LIB1


1 row selected.


gSQL>


CREATE OR REPLACE FUNCTION func1 RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib1 NAME "sample"

PARAMETERS( RETURN INT );

/


Function created.

16611 (SQLSTATE: 42000): the number of pieces is out of range( 1 to %d )

Cause

다음 구문을 수행할 때 지정한 PIECE 절의 값이 최대값 (1024)보다 크다.


gSQL> ALTER DATABASE BACKUP INCREMENTAL LEVEL 0 PIECE 1025;


ERR-42000(16611): the number of pieces is out of range( 1 to 1024 ) :

ALTER DATABASE BACKUP INCREMENTAL LEVEL 0 PIECE 1025

*

ERROR at line 1:

Action

PIECE 값을 1024 이하로 변경한 후에 다시 수행한다.

16612 (SQLSTATE: 42000): invalid backup format ( %s )

Cause

다음 구문을 수행할 때 지정한 FORMAT 절 문자열의 형식이 올바르지 않다.


gSQL> ALTER DATABASE BACKUP INCREMENTAL LEVEL 0 FORMAT 'backup_%p%z';


ERR-42000(16612): invalid backup format ( backup_%p%z ) :

ALTER DATABASE BACKUP INCREMENTAL LEVEL 0 FORMAT 'backup_%p%z'

*

ERROR at line 1:

Action

올바른 FORMAT 절의 형식을 확인한 후 다시 수행한다.

자세한 내용은 ALTER DATABASE BACKUP INCREMENTAL 구문의 FORMAT 절 설명을 참고한다.

16613 (SQLSTATE: 42000): cannot backup; tablespace(%s) is temporary

Cause

Temporary tablespace 에 대해 ALTER TABLESPACE name BACKUP 구문을 수행하였다.


gSQL> ALTER TABLESPACE mem_temp_tbs BACKUP INCREMENTAL LEVEL 0;


ERR-42000(16613): cannot backup; tablespace(MEM_TEMP_TBS) is temporary :

ALTER TABLESPACE mem_temp_tbs BACKUP INCREMENTAL LEVEL 0

*

ERROR at line 1:

Action

별도의 조치는 필요없다.

16614 (SQLSTATE: 42000): unreachable WHEN clause specified after unconditional WHEN clause

Cause

• <search condition> 이 없는 <merge when matched clause> 가 기술된 경우, 더 이상의 <merge when matched clause> 를 기술할 수 없다.


gSQL>


MERGE INTO t1

USING t2

ON t1.c1 = t2.c1

WHEN MATCHED THEN UPDATE SET ( c1, c2 ) = ( t2.c1, t2.c2 )

WHEN MATCHED AND t1.c1 = 100 THEN DO NOTHING;


ERR-42000(16614): unreachable WHEN clause specified after unconditional WHEN clause :

WHEN MATCHED AND t1.c1 = 100 THEN DO NOTHING

*

ERROR at line 5:


• <search condition> 이 없는 <merge when not matched clause> 가 기술된 경우, 더 이상의 <merge when not matched clause> 를 기술할 수 없다.


gSQL>


MERGE INTO t1

USING t2

ON t1.c1 = t2.c1

WHEN NOT MATCHED THEN INSERT VALUES ( c1, c2 )

WHEN NOT MATCHED AND c1 = 4 THEN INSERT DEFAULT VALUES;


ERR-42000(16614): unreachable WHEN clause specified after unconditional WHEN clause :

WHEN NOT MATCHED AND c1 = 4 THEN INSERT DEFAULT VALUES

*

ERROR at line 5:

Action

• <search condition> 이 없는 <merge when matched clause> 는 <merge when matched clause> 마지막 순서로 기술한다.


gSQL>


MERGE INTO t1

USING t2

ON t1.c1 = t2.c1

WHEN MATCHED AND t1.c1 = 100 THEN DO NOTHING

WHEN MATCHED THEN UPDATE SET ( c1, c2 ) = ( t2.c1, t2.c2 );

3 rows merged.


• <search condition> 이 없는 <merge when not matched clause> 는 <merge when not matched clause> 마지막 순서로 기술한다.


gSQL>


MERGE INTO t1

USING t2

ON t1.c1 = t2.c1

WHEN NOT MATCHED AND c1 = 4 THEN INSERT DEFAULT VALUES

WHEN NOT MATCHED THEN INSERT VALUES ( c1, c2 );

3 rows merged.

16615 (SQLSTATE: 01000): Warning: failed to make sequences online

Cause

sequence 객체들을 online 상태로 변경하는데 실패할 때 발생하는 경고이다.

일반적인 상황에서는 발생하지 않고 리소스가 부족한 한계 상황에서 발생할 수 있다.

Action

다음과 같이 ALTER DATABASE SYNCHRONIZE 구문으로 sequence 객체들을 online 으로 만들 수 있다.


gSQL> ALTER DATABASE SYNCHRONIZE SEQUENCE;


Database altered.

16616 (SQLSTATE: 01000): Warning: failed to make tables online

Cause

table 객체들을 online 상태로 변경하는 데 실패할 때 발생하는 경고이다.

일반적인 상황에서는 발생하지 않고 리소스가 부족한 한계 상황에서 발생할 수 있다.

Action

다음과 같이 ALTER DATABASE SYNCHRONIZE 구문으로 table 객체들을 online 으로 만들 수 있다.


gSQL> ALTER DATABASE SYNCHRONIZE TABLE;


Database altered.

16617 (SQLSTATE: 01000): Warning: failed to drop offline segments

Cause

오프라인된 세그먼트들의 삭제에 실패할 때 발생하는 경고이다.

일반적인 상황에서는 발생하지 않고 리소스가 부족한 한계 상황에서 발생할 수 있다.

Action

다음과 같이 ALTER DATABASE DROP OFFLINE SEGMENTS 구문으로 오프라인된 세그먼트들을 삭제할 수 있다.


gSQL> ALTER DATABASE DROP OFFLINE SEGMENTS;


Database altered.

16618 (SQLSTATE:01000): of the total '%d' members, it was executed only on '%d' members

Cause

inactive 멤버가 있어도 수행 가능한 구문에서 발생할 수 있는 경고 메시지이다.

대상으로 지정된 멤버들 중 일부가 inactive 상태였음을 알려준다.


다음은 g2 그룹에 속한 두 멤버 중 한 멤버에서만 구문이 수행된 예이다.


gSQL> ALTER DATABASE CLEAR AUDIT TRAIL AT g2;


ERR-01000(16618): of the total '2' members, it was executed only on '1' members

Database altered.

Action

inactive 멤버를 active 상태로 전환한 후, 해당 멤버에서 다시 시도한다.

16619 (SQLSTATE: 42000): AT DOMAIN can be specified in the GLOBAL OPEN phase of
the cluster database

Cause

GLOBAL OPEN 미만 단계에서는 AT domain 을 지정할 수 없다.


다음은 LOCAL OPEN 단계에서 AT domain 절을 지정하는 예이다.


gSQL> SELECT status FROM x$instance@local;


STATUS

----------

LOCAL OPEN


1 row selected.


gSQL> ALTER SYSTEM CHECKPOINT AT g1n1;


ERR-42000(16619): AT DOMAIN can be specified in the GLOBAL OPEN phase of

the cluster database :

ALTER SYSTEM CHECKPOINT AT g1n1

*

ERROR at line 1:

Action

로컬에서 수행하는 경우, AT domain을 제거한 후 다시 시도한다.

원격으로 수행하는 경우, cluster 에 참여한 후 다시 시도한다.

16620 (SQLSTATE: 42000): The domain option cannot be specified together with
ONLINE, TABLESPACE, or index attributes options

Cause

ALTER INDEX name REBUILD 시 ONLINE, TABLESPACE 또는 index 속성과 함께 AT domain 절을 사용하는 경우에 발생한다.


gSQL> CREATE TABLE t1 ( i1 INTEGER );


Table created.


gSQL> CREATE INDEX t1x ON t1( i1 );


Index created.


gSQL> ALTER INDEX t1x REBUILD ONLINE AT g2;


ERR-42000(16620): The domain option cannot be specified together with

ONLINE, TABLESPACE, or index attributes options :

ALTER INDEX t1x REBUILD ONLINE AT g2

*

ERROR at line 1:

Action

AT domain 절을 제거한 후에 다시 시도한다.

16621 (SQLSTATE: 42000): a transaction can insert into only one table in append manner

Cause

한 트랜잭션에서 두 개 이상의 테이블에 append insert 방식으로 데이터를 추가하려고 할 때 발생하는 에러 메시지이다.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> INSERT /*+ APPEND */ INTO T2 VALUES ( 1 );


ERR-42000(16621): a transaction can insert into only one table in append manner

Action

두 개 이상의 테이블에 append insert 방식으로 데이터를 추가하려면, 각 테이블마다 별도의 트랜잭션으로 수행해야 한다.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> COMMIT;


Commit complete.


gSQL> INSERT /*+ APPEND */ INTO T2 VALUES ( 1 );


1 row created.


gSQL> COMMIT;


Commit complete.

16622 (SQLSTATE: 42000): append insert attributes mismatch

Cause

한 트랜잭션 내에서 append insert 문을 두 번 이상 수행하면서 이전과 다른 옵션을 사용하였다.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> INSERT /*+ APPEND NOLOGGING */ INTO T1 VALUES ( 2 );


ERR-42000(16622): append insert attributes mismatch

Action

한 트랜잭션에서 append insert 문을 여러 번 수행하는 경우 동일한 옵션을 사용해야 한다.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 2 );


1 row created.

16623 (SQLSTATE: 42000): cannot execute DDL - append inserts unfinished

Cause

append insert 를 수행한 트랜잭션이 완료되기 전에 DDL 문을 수행하였다.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> CREATE TABLE T2 ( I1 INTEGER );


ERR-42000(16623): cannot execute DDL - append inserts unfinished

Action

append insert 를 수행한 트랜잭션을 완료한 후에 DDL 문을 수행한다.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> COMMIT;


Commit complete.


gSQL> CREATE TABLE T2 ( I1 INTEGER );


Table created.

16624 (SQLSTATE: 42000): cannot execute DML - append inserts unfinished

Cause

append insert 를 수행한 트랜잭션이 완료되기 전에 동일한 테이블에 대해 DML을 수행하였다.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> UPDATE T1 SET I1 = 2;


ERR-42000(16624): cannot execute DML - append inserts unfinished

Action

append insert 를 수행한 트랜잭션을 완료한 후에 DML을 수행한다.


gSQL> INSERT /*+ APPEND */ INTO T1 VALUES ( 1 );


1 row created.


gSQL> COMMIT;


Commit complete.


gSQL> UPDATE T1 SET I1 = 2;


1 row updated.

16625 (SQLSTATE: 42000): segment is unusable in the member with the latest data of table '%s.%s'

Cause

다음 구문을 수행할 때 UNUSABLE 상태인 replica 의 SCN 이 다른 멤버의 OFFLINE replica 의 SCN 보다 크다.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


ERR-42000(16625): segment is unusable in the member with the latest data of table 'PUBLIC.T1'

Action

UNUSABLE 상태의 replica 는 더 이상 사용할 수 없기 때문에 ALTER TABLE name DROP UNUSABLE SEGMENTS 구문을 사용하여 삭제한 후에 다시 수행한다.


gSQL> ALTER TABLE t1 DROP UNUSABLE SEGMENTS;


Table altered.


gSQL> ALTER TABLE t1 SYNCHRONIZE;


Table altered.


※ 주의: 테이블은 OFFLINE 상태의 replica 가 가진 과거 시점의 데이터를 기준으로 동기화 된다.

16626 (SQLSTATE: 42000): of the total '%d' tables in the database, failed to modify the offline member map in '%d' tables

Cause

ALTER DATABASE OFFLINE INACTIVE CLUSTER MEMBERS 구문은 active 멤버들이 유지하고 있는 table member map 에서 inactive 멤버를 OFFLINE 상태로 설정하는 구문이다.

이 구문은 모든 테이블에 대해 순차적으로 수행되며, OFFLINE 설정에 실패한 테이블이 있는 경우에 이 경고 메시지가 발생한다.

OFFLINE 설정 실패는 대부분 동시성 제어 과정에서 필요한 lock을 획득하지 못한 경우에 발생한다.

Action

DDL_LOCK_TIMEOUT 값을 증가시킨 후에 다시 수행한다.

16627 (SQLSTATE: 42000): Input to JSON generation function has unsupported data type

Cause

JSON string constructor 함수의 인자로 사용할 수 없는 데이터 타입이 사용되었다.


CREATE TABLE test ( col INTEGER );


gSQL> SELECT JSON_ARRAY( test.rowid )

FROM test;


ERR-42000(16627): Input to JSON generation function has unsupported data type :

SELECT JSON_ARRAY( test.rowid )

*

ERROR at line 1:

Action

사용할 수 있는 데이터 타입으로 변환한다.


gSQL> SELECT JSON_ARRAY( CAST( test.rowid AS VARCHAR(32) ) )

FROM test;


JSON_ARRAY( CAST( TEST.ROWID AS VARCHAR(32) ) )

-----------------------------------------------

["AAAAAAAAYeoAACAAAEAkAAA"]


1 row selected.

16628 (SQLSTATE: 42000): unusable replicas in table '%s' must be offline

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16629 (SQLSTATE: 42000): of the total '%d' tables, '%d' tables failed to drop unusable segments

Cause

Unusable segment를 가진 테이블들 중 일부에서 해당 segment의 삭제에 실패했을 때 발생하는 오류이다.

Action

실패 원인은 다양할 수 있으므로, 정확한 원인은 system.trc 로그를 통해 확인해야 한다.

문제를 해결한 후, 다시 시도한다.

16630 (SQLSTATE: 42000): global transactions cannot perform append inserts

Cause

XA 트랜잭션에서는 데이터 추가를 위해 APPEND INSERT 방식을 사용할 수 없다.

Action

XA 트랜잭션에서는 CONVENTIONAL INSERT를 사용하여 데이터를 추가한다.

16631 (SQLSTATE: 42000): of the total '%d' tables, '%d' tables failed to offline

Cause

테이블스페이스와 관련된 테이블들 중 일부의 offline 상태 전환에 실패했을 때 발생하는 에러이다.

Action

실패 원인은 다양할 수 있으므로, 정확한 원인은 system.trc 로그를 통해 확인해야 한다.

문제를 해결한 후, 다시 시도한다.

16632 (SQLSTATE: 42000): tables related to tablespace '%s' must be offline

Cause

테이블스페이스와 관련된 테이블들 중 일부의 offline 상태 전환에 실패했을 때 발생하는 에러이다.


gSQL> ALTER TABLESPACE space1 OFFLINE;


ERR-42000(16632): tables related to tablespace 'SPACE1' must be offline

Action

ALTER TABLESPACE .. OFFLINE TABLES 구문으로 관련 테이블들을 OFFLINE 상태로 변경한 후에 다시 수행한다.


gSQL> ALTER TABLESAPCE space1 OFFLINE TABLES;


Tablespace altered.


gSQL> ALTER TABLESPACE space1 OFFLINE;


Tablespace altered.

16633 (SQLSTATE: 42000): all tablespaces related to table '%s' must be online

Cause

OFFLINE 상태인 테이블스페이스와 관련된 테이블들에 대해 다음 구문들을 수행할 경우 발생하는 에러이다.

Action

OFFLINE 상태의 테이블스페이스를 ONLINE 으로 변경한 후에 다시 수행한다.

테이블스페이스를 ONLINE 으로 변경하는 방법은 ALTER TABLESPACE name [ONLINE|OFFLINE] 을 참조한다.

16634 (SQLSTATE: 42000): referenced table '%s' does not have a primary key

Cause

Parent 테이블에 primary key가 존재하지 않는다


gSQL> CREATE TABLE parent ( pk INTEGER );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent );

ERR-42000(16634): referenced table '%s' does not have a primary key :

CREATE TABLE child ( fk INTEGER REFERENCES parent )

*

ERROR at line 1:

Action

Parent 테이블에 primary key 제약 조건을 추가한 후에 foreign key를 생성한다.


gSQL> ALTER TABLE parent ADD CONSTRAINT parent_pk PRIMARY KEY(pk);

Table altered.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent );

Table created.

16635 (SQLSTATE: 42000): number of referencing columns must match referenced columns

Cause

Foreign key의 column 개수와 primary key의 column 개수가 서로 다르다.


gSQL>

CREATE TABLE parent ( c1 INTEGER,

c2 INTEGER,

CONSTRAINT parent_pk PRIMARY KEY (c1, c2) );

Table created.


gSQL> CREATE TABLE child ( c1 INTEGER REFERENCES parent );

ERR-42000(16635): number of referencing columns must match referenced columns :

CREATE TABLE child ( c1 INTEGER REFERENCES parent )

*

ERROR at line 1:

Action

다음과 같이 primary의 column 개수와 동일한 수의 foreign key 를 생성한다.


gSQL>

CREATE TABLE child ( c1 INTEGER,

c2 INTEGER,

FOREIGN KEY (c1, c2) REFERENCES parent );

Table created.

16636 (SQLSTATE: 42000): column type incompatible with referenced column type

Cause

Primary key와 foreign key의 data type이 호환되지 않는다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY );

Table created.


gSQL> CREATE TABLE child ( fk VARCHAR(10) REFERENCES parent(pk) );

ERR-42000(16636): column type incompatible with referenced column type :

CREATE TABLE child ( fk VARCHAR(10) REFERENCES parent(pk) )

*

ERROR at line 1:

Action

Foreign key의 data type을 primary key의 data type과 일치시킨다.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

Table created.

16637 (SQLSTATE: 42000): no matching unique or primary key for this column list

Cause

참조하는 column에 해당하는 primary key 또는 unique key 가 존재하지 않는다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY, c1 INTEGER );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(c1) );

ERR-42000(16637): no matching unique or primary key for this column list :

CREATE TABLE child ( fk INTEGER REFERENCES parent(c1) )

*

ERROR at line 1:

Action

Primary key 또는 unique key 에 해당하는 column을 참조한다.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

Table created.

16638 (SQLSTATE: 23000): referential constraint "%s"."%s" violated : parent keys not found

Cause

FOREIGN KEY 제약 조건이 설정된 column의 값이 참조 대상인 PRIMARY KEY 또는 UNIQUE 제약 조건이 설정된 column에 존재하지 않을 경우에 발생하는 에러이다.


다음과 같은 경우에 이 에러가 발생할 수 있다.

  • Child 테이블에서 참조 중인 parent 테이블의 값을 삭제한 경우

  • Parent table에 존재하지 않는 값을 child table에 삽입한 경우

Action

Parent table의 레코드를 삭제할 경우, 해당 레코드가 child table에서 참조되고 있는지 확인한다.

Child table에 레코드를 삽입할 경우, 참조 대상인 값이 parent table에 존재하는지 확인한다.

FOREIGN KEY constraint에 대한 자세한 내용은 FOREIGN KEY 제약 조건을 참조한다.

16639 (SQLSTATE: 42000): attempt to reference non-base table '%s' in referential integrity constraint

Cause

Global temporary table 을 FOREIGN KEY 로 참조할 수 없다.


gSQL> CREATE GLOBAL TEMPORARY TABLE parent ( pk INTEGER PRIMARY KEY );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

ERR-42000(16639): attempt to reference non-base table '%s' in referential integrity constraint :

CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) )

*

ERROR at line 1:

Action

다음과 같이 base table 만 FOREIGN KEY 로 참조할 수 있다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

Table created.

16640 (SQLSTATE: 42000): attempt to create referential integrity constraint on non-base table

Cause

Global temporary table 에 FOREIGN KEY 를 생성할 수 없다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY );

Table created.


gSQL> CREATE GLOBAL TEMPORARY TABLE child ( fk INTEGER );

Table created.


gSQL> ALTER TABLE child ADD CONSTRAINT child_fk FOREIGN KEY(fk) REFERENCES parent(pk);

ERR-42000(16640): attempt to create referential integrity constraint on non-base table

Action

FOREIGN KEY 는 base table 에서만 생성할 수 있다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER );

Table created.


gSQL> ALTER TABLE child ADD CONSTRAINT child_fk FOREIGN KEY(fk) REFERENCES parent(pk);

Table altered.

16641 (SQLSTATE: 42000): referenced unique constraint shall not be deferrable

Cause

DEFERRABLE 제약 조건을 FOREIGN KEY 로 참조할 수 없다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY DEFERRABLE );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

ERR-42000(16641): referenced unique constraint shall not be deferrable :

CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) )

*

ERROR at line 1:

Action

다음과 같이 제약 조건을 NOT DEFERRABLE 로 변경한 후에 FOREIGN KEY 를 생성한다.


gSQL> ALTER TABLE parent ALTER CONSTRAINT parent_primary_key NOT DEFERRABLE;

Table altered.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

Table created.

16642 (SQLSTATE: 42000): for referencing generated column, delete rule shall not specify SET NULL or SET DEFAULT

Cause

Generated column 에 대한 FOREIGN KEY 의 delete rule 로 SET NULL 등을 사용할 수 없다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY );

Table created.


gSQL>

CREATE TABLE child ( fk INTEGER GENERATED BY DEFAULT AS IDENTITY

REFERENCES parent(pk) ON DELETE SET NULL );

ERR-42000(16642): for referencing generated column, delete rule shall not specify SET NULL or SET DEFAULT :

REFERENCES parent(pk) ON DELETE SET NULL )

*

ERROR at line 2:

Action

다음과 같이 ON DELETE CASCADE 등과 같은 delete rule 을 사용한다.


gSQL>

CREATE TABLE child ( fk INTEGER GENERATED BY DEFAULT AS IDENTITY

REFERENCES parent(pk) ON DELETE CASCADE );

Table created.

16643 (SQLSTATE: 42000): for referencing generated column, update rule shall not specify SET NULL or SET DEFAULT or CASCADE

Cause

Generated column 에 대한 FOREIGN KEY 의 update rule 로 CASCADE 등을 사용할 수 없다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY );

Table created.


gSQL>

CREATE TABLE child ( fk INTEGER GENERATED BY DEFAULT AS IDENTITY

REFERENCES parent(pk) ON UPDATE CASCADE );

ERR-42000(16643): for referencing generated column, update rule shall not specify SET NULL or SET DEFAULT or CASCADE :

REFERENCES parent(pk) ON UPDATE CASCADE )

*

ERROR at line 2:

Action

다음과 같이 ON UPDATE NO ACTION 등과 같은 update rule 을 사용한다.


gSQL>

CREATE TABLE child ( fk INTEGER GENERATED BY DEFAULT AS IDENTITY

REFERENCES parent(pk) ON UPDATE NO ACTION );

Table created.

16644 (SQLSTATE: 42000): constraint schema '%s' shall be equivalent to table schema

Cause

제약 조건의 schema 와 테이블의 schema 가 다르다.


gSQL> CREATE TABLE s1.t1 ( pk INTEGER CONSTRAINT s2.t1_pk PRIMARY KEY );


ERR-42000(16644): constraint schema '%s' shall be equivalent to table schema :

CREATE TABLE s1.t1 ( pk INTEGER CONSTRAINT s2.t1_pk PRIMARY KEY )

*

ERROR at line 1:

Action

제약 조건은 테이블과 동일한 schema 에 생성해야 한다.


gSQL> CREATE TABLE s1.t1 ( pk INTEGER CONSTRAINT s1.t1_pk PRIMARY KEY );

Table created.

16645 (SQLSTATE: 42000): such referential constraint already exists in table

Cause

동일한 FOREIGN KEY 제약 조건이 이미 생성되어 있다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY,

uk INTEGER UNIQUE );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

Table created.


gSQL> ALTER TABLE child ADD CONSTRAINT child_fk FOREIGN KEY( fk ) REFERENCES parent(pk);

ERR-42000(16645): such referential constraint already exists in table :

ALTER TABLE child ADD CONSTRAINT child_fk FOREIGN KEY( fk ) REFERENCES parent(pk)

*

ERROR at line 1:

Action

다음과 같이 서로 다른 정의를 갖는 FOREIGN KEY 를 생성한다.


gSQL> ALTER TABLE child ADD CONSTRAINT child_fk FOREIGN KEY( fk ) REFERENCES parent(uk);

Table altered.

16646 (SQLSTATE: 42000): column definition is not specified

Cause

Column을 정의하지 않았다.


gSQL> CREATE TABLE t1 ( UNIQUE( c1 ) );

ERR-42000(16646): column definition is not specified

Action

다음과 같이 column을 정의한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, UNIQUE( c1 ) );

Table created.

16647 (SQLSTATE: 42000): column is referenced in a multi-column constraint "%s"."%s"

Cause

다수의 column으로 정의된 제약 조건에 해당 column이 포함되어 있다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER, c3 INTEGER );

Table created.


gSQL> ALTER TABLE t1 ADD PRIMARY KEY (c2, c3);

Table altered.


gSQL> ALTER TABLE t1 SET UNUSED COLUMN c2;

ERR-42000(16647): column is referenced in a multi-column constraint "PUBLIC"."T1_PRIMARY_KEY"

Action

CASCADE 옵션을 사용하여 해당 제약 조건도 함께 제거한다.


gSQL> ALTER TABLE t1 SET UNUSED COLUMN c2 CASCADE;

Table altered.

16648 (SQLSTATE: 42000): cannot drop parent key column : child foreign key "%s"."%s"

Cause

FOREIGN KEY에서 참조하고 있으므로 PRIMARY KEY column을 제거할 수 없다.


gSQL> CREATE TABLE parent ( pk INTEGER PRIMARY KEY, c1 INTEGER );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

Table created.


gSQL> ALTER TABLE parent SET UNUSED COLUMN pk;

ERR-42000(16648): cannot drop parent key column : child foreign key "PUBLIC"."CHILD_FOREIGN_KEY_FK_REFERENCES_PARENT_PK"

Action

다음과 같이 CASCADE 옵션을 사용한다.


gSQL> ALTER TABLE parent SET UNUSED COLUMN pk CASCADE;

Table altered.

16649 (SQLSTATE: 42000): trigger does not exist

Cause

comment, drop, rename 와 같은 구문에서 트리거 객체 이름이 잘못 사용되었다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE TRIGGER trg1

AFTER INSERT ON t1

BEGIN

NULL;

END;

/

Trigger created.


gSQL> ALTER TRIGGER trg2 RENAME TO new_trg;

ERR-42000(16649): trigger does not exist :

ALTER TRIGGER trg2 RENAME TO new_trg

*

ERROR at line 1:

Action

올바른 트리거 객체 이름을 사용한다.


gSQL> ALTER TRIGGER trg1 RENAME TO new_trg;

Trigger altered.

16650 (SQLSTATE: 42000): object "%s" is not %s

Cause

해당 SQL 구문을 실행할 수 없는 객체이다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );

Table created.


gSQL> DROP VIEW t1;

ERR-42000(16650): object "T1" is not VIEW :

DROP VIEW t1

*

ERROR at line 1:

Action

다음과 같이 객체에 부합하는 SQL 구문을 사용한다.


gSQL> DROP TABLE t1;


Table dropped.

16651 (SQLSTATE: 42000): duplicate trigger event

Cause

트리거 이벤트가 중복으로 정의되었다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER INSERT OR UPDATE OR UPDATE OR DELETE ON t1

BEGIN

NULL;

END;

/

ERR-42000(16651): duplicate trigger event :

AFTER INSERT OR UPDATE OR UPDATE OR DELETE ON t1

*

ERROR at line 2:

Action

이벤트를 올바르게 기술한다.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER INSERT OR UPDATE OR DELETE ON t1

BEGIN

NULL;

END;

/

Trigger created.

16652 (SQLSTATE: 42000): duplicate transition table or variable name

Cause

트리거의 transition에서 테이블 이름 또는 변수 이름이 중복으로 정의되었다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

REFERENCING OLD TABLE AS t_tbl

NEW TABLE AS t_tbl

BEGIN

NULL;

END;

/

ERR-42000(16652): duplicate transition table or variable name :

NEW TABLE AS t_tbl

*

ERROR at line 4:

Action

올바른 테이블 이름 또는 변수 이름을 사용한다.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

REFERENCING OLD TABLE AS old_t_tbl

NEW TABLE AS new_t_tbl

BEGIN

NULL;

END;

/

Trigger created.

16653 (SQLSTATE: 42000): transition table or variable specified more than once

Cause

트리거의 transition에서 OLD와 NEW를 중복으로 사용했다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

REFERENCING OLD ROW AS o_row1

OLD ROW AS o_row2

FOR EACH ROW

BEGIN

NULL;

END;

/

ERR-42000(16653): transition table or variable specified more than once :

OLD ROW AS o_row2

*

ERROR at line 4:

Action

트리거 transition을 올바르게 기술한다.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

REFERENCING OLD ROW AS o_row1

NEW ROW AS o_row2

FOR EACH ROW

BEGIN

NULL;

END;

/

Trigger created.

16654 (SQLSTATE: 42000): transition table can not be specified in multi-event trigger

Cause

트리거에서 다중 이벤트를 정의하고 transition 테이블을 사용하면 에러가 발생할 수 있다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE OR DELETE ON t1

REFERENCING OLD TABLE AS o_tbl

BEGIN

NULL;

END;

/

ERR-42000(16654): transition table can not be specified in multi-event trigger :

REFERENCING OLD TABLE AS o_tbl

*

ERROR at line 3:

Action

트리거 transition 테이블을 사용하려면 단일 이벤트만 기술해야 한다.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

REFERENCING OLD TABLE AS o_tbl

BEGIN

NULL;

END;

/

Trigger created.

16655 (SQLSTATE: 42000): transition table can be declared only in AFTER triggers

Cause

트리거 동작 시점을 BEFORE로 기술하고 transition 테이블 사용했다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

BEFORE UPDATE ON t1

REFERENCING OLD TABLE AS o_tbl

BEGIN

NULL;

END;

/

ERR-42000(16655): transition table can be declared only in AFTER triggers :

REFERENCING OLD TABLE AS o_tbl

*

ERROR at line 3:

Action

트리거 transition 테이블을 사용하려면 동작 시점을 AFTER로 기술해야 한다.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

REFERENCING OLD TABLE AS o_tbl

BEGIN

NULL;

END;

/

Trigger created.

16656 (SQLSTATE: 42000): transition variable requires FOR EACH ROW syntax

Cause

트리거 동작을 FOR EACH STATEMENT로 설정한 후에 transition 변수를 사용했다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

REFERENCING OLD ROW AS o_row

FOR EACH STATEMENT

BEGIN

NULL;

END;

/

ERR-42000(16656): transition variable requires FOR EACH ROW syntax :

REFERENCING OLD ROW AS o_row

*

ERROR at line 3:

Action

Transition 변수를 사용하려면 트리거 동작을 FOR EACH ROW 로 기술해야 한다.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

REFERENCING OLD ROW AS o_row

FOR EACH ROW

BEGIN

NULL;

END;

/

Trigger created.

16657 (SQLSTATE: 42000): invalid use of %s transition table or variable

Cause

INSERT 트리거에 OLD transition을 기술하였다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER INSERT ON t1

REFERENCING OLD ROW AS o_row

FOR EACH ROW

BEGIN

NULL;

END;

/

ERR-42000(16657): invalid use of OLD transition table or variable :

REFERENCING OLD ROW AS o_row

*

ERROR at line 3:

Action

INSERT 트리거에는 NEW transition을 기술해야 한다.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER INSERT ON t1

REFERENCING NEW ROW AS o_row

FOR EACH ROW

BEGIN

NULL;

END;

/

Trigger created.

16658 (SQLSTATE: 42000): trigger "%s"."%s" already exists on another table and can not be replaced

Cause

기존 트리거를 새로운 트리거로 대체할 때 베이스 테이블의 이름이 다르면 발생하는 에러이다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE TABLE t2 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t1

BEGIN

NULL;

END;

/

Trigger created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER UPDATE ON t2

BEGIN

NULL;

END;

/

ERR-42000(16658): trigger "PUBLIC"."T2" already exists on another table and can not be replaced :

CREATE OR REPLACE TRIGGER tri1

*

ERROR at line 1:

Action

베이스 테이블 이름이 다른 경우에는 기존 트리거를 삭제하거나 트리거 이름을 분리해야 한다.


gSQL> CREATE OR REPLACE TRIGGER tri2

AFTER UPDATE ON t2

BEGIN

NULL;

END;

/

Trigger created.

16659 (SQLSTATE: 01000): Warning: trigger "%s"."%s" has compilation errors

Cause

트리거 바디에 객체가 없거나, 잘못된 내용들이 기술되었다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER INSERT ON t1

FOR EACH ROW

DECLARE

var1 INTEGER;

BEGIN

SELECT count(*) INTO var1 FROM n_tbl;

END;

/

ERR-01000(16659): Warning: trigger "PUBLIC"."TRI1" has compilation errors :

(1) at (7:3): ERR-42000(16040): table or view does not exist

Trigger created.

Action

트리거 바디에 명시된 테이블이 존재하지 않아 발생한 오류이므로, 해당 테이블을 생성해야 한다.


gSQL> CREATE TABLE n_tbl ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER INSERT ON t1

FOR EACH ROW

DECLARE

var1 INTEGER;

BEGIN

SELECT count(*) INTO var1 FROM n_tbl;

END;

/

Trigger created.

16660 (SQLSTATE: 23001): referential constraint "%s"."%s" restriction violated : can not delete or update parent row

Cause

FOREIGN KEY 제약 조건이 설정된 column 값과 동일한 값을 가지는 참조 대상인 PRIMARY KEY 또는 UNIQUE 제약 조건의 column을 변경할 경우에 발생하는 에러이다.


FOREIGN KEY 제약 조건의 referential triggered action이 ON UPDATE RESTRICT 또는 ON DELETE RESTRICT로 정의된 경우 발생한다.

Action

Child table의 레코드 변경을 먼저 시도한다.

FOREIGN KEY constraint에 대한 자세한 내용은 FOREIGN KEY 제약 조건을 참조한다.

16661 (SQLSTATE: 42000): column is referenced in a update column trigger "%s"."%s"

Cause

제거하려는 column을 참조하는 UPDATE COLUMN TRIGGER 가 존재한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );

Table created.


gSQL>

CREATE TRIGGER trg1

AFTER UPDATE OF c1 ON t1

BEGIN

NULL;

END;

/


Trigger created.


gSQL> ALTER TABLE t1 SET UNUSED COLUMN c1;

ERR-42000(16661): column is referenced in a update column trigger "PUBLIC"."TRG1"

Action

CASCADE 옵션을 사용하여 해당 TRIGGER 도 함께 제거한다.


gSQL> ALTER TABLE t1 SET UNUSED COLUMN c1 CASCADE;

Table altered.

16662 (SQLSTATE: 42000): cannot execute for the disabled index

Cause

해당 인덱스가 DISABLE 상태이다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );

Table created.


gSQL> CREATE INDEX idx1 ON t1(c1);

Index created.


gSQL> ALTER INDEX idx1 DISABLE;

Index altered.


gSQL> ALTER INDEX idx1 REBUILD;

ERR-42000(16662): cannot execute for the disabled index :

ALTER INDEX idx1 REBUILD

*

ERROR at line 1:

Action

다음과 같이 ENABLE 로 변경하여 인덱스를 재구축한다.


gSQL> ALTER INDEX idx1 ENABLE;

Index altered.

16663 (SQLSTATE: 42000): referenced unique constraint must be ENFORCED

Cause

참조하려는 제약 조건이 NOT ENFORCED 상태이다.


gSQL> CREATE TABLE parent ( pk INTEGER CONSTRAINT parent_pk PRIMARY KEY NOT ENFORCED );

Table created.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

ERR-42000(16663): referenced unique constraint must be ENFORCED :

CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) )

*

ERROR at line 1:

Action

다음과 같이 참조하려는 제약 조건을 ENFORCED 로 변경한다.


gSQL> ALTER TABLE parent ALTER CONSTRAINT parent_pk ENFORCED;

Table altered.


gSQL> CREATE TABLE child ( fk INTEGER REFERENCES parent(pk) );

Table created.

16664 (SQLSTATE: 42000): trigger type mismatch : %s

Cause

호환되지 않는 trigger 들의 순서를 바꿀 수 없다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );

Table created.


gSQL> CREATE TABLE t2 ( c1 INTEGER );

Table created.


gSQL>

CREATE OR REPLACE TRIGGER trg1

AFTER INSERT ON t1

BEGIN

NULL;

END;

/


Trigger created.


gSQL>

CREATE OR REPLACE TRIGGER trg2

AFTER INSERT ON t1

BEGIN

NULL;

END;

/


Trigger created.


gSQL> ALTER TABLE t2 SET TRIGGER ORDER trg2, trg1;

ERR-42000(16664): trigger type mismatch : event object mismatch :

ALTER TABLE t2 SET TRIGGER ORDER trg2, trg1

*

ERROR at line 1:

Action

다음과 같이 호환되는 trigger 들을 사용한다.


gSQL> ALTER TABLE t1 SET TRIGGER ORDER trg2, trg1;

Table altered.

16665 (SQLSTATE: 42000): duplicate trigger name

Cause

Trigger 이름이 중복되어 나열되었다.


gSQL> ALTER TABLE t1 SET TRIGGER ORDER trg1, trg1;

ERR-42000(16665): duplicate trigger name :

ALTER TABLE t1 SET TRIGGER ORDER trg1, trg1

*

ERROR at line 1:

Action

Trigger 이름을 중복되지 않게 사용한다.


gSQL> ALTER TABLE t1 SET TRIGGER ORDER trg1, trg2;

Table altered.

16666 (SQLSTATE: 42000): not analyzed system

Cause

ANALYZE SYSTEM 을 실행한 적이 없다.


gSQL> ANALYZE SYSTEM EXPORT 'sys.stat';

ERR-42000(16666): not analyzed system

Action

ANALYZE SYSTEM 을 실행한 후에 EXPORT 한다.


gSQL> ANALYZE SYSTEM;

analyzed.


gSQL> ANALYZE SYSTEM EXPORT 'sys.stat';

analyzed.

16667 (SQLSTATE: 42000): cannot append insert - foreign keys are enabled on the table

Cause

FOREIGN KEY 제약 조건이 설정된 테이블에서는 deferred index maintenance 방식의 append insert 를 수행할 수 없다.


gSQL> CREATE TABLE PARENT ( I1 INTEGER UNIQUE );


Table created.


gSQL> CREATE TABLE CHILD ( I1 INTEGER );


Table created.


gSQL> ALTER TABLE CHILD ADD CONSTRAINT CHILD_FK FOREIGN KEY( I1 ) REFERENCES PARENT( I1 );


Table altered.


gSQL> COMMIT;


Commit complete.


gSQL> INSERT /*+ APPEND DEFERRED_INDEX_MAINTENANCE */ INTO PARENT VALUES ( 2 );


ERR-42000(16667): cannot append insert - foreign keys are enabled on the table

Action

FOREIGN KEY 제약 조건을 일시적으로 비활성화한 후 append insert를 수행하고 작업 완료 후에 FOREIGN KEY 제약 조건을 다시 활성화한다.


gSQL> ALTER TABLE CHILD ALTER CONSTRAINT CHILD_FK NOT ENFORCED;


Table altered.


gSQL> COMMIT;


Commit complete.


gSQL> INSERT /*+ APPEND DEFERRED_INDEX_MAINTENANCE */ INTO PARENT VALUES ( 1 );


1 row created.


gSQL> COMMIT;


Commit complete.


gSQL> ALTER TABLE CHILD ALTER CONSTRAINT CHILD_FK ENFORCED;


Table altered.

16668 (SQLSTATE: 42000): table sampling can only be performed on a single base table or temporary table

Cause

다음 객체에는 sample clause 를 기술할 수 없다.

  • join

  • viewed table

  • inline view

  • common table expression (CTE)


gSQL> SELECT COUNT(*) FROM ( SELECT * FROM t1 ) TABLESAMPLE( 10 PERCENT ROWS );


ERR-42000(16663): table sampling can only be performed on a single base table or temporary table :

SELECT COUNT(*) FROM ( SELECT * FROM t1 ) TABLESAMPLE( 10 PERCENT ROWS )

*

ERROR at line 1:


gSQL> SELECT COUNT(*) FROM v1 TABLESAMPLE( 10 PERCENT ROWS );


ERR-42000(16663): table sampling can only be performed on a single base table or temporary table :

SELECT COUNT(*) FROM v1 TABLESAMPLE( 10 PERCENT ROWS )

*

ERROR at line 1:

Action

Sample clause는 단일 base table 이나 단일 temporary table에만 기술한다.


gSQL> SELECT COUNT(*) FROM t1 TABLESAMPLE( 10 PERCENT ROWS );


COUNT(*)

--------

100549


1 row selected.


gSQL> SELECT COUNT(*) FROM t1 A TABLESAMPLE( 10 PERCENT ROWS ), t1 B TABLESAMPLE( 2 PERCENT ROWS ) WHERE A.c1 = B.c1;


COUNT(*)

--------

20005


1 row selected.


Table sampling에 대한 자세한 내용은 sample clause 를 참조한다.

16669 (SQLSTATE: 42000): table sampling rate must be greater than 0 and less than or equal to 100

Cause

Table sampling rate가 유효 범위를 벗어난 경우에 발생하는 에러이다.


gSQL> SELECT COUNT(*) FROM t1 TABLESAMPLE( 0 PERCENT ROWS );


ERR-42000(16664): table sampling rate must be greater than 0 and less than or equal to 100 :

SELECT COUNT(*) FROM t1 TABLESAMPLE( 0 PERCENT ROWS )

*

ERROR at line 1:


gSQL> SELECT COUNT(*) FROM t1 TABLESAMPLE( 200 PERCENT ROWS );


ERR-42000(16664): table sampling rate must be greater than 0 and less than or equal to 100 :

SELECT COUNT(*) FROM t1 TABLESAMPLE( 200 PERCENT ROWS )

*

ERROR at line 1:

Action

다음과 같이 0 보다 크고 100 이하인 table sampling rate를 입력한다.


gSQL> SELECT COUNT(*) FROM t1 TABLESAMPLE( 100 PERCENT ROWS );


COUNT(*)

--------

1000000


1 row selected.


gSQL> SELECT COUNT(*) FROM t1 TABLESAMPLE( 10 PERCENT ROWS );


COUNT(*)

--------

99812


1 row selected.


Table sampling에 대한 자세한 내용은 sample clause 절을 참조한다.

16670 (SQLSTATE: 23000): check constraint "%s"."%s" violated

Cause

CHECK 제약 조건을 위반하였다.


gSQL> CREATE TABLE t1 ( c1 INTEGER CHECK ( c1 > 0 ) );

Table created.


gSQL> INSERT INTO t1 VALUES ( -1 );

ERR-23000(16670): check constraint "PUBLIC"."T1_CHECK_C1" violated

Action

CHECK 제약 조건을 만족하는 값을 사용한다.


gSQL> INSERT INTO t1 VALUES ( 1 );

1 row created.

16671 (SQLSTATE: 42000): maximum number of check columns exceeded

Cause

CHECK 제약 조건에 기술할 수 있는 column 개수를 초과하였다.


gSQL>

ALTER TABLE t1 ADD

CHECK ( c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 + c9 + c10 +

c11 + c12 + c13 + c14 + c15 + c16 + c17 + c18 + c19 + c20 +

c21 + c22 + c23 + c24 + c25 + c26 + c27 + c28 + c29 + c30 +

c31 + c32 + c33 > 0

);


ERR-42000(16671): maximum number of check columns exceeded :

CHECK ( c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 + c9 + c10 +

*

ERROR at line 2:

Action

다음과 같이 CHECK 제약 조건에는 최대 32 개의 column을 사용할 수 있다.


gSQL>

ALTER TABLE t1 ADD

CHECK ( c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8 + c9 + c10 +

c11 + c12 + c13 + c14 + c15 + c16 + c17 + c18 + c19 + c20 +

c21 + c22 + c23 + c24 + c25 + c26 + c27 + c28 + c29 + c30 +

c31 + c32 + c32 > 0

);

Table altered.

16672 (SQLSTATE: 42000): cannot append insert - triggers are enabled on the table

Cause

insert 할 테이블에 trigger 가 활성화되어 있으면 append insert 를 수행할 수 없다.


DROP TABLE IF EXISTS t1;

DROP TABLE IF EXISTS t2;

CREATE TABLE t1( c1 INTEGER );

CREATE TABLE t2( c1 INTEGER );

INSERT INTO t2 VALUES ( 1 ), ( 2 ), ( 3 );

COMMIT;


CREATE OR REPLACE TRIGGER trg1

BEFORE INSERT ON t1

FOR EACH STATEMENT

BEGIN

DBMS_OUTPUT.PUT_LINE( 'BEFORE INSERT ON t1' );

END;

/

COMMIT;


gSQL> INSERT /*+ APPEND */ INTO t1 SELECT * FROM t2;

ERR-42000(16672): cannot append insert - triggers are enabled on the table

Action

append insert를 수행하려면 trigger를 비활성화해야 한다.

Trigger 활성화 여부는 user_triggers view로 조회할 수 있다.


gSQL> ALTER TRIGGER trg1 DISABLE;

Trigger altered.


gSQL> INSERT /*+ APPEND */ INTO t1 SELECT * FROM t2;

3 rows created.

16673 (SQLSTATE: 42000): visible conflict

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

16674 (SQLSTATE: 42000): A version conflict was detected while synchronizing the replica

Cause

DML 수행 중 master 노드에서의 update는 성공했으나, slave 노드에서 update를 수행하는 과정에서 version conflict가 발생하였다.

일반적인 상황에서는 발생하지 않으며, update master 노드 장애로 인해 update slave 노드가 새로운 update master로 승격되는 경우에 한해 발생할 수 있다.

이 에러가 발생하면 해당 transaction은 강제로 rollback된다.

Action

애플리케이션 프로그램에서 해당 작업을 재시도 한다.

16675 (SQLSTATE: 42000): cannot offline transaction tablespace

Cause

Transaction TABLESPACE 는 OFFLINE 상태로 변경할 수 없다.


gSQL> ALTER TABLESPACE mem_trans_tbs OFFLINE;


ERR-42000(16675): cannot offline transaction tablespace :

ALTER TABLESPACE mem_trans_tbs OFFLINE

*

ERROR at line 1:

Action

다음과 같이 OFFLINE 으로 변경하려는 TABLESPACE 의 용도를 사전에 확인한다.


gSQL> SELECT tablespace_name, contents FROM dba_tablespaces WHERE tablespace_name = 'MEM_TRANS_TBS';


TABLESPACE_NAME CONTENTS

--------------- -----------

MEM_TRANS_TBS TRANSACTION


1 row selected.

16676 (SQLSTATE: 42000): cannot specify NOLOGGING without the PARALLEL option

Cause

INSERT 구문에서 NOLOGGING 힌트를 지정했지만 PARALLEL 힌트를 함께 지정하지 않은 경우에 발생하는 에러 메시지이다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.


gSQL> INSERT /*+ APPEND NOLOGGING */ INTO t1 VALUES ( 1 );


ERR-42000(16676): cannot specify NOLOGGING without the PARALLEL option

Action

NOLOGGING 힌트를 사용하려면 PARALLEL 힌트를 함께 지정한다.

NOLOGGING 방식이 필요하지 않은 경우 NOLOGGING 힌트를 제거한 후 다시 수행한다.


gSQL> CREATE TABLE t1 ( c1 INTEGER );


Table created.


gSQL> INSERT /*+ APPEND PARALLEL NOLOGGING */ INTO T1 VALUES ( 1 );


1 row created.

16677 (SQLSTATE: 42000): unable to set table to 'usable' state due to remaining corrupted pages

Cause

Unusable segment인 테이블에 논리적으로 손상된 페이지가 존재하여 usable 상태로 변경할 수 없다. 자세한 내용은 ALTER TABLE name USABLE을 참조한다.

Unusable segment가 존재하는 테이블은 V$RELATION 을 통해 확인할 수 있다.


gSQL> SELECT NAME, USABLE FROM V$RELATION WHERE USABLE = FALSE AND TYPE = 'TABLE';


NAME USABLE

---- ------

T1 FALSE


1 row selected.


gSQL> ALTER TABLE t1 USABLE;


ERR-42000(16677): unable to set table to 'usable' state due to remaining corrupted pages.

Action

ALTER DATABASE REGISTER IRRECOVERABLE SEGMENT 구문으로 추가한 경우, 해당 segment는 복구가 필요하지 않은 대상으로 등록된 것이므로 해당 테이블을 truncate 하여 데이터를 재구축하거나 drop 한다.

NOLOGGING APPEND INSERT 를 수행하여 발생한 unusable segment의 경우, NOLOGGING APPEND INSERT 수행 후에 생성한 백업 데이터 파일을 사용하여 복구한 다음 작업을 다시 수행한다.

백업 데이터가 없는 경우, 논리적으로 손상된 페이지는 복구할 수 없으므로 해당 테이블을 usable 상태로 변경할 수 없다.

이러한 상황을 방지하기 위해 GOLDILOCKS에서는 NOLOGGING APPEND INSERT 수행 후 체크포인트 및 백업을 수행할 것을 권장한다.

16678 (SQLSTATE: 42000): LOCAL SHARD LIMIT is supported only for sharded tables

Cause

Sharded table에 대한 DELETE FROM 문에서만 LOCAL SHARD LIMIT을 사용할 수 있다.

자세한 내용은 DELETE FROM의 <local shard limit clause>를 참조한다.


gSQL> CREATE TABLE t_cloned ( c1 INTEGER ) CLONED;


Table created.


gSQL> DELETE FROM t_cloned LOCAL SHARD LIMIT 10 ROWS;


ERR-42000(16678): LOCAL SHARD LIMIT is supported only for sharded tables :

DELETE FROM t_cloned LOCAL SHARD LIMIT 10 ROWS

*

ERROR at line 1:

Action

DELETE FROM 문에 LOCAL SHARD LIMIT를 지정한 경우, FROM 절에는 sharded table을 사용한다.


gSQL> CREATE TABLE t_shard ( c1 INTEGER ) SHARDING BY ( c1 );


Table created.


gSQL> DELETE FROM t_shard LOCAL SHARD LIMIT 10 ROWS;


no rows deleted.

PSM 관련 에러

PSM 에러 관련 예시는 아래 스키마를 기준으로 작성되었다.

gSQL>
CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER, c3 integer);
INSERT INTO t1 VALUES ( 10, 10 );

CREATE TABLE t2 ( id INTEGER, name VARCHAR(32) );
INSERT INTO t2 VALUES( 101, 'SUNJESOFT' );
INSERT INTO t2 VALUES ( 102, 'GOLDILOCKS' );

CREATE TABLE t3 ( c1 INTEGER GENERATED ALWAYS AS IDENTITY, c2 INTEGER );

CREATE LIBRARY lib AS 'add.so';
/

// add.c
// gcc -shared -fPIC -I$GOLDILOCKS_HOME/include -o $GOLDILOCKS_DATA/extlib/add.so add.c
#include <stdio.h>
#include <goldilocks.h>

int addFunc( int a, int b )
{
 return a + b;
}

int addFuncWithCTX( SQLExtProcContext * context, int a, int b )
{
 return a + b;
}
17000 (SQLSTATE: 2F000): failed to initialize PSM processor layer

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17001 (SQLSTATE: 2F000): not implemented feature (%s)

Cause

미구현 기능 또는 지원되지 않는 기능이다.


gSQL>

DECLARE

TYPE taa IS TABLE OF VARCHAR(10) INDEX BY DATE;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (2:45): ERR-2F000(17001): not implemented feature (unsupported index type)

Action

해당 기능은 사용할 수 없다.

17002 (SQLSTATE: 2F000): duplicated label name

Cause

동일한 label 이름이 사용되었다.


gSQL>

<<aaa>>

DECLARE

v1 INTEGER := 10;

BEGIN

<<aaa>>

DBMS_OUTPUT.PUT_LINE('1st aaa');

<<aaa>>

DBMS_OUTPUT.PUT_LINE('2nd aaa');

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (7:5): ERR-2F000(17002): duplicated label name

Action

아래와 같이 서로 다른 label 이름을 사용한다.


gSQL>

<<aaa>>

DECLARE

v1 INTEGER := 10;

BEGIN

<<bbb>>

DBMS_OUTPUT.PUT_LINE('1st bbb');

<<ccc>>

DBMS_OUTPUT.PUT_LINE('2nd ccc');

END;

/


Anonymous PL block executed.

17003 (SQLSTATE: 2F000): duplicated exception name

Cause

EXCEPTION 절에 동일한 exception 이름이 사용되었다.


gSQL>

DECLARE

v1 EXCEPTION;

v2 EXCEPTION;

BEGIN

NULL;

EXCEPTION WHEN v1 THEN

NULL;

WHEN v1 THEN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (9:18): ERR-2F000(17003): duplicated exception name

Action

아래와 같이 서로 다른 exception 이름을 사용한다.


gSQL>

DECLARE

v1 EXCEPTION;

v2 EXCEPTION;

BEGIN

NULL;

EXCEPTION WHEN v1 THEN

NULL;

WHEN v2 THEN

NULL;

END;

/


Anonymous PL block executed.

17004 (SQLSTATE: 2F000): duplicated variable name

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17005 (SQLSTATE: 2F000): not applicable expression type

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17006 (SQLSTATE: 2F000): unknown variable or column name (%s)

Cause

선언하지 않은 변수 이름이 사용되었다.


gSQL>

CREATE OR REPLACE PACKAGE pkg1

AS

var0 INTEGER;

END;

/

Package created.


gSQL>

CREATE OR REPLACE PACKAGE pkg2

AS

var1 var0%TYPE;

END;

/


ERR-2F000(17101): PACKAGE(PKG2) Specification has compilation errors :

(1) at (3:10): ERR-2F000(17006): unknown variable or column name (VAR0)

Package created.

Action

아래와 같이 변수를 선언한다.


gSQL>

CREATE OR REPLACE PACKAGE pkg2

AS

var1 pkg1.var0%TYPE;

END;

/

Package created.

17007 (SQLSTATE: 2F000): invalid expression

Cause

유효하지 않은 expression 이 사용되었다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 t1%rowtype )

RETURN t1%ROWTYPE

IS

v1 t1%ROWTYPE;

BEGIN

v1.c1 := a1.c1 * 2;

v1.c2 := a1.c2 * 2;


RETURN v1;

END;

/

Function created.


gSQL>

DECLARE

v2 t1%ROWTYPE;

v1 VARCHAR(20);

BEGIN

v2.c1 := 100;

v2.c2 := 200;


v1 := func1(v2);

END;

/

ERR-2F000(17032): PSM compilation error :

(1) at (8:11): ERR-2F000(17007): invalid expression

Action

아래와 같이 유효한 expression 을 사용한다.


gSQL>

DECLARE

v2 t1%ROWTYPE;

v1 t1%ROWTYPE;

BEGIN

v2.c1 := 100;

v2.c2 := 200;


v1 := func1(v2);

END;

/


Anonymous PL block executed.

17008 (SQLSTATE: 2F000): wrong number of parameters

Cause

인자의 개수가 잘못되었다.


gSQL> var v1 integer;

gSQL>

CREATE OR REPLACE FUNCTION func1(a1 INTEGER, a2 INTEGER)

RETURN INTEGER

IS

BEGIN

DBMS_OUTPUT.PUT_LINE('A1 = ' || a1);

RETURN a1 + a2;

END;

/

Function created.


gSQL> call func1(20) INTO :v1;


ERR-2F000(17008): wrong number of parameters :

call func1(20) INTO :v1

*

ERROR at line 1:

Action

stored function 정의에 맞게 사용한다.


gSQL> call func1(10, 20) INTO :v1;


A1 = 10

Procedure Call complete.

17009 (SQLSTATE: 2F000): NOT NULL constraint violation

Cause

선언된 NOT NULL 제약조건을 위배하였다.


gSQL>

DECLARE

TYPE rec1 IS RECORD( f1 INTEGER NOT NULL DEFAULT 10, f2 INTEGER NOT NULL DEFAULT 10 );

v_rec rec1;


PROCEDURE proc1( p1 rec1 )

IS

BEGIN

DBMS_OUTPUT.PUT_LINE('p1.f1 = ' || p1.f1);

DBMS_OUTPUT.PUT_LINE('p1.f2 = ' || p1.f2);

END;

BEGIN

v_rec.f1 := NULL;

v_rec.f2 := NULL;

proc1( v_rec );

END;

/


ERR-2F000(17009): NOT NULL constraint violation :

v_rec.f1 := NULL;

*

ERROR at line 12:

Action

NULL 값을 사용하지 않는다.


gSQL>

DECLARE

TYPE rec1 IS RECORD( f1 INTEGER NOT NULL DEFAULT 10, f2 INTEGER NOT NULL DEFAULT 10 );

v_rec rec1;


PROCEDURE proc1( p1 rec1 )

IS

BEGIN

DBMS_OUTPUT.PUT_LINE('p1.f1 = ' || p1.f1);

DBMS_OUTPUT.PUT_LINE('p1.f2 = ' || p1.f2);

END;

BEGIN

v_rec.f1 := 30;

v_rec.f2 := 50;

proc1( v_rec );

END;

/


p1.f1 = 30

p1.f2 = 50

Anonymous PL block executed.

17010 (SQLSTATE: 2F000): can not find label name

Cause

참조할 수 없는 label 이름이 사용되었다.


gSQL>

DECLARE

v1 INTEGER := 1;

BEGIN

<<LABEL_START>>

DBMS_OUTPUT.PUT_LINE( 'START TEST' );


<<LABEL_IF>>

IF v1 < 5 THEN

<<LABEL_LOW>>

DBMS_OUTPUT.PUT_LINE( 'LOW' );

GOTO LABEL_HIGH;

ELSE

<<LABEL_HIGH>>

DBMS_OUTPUT.PUT_LINE( 'HIGH' );

END IF;


<<LABEL_FINISH>>

DBMS_OUTPUT.PUT_LINE( 'FINISH TEST' );

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (11:10): ERR-2F000(17010): can not find label name

Action

아래와 같이 참조 가능한 label 이름을 사용한다.


gSQL>

DECLARE

v1 INTEGER := 1;

BEGIN

<<LABEL_START>>

DBMS_OUTPUT.PUT_LINE( 'START TEST' );


<<LABEL_IF>>

IF v1 < 5 THEN

<<LABEL_LOW>>

DBMS_OUTPUT.PUT_LINE( 'LOW' );

GOTO LABEL_FINISH;

ELSE

<<LABEL_HIGH>>

DBMS_OUTPUT.PUT_LINE( 'HIGH' );

END IF;


<<LABEL_FINISH>>

DBMS_OUTPUT.PUT_LINE( 'FINISH TEST' );

END;

/


START TEST

LOW

FINISH TEST

Anonymous PL block executed.

17011 (SQLSTATE: 2F000): duplicated field name

Cause

record type 선언 시 동일한 field 이름이 사용되었다.


gSQL>

DECLARE

TYPE my_rec1 IS RECORD

( f1 INTEGER NOT NULL := 1,

f2 VARCHAR(10) NOT NULL := 'AAA',

f2 VARCHAR(10) NOT NULL := 'AAA'

);

v1 my_rec1;

BEGIN

v1.f1 := 1;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (5:8): ERR-2F000(17011): duplicated field name

(2) at (7:7): ERR-2F000(17012): unknown type name

(3) at (9:4): ERR-2F000(17006): unknown variable or column name (V1)

Action

서로 다른 field 이름을 사용한다.


gSQL>

DECLARE

TYPE my_rec1 IS RECORD

( f1 INTEGER NOT NULL := 1,

f2 VARCHAR(10) NOT NULL := 'AAA',


f3 VARCHAR(10) NOT NULL := 'AAA'

);

v1 my_rec1;

BEGIN

v1.f1 := 1;

END;

/

Anonymous PL block executed.

17012 (SQLSTATE: 2F000): unknown type name

Cause

알 수 없는 type 이름이 사용되었다.


gSQL>

DECLARE

TYPE my_rec1 IS RECORD ( f1 INTEGER, f2 VARCHAR(10) );

v1 my_rec2;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:8): ERR-2F000(17012): unknown type name

Action

올바른 type 이름을 사용한다.


gSQL>

DECLARE

TYPE my_rec1 IS RECORD ( f1 INTEGER, f2 VARCHAR(10) );

v1 my_rec1;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17013 (SQLSTATE: 2F000): the type of record field should be scalar

Cause

Record field 의 type 선언에 scalar type 이 아닌 type이 사용되었다.


gSQL>

DECLARE

TYPE my_rec1 IS RECORD ( f1 INTEGER NOT NULL := 1, f2 VARCHAR(10) NOT NULL := 'AAA' );

TYPE my_rec2 IS RECORD ( f1 INTEGER NOT NULL := 1, f2 my_rec1 );

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:57): ERR-2F000(17013): the type of record field should be scalar

Action

Record field 는 scalar type 만을 사용할 수 있다.


gSQL>

DECLARE

TYPE my_rec1 IS RECORD ( f1 INTEGER, f2 VARCHAR(10) );

TYPE my_rec2 IS RECORD ( f1 INTEGER, f2 INTEGER );

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17014 (SQLSTATE: 2F000): target host parameter of assignment is not bound in OUT mode

Cause

assignment 구문 사용 시 host variable 을 binding 하지 않는다.

Action

application 작성 시 host variable 에 대응하는 변수를 binding 해야 한다.

17015 (SQLSTATE: 2F000): cannot set constraint or initial value on non-scalar-type variable

Cause

non-scalar variable 에 초기값을 설정할 수 없다.


gSQL>

DECLARE

TYPE urec IS RECORD (f1 INTEGER);

v1 urec := 10;

BEGIN

NULL;

END;

/


(1) at (3:13): ERR-2F000(17015): cannot set constraint or initial value on non-scalar-type variable

Action

아래와 같이 field 값을 설정한다.


gSQL>

DECLARE

TYPE urec IS RECORD (f1 INTEGER);

v1 urec;

BEGIN

v1.f1 := 10;

NULL;

END;

/


Anonymous PL block executed.

17016 (SQLSTATE: 2F000): variables which have NOT NULL constraint should have initial values

Cause

not null constraint가 있는 경우는 변수 선언 시 초기값이 있어야 한다.


gSQL>

DECLARE

v1 NUMBER(5,2) NOT NULL := 100.01;

v2 v1%TYPE;

BEGIN

NULL;

END;

/


(1) at (3:3): ERR-2F000(17016): variables which have NOT NULL constraint should have initial values

Action

아래와 같이 초기값을 설정한다.


gSQL>

DECLARE

v1 NUMBER(5,2) NOT NULL := 100.01;

v2 v1%TYPE := 200.02;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17017 (SQLSTATE: 2F000): unhandled user exception (%s)

Cause

RAISE exception 을 제어하지 않는다.


gSQL>

DECLARE

e1 EXCEPTION;

e2 EXCEPTION;

BEGIN

RAISE e1;

EXCEPTION WHEN e2 THEN NULL;

END;

/


ERR-2F000(17017): Unhandled user exception (E1)

Action

아래와 같이 RAISE exception 을 제어한다.


gSQL>

DECLARE

e1 EXCEPTION;

e2 EXCEPTION;

BEGIN

RAISE e1;

EXCEPTION WHEN e1 THEN NULL;

END;

/


Anonymous PL block executed.

17018 (SQLSTATE: 2F000): pre-defined exception name not allowed in declare section

Cause

pre-defined exception 은 선언할 수 없다.


gSQL>

DECLARE

ZERO_DIVIDE EXCEPTION;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (2:1): ERR-2F000(17018): Pre-defined-exception name not allowed in declare section

Action

새로운 이름의 exception 을 정의한다.


gSQL>

DECLARE

e1 EXCEPTION;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17019 (SQLSTATE: 2F000): OTHERS exception must be last among the exceptions of a block

Cause

OTHERS exception 은 exception block 에서 가장 마지막에 기술해야 한다.


gSQL>

BEGIN

RAISE ZERO_DIVIDE;

EXCEPTION WHEN OTHERS THEN NULL;

WHEN ZERO_DIVIDE THEN NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:19): ERR-2F000(17019): OTHERS-exception must be last among the exceptions of a block

Action

아래와 같이 OTHERS exception 은 마지막에 기술해야 함


gSQL>

BEGIN

RAISE ZERO_DIVIDE;

EXCEPTION WHEN ZERO_DIVIDE THEN NULL;

WHEN OTHERS THEN NULL;

END;

/


Anonymous PL block executed.

17020 (SQLSTATE: 2F000): unknown exception

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17021 (SQLSTATE: 2F000): Invalid error number for PRAGMA EXCEPTION_INIT

Cause

유효하지 않은 error number 를 설정한다.


gSQL>

DECLARE

v1 EXCEPTION;

PRAGMA EXCEPTION_INIT(v1, 0);

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:30): ERR-2F000(17021): Invalid error number for PRAGMA EXCEPTION_INIT

Action

PSM 사용자 정의 에러 코드 영역(-20000 ~ -20999)을 사용한다.


gSQL>

DECLARE

v1 EXCEPTION;

PRAGMA EXCEPTION_INIT(v1, -20000);

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17022 (SQLSTATE: 2F000): A CASE statement must either list all possible cases or have an else clause

Cause

CASE 구문에 나열되지 않은 값이 사용되었다.


gSQL>

DECLARE

v1 INTEGER := 3;

BEGIN

CASE v1 WHEN 1 THEN NULL;

WHEN 2 THEN NULL;

END CASE;

END;

/


ERR-2F000(17022): A CASE statement must either list all possible cases or have an else clause :

CASE V1 WHEN 1 THEN NULL;

*

ERROR at line 4:

Action

아래와 같이 CASE 구문에 ELSE 절을 추가한다.


gSQL>

DECLARE

v1 INTEGER := 3;

BEGIN

CASE v1 WHEN 1 THEN NULL;

WHEN 2 THEN NULL;

ELSE NULL;

END CASE;

END;

/


Anonymous PL block executed.

17023 (SQLSTATE: 2F000): duplicated error-code in same exception handler

Cause

exception handler 에서 서로 다른 exception 이 동일한 error code 를 가진다.


gSQL>

DECLARE

e1 EXCEPTION;

PRAGMA EXCEPTION_INIT(e1, -12122);

BEGIN

RAISE ZERO_DIVIDE;

EXCEPTION WHEN e1 THEN NULL;

WHEN ZERO_DIVIDE THEN NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (7:20): ERR-2F000(17023): duplicated error-code in same exception handler

Action

아래와 같이 서로 다른 exception 이 서로 다른 error code 를 갖도록 한다.


gSQL>

DECLARE

e1 EXCEPTION;

PRAGMA EXCEPTION_INIT(e1, -20000);

BEGIN

RAISE ZERO_DIVIDE;

EXCEPTION WHEN e1 THEN NULL;

WHEN ZERO_DIVIDE THEN NULL;

END;

/


Anonymous PL block executed.

17024 (SQLSTATE: 2F000): (%s) cannot be used as assignment target

Cause

assignment 구문의 왼쪽에 사용할 수 없는 변수이다.


gSQL>

BEGIN

FOR i IN 1 .. 10 LOOP

i := 1;

END LOOP;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:5): ERR-2F000(17024): (I) cannot be used as assignment target

Action

read only 변수는 변경할 수 없다.

17025 (SQLSTATE: 2F000): The command cannot be executed when global transaction is in the ACTIVE state

Cause

XA 환경에서는 DDL 을 포함한 procedure 를 실행할 수 없다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1()

AS

BEGIN

EXECUTE IMMEDIATE 'CREATE OR REPLACE PROCEDURE proc2()

AS

BEGIN

NULL;

END;';

END;

/

Procedure created.


gSQL> \xa start 10

XA transaction started


gSQL> CALL proc1;


ERR-2F000(17025): The command cannot be executed when global transaction is in the ACTIVE state :

EXECUTE IMMEDIATE 'CREATE OR REPLACE PROCEDURE proc2()

*

ERROR at line 4:

ERROR at PROCEDURE("PROC1")


gSQL> \xa rollback 10

Rollback completed

Action

XA 환경이 아닌 상태에서 수행한다.


gSQL> CALL proc1;


Procedure Call complete.

17026 (SQLSTATE: 2F000): Transaction is READ ONLY

Cause

read only transaction 에서는 DML 을 수행할 수 없다.


gSQL> SET TRANSACTION READ ONLY;


gSQL>

BEGIN

INSERT INTO t1(c1, c2) VALUES ( 1, 1 );

COMMIT;

END;

/


ERR-2F000(17026): Transaction is READ ONLY :

INSERT INTO t1(c1, c2) VALUES ( 1, 1 );

*

ERROR at line 3:

Action

read write transaction 으로 변경하고 DML 을 수행한다.


gSQL> SET TRANSACTION READ WRITE;


gSQL>

BEGIN

INSERT INTO t1(c1, c2) VALUES ( 1, 1 );

COMMIT;

END;

/


Anonymous PL block executed.

17027 (SQLSTATE: 2F000): duplicated identifier

Cause

중복된 변수가 선언되었다.


gSQL>

DECLARE

v1 INTEGER;

v1 INTEGER;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:4): ERR-2F000(17027): duplicated identifier

Action

변수 이름이 중복되지 않도록 선언한다.


gSQL>

DECLARE

v1 INTEGER;

v2 INTEGER;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17028 (SQLSTATE: 2F000): out of scope

Cause

참조할 수 없는 scope(label) 의 변수에 접근했다.


gSQL>

<<AA>>

DECLARE

v1 INTEGER := 10;

BEGIN

<<BB>>

DECLARE

v1 INTEGER := 20;

BEGIN

NULL;

END;


BB.v1 := 1;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (12:6): ERR-2F000(17028): out of scope error

Action

아래와 같이 참조할 수 있는 scope(label) 의 변수를 사용한다.


gSQL>

<<AA>>

DECLARE

v1 INTEGER := 10;

BEGIN

<<BB>>

DECLARE

v1 INTEGER := 20;

BEGIN

NULL;

END;


AA.v1 := 1;

END;

/


Anonymous PL block executed.

17029 (SQLSTATE: 2F000): too many depths of scope (limit=%d)

Cause

지나치게 깊은 depth 의 변수 참조가 발생하였다.


gSQL>

DECLARE

v_sql_text varchar(4000);

BEGIN

v_sql_text := 'DECLARE v1 integer; {1} v1:= 10; {2}';


v_sql_text := REPLACE(v_sql_text, '{1}', REPEAT('BEGIN ', 128));

v_sql_text := REPLACE(v_sql_text, '{2}', REPEAT('END; ', 128));


EXECUTE IMMEDIATE v_sql_text;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (1:1): ERR-2F000(17029): too many depths of scope (limit=128)


EXECUTE IMMEDIATE v_sql_text;

*

ERROR at line 9:

Action

상위 128 개 미만의 scope 의 변수를 참조할 수 있다.

17030 (SQLSTATE: 2F000): invalid reference (%s)

Cause

변수 선언 시 type(record) 의 field에 직접 접근할 수 없다.


gSQL>

DECLARE

TYPE rec IS RECORD (f1 VARCHAR(20), f2 VARCHAR(20));

v1 rec.f1%TYPE;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:12): ERR-2F000(17030): invalid reference (REC.F1)

Action

아래와 같이 record 변수를 선언 후 해당 field 를 참조하여야 한다.


gSQL>

DECLARE

TYPE rec IS RECORD (f1 VARCHAR(20), f2 VARCHAR(20));

v0 rec;

v1 v0.f1%TYPE;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17031 (SQLSTATE: 2F000): mismatch identifier type

Cause

구문에서 사용할 수 없는 variable 유형이 사용되었다.


gSQL>

DECLARE

TYPE t_arr IS TABLE OF VARCHAR(32) INDEX BY INTEGER;

v_arr t_arr;

BEGIN

v_arr(0) := 'A';

v_arr(1) := v_arr();

DBMS_OUTPUT.PUT_LINE( v_arr(1) );

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (6:16): ERR-2F000(17031): mismatch identifier type

Action

아래와 같이 구문에서 사용할 수 있는 variable 유형을 사용해야 한다.


gSQL>

DECLARE

TYPE t_arr IS TABLE OF VARCHAR(32) INDEX BY INTEGER;

v_arr t_arr;

BEGIN

v_arr(0) := 'A';

v_arr(1) := v_arr(0);

DBMS_OUTPUT.PUT_LINE( v_arr(1) );

END;

/


A

Anonymous PL block executed.

17032 (SQLSTATE: 2F000): PSM compilation error

Cause

컴파일 에러이다.


gSQL>

DECLARE

v1 NUMBER(39);

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (2:13): ERR-42000(16024): numeric precision specifier is out of range( 1 to 38 )

Action

컴파일 에러를 수정한다.


gSQL>

DECLARE

v1 NUMBER(38);

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17033 (SQLSTATE: 2F000): duplicated cursor name

Cause

동일한 cursor 가 선언되었다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT * FROM dual;

CURSOR cur1 IS SELECT * FROM dual;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:10): ERR-2F000(17033): duplicated cursor name

Action

동일한 cursor 이름을 선언하지 않는다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT * FROM dual;

CURSOR cur2 IS SELECT * FROM dual;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17034 (SQLSTATE: 2F000): return type of cursor is invalid

Cause

cursor 의 return type 과 SELECT 결과가 호환되지 않는다.


gSQL>

DECLARE

CURSOR c1 RETURN t1%ROWTYPE IS SELECT c1 FROM t1;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (2:20): ERR-2F000(17034): return type of cursor is invalid

Action

cursor 의 return type 과 SELECT 결과가 호환되도록 수정한다.


gSQL>

DECLARE

CURSOR c1 RETURN t1%ROWTYPE IS SELECT * FROM t1;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17035 (SQLSTATE: 2F000): invalid expression type

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17036 (SQLSTATE: 2F000): cursor is not defined

Cause

cursor 가 선언되지 않았다.


gSQL>

DECLARE

CURSOR cur1 RETURN t1%ROWTYPE;

BEGIN

OPEN cur1;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (4:8): ERR-2F000(17036): cursor is not defined

Action

cursor query 를 명시한다.


gSQL>

DECLARE

CURSOR cur1 RETURN t1%ROWTYPE IS SELECT * FROM t1;

BEGIN

OPEN cur1;

END;

/


Anonymous PL block executed.

17037 (SQLSTATE: 2F000): cursor is already open

Cause

cursor 가 이미 open 되어 있다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT * FROM t1;

BEGIN

OPEN cur1;

OPEN cur1;

END;

/


ERR-2F000(17037): cursor is already open :

OPEN cur1;

*

ERROR at line 5:

Action

open 된 cursor 를 close 한 후 open 한다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT * FROM t1;

BEGIN

OPEN cur1;

CLOSE cur1;

OPEN cur1;

END;

/


Anonymous PL block executed.

17038 (SQLSTATE: 2F000): cursor is not open

Cause

cursor 가 open 되어 있지 않다.


DECLARE

CURSOR cur1 IS SELECT c1 FROM t1;

v1 INTEGER;

BEGIN

FETCH cur1 INTO v1;

END;

/


ERR-2F000(17038): cursor is not open :

FETCH cur1 INTO v1;

*

ERROR at line 5:

Action

cursor 를 open 한 후 FETCH 한다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT c1 FROM t1;

v1 INTEGER;

BEGIN

OPEN cur1;

FETCH cur1 INTO v1;

END;

/


Anonymous PL block executed.

17039 (SQLSTATE: 2F000): unknown cursor

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17040 (SQLSTATE: 2F000): fetch target count mismatch

Cause

FETCH target 개수와 SELECT column 개수가 다르다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT c1, c2 FROM t1;

v1 INTEGER;

v2 INTEGER;

BEGIN

OPEN cur1;

FETCH cur1 INTO v1;

CLOSE cur1;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (7:3): ERR-2F000(17040): fetch target count mismatch

Action

FETCH target 개수와 SELECT column 개수가 동일해야 한다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT c1, c2 FROM t1;

v1 INTEGER;

v2 INTEGER;

BEGIN

OPEN cur1;

FETCH cur1 INTO v1, v2;

CLOSE cur1;

END;

/


Anonymous PL block executed.

17041 (SQLSTATE: 2F000): execution fail

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17042 (SQLSTATE: 2F000): bind variables not allowed for data definition operations

Cause

DDL 문에서는 INTO 절과 USING 절을 사용할 수 없다.


gSQL>

DECLARE

v1 INTEGER;

BEGIN

v1 := 20;

EXECUTE IMMEDIATE 'CREATE TABLE t10 ( c1 INTEGER DEFAULT 10)' USING v1;

END;

/


ERR-2F000(17042): bind variables not allowed for data definition operations :

EXECUTE IMMEDIATE 'CREATE TABLE t10 ( c1 INTEGER DEFAULT 10)' USING v1;

*

ERROR at line 5:

Action

DDL 문에서 INTO 절과 USING 절을 제거한다.


gSQL>

DECLARE

v1 INTEGER;

BEGIN

v1 := 20;

EXECUTE IMMEDIATE 'CREATE TABLE t10 ( c1 INTEGER DEFAULT 10)';

ROLLBACK;

END;

/


Anonymous PL block executed.

17043 (SQLSTATE: 2F000): no target-list for into clause

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17044 (SQLSTATE: 2F000): returning-into need to bind variable with returning-into or using OUT clause

Cause

RETURNING INTO 에 대한 bind variable 은 USING 으로 결과를 얻을 수 없다.


gSQL>

DECLARE

v1 INTEGER;

BEGIN

EXECUTE IMMEDIATE 'delete from t1 where c1 = 100 returning c2 into ?' USING v1;

END;

/


ERR-2F000(17044): returning-into need to bind variable with returning-into or using OUT clause :

EXECUTE IMMEDIATE 'delete from t1 where c1 = 100 returning c2 into ?' USING v1;

*

ERROR at line 4:

Action

아래와 같이 USING OUT 절을 사용한다.


gSQL>

DECLARE

v1 INTEGER;

BEGIN

EXECUTE IMMEDIATE 'delete from t1 where c1 = 100 returning c2 into ?' USING OUT v1;

END;

/


Anonymous PL block executed.

17045 (SQLSTATE: 2F000): no data found

Cause

질의 결과가 없다.


gSQL>

DECLARE

v1 INTEGER;

BEGIN

SELECT c1 INTO v1 FROM t1 where c1 = 100;

END;

/


ERR-2F000(17045): no data found :

SELECT c1 INTO v1 FROM t1;

*

ERROR at line 4:

Action

아래와 같이 NO_DATA_FOUND exception 을 제어한다.


gSQL>

DECLARE

v1 INTEGER;

BEGIN

SELECT c1 INTO v1 FROM t1 where c1 = 100;

EXCEPTION WHEN NO_DATA_FOUND THEN v1 := 0;

END;

/


Anonymous PL block executed.

17046 (SQLSTATE: 2F000): variables of record type can not be mixed with other variable

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17047 (SQLSTATE: 2F000): only record-type variable allowed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17048 (SQLSTATE: 2F000): The INTO clause or RETURNING INTO clause cannot be used
 with a USING clause containing OUT-mode

Cause

USING OUT은 INTO 절 또는 RETURNING INTO 절과 함께 사용할 수 없다.


gSQL>

DECLARE

var1 INTEGER;

var2 INTEGER;

v_str VARCHAR(100);

BEGIN

v_str := 'INSERT INTO t1 VALUES ( 3 ,3 ) RETURNING * INTO ? , ?';


EXECUTE IMMEDIATE v_str

USING OUT var1

RETURNING INTO var2;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (8:3): ERR-2F000(17048): INTO clause or RETURNING INTO clause cannot be used with a USING clause that has OUT-mode

Action

USING OUT을 INTO 절 또는 RETURNING INTO 절과 함께 사용하지 않는다.


gSQL>

DECLARE

var1 INTEGER;

var2 INTEGER;

v_str VARCHAR(100);

BEGIN

v_str := 'INSERT INTO t1 VALUES ( 3 ,3 ) RETURNING * INTO ? , ?';


EXECUTE IMMEDIATE v_str

USING OUT var1 , OUT var2;

END;

/


Anonymous PL block executed.


또는


gSQL>

DECLARE

var1 INTEGER;

var2 INTEGER;

v_str VARCHAR(100);

BEGIN

v_str := 'INSERT INTO t1 VALUES ( 3 ,3 ) RETURNING * INTO ? , ?';


EXECUTE IMMEDIATE v_str

RETURNING INTO var1 , var2;

END;

/


Anonymous PL block executed.

17049 (SQLSTATE: 2F000): can not use a expression in USING OUT binding

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17050 (SQLSTATE: 2F000): query need to bind with INTO-clause for targets

Cause

SELECT 질의를 EXECUTE IMMEDIATE 로 실행할 경우 INTO 절을 사용해야 한다.


gSQL>

DECLARE

v_name VARCHAR(30);

BEGIN

EXECUTE IMMEDIATE 'select name from t2 where id = 101';

END;

/


ERR-2F000(17050): query need to bind with INTO-clause for targets :

EXECUTE IMMEDIATE 'select name from t1 where id = 101';

*

ERROR at line 4:

Action

아래와 같이 EXECUTE IMMEDIATE 구문에 INTO 절을 사용한다.


gSQL>

DECLARE

v_name VARCHAR(30);

BEGIN

EXECUTE IMMEDIATE 'select name from t2 where id = 101' INTO v_name;

END;

/


Anonymous PL block executed.

17051 (SQLSTATE: 2F000): invalid statement-type

Cause

사용할 수 없는 SQL 구문이 사용되었다.


gSQL>

BEGIN

FOR rec IN ( insert into t2 values (101, 'leekmo') )

LOOP

NULL;

END LOOP;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (2:16): ERR-2F000(17051): invalid statement-type

Action

cursor FOR LOOP 구문에는 아래와 같이 SELECT 질의를 사용해야 한다.


gSQL>

BEGIN

FOR rec IN ( select * from t2 )

LOOP

NULL;

END LOOP;

END;

/


Anonymous PL block executed.

17052 (SQLSTATE: 2F000): Alias required in list of cursor to avoid duplicated target names

Cause

SELECT target name 이 중복되어 cursor 가 구별할 수 없다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT id, id FROM t2;

BEGIN

FOR rec IN cur1

LOOP

NULL;

END LOOP;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (4:5): ERR-2F000(17052): Alias required in list of cursor to avoid duplicated target names

Action

아래와 같이 SELECT 질의에 AS alias 를 부여하여 중복된 이름이 없게 한다.


gSQL>

DECLARE

CURSOR cur1 IS SELECT id, id AS id2 FROM t2;

BEGIN

FOR rec IN cur1

LOOP

NULL;

END LOOP;

END;

/


Anonymous PL block executed.

17053 (SQLSTATE: 2F000): schema or table object does not exist

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17054 (SQLSTATE: 2F000): only record-type variable allowed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17055 (SQLSTATE: 2F000): this cursor must be declared with FOR-UPDATE to use with CURRENT OF

Cause

WHERE CURRENT OF cursor 를 사용하기 위해서는 FOR UPDATE cursor 여야 한다.


gSQL>

DECLARE

v_rec t2%ROWTYPE;

CURSOR cur1 IS SELECT * FROM t2 WHERE id = 102;

BEGIN

OPEN cur1;

FETCH cur1 INTO v_rec;

UPDATE t2 SET name = 'xyz' WHERE CURRENT OF cur1;

CLOSE cur1;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (7:4): ERR-2F000(17055): this cursor must be declared with FOR-UPDATE to use with CURRENT OF

Action

아래와 같이 cursor 선언시 FOR UPDATE 를 기술한다.


gSQL>

DECLARE

v_rec t2%ROWTYPE;

CURSOR cur1 IS SELECT * FROM t2 WHERE id = 102 FOR UPDATE;

BEGIN

OPEN cur1;

FETCH cur1 INTO v_rec;

UPDATE t2 SET name = 'xyz' WHERE CURRENT OF cur1;

CLOSE cur1;

END;

/


Anonymous PL block executed.

17056 (SQLSTATE: 2F000): invalid syntax error

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17057 (SQLSTATE: 2F000): only select-into statement allowed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17058 (SQLSTATE: 2F000): source-name of return-type is not record-type or record-type variable

Cause

REF CURSOR type 의 RETURN type 은 record type 이어야 한다.


gSQL>

DECLARE

TYPE rec IS TABLE OF t1%ROWTYPE INDEX BY VARCHAR(20);

TYPE cv IS REF CURSOR RETURN rec;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:30): ERR-2F000(17058): source-name of return-type is not record-type or record-type variable

Action

아래와 같이 record type 을 사용한다.


gSQL>

DECLARE

TYPE rec IS RECORD (id INTEGER, name VARCHAR(30));

TYPE cv IS REF CURSOR RETURN rec;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17059 (SQLSTATE: 2F000): source-name of rowtype must be a table, view, cursor, cursor-variable

Cause

ROWTYPE 의 source 가 적합하지 않다.


gSQL>

DECLARE

TYPE rec IS RECORD (id INTEGER, name VARCHAR(30));

TYPE cv IS REF CURSOR RETURN rec%ROWTYPE;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:34): ERR-2F000(17059): source-name of rowtype must be a table, view, cursor, cursor-variable

Action

아래와 같이 ROWTYPE 의 source 로 table 을 명시한다.


gSQL>

DECLARE

TYPE rec IS RECORD (id INTEGER, name VARCHAR(30));

TYPE cv IS REF CURSOR RETURN t1%ROWTYPE;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17060 (SQLSTATE: 2F000): a cursor-variable with having return-type cannot be used in OPEN FOR dynamic-sql

Cause

REF CURSOR 에서 Dynamic SQL 을 사용하기 위해서는 weak ref cursor 여야 한다.


gSQL>

DECLARE

TYPE cv_org IS REF CURSOR RETURN t1%ROWTYPE;

cv cv_org;

sqltext VARCHAR(4000);

BEGIN

sqltext := 'select * from t1';

OPEN cv FOR sqltext;

CLOSE cv;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (7:3): ERR-2F000(17060): a cursor-variable with having return-type cannot be used in OPEN FOR dynamic-sql

Action

REF CURSOR type 선언 시 RETURN 절을 생략한다.


gSQL>

DECLARE

TYPE cv_org IS REF CURSOR;

cv cv_org;

sqltext VARCHAR(4000);

BEGIN

sqltext := 'select * from t1';

OPEN cv FOR sqltext;

CLOSE cv;

END;

/

17061 (SQLSTATE: 2F000): it can be allowed with only IN-Binding type

Cause

in-binding 이 필요한 곳에 USING OUT 을 사용하였다.


gSQL>

DECLARE

cur1 SYS_REFCURSOR;

v1 INTEGER;

v_row t2%ROWTYPE;

BEGIN

v1 := 101;

OPEN cur1 FOR 'SELECT * FROM t2 WHERE id = ?' USING OUT v1;

FETCH cur1 INTO v_row;

CLOSE cur1;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (7:62): ERR-2F000(17061): it can be allowed with only IN-Binding type

Action

아래와 같이 USING 을 사용한다.


gSQL>

DECLARE

cur1 SYS_REFCURSOR;

v1 INTEGER;

v_row t2%ROWTYPE;

BEGIN

v1 := 101;

OPEN cur1 FOR 'SELECT * FROM t2 WHERE id = ?' USING v1;

FETCH cur1 INTO v_row;

CLOSE cur1;

END;

/


Anonymous PL block executed.

17062 (SQLSTATE: 2F000): duplicated routine name

Cause

동일한 이름을 가진 procedure 가 정의되었다.


gSQL>

DECLARE

PROCEDURE proc1( a1 INTEGER )

IS

BEGIN

NULL;

END;

PROCEDURE proc1( a1 INTEGER )

IS

BEGIN

NULL;

END;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:14): ERR-2F000(17062): duplicated routine name

(2) at (2:4): ERR-2F000(17081): program body of the routine (PROC1) is not defined

Action

아래와 같이 서로 다른 이름을 사용한다.


gSQL>

DECLARE

PROCEDURE proc1( a1 INTEGER )

IS

BEGIN

NULL;

END;

PROCEDURE proc2( a1 INTEGER )

IS

BEGIN

NULL;

END;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17063 (SQLSTATE: 2F000): unknown routine name

Cause

존재하지 않는 procedure 를 사용하였다.


gSQL>

DECLARE

PROCEDURE proc1 IS BEGIN NULL; END;

BEGIN

proc_invalid;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (4:5): ERR-2F000(17063): unknown routine name

Action

유효한 procedure 를 사용한다.


gSQL>

DECLARE

PROCEDURE proc1 IS BEGIN NULL; END;

BEGIN

proc1;

END;

/


Anonymous PL block executed.

17064 (SQLSTATE: 2F000): invalid routine name

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17065 (SQLSTATE: 2F000): invalid routine object status

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17066 (SQLSTATE: 2F000): a RAISE statement with no exception name must be inside an exception handler

Cause

exception 없는 RAISE 구문은 exception handler 내에서만 사용할 수 있다.


gSQL>

BEGIN

BEGIN

RAISE;

EXCEPTION WHEN OTHERS THEN RAISE;

END;


EXCEPTION WHEN OTHERS THEN NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:7): ERR-2F000(17066): a RAISE statement with no exception name must be inside an exception handler

Action

아래와 같이 RAISE exception 을 명시한다.


gSQL>

BEGIN

BEGIN

RAISE NO_DATA_FOUND;

EXCEPTION WHEN OTHERS THEN RAISE;

END;


EXCEPTION WHEN OTHERS THEN NULL;

END;

/


Anonymous PL block executed.

17067 (SQLSTATE: 2F000): return types of Result Set variables or query do not match

Cause

cursor 의 result set 과 FETCH 의 target 이 일치하지 않는다.


gSQL>

DECLARE

TYPE cur_type IS REF CURSOR;

cur1 cur_type;

v1 INTEGER;

v2 VARCHAR(32);

BEGIN

OPEN cur1 FOR 'SELECT id, name FROM t2';

FETCH cur1 INTO v1;

CLOSE cur1;

END;

/


ERR-2F000(17067): return types of Result Set variables or query do not match :

FETCH cur1 INTO v1;

*

ERROR at line 8:

Action

아래와 같이 FETCH INTO 의 target 을 변경한다.


gSQL>

DECLARE

TYPE cur_type IS REF CURSOR;

cur1 cur_type;

v1 INTEGER;

v2 VARCHAR(32);

BEGIN

OPEN cur1 FOR 'SELECT id, name FROM t2';

FETCH cur1 INTO v1, v2;

CLOSE cur1;

END;

/


Anonymous PL block executed.

17068 (SQLSTATE: 2F000): wrong number or types of arguments

Cause

procedure 호출 시 parameter 설정이 잘못되었다.


gSQL>

DECLARE

TYPE rec_type1 IS RECORD( id INTEGER , name VARCHAR(20));

TYPE rec_type2 IS RECORD( id INTEGER , name VARCHAR(20));

rec1 rec_type1;

rec2 rec_type2;


PROCEDURE proc1( a1 rec_type1 )

AS

BEGIN

NULL;

END;

BEGIN

proc1( rec2 );

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (13:11): ERR-2F000(17068): wrong number or types of arguments

Action

아래와 같이 procedure 와 동일한 record type 의 parameter 를 설정한다.


gSQL>

DECLARE

TYPE rec_type1 IS RECORD( id INTEGER , name VARCHAR(20));

TYPE rec_type2 IS RECORD( id INTEGER , name VARCHAR(20));

rec1 rec_type1;

rec2 rec_type2;


PROCEDURE proc1( a1 rec_type1 )

AS

BEGIN

NULL;

END;

BEGIN

proc1( rec1 );

END;

/


Anonymous PL block executed.

17069 (SQLSTATE: 2F000): invalid variable usage

Cause

Dynamic SQL 실행 시 record variable 의 사용이 잘못되었다.


gSQL>

DECLARE

TYPE rec_type IS RECORD (id INTEGER, name VARCHAR(32) );

v_rec rec_type;

v1 INTEGER;

BEGIN

EXECUTE IMMEDIATE 'select id, name from t2 where id = 101' INTO v_rec, v1;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (6:75): ERR-2F000(17069): invalid variable usage

Action

아래와 같이 올바른 record variable 을 기술한다.


DECLARE

TYPE rec_type IS RECORD (id INTEGER, name VARCHAR(32) );

v_rec rec_type;

v1 INTEGER;

BEGIN

EXECUTE IMMEDIATE 'select id, name from t2 where id = 101' INTO v_rec;

END;

/


Anonymous PL block executed.

17070 (SQLSTATE: 2F000): return statement in procedures or anonymous blocks cannot have <value> clause

Cause

procedure 내에서는 RETURN 절을 사용할 수 없다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1

AS

BEGIN

NULL;

RETURN 1;

END;

/


ERR-01000(16409): Warning: Routine(PROC1) has compilation errors :

(1) at (5:4): ERR-2F000(17070): return statement in procedures or anonymous blocks cannot have <value> clause

Procedure created.

Action

아래와 같이 RETURN 절을 제거한다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1

AS

BEGIN

NULL;

END;

/


Procedure created.

17071 (SQLSTATE: 2F000): return statement in functions should have <value> clause

Cause

stored function 의 RETURN 절은 값을 명시해야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN INTEGER

AS

BEGIN

RETURN;

END;

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (5:5): ERR-2F000(17071): return statement in functions should have <value> clause

Function created.

Action

아래와 같이 RETURN 절에 값을 명시한다.


CREATE OR REPLACE FUNCTION func1

RETURN INTEGER

AS

BEGIN

RETURN 1;

END;

/


Function created.

17072 (SQLSTATE: 2F000): existing state of routine has been discarded

Cause

아래와 같이 DROP PROCEDURE 구문에 의해 procedure 가 실행할 수 없는 상태가 된다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1 AS

BEGIN

NULL;

END;

/

Procedure created.


gSQL>

DECLARE

v_sql VARCHAR(1024);

BEGIN

proc1;


v_sql := 'DROP PROCEDURE proc1;';

EXECUTE IMMEDIATE v_sql;


proc1;

END;

/


ERR-2F000(17072): existing state of routine(PROC1) has been discarded :

proc1;

*

ERROR at line 9:

ERROR at PROCEDURE("PROC1")

Action

procedure 진행 중에 DROP 하지 않는다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1 AS

BEGIN

NULL;

END;

/

Procedure created.


gSQL>

DECLARE

v_sql VARCHAR(1024);

BEGIN

proc1;


v_sql := 'DROP PROCEDURE proc1;';

-- EXECUTE IMMEDIATE v_sql;


proc1;

END;

/


Anonymous PL block executed.

17073 (SQLSTATE: 2F003): DDLs or DCLs cannot be invoked during DMLs or SELECT statements are executing in "%s"."%s"

Cause

아래와 같이 SELECT 에서 사용하는 stored function 이 DDL 을 포함하고 있다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 INTEGER )

RETURN INTEGER

IS

BEGIN

EXECUTE IMMEDIATE 'DROP TABLE t2';

RETURN a1;

END;

/

Function created.


gSQL> SELECT FUNC1( id ) FROM t2 where id = 101;


ERR-2F003(17073): DDLs or DCLs cannot be invoked during DMLs or SELECT statements are executing in "PUBLIC"."FUNC1" :

EXECUTE IMMEDIATE 'DROP TABLE t2';

*

ERROR at line 5:

ERROR at FUNCTION("FUNC1")


SELECT FUNC1( id ) FROM t2 where id = 101

*

ERROR at line 1:

Action

SELECT 에서 사용하는 stored function 은 DDL 이 없어야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 INTEGER )

RETURN INTEGER

IS

BEGIN

RETURN a1;

END;

/

Function created.


gSQL> SELECT FUNC1( id ) FROM t2 where id = 101;


FUNC1( ID )

-----------

101

1 row selected.

17074 (SQLSTATE: 2F003): cannot begin transaction inside a query in "%s"."%s"

Cause

아래와 같이 SELECT 에서 사용하는 stored function 내에서

SELECT FOR UPDATE 수행으로 인해 transaction 이 시작하였다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 INTEGER )

RETURN INTEGER

IS

v1 INTEGER;

BEGIN

SELECT id INTO v1 FROM t2 WHERE id = a1 FOR UPDATE;

RETURN v1;

END;

/

Function created.


gSQL> SELECT FUNC1( id ) FROM t2 ORDER BY id LIMIT 1;


ERR-2F003(17074): cannot begin transaction inside a query in "PUBLIC"."FUNC1" :

SELECT id INTO v1 FROM t2 WHERE id = a1 FOR UPDATE;

*

ERROR at line 11:

ERROR at FUNCTION("FUNC1")


SELECT FUNC1( id ) FROM t2 ORDER BY id LIMIT 1

*

ERROR at line 1:

Action

아래와 같이 FOR UPDATE 를 제거하여 stored function 내에서 transaction 이 발생하지 않도록 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 INTEGER )

RETURN INTEGER

IS

v1 INTEGER;

BEGIN

SELECT id INTO v1 FROM t2 WHERE id = a1;

RETURN v1;

END;

/

Function created.


gSQL> SELECT FUNC1( id ) FROM t2 ORDER BY id LIMIT 1;


FUNC1( ID )

-----------

101

1 row selected.

17075 (SQLSTATE: 2F003): cannot commit or rollback transaction inside a query or DML in "%s"."%s"

Cause

DML 에서 사용하는 stored function 내에 COMMIT 또는 ROLLBACK 이 존재한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 INTEGER )

RETURN INTEGER

AS

BEGIN

DELETE FROM t2 WHERE id = a1;

COMMIT;

RETURN a1;

END;

/

Function created.


gSQL> INSERT INTO t2(id, name) VALUES ( func1(102), 'abcd' );


ERR-2F003(17075): cannot commit or rollback transaction inside a query or DML in "PUBLIC"."FUNC1" :

COMMIT;

*

ERROR at line 11:

ERROR at FUNCTION("FUNC1")


INSERT INTO t2(id, name) VALUES ( func1(102), 'abcd' )

*

ERROR at line 1:

Action

아래와 같이 stored function 내의 COMMIT 구문을 제거한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 INTEGER )

RETURN INTEGER

AS

BEGIN

DELETE FROM t2 WHERE id = a1;

--# COMMIT;

RETURN a1;

END;

/

Function created.


gSQL> INSERT INTO t2(id, name) VALUES ( func1(102), 'abcd' );

1 row created.

17076 (SQLSTATE: 2F000): application error "%s"

Cause

RAISE_APPLICATION_ERROR 사용이 잘못되었다.


gSQL>

BEGIN

RAISE_APPLICATION_ERROR( -10000, 'user-defined error' );

END;

/


ERR-2F000(17076): application error "Invalid Error Code" :

RAISE_APPLICATION_ERROR( -10000, 'user-defined error' );

*

ERROR at line 2:

ERROR at PROCEDURE("RAISE_APPLICATION_ERROR")

Action

아래와 같이 적절한 에러 코드 사용 시 원하는 동작을 확인할 수 있다.


gSQL>

BEGIN

RAISE_APPLICATION_ERROR( -20100, 'user-defined error' );

END;

/

ERR-2F000(20100): user-defined error

17077 (SQLSTATE: 2F000): the argument of collection type variable is not a constant expression

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17078 (SQLSTATE: 2F000): a function with OUT-Parameter not allowed in expression

Cause

OUT parameter 가 존재하는 stored function 은 DML 이나 SELECT 에서 사용할 수 없다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 OUT INTEGER )

RETURN INTEGER

IS

BEGIN

a1 := 1;

RETURN 1;

END;

/

Function created.


gSQL> SELECT func1( id ) FROM t2;


ERR-2F000(17078): a function with OUT-Parameter not allowed in expression :

SELECT func1( id ) FROM t2

*

ERROR at line 1:

Action

SELECT 나 DML 에서 OUT parameter 가 존재하는 stored function 을 사용하지 않는다.

17079 (SQLSTATE: 2F000): a nested function not allowed in executing SQL

Cause

nested function 은 SELECT 구문 등에서 사용할 수 없다.


gSQL>

DECLARE

v1 INTEGER;


FUNCTION f1 RETURN INTEGER

AS

BEGIN

RETURN 1;

END;


BEGIN

SELECT f1() INTO v1 FROM dual;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (11:12): ERR-2F000(17079): a nested function not allowed in executing SQL

Action

필요 시 stored function 을 생성하여 사용한다.


gSQL>

CREATE OR REPLACE FUNCTION f1 RETURN INTEGER

AS

BEGIN

RETURN 1;

END;

/

Function created.


gSQL>

DECLARE

v1 INTEGER;

BEGIN

SELECT f1() INTO v1 FROM dual;

END;

/


Anonymous PL block executed.

17080 (SQLSTATE: 2F002): cannot execute DML jobs inside a query

Cause

SELECT query 에서 사용하는 stored function 은 DML 을 수행할 수 없다.


gSQL>

CREATE OR REPLACE FUNCTION func1 RETURN INTEGER

AS

BEGIN

INSERT INTO t2(id, name) VALUES ( 102, 'leekmo' );

RETURN 1;

END;

/

Function created.


gSQL>

SELECT func1() FROM t2;


ERR-2F002(17080): cannot execute DML jobs inside a query :

INSERT INTO t2(id, name) VALUES ( 102, 'leekmo' );

*

ERROR at line 7:

ERROR at FUNCTION("FUNC1")


SELECT func1() FROM t2

*

ERROR at line 1:

Action

DML 을 포함하지 않는 stored function 을 사용한다.

17081 (SQLSTATE: 2F000): program body of the routine is not defined

Cause

routine body 가 정의되지 않았다.


gSQL>

DECLARE

PROCEDURE proc1;

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (2:3): ERR-2F000(17081): program body of the routine (PROC1) is not defined

Action

routine body 를 정의한다.


gSQL>

DECLARE

PROCEDURE proc1 AS

BEGIN

NULL;

END;

BEGIN

NULL;

END;

/


Anonymous PL block executed.

17082 (SQLSTATE: 2F000): bind parameter in target or return clause is not allowed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17083 (SQLSTATE: 2F000): Function "%s" returned without value

Cause

stored function 에 RETURN value 절이 존재하지 않는다.


gSQL>

CREATE OR REPLACE FUNCTION FUNC1

RETURN INTEGER

AS

v1 INTEGER := 1;

BEGIN

v1 := v1 + 1;

-- no return clause

END;

/

Function created.



gSQL>

SELECT FUNC1 FROM DUAL;


ERR-2F000(17083): Function "FUNC1" returned without value : ERROR at FUNCTION("FUNC1")


SELECT FUNC1 FROM DUAL

*

ERROR at line 1:

Action

아래와 같이 RETURN 절을 명시한다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN INTEGER

AS

v1 INTEGER := 1;

BEGIN

v1 := v1 + 1;

RETURN v1;

END;

/

Function created.


gSQL> SELECT func1 FROM dual;


FUNC1

-----

2

1 row selected.

17084 (SQLSTATE: 2F000): The argument "%s" of routine "%s" is invalid

Cause

유효하지 않은 parameter 값을 사용하였다.


gSQL>

BEGIN

DBMS_LOCK.SLEEP( NULL );

END;

/


ERR-2F000(17084): The argument "seconds" of routine "DBMS_LOCK.SLEEP" is invalid :

DBMS_LOCK.SLEEP( NULL );

*

ERROR at line 3:


DBMS_LOCK.SLEEP( NULL );

*

ERROR at line 3:

ERROR at PROCEDURE("SLEEP")

Action

아래와 같이 적합한 값을 입력한다.


gSQL>

BEGIN

DBMS_LOCK.SLEEP( 1 );

END;

/


Anonymous PL block executed.

17085 (SQLSTATE: 2F000): a cursor (%s) already defined in package spec

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17086 (SQLSTATE: 2F000): a cursor or routine (%s) declared in spec must be defined in package body

Cause

package spec 에 선언한 routine 이 package body 에 정의되지 않았다.


gSQL>

CREATE OR REPLACE PACKAGE pkg1

IS

FUNCTION func1 ( a1 INTEGER ) RETURN INTEGER;

PROCEDURE proc1 ( a1 INTEGER );

END;

/

Package created.


gSQL>

CREATE OR REPLACE PACKAGE BODY pkg1

IS

FUNCTION func1 ( a1 INTEGER ) RETURN INTEGER

IS

BEGIN

RETURN 1;

END;

END;

/


ERR-2F000(17102): PACKAGE(PKG1) Body has compilation errors :

(1) at (1:32): ERR-2F000(17086): a cursor or routine (PROC1) declared in spec must be defined in package body

Package created.

Action

아래와 같이 package spec 에서 선언한 procedure 를 정의한다.


gSQL>

CREATE OR REPLACE PACKAGE BODY pkg1

IS

FUNCTION func1 ( a1 INTEGER ) RETURN INTEGER

AS

BEGIN

RETURN 1;

END;


PROCEDURE proc1( a1 INTEGER )

IS

BEGIN

NULL;

END;

END;

/


Package created.

17087 (SQLSTATE: 2F000): existing state of package has been discarded

Cause

사용 중이던 package instance 의 정의가 변경되었다.


gSQL>

CREATE OR REPLACE PACKAGE pkg2

IS

v1 INTEGER := 0;

PROCEDURE proc1;

END;

/

Package created.


gSQL>

CREATE OR REPLACE PACKAGE BODY pkg2

IS

PROCEDURE proc1

IS

BEGIN

EXECUTE IMMEDIATE 'DROP PACKAGE pkg2';

COMMIT;

END;

END;

/

Package created.


gSQL>

BEGIN

pkg2.v1 := 10;

pkg2.proc1;

pkg2.v1 := 10;

END;

/


ERR-2F000(17087): existing state of package (PKG2) has been discarded

Action

package 사용 중에 package 관련 DDL 을 수행하지 않는다.

17088 (SQLSTATE: 2F000): invalid package object status

Cause

package 사용 중 package 상태가 변경되었다.


gSQL>

CREATE OR REPLACE PACKAGE pkg3

AS

x1 INTEGER := 1;

PROCEDURE procAdd;

END;

/

Package created.


gSQL>

CREATE OR REPLACE PACKAGE BODY pkg3

IS

PROCEDURE procAdd

IS

BEGIN

x1 := x1 + x1;

END;

END;

/

Package created.


gSQL>

BEGIN

EXECUTE IMMEDIATE 'ALTER PACKAGE pkg3 COMPILE';

COMMIT;


pkg3.procAdd();

DBMS_OUTPUT.PUT_LINE( 'PKG3.X1 = ' || pkg3.x1 );

END;

/


ERR-2F000(17088): invalid package (PKG3) object status :

DBMS_OUTPUT.PUT_LINE( 'PKG3.X1 = ' || pkg3.x1 );

*

ERROR at line 6:

Action

package 사용 중에 package 관련 DDL 을 수행하지 않는다.

17089 (SQLSTATE: 2F000): cannot drop packages in use

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17090 (SQLSTATE: 2F000): Cursor Variables cannot be declared as part of a package

Cause

cursor variable 을 package spec 에 선언할 수 없다.


gSQL>

CREATE OR REPLACE PACKAGE PKG1

IS

cur1 SYS_REFCURSOR;

END;

/


ERR-2F000(17101): PACKAGE(PKG1) Specification has compilation errors :

(1) at (3:5): ERR-2F000(17090): Cursor Variables cannot be declared as part of a package

Package created.

Action

cursor variable 을 package spec 에 선언할 수 없다.

17091 (SQLSTATE: 2F000): cannot perform nested updatable statements on cluster database

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17092 (SQLSTATE: 2F000): invalid package name

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17093 (SQLSTATE: 2F000): unsupported element data type

Cause

associative array 의 element 로 array 를 사용할 수 없다.


gSQL>

DECLARE

TYPE arr1 IS TABLE OF NUMBER INDEX BY VARCHAR(10);

TYPE arr2 IS TABLE OF arr1 INDEX BY VARCHAR(10);

BEGIN

NULL;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (3:27): ERR-2F000(17093): unsupported element data type

Action

associative array 의 element 로 record 나 scalar 를 사용한다.

17094 (SQLSTATE: 2F000): IN cursor cannot be opened

Cause

IN parameter 로 사용한 cursor 는 OPEN 할 수 없다.


gSQL>

DECLARE

TYPE cursor_type IS REF CURSOR RETURN t1%ROWTYPE;

v_cur cursor_type;

v_row t1%ROWTYPE;

PROCEDURE proc1( a_cur IN cursor_type )

IS

BEGIN

OPEN a_cur FOR SELECT * FROM t1;

END;

BEGIN

proc1( v_cur );

FETCH v_cur INTO v_row;

CLOSE v_cur;

END;

/


ERR-2F000(17094): IN cursor cannot be opened :

OPEN a_cur FOR SELECT * FROM t1;

*

ERROR at line 9:

Action

OPEN 구문을 위한 cursor parameter 는 아래와 같이 OUT parameter 로 정의해야 한다.


gSQL>

DECLARE

TYPE cursor_type IS REF CURSOR RETURN t1%ROWTYPE;

v_cur cursor_type;

v_row t1%ROWTYPE;

PROCEDURE proc1( a_cur OUT cursor_type )

IS

BEGIN

OPEN a_cur FOR SELECT * FROM t1;

END;

BEGIN

proc1( v_cur );

FETCH v_cur INTO v_row;

CLOSE v_cur;

END;

/


Anonymous PL block executed.

17095 (SQLSTATE: 2F000): mismatch parameter count of routine(%s)

Cause

routine 실행 중에 procedure 의 parameter 개수가 변경되었다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1( a1 OUT INTEGER )

AS

BEGIN

a1 := 1;

END;

/

Procedure created.


gSQL>

DECLARE

v1 INTEGER;

BEGIN

proc1( v1 );

EXECUTE IMMEDIATE 'CREATE OR REPLACE PROCEDURE proc1( ) ' ||

'AS ' ||

'BEGIN ' ||

' NULL; ' ||

'END; ';


proc1( v1 );

END;

/


ERR-2F000(17095): mismatch parameter count of routine(PROC1) :

proc1( v1 );

*

ERROR at line 11:

ERROR at PROCEDURE("PROC1")

Action

routine 실행 중에 procedure 의 정의를 변경하지 않는다.

17096 (SQLSTATE: 2F000): mismatch parameter type of routine(%s)

Cause

routine 실행 중에 routine 의 parameter type 이 변경되었다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1( p1 OUT SYS_REFCURSOR ) AS

BEGIN

OPEN p1 FOR SELECT 1 FROM DUAL;

END;

/

Procedure created.


gSQL>

DECLARE

ref1 SYS_REFCURSOR;

v1 INTEGER;

BEGIN

EXECUTE IMMEDIATE 'CREATE OR REPLACE PROCEDURE proc1(p1 OUT INTEGER) AS BEGIN p1 := 1; END;';

proc1(ref1);

END;

/


ERR-2F000(17096): mismatch parameter type of routine(PROC1) :

proc1(ref1);

*

ERROR at line 6:

ERROR at PROCEDURE("PROC1")

Action

routine 실행 중에 routine 의 정의를 변경하지 않는다.

17097 (SQLSTATE: 2F000): mismatch return type of function(%s)

Cause

routine 실행 중에 stored function 의 return type 이 변경되었다.


gSQL>

CREATE OR REPLACE FUNCTION func3

RETURN INTEGER

IS

BEGIN

RETURN 0;

END;

/

Function created.


gSQL>

CREATE OR REPLACE PROCEDURE proc3

IS

v1 INTEGER;

v2 VARCHAR(1024);

BEGIN

v2 := 'CREATE OR REPLACE FUNCTION func3 ' ||

'RETURN TABLE( c1 INTEGER, c2 INTEGER ) ' ||

'AS ' ||

'BEGIN ' ||

'RETURN TABLE( SELECT c1, c2 FROM t1 ); ' ||

'END;';


EXECUTE IMMEDIATE v2;


v1 := func3;

end;

/

Procedure created.


gSQL> call proc3;


ERR-2F000(17097): mismatch return type of function(FUNC3) :

v1 := func3;

*

ERROR at line 14:


call proc3

*

ERROR at line 1:

ERROR at PROCEDURE("PROC3")

Action

routine 실행 중에 stored function 의 정의를 변경하지 않는다.

17098 (SQLSTATE: 2F000): mismatch record field count of routine(%s)

Cause

routine 실행 중에 record 타입의 field 개수가 변경되었다.


gSQL>

CREATE OR REPLACE FUNCTION func1( a1 t1%ROWTYPE ) RETURN INTEGER

AS

BEGIN

RETURN a1.c1;

END;

/

Function created.


gSQL>

DECLARE

v1 INTEGER;

v2 t1%ROWTYPE;

BEGIN

SELECT * INTO v2 FROM t1 LIMIT 1;

v1 := func1(v2);


EXECUTE IMMEDIATE 'ALTER TABLE t1 ADD COLUMN ( c3 VARCHAR(10) )';


v1 := func1(v2);

END;

/


ERR-2F000(17098): mismatch record field count of routine(FUNC1) : ERROR at FUNCTION("FUNC1")


v1 := func1(v2);

*

ERROR at line 10:

Action

routine 실행 중에 record type 의 정의를 변경하지 않는다.

17099 (SQLSTATE: 2F000): cycle detected when initialize package instance(%s)

Cause

패키지의 공용 변수 간에 상호 참조가 존재한다.


gSQL>

CREATE OR REPLACE PACKAGE pkg1

AS

x INTEGER := pkg2.y + 1;

END;

/


ERR-2F000(17101): PACKAGE(PKG1) Specification has compilation errors :

(1) at (3:18): ERR-42000(16036): 'PKG2.Y': invalid identifier

Package created.


gSQL>

CREATE OR REPLACE PACKAGE pkg2

AS

y INTEGER := pkg1.x + 1;

END;

/


ERR-2F000(17101): PACKAGE(PKG2) Specification has compilation errors :

(1) at (3:14): ERR-42000(16036): 'PKG2.Y': invalid identifier

Package created.


gSQL>

CREATE OR REPLACE PACKAGE pkg1

AS

x INTEGER := pkg2.y + 1;

END;

/


ERR-2F000(17101): PACKAGE(PKG1) Specification has compilation errors :

(1) at (3:14): ERR-2F000(17099): cycle detected when initialize package instance(PKG1)

Package created.

Action

패키지 공용 변수 초기화 시 상호 참조로 인한 순환 의존성이 발생하지 않도록 주의해야 한다.

17100 (SQLSTATE: 2F000): PSM(%s) compilation error

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17101 (SQLSTATE: 2F000): PACKAGE(%s) Specification has compilation errors

Cause

package specification 에 compile error 가 존재한다.


gSQL>

CREATE OR REPLACE PACKAGE pkg1 AS

v1 invalid%ROWTYPE;

END;

/


ERR-2F000(17101): PACKAGE(PKG1) Specification has compilation errors :

(1) at (2:7): ERR-2F000(17012): unknown type name

Package created.

Action

관련 compile error 를 수정한다.


gSQL>

CREATE OR REPLACE PACKAGE pkg1 AS

v1 t1%ROWTYPE;

END;

/


Package created.

17102 (SQLSTATE: 2F000): PACKAGE(%s) Body has compilation errors

Cause

package body 에 compile error 가 존재한다.


gSQL>

CREATE OR REPLACE PACKAGE pkg1

AS

v1 INTEGER;

PROCEDURE proc1;

END;

/

Package created.


gSQL>

CREATE OR REPLACE PACKAGE BODY pkg1

AS

PROCEDURE proc1

AS

BEGIN

pkg1.invalid := 1;

END;

END;

/


ERR-2F000(17102): PACKAGE(PKG1) Body has compilation errors :

(1) at (6:12): ERR-42000(16036): 'INVALID': invalid identifier

Package created.

Action

관련 compile error 를 수정한다.


gSQL>

CREATE OR REPLACE PACKAGE BODY pkg1

AS

PROCEDURE proc1

AS

BEGIN

pkg1.v1 := 1;

END;

END;

/


Package created.

17103 (SQLSTATE: 2F000): cannot use function in the same package

Cause

package specification 에서 변수 초기화 시 동일한 package 의 function 을 사용할 수 없다.


gSQL>

CREATE OR REPLACE PACKAGE pkg3

AS

FUNCTION func1 RETURN INTEGER;

v1 INTEGER := func1;

END;

/


ERR-2F000(17101): PACKAGE(PKG3) Specification has compilation errors :

(1) at (4:19): ERR-2F000(17103): cannot use function in the same package

Package created.

Action

package specification 에서 변수 초기화 시 상수나 다른 function 을 사용한다.


gSQL>

CREATE OR REPLACE PACKAGE pkg3

AS

FUNCTION func1 RETURN INTEGER;

v1 INTEGER := 0;

END;

/


Package created.

17104 (SQLSTATE: 2F000): invalid REFCURSOR handle

Cause

Client 에서 전달한 REFCURSOR 정보가 유효하지 않다.

Action

Client 에서 REFCURSOR 정보를 강제로 변경했는지 확인한다.

17105 (SQLSTATE: 2F000): invalid REFCURSOR binding

Cause

REFCURSOR parameter 를 사용해야 한다.


gSQL>

CREATE OR REPLACE PROCEDURE PROC1( A1 IN OUT SYS_REFCURSOR )

IS

BEGIN

NULL;

END;

/

Procedure created.


gSQL> \var V1 INTEGER;


gSQL> CALL PROC1( :v1 );


ERR-2F000(17105): invalid REFCURSOR binding :

CALL PROC1( :v1 )

*

ERROR at line 1:

Action

Host variable 이 REFCURSOR 인지 확인한다.


gSQL> \var v_cur REFCURSOR


gSQL>

BEGIN

OPEN :v_cur FOR SELECT * FROM t1 ORDER BY c1;

END;

/


Anonymous PL block executed.


gSQL>

CALL proc1( :v_cur );


Procedure Call complete.

17106 (SQLSTATE: 2F000): unknown field name (%s)

Cause

존재하지 않는 record field 이름을 사용하였다.


gSQL>

DECLARE

v1 t1%ROWTYPE;

BEGIN

v1.c1 := 1;

v1.invalid := 1;

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (5:8): ERR-2F000(17106): unknown field name (INVALID)

Action

존재하는 field 이름을 사용한다.


gSQL>

DECLARE

v1 t1%ROWTYPE;

BEGIN

v1.c1 := 1;

v1.c2 := 1;

END;

/


Anonymous PL block executed.

17107 (SQLSTATE: 2F000): only cursor variable allowed

Cause

DBMS_SQL.RETURN_RESULT 함수의 인자로 host variable 을 사용할 수 없다.


gSQL> \var v_refcur refcursor;


gSQL>

BEGIN

OPEN :v_refcur FOR SELECT id FROM t2;

DBMS_SQL.RETURN_RESULT( :v_refcur );

END;

/


ERR-2F000(17107): only cursor variable allowed :

DBMS_SQL.RETURN_RESULT( :v_refcur );

*

ERROR at line 3:


DBMS_SQL.RETURN_RESULT( :v_refcur );

*

ERROR at line 3:

ERROR at PROCEDURE("RETURN_RESULT")

Action

아래와 같이 cursor variable 을 사용해야 한다.


gSQL>

DECLARE

v_refcur SYS_REFCURSOR;

BEGIN

OPEN v_refcur FOR SELECT id FROM t2;

DBMS_SQL.RETURN_RESULT( v_refcur );

END;

/


Anonymous PL block executed.


ResultSet #1


ID

---

101

102

17108 (SQLSTATE: 2F000): Implicit result cannot be returned through this statement

Cause

DBMS_SQL.RETURN_RESULT 를 포함한 stored function 은 SELECT 등의 구문에서 사용할 수 없다.


gSQL>

CREATE OR REPLACE FUNCTION func1 RETURN INTEGER

AS

v_cur SYS_REFCURSOR;

BEGIN

OPEN v_cur FOR SELECT id FROM t2;

DBMS_SQL.RETURN_RESULT( v_cur );

RETURN 1;

END;

/

Function created.


gSQL> select func1 from dual;


ERR-2F000(17108): Implicit result cannot be returned through this statement :

DBMS_SQL.RETURN_RESULT( v_cur );

*

ERROR at line 6:

ERROR at PROCEDURE("RETURN_RESULT")


select func1 from dual

*

ERROR at line 1:

Action

아래와 같이 REFCURSOR 를 client 에 전달하기 위한 용도로 사용한다.


gSQL> var v1 INTEGER;

gSQL> CALL func1() INTO :v1;


Procedure Call complete.


ResultSet #1


ID

---

101

102

17109 (SQLSTATE: 2F000): table function need return table statement

Cause

table function 은 RETURN TABLE 구문을 포함해야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE( id INTEGER )

IS

BEGIN

NULL;

END;

/

Function created.


gSQL> SELECT * FROM TABLE( func1() );


ERR-2F000(17109): table function need return table statement :

SELECT * FROM TABLE( func1() )

*

ERROR at line 1:

ERROR at FUNCTION("FUNC1")


SELECT * FROM TABLE( func1() )

*

ERROR at line 1:

Action

아래와 같이 RETURN TABLE 구문을 사용해야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE( id INTEGER )

IS

BEGIN

RETURN TABLE ( SELECT id FROM t2 );

END;

/

Function created.


gSQL> SELECT * FROM TABLE( func1() );

ID

---

101

102


2 rows selected.

17110 (SQLSTATE: 2F000): return table statement not allowed

Cause

RETURN TABLE 구문을 기술할 수 없다.


gSQL>

BEGIN

RETURN TABLE ( SELECT id, name FROM t2 );

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (2:5): ERR-2F000(17110): return table statement not allowed

Action

RETURN TABLE 구문은 아래와 같이 table function 생성 시 기술해야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE ( a1 INTEGER, a2 VARCHAR(32) )

IS

BEGIN

RETURN TABLE( SELECT id, name FROM t2 );

END;

/


Function created.

17111 (SQLSTATE: 2F000): only select statement allowed

Cause

RETURN TABLE 절에는 SELECT FOR UPDATE 구문을 기술할 수 없다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE( id INTEGER, name VARCHAR(32) )

IS

BEGIN

RETURN TABLE ( SELECT id, name FROM t2 FOR UPDATE );

END;

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (5:18): ERR-2F000(17111): only select statement allowed

Function created.

Action

아래와 같이 FOR UPDATE 가 없는 SELECT 구문만 기술할 수 있다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE( id INTEGER, name VARCHAR(32) )

IS

BEGIN

RETURN TABLE ( SELECT id, name FROM t2 );

END;

/


Function created.

17112 (SQLSTATE: 2F000): mismatch field count of function table(%s)

Cause

RETURN TABLE 절의 field 개수와 SELECT 구문의 field 개수가 다르다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE( id INTEGER, name VARCHAR(32), value INTEGER )

IS

BEGIN

RETURN TABLE ( SELECT id, name FROM t2 );

END;

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (5:20): ERR-2F000(17112): mismatch field count of function table(FUNC1)

Function created.

Action

아래와 같이 RETURN TABLE 절의 field 개수와 SELECT 구문의 field 개수를 일치시킨다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE( id INTEGER, name VARCHAR(32) )

IS

BEGIN

RETURN TABLE ( SELECT id, name FROM t2 );

END;

/


Function created.

17113 (SQLSTATE: 2F000): cursor that have never fetched is allowed

Cause

fetch 중인 cursor 를 RETURN TABLE 의 인자로 사용할 수 없다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE ( id INTEGER, name VARCHAR(32) )

IS

cur1 SYS_REFCURSOR;

v1 t2%ROWTYPE;

BEGIN

OPEN cur1 FOR SELECT * FROM t2;

FETCH cur1 INTO v1;

RETURN TABLE ( cur1 );

END;

/

Function created.


gSQL> SELECT * FROM TABLE ( func1() );


ERR-2F000(17113): only cursor that have never fetched is allowed :

RETURN TABLE ( cur1 );

*

ERROR at line 8:

ERROR at FUNCTION("FUNC1")


SELECT * FROM TABLE ( func1() )

*

ERROR at line 1:

Action

아래와 같이 FETCH 절을 제거한다.


gSQL>

CREATE OR REPLACE FUNCTION func1

RETURN TABLE ( id INTEGER, name VARCHAR(32) )

IS

cur1 SYS_REFCURSOR;

v1 t2%ROWTYPE;

BEGIN

OPEN cur1 FOR SELECT * FROM t2;

-- FETCH cur1 INTO v1;

RETURN TABLE ( cur1 );

END;

/

Function created.


gSQL> SELECT * FROM TABLE ( func1() );


ID NAME

--- ----------

101 SUNJESOFT

102 GOLDILOCKS


2 rows selected.

17114(SQLSTATE: 39000) function symbol not found for built-in package routine \"%s\".\"%s\"

Cause

지원하는 built-in package routine을 찾을 수 없다.


gSQL>

CREATE OR REPLACE PACKAGE BUILTIN_PACKAGE_SCHEMA.DBMS_LOCK

AUTHID CURRENT_USER

AS

FUNCTION CONVERT( id IN INTEGER, lockhandle in varchar, lockmode in integer, timeout in number )

RETURN INTEGER

NOT DETERMINISTIC

MODIFIES SQL DATA

AS

LANGUAGE C

LIBRARY INTERNAL;

END;

/


ERR-2F000(17101): PACKAGE(DBMS_LOCK) Specification has compilation errors :

(1) : ERR-39000(17114): function symbol not found for built-in package routine "DBMS_LOCK"."CONVERT"

Package created.

Action

사용하고자 하는 built-in package routine의 정의를 확인하고 올바르게 입력한다.

17115(SQLSTATE: 38000) mismatch parameter for built-in package routine \"%s\".\"%s\"

Cause

built-in package routine의 parameter 정보와 사용자가 재생성한 parameter 정보가 일치하지 않는다.


gSQL>

CREATE OR REPLACE PACKAGE BUILTIN_PACKAGE_SCHEMA.DBMS_LOCK

AUTHID CURRENT_USER

AS

PROCEDURE SLEEP( seconds IN NATIVE_SMALLINT )

NOT DETERMINISTIC

MODIFIES SQL DATA

AS

LANGUAGE C

LIBRARY INTERNAL;

END;

/

Package created.


gSQL>

BEGIN

DBMS_LOCK.SLEEP(1);

END;

/


ERR-38000(17115): mismatch parameter for built-in package routine "DBMS_LOCK"."SLEEP" :

DBMS_LOCK.SLEEP(1);

*

ERROR at line 2:


DBMS_LOCK.SLEEP(1);

*

ERROR at line 2:

ERROR at PROCEDURE("SLEEP")

Action

사용하고자 하는 built-in package routine의 parameter 정보를 확인하고 올바르게 입력한다.

17116(SQLSTATE: 38000) built-in package routine is not allowed

Cause

built-in package routine 정의를 package specification 이외의 block에서는 허용하지 않는다.


gSQL>

CREATE OR REPLACE PACKAGE BUILTIN_PACKAGE_SCHEMA.DBMS_LOCK

AUTHID CURRENT_USER

AS

PROCEDURE SLEEP( seconds IN NATIVE_INTEGER );

END;

/

Package created.


gSQL>

CREATE OR REPLACE PACKAGE BODY BUILTIN_PACKAGE_SCHEMA.DBMS_LOCK

IS

PROCEDURE SLEEP( seconds IN NATIVE_INTEGER )

NOT DETERMINISTIC

MODIFIES SQL DATA

AS

LANGUAGE C

LIBRARY INTERNAL;

END;

/


ERR-2F000(17102): PACKAGE(DBMS_LOCK) Body has compilation errors :

(1) at (3:15): ERR-38000(17116): built-in package routine is not allowed

Package created.

Action

built-in package routine 정의를 package specification 에 정의한다.

17117(SQLSTATE: 38000) invalid WITH CONTEXT Syntax

Cause

CONTEXT가 WITH CONTEXT 또는 Parameter 절에서 유효하지 않게 사용되었다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFuncWithCTX"

PARAMETERS( CONTEXT,

p1 INT,

p2 INT,

RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (1:1): ERR-38000(17117): invalid WITH CONTEXT Syntax

Function created.

Action

PARAMETERS 절에 CONTEXT를 지정하지 않고 WITH CONTEXT가 사용되었는지, 아니면 그 반대인지 확인한다. 따라서 WITH CONTEXT가 지정되었다면 CONTEXT는 PARAMETERS 절에서 참조되어야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFuncWithCTX"

WITH CONTEXT

PARAMETERS( CONTEXT,

p1 INT,

p2 INT,

RETURN INT );

/


Function created.

17118(SQLSTATE: 38000) external parameter name(%s) not found in formal parameter list

Cause

Routine의 Formal Parameter 및 RETURN은 PARAMETERS 절에 모두 참조되어야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

p3 INT,

RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (8:13): ERR-38000(17118): external parameter name(P3) not found in formal parameter list

Function created.

Action

Routine의 Formal Parameter 및 RETURN이 PARAMETERS 절에서 빠져있는지 확인한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/


Function created.

17119(SQLSTATE: 38000) invalid external parameter datatype specification

Cause

Formal Parameter의 datatype과 External Parameter의 datatype이 호환되지 않는다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 FLOAT,

p2 INT,

RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (6:13): ERR-38000(17119): invalid external parameter datatype specification

Function created.

Action

formal parameter의 datatype과 호환되는 external parameter의 datatype으로 설정한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/


Function created.

17120(SQLSTATE: 38000) incorrect Usage of %s in external parameters clause

Cause

Parameters 절에 사용한 LENGTH , MAXLEN , BY REFERENCE 및 RETURN 등의 키워드 사용법이 올바르지 않다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p1 LENGTH SHORT,

p2 INT,

RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (7:13): ERR-38000(17120): incorrect Usage of LENGTH in external parameters clause

Function created.

Action

LENGTH , MAXLEN , BY REFERENCE 및 RETURN 등과 같은 키워드는 Routine의 Formal Parameter 나 Formal Parameter의 bind type에 따라 사용할 수 없는 경우가 있다.

예를 들어, LENGTH , MAXLEN 는 CHAR , VARCHAR , BINARY , VARBINARY 등과 같은 datatype에 대해서만 선언할 수 있다. MAXLEN은 IN type parameter에서는 사용할 수 없다.

매뉴얼을 참고하여 올바르게 사용한다.

17121(SQLSTATE: 38000) multiple declarations in foreign function formal parameter list

Cause

formal parameter, INDICATOR, LENGTH, MAXLEN, CONTEXT 중 하나 이상이 중복으로 선언되었다.

PARAMETERS 절의 각 formal parameter에 대해 위의 선언을 각각 하나만 허용한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p1 INT,

p2 INT,

RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (1:1): ERR-38000(17121): multiple declarations in foreign function formal parameter list

Function created.

Action

Parameters 절을 중복되는 선언없이 다시 정정한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/


Function created.

17122(SQLSTATE: 38000) external datatype corresponding to formal parameter(%s) datatype is not supported

Cause

Record, Associate Array, Ref Cursor와 같은 user-defined type에 대해서는 external datatype이 지원되지 않는다.

따라서, formal parameter의 datatype이 위와 같은 datatype인 경우 대응되는 external parameter의 datatype이 없다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 SYS_REFCURSOR )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (2:67): ERR-38000(17122): external datatype corresponding to formal parameter(P2) datatype is not supported

Function created.

Action

external routine인 경우, formal parameter의 datatype은 built-in datatype이어야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/


Function created.

17123(38000) formal parameter(%s) missing in the external parameters clause

Cause

PARAMETERS 절에 formal parameter와 대응되는 parameter가 없다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

RETURN INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (1:1): ERR-38000(17123): formal parameter(P2) missing in the external parameters clause

Function created.

Action

Formal Parameter를 확인 후 PARAMETERS 절을 올바르게 선언한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/


Function created.

17124(SQLSTATE: 38000) RETURN missing in the external parameters clause

Cause

PARAMETERS 절에서 RETURN에 대한 선언이 누락되었다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER ,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (1:1): ERR-38000(17124): RETURN missing in the external parameters clause

Function created.

Action

PARAMETERS 절에 RETURN 정보를 추가한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER ,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/


Function created.

17125(SQLSTATE: 38000) RETURN, for actual function return, must be last in the parameters clause

Cause

RETURN이 PARAMETERS 절의 처음이나 중간에 선언되었다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER ,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( RETURN INT,

p1 INT,

p2 INT );

/


ERR-01000(16409): Warning: Routine(FUNC1) has compilation errors :

(1) at (4:13): ERR-38000(17125): RETURN, for actual function return, must be last in the parameters clause

Function created.

Action

RETURN은 PARAMETERS 절의 마지막에 선언해야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER ,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/


Function created.

17126(SQLSTATE: 38000) external C function parameter name is too long

Cause

external parameter 이름은 아래와 같이 구성된다.

* property 없을 경우, formal parameter와 동일

* property 있을 경우, 아래와 같이 구성

* <formal_parameter_name>_INDICATOR

* <formal_parameter_name>_LENGTH

* <formal_parameter_name>_MAXLEN


위와 같이 구성된 external parameter 이름이 128 byte 를 넘는다.

Action

external parameter 이름은 128 byte 이내여야 한다.

17127(SQLSTATE: 39000) fetched column value is NULL

Cause

FETCH 된 data에 NULL이 포함되어 있으며 INDICATOR 속성이 사용되지 않았다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p2 INT,

RETURN INT );

/

Function created.


gSQL> INSERT INTO t1( c1, c2 ) values ( 100, null );

1 row created.


gSQL> SELECT func1( c1 , c2 ) FROM t1 where c1 = 100;


ERR-39000(17127): fetched column value is NULL :

SELECT func1( c1 , c2 ) FROM t1 where c1 = 100

*

ERROR at line 1:

ERROR at FUNCTION("FUNC1")

Action

INDICATOR 속성을 추가하거나, NVL 함수를 사용하여 NULL을 0이나 공백과 같은 다른 값으로 치환한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 NATIVE_INTEGER,

p2 NATIVE_INTEGER )

RETURN NATIVE_INTEGER AS

LANGUAGE C

LIBRARY lib NAME "addFunc"

PARAMETERS( p1 INT,

p1 INDICATOR SHORT,

p2 INT,

p2 INDICATOR SHORT,

RETURN INDICATOR SHORT,

RETURN INT );

/

Function created.


gSQL> SELECT func1( c1 , c2 ) FROM t1 where c1 = 100;

FUNC1( C1 , C2 )

----------------

null


1 row selected.

17128(SQLSTATE: 38000) SQL_LONG_VARIABLE_TYPE always requires WITH CONTEXT option

Cause

PARAMETERS 절에 external datatype이 SQL_LONG_VARIABLE_TYPE이라면 CONTEXT 가 필요하다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1( p1 OUT LONG VARCHAR ) AS

LANGUAGE C

LIBRARY lib NAME "func_longvarchar"

PARAMETERS( p1 SQL_LONG_VARIABLE_LENGTH );

/


ERR-01000(16409): Warning: Routine(PROC1) has compilation errors :

(1) at (4:16): ERR-38000(17128): SQL_LONG_VARIABLE_TYPE always requires WITH CONTEXT option

Procedure created.

Action

WITH CONTEXT를 명시한 후 PARAMETER 절에 CONTEXT를 추가한다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1( p1 OUT LONG VARCHAR ) AS

LANGUAGE C

LIBRARY lib NAME "func_longvarchar"

WITH CONTEXT

PARAMETERS( CONTEXT,

p1 SQL_LONG_VARIABLE_LENGTH );

/


Procedure created.

17129(SQLSTATE: 39000) Invalid "%s" directory

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17130(SQLSTATE: 2F000) routine sql data access indicator violated

Cause

Routine의 SQL-Data Access Indicator에 위반하는 pl statement이다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1 CONTAINS SQL AS

var1 INTEGER;

BEGIN

SELECT c1 INTO var1 FROM t1;

END;

/


ERR-01000(16409): Warning: Routine(PROC1) has compilation errors :

(1) at (4:3): ERR-2F000(17130): routine sql data access indicator violated

Procedure created.

Action

Routine의 SQL-Data Access Indicator에 맞게 실행 가능한 PL statement를 작성한다.


gSQL>

CREATE OR REPLACE PROCEDURE proc1 CONTAINS SQL AS

var1 INTEGER;

BEGIN

var1 := 1;

END;

/


Procedure created.

17131(SQLSTATE: 2F000) no choices may appear with choice OTHERS in an exception handler

Cause

EXCEPTION WHEN 절에서 OTHERS handler와 다른 exception handler를 같이 묶어 사용할 수 없다.


gSQL>

DECLARE

e1 EXCEPTION;

BEGIN

RAISE e1;

EXCEPTION WHEN e1 OR OTHERS THEN

DBMS_OUTPUT.PUT_LINE( 'exception variable OR others' );

END;

/


ERR-2F000(17032): PSM compilation error :

(1) at (5:22): ERR-2F000(17131): no choices may appear with choice OTHERS in an exception handler

Action

OTHERS handler와 같이 사용한 exception handler를 제외하거나, 별도의 exception handler로 구성해야 한다.


DECLARE

e1 EXCEPTION;

BEGIN

RAISE e1;

EXCEPTION WHEN e1 THEN

DBMS_OUTPUT.PUT_LINE( 'exception variable' );

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE( 'OR others' );

END;

/


Anonymous PL block executed.

17132 (SQLSTATE: OW000): cannot execute in a trigger (%s)

Cause

트리거 바디에 DDL 또는 DCL 구문이 기술되었다.


gSQL> CREATE OR REPLACE TRIGGER tri1

AFTER INSERT ON t1

BEGIN

EXECUTE IMMEDIATE 'CREATE TABLE t2 ( c1 INTEGER , c2 INTEGER )';

END;

/

Trigger created.


gSQL> INSERT INTO t1( c1, c2 ) VALUES( 1, 1 );

ERR-0W000(17132): cannot execute in a trigger (CREATE TABLE t2 ( c1 INTEGER , c2 INTEGER )) :

EXECUTE IMMEDIATE 'CREATE TABLE t2 ( c1 INTEGER , c2 INTEGER )';

*

ERROR at line 4:

ERROR at TRIGGER("TRI1")

Action

트리거 바디에는 DDL 이나 DCL 구문을 기술할 수 없다.

17133 (SQLSTATE: OW000): cannot insert into a generated always identity column (%s.%s)

Cause

트리거 바디에 IDENTITY 속성을 가진 column이 기술되어 있다.


gSQL> CREATE OR REPLACE TRIGGER tri3

BEFORE UPDATE ON t3

REFERENCING NEW ROW AS n_row

FOR EACH ROW

BEGIN

n_row.c1 := 100;

END;

/

ERR-01000(16659): Warning: trigger "PUBLIC"."TRI1" has compilation errors :

(1) : ERR-0W000(17133): cannot insert into a generated always identity column (N_ROW.C1)

Trigger created.

Action

해당 column의 IDENTITY 속성을 삭제하여 트리거를 활성화한다.


gSQL> ALTER TABLE t3 ALTER COlUMN c1 DROP IDENTITY;

Table altered.


gSQL> CREATE OR REPLACE TRIGGER tri3

BEFORE UPDATE ON t3

REFERENCING NEW ROW AS n_row

FOR EACH ROW

BEGIN

n_row.c1 := 100;

END;

/

Trigger created.

17134 (SQLSTATE: OW000): TRIGGER(%s) compilation error

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17135 (SQLSTATE: 2F002): modifying SQL-data not permitted

Cause

Routine의 SQL-Data Access Indicator를 위반한 PL statement이다.


gSQL> CREATE OR REPLACE PROCEDURE proc_callee MODIFIES SQL DATA AS

BEGIN

DBMS_OUTPUT.PUT_LINE( 'success' );

END;

/

Procedure created.


gSQL> CREATE OR REPLACE PROCEDURE proc_caller READS SQL DATA AS

BEGIN

proc_callee;

END;

/

ERR-01000(16409): Warning: Routine(PROC_CALLER) has compilation errors :

(1) at (3:3): ERR-2F002(17135): modifying SQL-data not permitted

Procedure created.

Action

Routine의 SQL-Data Access Indicator에 맞게 실행 가능한 PL statement를 작성한다.


gSQL> CREATE OR REPLACE PROCEDURE proc_caller MODIFIES SQL DATA AS

BEGIN

proc_callee;

END;

/

Procedure created.

17136 (SQLSTATE: 2F003): prohibited SQL-statement attempted

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

17137 (SQLSTATE: 2F004): reading SQL-data not permitted

Cause

Routine의 SQL-Data Access Indicator를 위반한 PL statement이다.


gSQL> CREATE OR REPLACE FUNCTION func_readssqldata RETURN INTEGER READS SQL DATA AS

BEGIN

RETURN 20;

END;

/

Function created.


gSQL> CREATE OR REPLACE PROCEDURE proc1 CONTAINS SQL AS

var1 INTEGER;

BEGIN

var1 := func_readssqldata;

END;

/

ERR-01000(16409): Warning: Routine(PROC1) has compilation errors :

(1) at (4:11): ERR-2F004(17137): reading SQL-data not permitted

Procedure created.

Action

Routine의 SQL-Data Access Indicator에 맞게 실행 가능한 PL statement를 작성한다.


gSQL> CREATE OR REPLACE PROCEDURE proc1 READS SQL DATA AS

var1 INTEGER;

BEGIN

var1 := func_readssqldata;

END;

/

Procedure created.

17138 (SQLSTATE: 2F000): package variables are available only within PSM

Cause

패키지 공용 변수가 SQL 문에 직접 사용되었다.


gSQL>

CREATE OR REPLACE PACKAGE pkg5 AS

var1 INTEGER;

END;

/

Package created.


gSQL>

DECLARE

v_sql_text varchar(100);

ref1 SYS_REFCURSOR;

BEGIN

v_sql_text := 'SELECT COUNT(*) FROM t1 WHERE c1 = pkg5.var1';

OPEN ref1 FOR v_sql_text;

CLOSE ref1;

END;

/


ERR-2F000(17138): package variables are available only within PSM :

SELECT COUNT(*) FROM t1 WHERE c1 = pkg5.var1

*

ERROR at line 1:

Action

패키지 공용 변수를 SQL 문에 사용하려면 USING 절이나 INTO 절 등을 사용해야 한다.


gSQL>

DECLARE

v_sql_text varchar(100);

ref1 SYS_REFCURSOR;

BEGIN

v_sql_text := 'SELECT COUNT(*) FROM t1 WHERE c1 = ?';

OPEN ref1 FOR v_sql_text using in pkg5.var1;

CLOSE ref1;

END;

/


Anonymous PL block executed.

17139 (SQLSTATE: 2F000): the type of table function parameter should be scalar 

Cause

테이블 함수의 파라미터 타입으로 ROWTYPE 이 사용되었다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 t1%ROWTYPE )

RETURN TABLE( c1 INTEGER, c2 INTEGER )

IS

BEGIN

RETURN TABLE ( SELECT c1, c2 FROM t1 WHERE c1 = p1.c1 );

END;

/


ERR-2F000(17139): the type of table function parameter should be scalar :

CREATE OR REPLACE FUNCTION func1( p1 t1%ROWTYPE )

*

ERROR at line 1:

Action

테이블 함수의 파라미터는 scalar 타입이어야 한다.


gSQL>

CREATE OR REPLACE FUNCTION func1( p1 INTEGER )

RETURN TABLE( c1 INTEGER, c2 INTEGER )

IS

BEGIN

RETURN TABLE ( SELECT c1, c2 FROM t1 WHERE c1 = p1 );

END;

/


Function created.

17140 (SQLSTATE: 2F000): RETURNING INTO clause can be used only in SQL statements
 that include RETURNING INTO 

Cause

RETURNING INTO 절이 지원되지 않는 SQL 문에서 사용되었다.


gSQL>

DECLARE

var1 INTEGER;

var2 INTEGER;

v_str VARCHAR(60);

BEGIN

v_str := 'INSERT INTO t1 VALUES ( 2 , 2 ) RETURNING *';


EXECUTE IMMEDIATE v_str RETURNING INTO var1 , var2;

END;

/


ERR-2F000(17140): returning-into clause must be used with RETURNING INTO statements :

EXECUTE IMMEDIATE v_str RETURNING INTO var1 , var2;

*

ERROR at line 8:

Action

RETURNING INTO 절은 다음 SQL 문에서만 사용할 수 있다.

• INSERT INTO name RETURNING .. INTO

• INSERT INTO name ... UPDATE RETURNING ... INTO

• DELETE FROM name RETURNING .. INTO

• UPDATE name RETURNING .. INTO


gSQL>

DECLARE

var1 INTEGER;

var2 INTEGER;

v_str VARCHAR(60);

BEGIN

v_str := 'INSERT INTO t1 VALUES ( 2 , 2 ) RETURNING * INTO ? , ?';


EXECUTE IMMEDIATE v_str RETURNING INTO var1 , var2;

END;

/


Anonymous PL block executed.

세션 관련 에러

18000 (SQLSTATE: HY000): Invalid Statement

Cause

클라이언트가 서버 측에서 이미 정리된 statement 를 사용하려고 할 때 발생한다.

Action

새로운 statement를 생성하여 다시 수행한다.

18001 (SQLSTATE: HY024): Invalid attribute value

Cause

세션 속성을 설정하는 과정에서 속성 식별자는 올바르지만, 해당 속성에 적용할 수 없는 유효하지 않은 값을 설정했다.

Action

해당 속성에 적합한 유효한 값으로 설정한다.

18002 (SQLSTATE: HY092): Invalid attribute/option identifier

Cause

세션의 속성을 설정하거나 조회할 때, 존재하지 않거나 지원하지 않는 속성 식별자를 사용했다.

Action

정확한 속성 식별자를 사용한다.

18003 (SQLSTATE: 42000): Transaction is READ ONLY

Cause

Transaction 속성을 read only 로 변경한 후 DML 을 수행할 경우에 발생한다.


gSQL> SET TRANSACTION READ ONLY;

Transaction set.


gSQL> INSERT INTO t1 VALUES ( 1 );

ERR-42000(18003): Transaction is READ ONLY

Action

Transaction 속성을 read write 로 변경한 후에 수행한다.


gSQL> SET TRANSACTION READ WRITE;

Transaction set.


gSQL> INSERT INTO t1 VALUES ( 1 );

1 row created.

18004 (SQLSTATE: 42000): Statement cannot execute as atomic action

Cause

구문이 atomic insert 가 아니라 수행할 수 없을 경우에 발생한다.

Action

드라이버에서 atomic 옵션을 OFF 한 후에 수행한다.

18005 (SQLSTATE: 42000): Preparable phase is open phase

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

18006 (SQLSTATE: 08S01): Communication link failure

Cause

클라이언트가 서버 측에서 이미 종료된 세션을 사용하려고 할 때 발생한다.

Action

재접속하여 다시 시도한다.

18007 (SQLSTATE: HYC00): not implemented feature, in a function %s

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

18008 (SQLSTATE: HY014): Limit on the number of SQL statement exceeded

Cause

하나의 session에 할당할 수 있는 최대 statement 개수를 초과하였다.

Action

Application에서 statement 를 할당만 (SQLAllocStmt) 해놓고 적절히 해제 (SQLFreeStmt) 하는 로직이 누락되지 않았는지 확인한다.

하나의 session 에서 동시에 사용할 수 있는 statement 개수를 늘리려면 MAXIMUM_CONCURRENT_ACTIVITIES 프로퍼티를 변경한다.

18009 (SQLSTATE: 42000): The command cannot be executed when global transaction is in the ACTIVE state

Cause

XA 트랜잭션이 아직 commit 되거나 rollback 되지 않은 상태에서, 트랜잭션에 맞지 않는 명령을 실행하려고 시도할 때 발생한다.

Action

XA 트랜잭션 종료 후에 실행한다.

18010 (SQLSTATE: 07009): Invalid descriptor index

Cause

SQL 문의 파라미터 정보를 조회할 때 유효하지 않은 파라미터 인덱스를 지정하였다.

Action

SQL 문의 파라미터 개수를 확인하고, 유효한 범위 내의 파라미터 인덱스를 사용한다.

18011 (SQLSTATE: HY000): Character set not equal(%s and %s)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

18012 (SQLSTATE: HY010): fetch out of sequence

Cause

트랜잭션의 commit, rollback 또는 savepoint rollback으로 인해 이미 닫힌 커서에서 데이터를 가져오려고 시도했다.

Action

커서가 여전히 유효한지 확인하고, 필요한 경우 커서를 다시 열거나 with-hold 옵션을 사용하여 트랜잭션 종료 후에도 커서가 유지되도록 설정한다.

18013 (SQLSTATE: HYC00): Optional feature not implemented

Cause

READ UNCOMMITTED와 같은 isolation level은 SQL 표준에는 명시되어 있지만, 실제로는 지원되지 않는 부가 옵션이다.

Action

READ COMMITTED 또는 SERIALIZABLE 과 같은 옵션을 사용한다.

18014 (SQLSTATE: 07001): Wrong number of parameters

Cause

SQL 문이 요구하는 파라미터 개수와 실제로 바인딩 된 파라미터 개수가 일치하지 않다.

Action

SQL 문에 필요한 파라미터 개수를 확인한다.

18015 (SQLSTATE: 24000): Invalid cursor state

Cause

커서가 열려 있지 않거나 결과 집합이 준비되지 않은 상태에서 커서 위치를 변경하려고 했다.

Action

먼저 SQL 문을 실행하여 결과 집합을 생성하고 커서를 연다. 커서가 유효한 상태인지 확인한 후에 위치 설정 작업을 수행한다.

18016 (SQLSTATE: 42000): remote xa transaction (%d.%ld) already exists

Cause

활성화 된 XA 트랜잭션이 존재하는 상태에서 새로운 XA 트랜잭션을 시작하려고 시도할 때 발생한다.

Action

XA 트랜잭션 종료 후에 실행한다.

18017 (SQLSTATE: 42000): remote xa transaction (%d.%ld) does not exist

Cause

해당 트랜잭션 ID에 맞는 XA 트랜잭션을 찾을 수 없을 때 발생한다.

Action

XA 트랜잭션이 종료되었는지 또는 올바른 트랜잭션 ID 인지 확인한다.

ODBC 관련 에러

19000 (SQLSTATE: HY009): Invalid use of null pointer

Cause

인자가 NULL로 유효하지 않다.

다음 예에서 세 번째 파라미터는 Output 인자인데 NULL 값을 사용하여 에러가 발생하였다.


SQLAllocHandle( SQL_HANDLE_STMT, dbc, NULL );

Action

ODBC API를 확인 후 해당 인자에 유효한 변수를 사용한다.

19001 (SQLSTATE: HY092): Invalid attribute/option identifier

Cause

각 HANDLE 타입이 지원하지 않는 속성을 사용하였거나 속성을 설정할 때 누락된 속성 값이 있다.


예를 들어 SQLAllocHandle 함수의 경우 첫 번째 인자는 할당할 핸들의 유형으로 SQL_HANDLE_ENV, SQL_HANDLE_DBC, SQL_HANDLE_STMT, SQL_HANDLE_DESC 이외의 데이터를 사용할 경우 해당 에러가 발생한다.


SQLAllocHandle( -1, dbc, &stmt );

Action

ODBC API를 확인 후 사용 가능한 속성 및 옵션을 확인한다.

19002 (SQLSTATE: 08003): Connection not open

Cause

SQLHDBC 핸들이 OPEN 상태가 아니다.

다음과 같이 SQLHDBC 핸들을 할당 후 연결을 맺지 않고 바로 SQLHSTMT 핸들을 할당 하면 에러가 발생한다.


SQLAllocHandle( SQL_HANDLE_DBC, env, &dbc );

SQLAllocHandle( SQL_HANDLE_STMT, dbc, &stmt );

Action

연결이 필요하다면 먼저 SQLConnect 또는 SQLDriverConnect 함수를 통해 DB와 연결을 한다.

19003 (SQLSTATE: IM001): Driver does not support this function

Cause

현재 지원하지 않는 함수 또는 기능을 사용하였다.

다음과 같이 SQLAllocHandle 함수로 SQLHDESC 핸들을 할당하는 것을 지원하지 않는다.


SQLAllocHandle( SQL_HANDLE_DESC, dbc, &desc );

Action

지원 가능한 함수 또는 기능을 확인한다.

19004 (SQLSTATE: IM004): Driver's SQLAllocHandle on SQL_HANDLE_ENV failed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

19005 (SQLSTATE: IM005): Driver's SQLAllocHandle on SQL_HANDLE_DBC failed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

19006 (SQLSTATE: 08002): Connection name in use

Cause

SQLHDBC 핸들은 이미 서버와 연결된 상태이다.

Action

서버와 연결된 상태의 SQLHDBC 핸들을 다시 연결할 수 없다.

19007 (SQLSTATE: HY090): Invalid string or buffer length

Cause

문자열 데이터의 길이 또는 버퍼의 길이가 유효하지 않다.


다음은 SQLGetData 함수를 통해 데이터를 조회하려는 코드이다. 변수 bufLen의 값이 0보다 작은 경우 해당 에러가 발생한다.

SQLGetData( stmt, 1, SQL_C_CHAR, buf, bufLen, &ind );


다음은 SQLConnect 함수를 통해 서버와 연결 하는 코드이다. 변수 userName, auth의 길이가 0과 같거나 작은 경우 해당 에러가 발생한다.

SQLConnect( dbc, serverName, serverNameLen, userName, userNameLen, auth, authLen, );

Action

각 함수의 API를 확인한다.

19008 (SQLSTATE: 28000): Invalid authorization specification

Cause

SQLDriverConnect 함수를 이용해서 연결을 맺는데 사용자 이름 또는 비밀번호의 길이가 0이다.

Action

유효한 사용자 이름과 비밀번호를 입력해야 한다.

19009 (SQLSTATE: HY010): Function sequence error

Cause

HANDLE의 현재 상태가 유효하지 않다.

다음은 SQLHENV 핸들을 할당 후 바로 SQLHDBC 핸들을 할당하는 코드이다.

SQLAllocEnv( &env );

SQLAllocConnect( env, &dbc );


SQLHDBC 핸들을 할당 하기 전에 SQLHENV 핸들의 SQL_ATTR_ODBC_VERSION 속성을 설정하지 않아서 에러가 발생한다.

Action

MSDN ODBC 문서에서 HANDLE의 상태 전환 테이블을 확인한다.

19010 (SQLSTATE: 24000): Invalid cursor state

Cause

SQLHSTMT 핸들의 전이 상태가 유효하지 않다.

예를 들어서 SQLHSTMT 핸들이 Prepare 되지 않았거나 Result set이 없는 Execution에서 SQLCloseCursor 함수를 호출하면 해당 에러가 발생한다.

Action

각 함수마다 가능한 핸들 상태를 확인해야 한다. MSDSN ODBC 문서에서 상태 전환 테이블을 확인한다.

19011 (SQLSTATE: HY012): Invalid transaction operation code

Cause

Transaction 처리 함수인 SQLEndTran 또는 SQLTransact의 인자로 SQL_COMMIT, SQL_ROLLBACK이 아닌 값을 사용하였다.

Action

SQLEndTran을 확인하고 올바른 값을 사용한다.

19012 (SQLSTATE: HYC00): Optional feature not implemented

Cause

Goldilocks 드라이버가 지원하지 않는 옵션을 사용하였거나 현재 SQLHDBC 핸들의 속성과 호환되지 않는 옵션을 사용하였다. 예를 들어서 Global connection을 사용하는 SQLHDBC 핸들은 XA 관련 설정을 할 때 에러가 발생한다.

Action

ODBC API References를 참조한다.

19013 (SQLSTATE: HY003): Invalid application buffer type

Cause

유효하지 않은 C 데이터 타입의 식별자를 사용하였다.

Action

C 데이터 타입과 ODBC 표준에 정의된 데이터 타입을 참조한다.

19014 (SQLSTATE: 07009): Invalid descriptor index

Cause

유효하지 않은 인덱스를 사용하였다.

Action

인덱스 번호를 수정한다.

19015 (SQLSTATE: HY004): Invalid SQL data type

Cause

유효하지 않은 SQL 타입의 식별자를 사용하였다.

Action

SQL 데이터 타입과 ODBC 표준에 정의된 데이터 타입을 참조한다.

19016 (SQLSTATE: HY105): Invalid parameter type

Cause

매개변수 타입이 유효하지 않다.

Action

InputOutputType 인자을 참조한다.

19017 (SQLSTATE: HY009): Invalid argument value

Cause

데이터를 저장하는 매개 변수의 인자로 사용한 변수가 NULL 이거나 버퍼의 길이가 0이다.

Action

데이터를 조회할 때 데이터를 저장하는 변수는 유효한 길이를 가져야 한다.

SQLGetData를 참조한다.

19018 (SQLSTATE: HY011): Attribute cannot be set now

Cause

현재 핸들의 전이 상태에서는 속성을 설정할 수 없다.

예를 들어서 SQLHDBC 핸들이 연결된 이후에 SQL_ATTR_CHARACTER_SET, SQL_ATTR_LOCALITY_AWARE_TRANSACTION 또는 SQL_ATTR_USE_GLOBAL_SESSION을 설정하려 하였다.

Action

각 핸들의 전이 상태에서 설정할 수 있는 속성을 확인한다.

SQLSetConnectAttrSQLSetStmtAttr을 참조한다.

19019 (SQLSTATE: HY024): Invalid attribute value

Cause

설정하려는 핸들의 속성이 유효하지 않는 식별자이다.

각 핸들과 관련된 속성 값으로 사용한 변수가 유효하지 않은 값을 갖는다.

Action

설정하려는 핸들의 속성을 확인한다.

SQLSetConnectAttrSQLSetStmtAttr을 참조한다.

19020 (SQLSTATE: 25000): Invalid transaction state

Cause

SQLHDBC 핸들은 Transaction이 있는 상태에서 SQLDisconnect 함수를 호출하였다.

Action

SQLHDBC 핸들과 관련된 Transaction을 COMMIT 또는 ROLLBACK 한 후 SQLDisconnect 함수를 호출한다.

19021 (SQLSTATE: HY000): General error

Cause

SQLGetInfo 함수에서 드라이버의 정보를 얻는 과정에서 SQLHSTMT 핸들 관련 에러가 발생하면 에러메시지를 해당 에러 뒤에 합친다.

Action

SQLGetDiagRec 함수를 통해 에러 메시지를 확인한다.

19022 (SQLSTATE: 07005): Prepared statement not a cursor-specification

Cause

Result set이 없는 Prepared statement인 SQLHSTMT 핸들에 대해서 컬럼 조회를 하였다.

Action

SQLDescribeColSQLColAttribute, SQLColAttributes 함수는 Result set이 있는 SQLHSTMT 핸들로 호출한다.

19023 (SQLSTATE: 22001): String data, right truncated

Cause

C 데이터를 SQL 데이터로 변환하는데 C 데이터의 크기가 컬럼의 버퍼 크기보다 크다.

Action

컬럼의 길이를 확인한다.

19024 (SQLSTATE: HY007): Associated statement is not prepared

Cause

SQLHDESC 핸들에서 Description 정보를 얻으려 하였지만 SQLHSTMT 핸들의 전이 상태가 유효하지 않다.

Action

SQLGetDescFieldSQLGetDescRec 함수를 참조한다.

19025 (SQLSTATE: HY092): Option type out of range

Cause

옵션이 유효하지 않다.

Action

SQLFreeStmt 함수에 사용 가능한 옵션을 확인한다.

SQLFreeStmt를 참조한다.

19026 (SQLSTATE: 22002): Indicator variable required but not supplied

Cause

데이터를 조회할 때 데이터가 NULL인 경우 Indicator가 NULL이면 에러가 발생한다.

Action

Indicator 인자를 사용한다.

19027 (SQLSTATE: 01S01): Error in row

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

19028 (SQLSTATE: HY016): Cannot modify an implementation row descriptor

Cause

IRD 기술자 핸들의 속성은 변경할 수 없다

Action

SQLSetDescFieldSQLSetDescRec 함수를 참조한다.

19029 (SQLSTATE: HY091): Invalid descriptor field identifier

Cause

SQLHDESC 핸들의 속성이 유효하지 않다.

Action

SQLSetDescField 함수를 참조한다.

19030 (SQLSTATE: 07006): Restricted parameter value violation

Cause

C 타입에서 SQL 타입 또는 SQL 타입에서 C 타입으로 데이터를 타입 변경할 때 타입 변환이 불가능하다.

Action

MSDN ODBC의 타입 변환을 확인한다.

19031 (SQLSTATE: 22015): Interval field overflow

Cause

Interval 타입의 타입 변환 중 에러가 발생하였다.

Action

Interval 타입과 호환되는 타입을 확인한다.

19032 (SQLSTATE: 22003): Numeric value out of range

Cause

Numeric 데이터를 저장할 버퍼의 크기가 데이터 길이보다 작다.

Action

에러 메시지를 보고 관련된 버퍼의 크기를 늘린다.

19033 (SQLSTATE: 01004): String data, right truncated

Cause

데이터를 조회할 때 데이터의 길이보다 버퍼의 길이가 작다.

핸들의 속성의 값을 얻으려 할 때 버퍼의 길이가 충분하지 않다.

Action

에러 메시지를 보고 관련된 버퍼의 크기를 늘린다.

19034 (SQLSTATE: 22018): Invalid character value for cast specification

Cause

C의 문자열 타입 데이터를 숫자 타입으로 변환한 것이 유효하지 않다.

Action

C 문자열 데이터가 유효한 숫자 데이터인지 확인한다.

19035 (SQLSTATE: 01S07): Fractional truncation

Cause

컬럼 데이터를 C 데이터로 변환 중 C 버퍼의 길이가 부족하다.

Action

버퍼의 길이를 늘린다.

19036 (SQLSTATE: 22008): Datetime field overflow

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

19037 (SQLSTATE: 22007): Invalid datetime format

Cause

날짜 타입의 C 데이터가 유효하지 않다.

Action

데이터를 확인한다. 날짜 타입 데이터는 그레고리력을 따라야 한다.

19038 (SQLSTATE: 08S01): Communication link failure

Cause

통신 프로토콜 중 연결이 끊어졌다.

Action

네트워크 환경을 확인한다.

19039 (SQLSTATE: HY000): An invalid SQL type has occurred

Cause

SQL_C_DEFAULT 타입으로 데이터 조회 중 서버로 받은 데이터의 컬럼 타입이 유효하지 않다.

Action

해당 에러 발생 시 고객센터에 문의한다.

19040 (SQLSTATE: 34000): Invalid cursor name

Cause

커서 이름이 유효하지 않다.

Action

커서 이름의 최대 길이는 128 bytes 보다 작아야 한다.

커서 이름은 SQL_CUR, SQLCUR로 시작할 수 없다.

19041 (SQLSTATE: HY000): Failed to atomic execution

Cause

SQL_ATTR_ATOMIC_EXECUTION 속성의 값을 SQL_ATOMIC_EXECUTION_ON으로 설정하고 배치 수행 중 에러가 발생하였다.

Action

SQLGetDiagRecSQLGetDiagField 함수를 통해 에러를 확인할 수 있다.

19042 (SQLSTATE: HY110): Invalid driver completion

Cause

SQLDriverConnect 함수에 사용한 driver completion 인자의 값이 유효하지 않다.

Action

SQLDriverConnect 함수를 참조한다.

19043 (SQLSTATE: IM012): DRIVER keyword syntax error

Cause

연결 문자열이 유효하지 않다.

Action

연결 문자열의 문법은 키워드와 값으로 구성되고 ';' 문자로 속성을 추가할 수 있다.

다음은 SQLDriverConnect에 사용한 연결 문자열의 예시이다.

"DSN=GOLDILOCKS;UID=TEST;PWD=test"

19044 (SQLSTATE: 08001): Client unable to establish connection

Cause

소켓을 초기화 하지 못하였거나 호스트 이름으로부터 IP 주소를 얻어올 수 없다.

Action

호스트 이름으로 IP 주소를 얻을 때 호스트 이름과 IP 주소가 제대로 설정 되었는지 확인한다.

소켓을 초기화 하다가 에러가 발생하였을 때 시스템 에러를 확인 후 대처한다.

19045 (SQLSTATE: HY096): Information type out of range

Cause

SQLGetInfo 함수에서 얻을 Information type 식별자가 유효하지 않다.

Action

SQLGetInfo 함수를 참조한다.

19046 (SQLSTATE: IM002): Data source not found and no default driver specified

Cause

odbc.ini 파일에서 주어진 이름의 data source name을 찾지 못하였다.

Action

Data source name과 odbc.ini 파일을 확인한다.

19047 (SQLSTATE: HY106): Fetch type out of range

Cause

SQLExtendedFetch 또는 SQLFetchScroll 함수에서 fetch orientation 식별자가 유효하지 않다.

Action

SQLFetchScroll 함수를 참조한다.

19048 (SQLSTATE: HY100): Uniqueness option type out of range

Cause

SQLStatistics 함수에서 unique 식별자가 유효하지 않다.

Action

SQLStatistics 함수를 참조한다.

19049 (SQLSTATE: HY101): Accuracy option type out of range

Cause

SQLStatistics 함수에서 reserved 식별자가 유효하지 않다.

Action

SQLStatistics 함수를 참조한다.

19050 (SQLSTATE: HY097): Column type out of range

Cause

SQLSpecialColumns 함수에서 identifier type의 식별자가 유효하지 않다.

Action

SQLSpecialColumns 함수를 참조한다.

19051 (SQLSTATE: HY098): Scope type out of range

Cause

SQLSpecialColumns 함수에서 scope의 식별자가 유효하지 않다.

Action

SQLSpecialColumns 함수를 참조한다.

19052 (SQLSTATE: HY099): Nullable type out of range

Cause

SQLSpecialColumns 함수에서 Nullable 식별자가 유효하지 않다.

Action

SQLSpecialColumns 함수를 참조한다.

19053 (SQLSTATE: HY021): Inconsistent descriptor information

Cause

Descriptor 핸들의 정보가 유효하지 않다.


다음은 SQLHSTMT 핸들에 파라미터의 SQL 타입을 SQL_INTERVAL_MONTH로 설정하고 IPD 핸들의 SQL_DESC_DATETIME_INTERVAL_PRECISION 속성을 1로 변경한 후 SQL_DESC_DATA_PTR 속성으로 Buffer 포인터를 설정하는 코드이다.


ret = SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_NUMERIC, SQL_INTERVAL_MONTH, 1, 0, numeric, sizeof( SQL_NUMERIC_STRUCT ), 0 );

ret = SQLGetStmtAttr( stmt, SQL_ATTR_IMP_PARAM_DESC, &ipd, 0, NULL );

ret = SQLSetDescField( ipd, 1, SQL_DESC_DATETIME_INTERVAL_PRECISION, (SQLPOINTER) 1, 0 );

ret = SQLSetDescField( ipd, 1, SQL_DESC_DATA_PTR, dataPtr, 0 );


SQL_DESC_DATETIME_INTERVAL_PRECISION 속성을 1로 설정하였는데 INTERVAL MONTH 타입의 precision 범위 2~6에서 벗어난다. 따라서 SQL_DESC_DATA_PTR 속성을 설정하는 과정에서 에러가 발생한다.

Action

SQLSetDescField 함수를 참조한다.

19054 (SQLSTATE: 01S02): Option value changed

Cause

SQLHSTMT 핸들의 커서 속성이 변경 되었다.

다음은 SQLHSTMT 핸들의 커서 속성을 SQL_CONCUR_READ_ONLY, SQL_SENSITIVE로 설정하였지만 SELECT FOR UPDATE 구문을 사용하면서 속성이 바뀌게 되는 예제 코드이다. SQLExecDirect 함수는 SQL_SUCCESS_WITH_INFO 를 반환한다.


ret = SQLSetStmtAttr( stmt, SQL_ATTR_CONCURRENCY, (SQLPOINTER)SQL_CONCUR_READ_ONLY, 0 );

ret = SQLSetStmtAttr( stmt, SQL_ATTR_CURSOR_SENSITIVITY, (SQLPOINTER)SQL_SENSITIVE, 0 );

ret = SQLExecDirect( stmt, (SQLCHAR*)"SELECT C1 FROM SAMPLE_TABLE FOR UPDATE", SQL_NTS );

Action

SQLExecDirect, SQLExecute, SQLSetStmtAttr, SQLPrepare 함수를 참조한다.

19055 (SQLSTATE: HY109): Invalid cursor position

Cause

FOWARD_ONLY 속성을 갖는 SQLHSTMT 핸들로 SQLSetPos 함수를 호출하였다. 또는 SQLSetPos 함수의 row number 인자가 0과 같거나 작다.

Action

SQLSetPos 함수를 참조한다.

19056 (SQLSTATE: HY107): Row value out of range

Cause

SQLSetPos 함수의 row number 인자의 값이 배열 크기보다 크다.

Action

SQLSetPos 함수를 참조한다.

19057 (SQLSTATE: HYT00): Timeout expired

Cause

서버와 연결을 시도하였는데 시간 초과하였다.

Action

네트워크 환경을 확인한다. SQLConnect 함수를 참조한다.

19058 (SQLSTATE: 2C000): Invalid or unknown NLS parameter value specified

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

19059 (SQLSTATE: HY020): Attempt to concatenate a null value

Cause

SQL_NEED_DATA가 반환되고 SQLPutData를 호출하는데 StrLen_or_ind 인자에 SQL_NULL_DATA 식별자를 사용하였다.

Action

SQLPutData 함수를 참조한다.

19060 (SQLSTATE: HY019): Non-character and non-binary data sent in pieces

Cause

SQL_C_CHAR, SQL_C_WCHAR, SQL_C_BINARY이 아닌 타입에서 SQL_NEED_DATA가 반환되고 SQLPutData를 한 번을 초과하여 호출하였다.

Action

SQLPutData 함수를 참조한다.

19061 (SQLSTATE: HY000): Invalid 'odbc.ini' specification. property : [%s]

Cause

odbc.ini 파일 속성에 설정된 값이 유효하지 않다.

예를 들어서 odbc.ini 파일의 CS_MODE 속성에 올 수 있는 유효한 값은 default, shared, dedicated 인데 이외의 값이 사용되면 에러가 발생된다.

Action

데이터 원본 구성을 참조한다.

19062 (SQLSTATE: IM008): Dialog failed

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

19063 (SQLSTATE: 40001): Transaction rollback

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

19064 (SQLSTATE: 40003): Statement completion unknown

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

19065 (SQLSTATE: 08S01): Communication link failure

Cause

Operation 중 연결이 끊겨서 FAILOVER로 ALTERNATE_SERVERS에 연결이 되었지만 SQLHSTMT 핸들의 operation이 실패하여 SESSION FAILOVER가 실패하였다.

Action

SQLHDBC 핸들을 다시 연결해야 한다.

19066 (SQLSTATE: 01000): General warning

Cause

SQL_ROLLBACK과 함께 SQLEndTran 함수를 수행하는 중에 연결이 끊겼지만 Failover 가 성공하였다.

Action

Warning으로 다른 대처가 필요없다.

19067 (SQLSTATE: HY104): Invalid precision or scale value

Cause

SQLBindParameter 함수로 설정한 SQL 타입의 column size, decimal digits, precision 또는 scale의 값이 해당 SQL 타입의 유효 범위를 벗어났다.

예를 들어서 SQL_CHAR 타입의 column size는 최소 1, 최대 2000 이다. SQL_NUMERIC 타입의 column size는 최소 1, 최대 38이며 decimal digits는 최소 -84 최대 127이다.

Action

파라미터의 각 SQL 타입마다 유효 크기를 확인해야 한다.

Built-in Data Type References을 참조한다.

19068 (SQLSTATE: 40003): Retry the transactional operations

Cause

Operation 수행 중 failover가 진행 되었고 성공하였다.

Action

해당 operation을 다시 수행한다.

19069 (SQLSTATE: 08S01): Failed to communicate with locator

Cause

연결 속성 LOCATOR_SERVICE와 LOCATOR_DSN을 설정하고 glocator로부터 접속 정보를 얻는 과정에서 실패하였다.

Action

glocator의 trace 로그 및 glocator의 접속 정보를 확인한다.

19070 (SQLSTATE: 08006): Unable to get cluster system information

Cause

Global connection을 사용하는데 cluster system info을 얻을 수 없다.

Action

해당 에러 발생 시 고객센터에 문의한다.

19071 (SQLSTATE: HY000): startup cannot be performed on ipc

Cause

PROTOCOL_TYPE이 IPC 에서 서버와 연결시 STARTUP을 진행하려 하였다.

Action

해당 에러 발생 시 고객센터에 문의한다.

19072 (SQLSTATE: IM006): Driver's SQLSetConnectAttr failed

Cause

데이터베이스 연결에는 성공했으나, 사전에 설정된 연결 속성을 실제로 적용하는 과정에서 오류가 발생했다.

Action

이 오류는 경고로 처리되며, 연결 속성 설정을 다시 시도해야 한다.

19073 (SQLSTATE: HY017): Invalid use of an automatically allocated descriptor handle

Cause

구현 행 디스크립터 (SQL_ATTR_IMP_ROW_DESC) 또는 구현 매개변수 디스크립터 (SQL_ATTR_IMP_PARAM_DESC) 를 직접 설정하려고 시도하였다.

Action

SQL_ATTR_IMP_ROW_DESC나 SQL_ATTR_IMP_PARAM_DESC 속성을 직접 설정하는 코드를 제거한다.

19074 (SQLSTATE: HY108): Concurrency option out of range

Cause

유효하지 않은 커서 동시성 옵션이 사용되었다.

Action

SQL_CONCUR_READ_ONLY, SQL_CONCUR_LOCK, SQL_CONCUR_ROWVER, SQL_CONCUR_VALUES 중 하나의 값을 사용한다.

JDBC 관련 에러

21000 (SQLSTATE: HV000): Not used error

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

21001 (SQLSTATE: 46001): Invalid connection url[%s]: [%s]

Cause

주어진 URL이 유효하지 않는다.

Action

다음 매뉴얼에서 URL 문자열을 확인한다.

21002 (SQLSTATE: 46110): Unsupported feature: [%s]

Cause

현재 지원하지 않는 API를 사용하였다.

Action

현재 지원하지 않는 API로 다른 방안을 고려한다.

21003 (SQLSTATE: 08S01): Invalid protocol: [%s]

Cause

통신 프로토콜이 유효하지 않다. Client 프로그램에서 서버로 보낸 프로토콜에 대한 응답 프로토콜이 와야 하는데 순서가 어긋났다.

Action

해당 에러 발생 시 고객 센터에 문의한다. 연결 프로퍼티 protocol_log를 이용하여 프로토콜 송수신 로깅을 확인할 수 있다.

21004 (SQLSTATE: HV000): Invalid method call for read-only ResultSet

Cause

Read only ResultSet에서 Row 위치 변경 또는 데이터 조작을 시도하였다.

Action

Read only ResultSet은 Row 위치 변경과 데이터 조작이 불가하다.

21005 (SQLSTATE: 08003): The Connection is already closed

Cause

Connection 객체는 이미 닫힌 상태에서 메소드를 호출하였다. 또는 통신 프로토콜 중 연결이 끊겼다.

Action

Connection 객체가 닫힌 상태일 때 호출 가능한 메소드를 확인한다.

명시적으로 Connection 객체를 닫은 것이 아니면 Connection이 끊겼을 때 발생한 에러 메시지를 확인한다.

21006 (SQLSTATE: 08003): The Statement is already closed

Cause

Statement 객체는 이미 닫힌 상태에서 메소드를 호출하였다. 또는 통신 프로토콜 중 연결이 끊겼다.

Action

Statement 객체가 닫힌 상태일 때 호출 가능한 메소드를 확인한다.

명시적으로 Statement 객체를 닫은 것이 아니면 Connection 객체가 닫힌 상태일 수 있다.

21007 (SQLSTATE: 08003): The ResultSet is already closed

Cause

ResultSet 객체는 이미 닫힌 상태에서 메소드를 호출하였다. 또는 FETCH 프로토콜 수행시 서버로부터 에러가 발생하여 FETCH에 대한 에러가 발생하였거나 연결이 끊겼다.

Action

ResultSet 객체가 닫힌 상태일 때 호출 가능한 메소드를 확인한다.

FETCH 프로토콜 중 발생한 에러 메시지를 확인한다.

21008 (SQLSTATE: HV000): Invalid method call for forward-only ResultSet

Cause

Forward only ResultSet의 위치를 변경하려고 하였다.

Action

ResultSet의 타입을 Scrollable로 변경해야 한다.

21009 (SQLSTATE: HV000): Invalid Wrapper type: [%s]

Cause

입력 인자로 사용한 객체가 해당 Class의 Wrapper Class가 아니다.

Action

입력 객체로 사용한 객체를 확인한다.

21010 (SQLSTATE: HV000): Invalid argument: [%s]

Cause

메소드에 사용한 인자의 유효한 객체가 null 이거나 값이 올바르지 못하다.

Action

해당 메소드의 매뉴얼을 확인한다.

21011 (SQLSTATE: 08000): Cannot connect to the server: %s

Cause

주어진 주소로 소켓 연결을 시도하였는데 실패하였다.

Action

Host, Port 가 유효하지 않거나 네트워크를 사용할 수 없는 상황인지 확인한다.

21012 (SQLSTATE: 08S01): Communication link failure: %s

Cause

통신 중 연결이 끊겼다.

Action

디테일 에러 메시지를 확인한다. 연결 프로퍼티로 trace_log와 protocol_log를 이용하여 에러 상황을 확인할 수 있다.

21013 (SQLSTATE: HV000): A mandatory property is omitted: [%s]

Cause

연결 속성 중 필수 연결 속성이 누락되었다.

Action

필수 연결 속성은 USER와 PASSWORD가 있다.

21014 (SQLSTATE: HV000): Not a select query for executeQuery method

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

21015 (SQLSTATE: HV000): The statement has produced a ResultSet

Cause

ResultSet이 만들어지는 SELECT 구문으로 PreparedStatement 객체를 생성하였는데 executeBatch 또는 executeUpdate 메소드를 호출하였다.

Action

ResultSet이 만들어지는 구문에서는 execute 또는 executeQuery 메소드를 사용해야 한다.

21016 (SQLSTATE: HV000): This method cannot be called for a PreparedStatement

Cause

SQL 문자열을 인자로 사용하는 execute, executeBatch, executeUpdate, executeQuery 메소드는 PreparedStatement 클래스에서 사용할 수 없다.

Action

해당 메소드에서 SQL 문자열을 인자로 사용할 때는 PreparedStatement 클래스 대신 Statement 클래스를 사용할 수 있다.

21017 (SQLSTATE: HV000): Parameter type[%s] is mismatch with previous type[%s] during batch

Cause

Batch execution을 하는 중 set 메소드로 설정한 데이터 타입이 이전에 설정한 데이터 타입과 다르다.

다음은 정수 타입의 데이터로 설정 후 문자열 타입으로 데이터 설정하는 코드이다.

PreparedStatement pstmt = con.prepareStatement( "INSERT INTO TEST VALUES (?) ");

pstmt.setObject(1, 10);

pstmt.addBatch();

pstmt.setObject(1, "20");

문자열 데이터 "20"은 이전에 설정한 데이터 타입과 다르기 때문에 에러가 발생한다.

Action

동일한 파라미터에 데이터 타입이 동일하지 못한 상황에서는 Batch execution을 사용하지 않아야 한다.

21018 (SQLSTATE: HV000): Lack of parameter: [%s]'th parameter

Cause

데이터 설정을 하지 않은 파라미터가 있다.

다음 코드는 파라미터가 2개이지만 2번 파라미터는 데이터를 설정하지 않았다. execute 메소드를 호출할 때 에러가 발생한다.

PreparedStatement pstmt = con.prepareStatement( "INSERT INTO TEST VALUES( ?, ? )" );

pstmt.setObject(1, 10);

pstmt.execute();

Action

누락된 파라미터에 데이터를 설정한다.

21019 (SQLSTATE: HV000): No batch job added

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

21020 (SQLSTATE: HV000): Batch job added

Cause

addBatch 메소드를 호출 후 executeBatch 메소드가 아닌 execute, executeQuery 또는 executeUpdate 메소드를 호출하였다.

Action

Batch execution을 사용하려면 addBatch 메소드를 호출 후 executeBatch 메소드를 호출해야 한다.

21021 (SQLSTATE: 22003): The value[%s] is out of range of [%s] type

Cause

PreparedStatement 클래스에 데이터를 설정하는데 데이터 타입의 범위를 초과한다.

다음은 문자열 타입 데이터를 정수 타입으로 설정하다가 데이터 타입의 범위를 초과하는 코드이다.

PreparedStatement pstmt = con.prepareStatement("INSERT INTO TEST VALUES(?)");

pstmt.setObject( 1, "1000000000000", Types.INTEGER );


ResultSet 클래스에서 데이터를 얻을 때 데이터 타입의 범위를 초과한다.

다음은 숫자 데이터 100을 boolean 타입으로 얻으려 하는 코드이다. ResultSet에서 getBoolean 메소드를 호출 시 범위를 초과하였다는 에러가 발생한다.

pstmt.setInt( 1, 100 );

pstmt.execute();

ResultSet rs = stmt.executeQuery( "SELECT C1 FROM TEST" );

boolean isTrue = rs.getBoolean(1);

Action

테이블 스키마에 맞는 데이터 타입을 사용해야 한다. 테이블 스키마를 모르는 경우 getObejct, setObject 메소드를 이용할 수 있다.

21022 (SQLSTATE: 22026): The value length is mismatch[%s != %s]

Cause

ROWID 타입에 데이터를 설정하였는데 데이터 크기가 ROWID 타입에 위배 된다.

Action

에러 메시지에 나오는 데이터 크기를 확인한다.

21023 (SQLSTATE: HV000): The value([%s] type) cannot be converted to [%s] type

Cause

데이터 변환이 불가한 타입으로 변환하려 하였다.

Action

타입 변환을 확인한다.

21024 (SQLSTATE: 08000): The connection timeout expired: [%s millis]

Cause

Connect 중 서버 측에서 응답이 없어서 발생할 수 있다.

Action

Network 환경을 확인하거나 연결 프로퍼티 login_timeout을 확인한다.

21025 (SQLSTATE: HV000): The column is not found: [%s]

Cause

ResuletSet 또는 PreparedStatement 클래스에서 컬럼 이름으로 데이터를 조회 또는 설정하려 하였는데 이름이 존재하지 않는다.

Action

컬럼 이름을 확인한다.

21026 (SQLSTATE: 3B000): Savepoint error: %s

Cause

Savepoint는 Id 또는 이름을 갖는다. 이름을 사용한 Savepoint의 Id를 조회하거나 Id를 사용한 Savepoint의 이름을 조회하려면 해당 에러가 발생한다.

Action

Savepoint는 Id 또는 이름을 갖는데 생성된 Savepoint에 맞게 조회해야 한다.

다음은 Savepoint를 만들고 조회하는 코드이다.

Savepoint spId = con.setSavepoint();

spId.getSavepointId();

Savepoint spName = con.setSavepoint("mySavepoint");

spName.getSavepointName();

21027 (SQLSTATE: HV000): Cannot execute the query in auto-commit mode

Cause

auto commit 모드로 생성된 Connection 객체에서 commit, rollback, savepoint를 사용하면 해당 에러가 발생한다.

Action

Connection 객체를 auto commit false로 변경하거나 commit, rollback, saveponit를 사용하지 않는다.

21028 (SQLSTATE: 24000): Invalid cursor position

Cause

ResultSet 객체에서 데이터 조회를 하는데 cursor의 위치가 유효하지 않다.

다음은 ResultSet 객체가 생성되고 유효하지 않은 cursor 위치에서 데이터 조회하는 코드이다. 데이터를 조회하다가 에러가 발생한다.

ResultSet rs = stmt.executeQuery("SELECT * FROM TEST");

int c1 = rs.getInt(1);

Action

ResultSet 객체의 cursor 위치를 이동 후 데이터 조회해야 한다.

다음은 위 코드에서 ResultSet 객체의 cursor 위치를 옮긴 후 데이터 조회하는 코드이다.

ResultSet rs = stmt.executeQuery( "SELECT * FROM TEST" );

if( rs.next() )

{

int c1 = rs.getInt(1);

}

21029 (SQLSTATE: HV000): No column has been read

Cause

ResultSet 객체에서 데이터를 조회하지 않고 null 체크를 시도하였다.

Action

ResultSet 클래스의 wasNull 메소드는 데이터를 조회 후 호출할 수 있다.

21030 (SQLSTATE: HV000): Encoding error: [%s]

Cause

Connection 객체가 사용하는 문자셋으로 문자열 인코딩 중 에러가 발생하였다.

다음은 UTF8 문자셋을 사용하는 PreparedStatement 객체에 UTF-16 데이터를 넣고 실행하는 코드이다. execute 메소드에서 encode 과정 중에 에러가 발생한다.

char[] chars = {(char)0xD800};

Reader reader = new CharArrayReader(chars);

pstmt.setCharacterStream( 1, reader );

pstmt.execute();

Action

문자열 타입 데이터 문자셋과 Connection 객체가 사용하는 문자셋이 서로 변환 가능한지 확인해야 한다.

GoldilocksConnection 클래스는 getCharset, getCharsetId, getCharsetName 메소드를 제공하여 문자셋 정보를 얻을 수 있다.

21031 (SQLSTATE: HV000): Decoding error: [%s]

Cause

Connection 객체가 사용하는 문자셋으로 문자열 디코딩 중 에러가 발생하였다.

Action

문자열 타입 데이터 문자셋과 Connection 객체가 사용하는 문자셋이 서로 변환 가능한지 확인해야 한다.

GoldilocksConnection 클래스는 getCharset, getCharsetId, getCharsetName 메소드를 제공하여 문자셋 정보를 얻을 수 있다.

21032 (SQLSTATE: HV000): Stream error: [%s]

Cause

데이터 인자로 사용한 Stream 객체가 유효하지 않다.

Action

Stream 객체의 open 상태나 읽을 데이터가 있는지 확인한다.

21033 (SQLSTATE: HV000): Trying to read the deleted row

Cause

TYPE_SCROLL_SENSITIVE 타입으로 생성된 ResultSet 객체가 데이터를 읽었는데 데이터의 상태가 지워진 상태이다.

다음은 ResultSet 객체를 읽고 데이터를 지운 후 ResultSet 객체를 다시 읽으려는 코드이다. TYPE_SCROLL_SENSITIVE 타입으로 생성된 ResultSet 객체이기 때문에 삭제 후 다시 읽으려 할 때 에러가 발생한다.

Statement deleteStmt = con.createStatement();

Statement fetchStmt = con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY );

ResultSet rs = fetchStmt.executeQuery( "SELECT * FROM TEST" );

while( rs.next() ) {

System.out.println( "ID = " + rs.getString( 1 ) );

}

deleteStmt.executeQuery( "DELETE FROM TEST WHERE ID = 100" );

rs.absolute(0);

while( rs.next() ) {

rs.getString( 1 );

}

Action

SCROLL_SENSITIVE 타입의 ResultSet를 사용할 때는 해당 에러가 발생할 수 있다.

SCROLL_SENSITVE 타입의 ResultSet은 fetch size가 100으로 고정된다.

21034 (SQLSTATE: HV000): Invalid interval format string: [%s]

Cause

deprecataed

Action

해당 에러 발생 시 고객센터에 문의한다.

21035 (SQLSTATE: HV000): The Statement has an opened ResultSet

Cause

Statement 객체를 통해 Cursor 이름을 설정하려 하였지만 이미 열려져 있는 ResultSet이 존재한다.

Action

ResultSet을 열기 전에 Cursor 이름을 설정할 수 있다.

21036 (SQLSTATE: HV000): The RowId object is unknown

Cause

파라미터 인자로 사용한 데이터가 RowId 객체가 아니다.

Action

유효한 RowId 객체를 사용한다.

21037 (SQLSTATE: 08000): The failover failed

Cause

연결 속성 alternate_servers를 설정하였고, 통신 프로토콜 중 연결이 끊겨서 failover를 진행하였는데 failover가 실패하였다.

Action

연결 속성 alternate_servers에 사용된 접속 정보를 확인한다.

대안 서버의 네트워크 환경을 확인한다.

21038 (SQLSTATE: 07009): The parameterIndex is not valid: [%s]

Cause

파라미터 번호가 유효하지 않다.

다음은 CallableStatement 클래스를 사용한 예제이다. SQL구문에서 매개변수 1번은 output, 2번은 input 타입이다.


CallableStatement cstmt = con.prepareCall( "SELECT NAME INTO ? FROM SAMPLE WHERE ID = ?");

cstmt.registerOutParameter(1, Types.VARCHAR);

cstmt.setInt(2, 100);

cstmt.execute();

System.out.println( cstmt.getString(1) );


위 예제 중 데이터 set 함수에서 파라미터 번호를 1, 2 이외의 숫자를 사용하면 해당 에러가 발생한다.

Action

SQL 구문에서 매개변수 개수와 파라미터 번호를 확인한다.

21039 (SQLSTATE: HY000): No data read

Cause

CallableStatement 객체에서 데이터를 읽지 않고 wasNull 메소드를 호출하였다.

Action

wasNull 메소드를 호출하기 전에 데이터를 먼저 읽어야 한다.

21040 (SQLSTATE: HY000): Invalid locator protocol version

Cause

Global connection을 구성하기 위해 glocator 와 통신을 시도하는데 통신 프로토콜 버전이 일치하지 않는다.

glocator를 사용한 global connection 구성은 연결 속성 locator_host, locator_port를 사용한다.

Action

동일한 버전의 glocator를 사용해야 한다.

21041 (SQLSTATE: HY000): not matched locator protocol command sequence number

Cause

Global connection을 구성하기 위해 glocator에 프로토콜을 전송 하였지만 프로토콜 번호가 일치하지 않는다.

Action

연결 속성 alternate_locator를 설정하여 패킷 손실이나 통신이 안되는 경우에 대비할 수 있다.

21042 (SQLSTATE: HY000): Unable to open the file '%s'

Cause

파일이 존재하지 않는다.

Action

파일 경로와 이름을 확인한다.

21043 (SQLSTATE: HY000): Unable to read the file '%s'

Cause

파일을 읽는 중 IO exception이 발생하였다.

Action

파일 권한, 손상 및 유무를 확인한다.

21044 (SQLSTATE: HY000): Unable to close the file '%s'

Cause

파일을 닫는 중 IO Exception이 발생하였다.

Action

파일 권한, 손상 및 유무를 확인한다.

21045 (SQLSTATE: HY000): invalid INI file format

Cause

locator 파일의 형식이 INI 파일 형식을 벗어났다.

다음은 올바른 INI 형식의 locator 파일 예시이다.


[G1N1]

HOST = 127.0.0.1

PORT = 22581

DB_HOME = g1n1_home

[G2N1]

HOST = 127.0.0.1

PORT = 22582

DB_HOME = g2n2_home

Action

올바른 INI 형식으로 파일을 수정한다.

멤버 이름은 [ 문자와 ] 문자로 감싸져야 한다. 해당 멤버에 대한 속성은 이름 아래에 나열한다.

21046 (SQLSTATE: HY000): Parameter[%s]'s input data type is mismatched with output data type

Cause

CallableStatement 객체를 사용하는데 output 파라미터의 타입과 데이터 타입이 호환되지 않는다.

다음은 CallableStatement 객체에 int 타입으로 데이터를 설정 후 Out 파라미터의 타입을 VARCHAR 타입으로 설정한 코드이다. 타입이 호환되지 않아 에러가 발생한다.

CallableStatement cstmt = con.prepareCall( "CALL SAMPLE_PROC( ? )" );

cstmt.setInt( 1, 100 );

cstmt.registerOutParameter( 1, Types.VARCHAR );

cstmt.execute();

Action

위의 예제 코드와 같이 input, output 파라미터 타입을 동시에 사용한다면 타입이 호환되어야 한다.

21047 (SQLSTATE: 40001): Retry the transactional operations again

Cause

Global connection 환경에서 transaction이 발생하였는데 연결이 끊겼다.

Action

해당 operation을 다시 실행해야 한다.

21048 (SQLSTATE: 08006): Unable to get cluster system information

Cause

Global connection 환경으로 연결을 구성하려는데 JOIN 되지 못한 멤버가 존재한다.

Action

JOIN 되지 못한 멤버를 확인 후 대처한다.

21049 (SQLSTATE: HY000): The Statement does not have a ResultSet

Cause

PreparedStatement 또는 CallableStatement 클래스의 executeQuery 메소드를 호출하였는데 ResultSet을 갖지 않는 경우 해당 에러가 발생한다.

다음 코드에서 SELECT 구문을 실행하지만 해당 구문은 ResultSet을 갖지 않기 때문에 executeQuery 메소드를 호출하면 에러가 발생한다.

CallableStatement cstmt = con.prepareCall( "SELECT NAME INTO ? FROM WHERE ID = ? " );


con.registerOutParameter( 1, Types.VARCHAR );

con.setInt( 2, 100 );

con.executeQuery();

Action

ResultSet이 없는 SQL은 execute 또는 executeUpdate 메소드를 사용한다.

21050 (SQLSTATE: 08006): Unable to get location information

Cause

Global connection을 이용하려는데 연결 속성 locator_file이 누락 되었거나 locator_host 또는 locator_port가 누락되었다.

Action

Global connection을 이용할 때는 locator_file 또는 locator_host, locator_port를 설정해야 한다.

21051 (SQLSTATE: HY000): Not exist node information - %s

Cause

해당 멤버의 정보가 location 파일 또는 glocator에 존재하지 않는다.

Action

해당 멤버의 접속 정보를 location 파일 또는 glocator에 추가해야 한다.

21052 (SQLSTATE: HY000): Operation on freed LOB

Cause

Operation을 수행하기 전에 LOB 객체가 free 되었다.

Action

LOB 객체를 free 하면 수행할 수 있는 Operation은 한정적이다.

21053 (SQLSTATE: HY000): Invalid sql : %s

Cause

RETURN_GENERATED_KEYS 옵션으로 PreparedStaetment 생성하려 하는데 해당 구문이 INSERT 구문이 아니다.

Action

RETURN_GENERATED_KEYS 옵션은 INSERT 구문만 사용할 수 있다.

21054 (SQLSTATE: HY000): Can not combine auto-generated keys with batch update

Cause

Auto generated key를 사용한 Statement에서 Batch 관련 함수를 사용하였다.

Action

Auto generated key와 Batch 관련 함수는 같이 사용할 수 없다.

21055 (SQLSTATE: HY000): An error occurred while using the SSL function : %s

Cause

SSL 보안 프로토콜을 이용하는 중 해당 API에서 에러가 발생하였다.


에러 발생 사유는 버전 불일치 또는 인증서 문제, 암호화 알고리즘 지원 문제, 키 관리 오류, 네트워크 문제, Java 버전일 수 있다.

Action

에러 메시지를 읽고 대처한다.

21056 (SQLSTATE: HY000): Invalid column type

Cause

파라미터를 설정할 때 데이터 타입을 Types.NULL로 설정하면서 같이 입력한 데이터의 객체 타입을 Goldilocks JDBC에서 지원하지 않는다.

Action

Goldilocks JDBC가 지원하는 타입을 확인한다.

타입 변환을 참조한다.

Embedded SQL 관련 에러

Embedded SQL Run-time Library 관련 에러

23000 (SQLSTATE: 42000): syntax error

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

23001 (SQLSTATE: 0A000): feature not supported

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

23002 (SQLSTATE: HY000): Bind variable "%s" was not declared

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

23003 (SQLSTATE: HY000): Application can't be initialized

Cause

Embedded SQL library를 초기화하는 과정에서 에러가 발생하였다.

Action

해당 에러가 발생하는 원인은 메모리를 할당하거나 세마포어를 생성하는 과정에서의 실패이다. 에러 메시지에 따라 관련된 시스템 환경을 확인한다.

23004 (SQLSTATE: HY000): Application can't be finalized

Cause

Embedded SQL library 종료 과정에서 에러가 발생하였다.

Action

해당 에러가 발생하는 원인은 할당한 메모리를 해제하거나 생성된 세마포어를 해제하는 과정에서의 실패이다. 에러 메시지에 따라 시스템 환경을 확인한다.

23005 (SQLSTATE: RD000): Service is not available

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

23006 (SQLSTATE: RD000): Statement is not prepared

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

23007 (SQLSTATE: 08001): Client can't establish SQL-connection

Cause

Embedded SQL library가 초기화 작업에 실패 후 응용 프로그램에서 에러 처리를 하지 않고 계속 수행하였다.

Action

초기화 작업에 실패하는 경우 응용 프로그램을 재시작해야 한다.

23008 (SQLSTATE: HY000): cursor "%s" is not open

Cause

Cursor가 open 상태가 아닌데 FETCH 또는 CLOSE 하려 하였다.

Action

Cursor를 먼저 open 한다.

23009 (SQLSTATE: HY000): Application can't create semaphore

Cause

Embedded SQL library 초기화 중 세마포어를 생성하다가 실패하였다.

Action

시스템 에러 번호와 함께 시스템 환경을 확인한다.

23010 (SQLSTATE: HY000): Application can't destroy semaphore

Cause

Embedded SQL library 종료 중 세마포어 삭제에 실패하였다.

Action

시스템 에러 번호를 확인하고 대응한다.

23011 (SQLSTATE: HY000): Application can't create allocator

Cause

Embedded SQL library 초기화 중 메모리 관리자를 생성하다가 실패하였다.

Action

시스템 에러 번호와 함께 시스템 환경을 확인한다.

23012 (SQLSTATE: HY000): Application can't destroy allocator

Cause

Embedded SQL library 종료 중 메모리 관리자를 삭제 하다가 실패하였다.

Action

시스템 에러 번호를 확인하고 대응한다.

23013 (SQLSTATE: HY000): Application can't create symbol table

Cause

Symbol table을 생성하는 도중에 메모리가 부족하여 실패하였다.

Action

시스템 메모리를 확인한다.

23014 (SQLSTATE: HY000): Application can't destroy symbol table

Cause

Symbol table를 삭제 하다가 실패하였다.

Action

시스템 에러 번호를 확인하고 대응한다.

23015 (SQLSTATE: IM004): Driver's SQLAllocHandle on SQL_HANDLE_ENV failed

Cause

ODBC의 SQL_HANDLE_ENV 핸들을 생성 하다가 실패하였다.

Action

시스템 메모리 용량 및 odbc.ini 파일을 확인한다.

23016 (SQLSTATE: IM001): Driver does not support ODBC 3.0

Cause

해당 ODBC 드라이버가 version 3.0을 지원하지 못한다.

Action

ODBC 드라이버를 확인한다.

23017 (SQLSTATE: HY000): Application can't allocate memory

Cause

메모리 할당 과정에서 실패하였다.

Action

시스템 메모리를 확인한다.

23018 (SQLSTATE: 42000): Statement "%s" was not prepared

Cause

주어진 이름의 statement가 prepare 되지 않은 상태에서 EXECUTE, OPEN, FETCH 또는 CLOSE 하려 하였다.

Action

PREPARE 구문을 먼저 수행해야 한다.

23019 (SQLSTATE: 42000): Descriptor name is too long

Cause

Descriptor의 이름 길이가 128을 초과한다.

Action

128 이하 길이의 이름을 사용한다.

23020 (SQLSTATE: HYC00): Not implemented feature, in a function %s

Cause

지원하지 않는 기능을 시도하였다.

Action

지원하지 않는 기능 대신 다른 방안을 찾는다.

23021 (SQLSTATE: 07004): USING clause required for dynamic parameters

Cause

매개 변수가 있는 prepared statement를 이용한 dynamic method 구문 EXECUTE 또는 OPEN에 USING 절을 사용하지 않았다.

Action

EXECUTE 또는 OPEN 구문에 USING 절을 사용해야 한다.

23022 (SQLSTATE: 07001): USING clause: illegal variable name/number

Cause

Prepared statement의 매개 변수 개수 보다 USING 절의 호스트 변수 개수가 크다.

Action

매개 변수 개수와 동일하게 호스트 변수를 사용해야 한다.

23023 (SQLSTATE: 07001): USING clause: not all variables bound

Cause

Prepared statement의 매개 변수 개수 보다 USING 절의 호스트 변수 개수가 작다.

Action

매개 변수 개수와 동일하게 호스트 변수를 사용해야 한다.

23024 (SQLSTATE: 07007): INTO clause required for result fields

Cause

Column이 있는 prepared statement를 이용한 dynamic method 구문 EXECUTE에서 INTO절을 사용하지 않았다.

Action

EXECUTE 구문에 INTO 절을 사용해야 한다.

23025 (SQLSTATE: 07001): INTO clause: illegal variable name/number

Cause

Prepared statement의 column 개수 보다 INTO 절의 호스트 변수 개수가 크다.

Action

Column 개수와 동일하게 호스트 변수를 사용해야 한다.

23026 (SQLSTATE: 07001): INTO clause: not all variables bound

Cause

Prepared statement의 column 개수 보다 INTO 절의 호스트 변수 개수가 작다.

Action

Column 개수와 동일하게 호스트 변수를 사용해야 한다.

23027 (SQLSTATE: 22002): null value, no indicator parameter

Cause

INDICATOR를 위한 호스트 변수를 사용하지 않고 NULL 데이터를 반환하려고 하였다.

Action

INDICATOR를 위한 호스트 변수를 사용한다. 또는 빌드 과정에서 gpec 옵션 unsafe-null을 사용한다.

23028 (SQLSTATE: 07005): cursor "%s" statement is not a query

Cause

Dynamic method에서 OPEN 구문을 수행한 prepared statement가 query가 아니다.

Action

OPEN 구문을 수행하려 한 prepared statement의 구문을 확인하고 알맞게 수정한다.

23029 (SQLSTATE: 08003): connection not open

Cause

DB와 연결이 끊긴 상태에서 embedded SQL 구문을 실행하였다.

Action

DB 연결 상태를 확인한다.

23030 (SQLSTATE: 34000): cursor "%s" is not updatable

Cause

UPDATE 또는 DELETE 구문에 사용한 cursor가 updatable 하지 않다.

Action

Cursor를 선언할 때 FOR UPDATE 절을 사용해야 한다.

23031 (SQLSTATE: 08002): connection name "%s" in use

Cause

주어진 이름의 connection이 이미 존재한다.

Action

이름을 변경하고 시도한다.

23032 (SQLSTATE: 08002): duplicate connection context

Cause

연결을 시도하려고 사용한 context는 이미 연결이 되어있다.

Action

상황에 맞게 처리한다.

23033 (SQLSTATE: HY000): GROUPID type is only available with global connection

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

23034 (SQLSTATE: 42000): SELECT INTO or RETURN INTO returns too many rows

Cause

SELECT INTO 또는 DML에 RETURN INTO 구문을 배열로 실행하였는데 row의 수가 배열 크기보다 크다.

Action

배열 크기를 더 크게 해야 한다.

23035 (SQLSTATE: 24000): cursor "%s" is not declared

Cause

선언되지 않은 cursor를 OPEN 구문에 사용하였다.

Action

OPEN 구문을 실행하기 전에 DECLARE 구문으로 cursor를 선언한다.

23036 (SQLSTATE: 24000): cursor "%s" is not closed

Cause

Open 상태의 cursor를 DECLARE 구문에 사용하였다.

Action

Cursor 상태를 확인하고 상황에 맞게 처리한다.

23037 (SQLSTATE: 24000): cursor "%s" is already opened

Cause

Standing cursor에서 open 상태의 cursor를 다시 open 하려 하였다.

Action

Cursor 상태를 확인하고 상황에 맞게 처리한다.

23038 (SQLSTATE: 24000): cursor "%s" is not a dynamic cursor

Cause

OPEN 구문에서 사용한 cursor가 dynamic SQL로 선언되지 않았는데 호스트 변수를 사용하였다.

Action

Cursor를 dynamic SQL로 다시 선언하거나 호스트 변수를 사용하지 않는다.

23039 (SQLSTATE: HY000): invalid cursor

Cause

SQL_CURSOR 타입 호스트 변수가 NULL 값을 가지고 있다.

Action

SQL_CURSOR를 할당하고 cursor를 얻어야 한다.

23040 (SQLSTATE: 07000): Attempt to allocate existing descriptor

Cause

이미 할당한 descriptor를 다시 할당하려고 하였다.

Action

이미 할당한 descriptor를 다시 할당하려면 descriptor를 해제해야 한다.

23041 (SQLSTATE: 07000): "%s" invalid descriptor

Cause

주어진 이름의 descriptor가 없다.

Action

Descriptor 이름을 올바르게 설정한다.

23042 (SQLSTATE: 07009): invalid descriptor index

Cause

GET 또는 SET 구문에서 column 인덱스 값이 occurrence의 범위를 넘거나 0 이하이다.

Action

Column 인덱스 값을 올바르게 설정하거나 occurrence를 크게 하여 descriptor를 재할당한다.

23043 (SQLSTATE: 07000): Insufficient item descriptor areas

Cause

SQL의 parameter 또는 column의 개수가 descriptor의 occurrence 값보다 크다.

Action

Descriptor의 occurrence 값을 더 크게 할당 한다.

23044 (SQLSTATE: HY000): Descriptor is not proper parameter list

Cause

SQL의 parameter 기대값보다 descriptor의 parameter 개수가 작다.

Action

DESCRIBE 구문을 실행하여 descriptor를 설정하거나 직접 descriptor를 설정한다.

23045 (SQLSTATE: 07000): Descriptor is not proper select list

Cause

SQL의 column 기대값보다 descriptor의 column 개수가 작다.

Action

DESCRIBE 구문을 실행하여 descriptor를 설정하거나 직접 descriptor를 설정한다.

23046 (SQLSTATE: 07006): invalid data type for descriptor

Cause

SET 구문의 TYPE이 올바르지 못하다.

Action

올바른 SQL TYPE을 사용한다.

23047 (SQLSTATE: 07006): The host variable type are not compatible with descriptor's type

Cause

GET 구문에서 DATA를 얻기 위해 사용한 호스트 변수의 타입이 호환되지 않는다.

Action

DATA와 호환되는 호스트 변수를 사용한다.

23048 (SQLSTATE: 07000): Encountered zero length in ANSI dynamic SET statement

Cause

SET 구문에서 LENGTH의 값이 0 이하의 값이다.

Action

LENGTH의 값을 0보다 큰 값으로 설정한다.

23049 (SQLSTATE: 07000): invalid SQLDA

Cause

구문에 사용한 SQLDA가 NULL로 유효하지 않다.

Action

구문을 실행하기 전에 SQLSQLDAAlloc 함수를 이용하여 SQLDA를 할당한다.

23050 (SQLSTATE: 22000): invalid length with variable character or binary

Cause

.gc 파일 내에서 VARCHAR 또는 VARBINARY 변수가 사용될 경우, 해당 변수를 포함하는 구조체의 len 멤버 변수에 음수 값이 설정되면 이 오류가 발생한다. 이 오류는 해당 변수가 프로시저의 IN 또는 IN_OUT 매개변수로 사용될 때만 감지된다.

Action

VARCHAR 또는 VARBINARY 변수의 len 멤버에 음수가 아닌 실제 데이터의 길이를 설정한 후 실행해야 한다.

Embedded SQL Pre-compile 관련 에러

41000 (SQLSTATE: 42000): syntax error

Cause

에러 메시지에 나온 구문이 잘못되었다.

Action

에러 메시지에 나온 구문을 수정한다.

41001 (SQLSTATE: 0A000): feature not supported

Cause

사용한 구문이 지원되지 않는다.

Action

에러가 발생한 구문이 아직 지원되지 않으므로 대체할 수 있는 구문을 사용해야 한다.

41002 (SQLSTATE: 42000): Host variable "%s" not declared

Cause

호스트 변수가 선언되지 않았다.

Action

DECLARE SECTION에 호스트 변수를 선언한다.

41003 (SQLSTATE: 42000): Cursor "%s" not declared

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

41004 (SQLSTATE: 42000): "%s": file not exist

Cause

INCLUDE 구문에 사용된 헤더 파일이 존재하지 않는다.

Action

헤더 파일 이름을 확인하고 수정한다.

41005 (SQLSTATE: 42000): expression type does not match usage

Cause

에러 발생한 구문에서 사용한 호스트 변수가 구문에 사용되는 변수 타입과 맞지 않는다.

Action

호스트 변수의 타입을 수정한다.

41006 (SQLSTATE: 42000): Fatal error while doing embedded SQL preprocessing

Cause

SQL 구문을 분석하다가 에러가 발생하였다.

Action

SQL 구문을 올바르게 수정한다.

41007 (SQLSTATE: HY000): Precompiler can't create symbol table

Cause

Symbol Table을 생성하다가 실패하였다.

Action

시스템 에러 번호를 확인하고 대응한다.

41008 (SQLSTATE: HY000): Precompiler can't destroy symbol table

Cause

Symbol Table을 제거하다가 실패하였다.

Action

시스템 에러 번호를 확인하고 대응한다.

41009 (SQLSTATE: 42000): identifier is too long

Cause

식별자 이름 길이가 128를 초과하였다.

Action

식별자의 이름 길이는 128 보다 작아야 한다.

41010 (SQLSTATE: 42000): token "%s" is not valid in preprocessor expressions

Cause

전처리기 중 함수 매크로에서 double quote (")를 사용한 문자열을 인자로 사용하였다.

Action

함수 매크로의 인자는 double quote (")를 사용한 문자열을 지원하지 않는다.

41011 (SQLSTATE: 42000): multi-character character constant

Cause

전처리기에서 double quote (")를 사용한 문자 상수를 두 개 이상의 문자로 표현하였다.

Action

Double quote (")를 사용한 문자 상수의 길이는 1이어야 한다.

41012 (SQLSTATE: 42000): floating constant in preprocessor expression

Cause

전처리기에서 실수를 상수로 선언하였다.

Action

전처리기에서 실수 상수는 지원하지 않는다.

41013 (SQLSTATE: 42000): invalid suffix "%s" on integer constant

Cause

전처리기에서 정수 상수 표현에 올바르지 않은 접미사가 사용되었다.

Action

정수 상수에 사용할 수 있는 접미사는 u, U, l, L이다.

41014 (SQLSTATE: 42000): cursor name "%s" already declared

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

41015 (SQLSTATE: 07004): cursor "%s" is not a dynamic cursor

Cause

커서가 이미 static 커서로 선언 되었다.

Action

Deprecated

41016 (SQLSTATE: 42000): "%s" has no member named "%s"

Cause

호스트 변수가 구조체의 멤버 변수가 아니다.

Action

변수 이름을 확인하여 올바르게 수정한다.

41017 (SQLSTATE: 42000): storage size of "%s" isn't known

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

41018 (SQLSTATE: 42000): variable "%s" must be integer type

Cause

구문에 사용된 호스트 변수가 정수 타입이 아니다.

Action

호스트 변수의 타입을 정수 타입으로 수정한다.

41019 (SQLSTATE: 42000): variable "%s" must be string type

Cause

구문에 사용된 호스트 변수가 문자열 타입이 아니다.

Action

호스트 변수 타입을 문자열 타입으로 수정한다.

41020 (SQLSTATE: 42000): invalid indicator variable type: indicator variable "%s" must have numeric type(char/short/int/long)

Cause

Indicator로 사용된 호스트 변수 타입이 올바르지 못하다.

Action

Indicator로 사용되는 호스트 변수는 char, short, int, long 타입만 가능하다.

41021 (SQLSTATE: 42000): duplicate "%s"

Cause

호스트 변수 선언에서 타입 한정자와 같은 키워드가 중복 사용되었다.

Action

중복된 키워드가 있는지 확인하고 수정한다.

41022 (SQLSTATE: 42000): both "%s" and "%s" in declaration specifiers

Cause

호스트 변수 선언의 long long 선언에서 long이 두 번을 초과되어 선언되었다.

Action

호스트 변수 선언에서 long이 두 번을 초과해 선언되었는지 확인하고 수정한다.

41023 (SQLSTATE: 42000): two or more data types in declaration specifiers

Cause

호스트 변수 선언에서 데이터 타입이 혼용되어 사용되었다.

Action

Deprecated

41024 (SQLSTATE: 42000): C++ punctuation sequences are not permitted

Cause

c++ 문법으로 호스트 변수를 선언하였다.

Action

호스트 변수 선언에 콜론 (:)을 사용할 수 없다.

41025 (SQLSTATE: 42000): host variable expression has invalid type

Cause

구문에 사용된 호스트 변수의 타입이 유효하지 않다.

Action

호스트 변수의 타입을 확인하고 수정한다.

41026 (SQLSTATE: 42000): typedef "%s" has invalid

Cause

typedef 로 선언된 타입이 유효하지 않다.

Action

typedef로 타입을 선언할 때 char 타입은 2차 배열, 이외의 타입은 1차 배열만 가능하다.

41027 (SQLSTATE: 42000): too many 'define' macro (%d)

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

41028 (SQLSTATE: 42000): '%s' macro is already defined at line %d, in file %s

Cause

매크로가 이미 정의 되었다.

Action

에러가 발생한 매크로를 확인하고 수정한다.

41029 (SQLSTATE: 42000): missing host variable

Cause

에러가 발생한 구문에 콜론 (:)만 기입되고 호스트 변수가 누락되었다.

Action

에러 구문을 확인하고 수정한다.

41030 (SQLSTATE: 42000): invalid getting groupid variable type: variable "%s" must have signed numeric type

Cause

GET CLUSTER_GROUP_ID 구문에서 사용한 호스트 변수가 부호를 갖는 정수형 타입이 아니다.

Action

GET CLUSTER_GROUP_ID 구문에는 부호를 갖는 정수형 타입 호스트 변수를 사용한다.

41031 (SQLSTATE: 42000): invalid sql statement: getting groupid is available with select/update/delete/insert statement

Cause

GET CLUSTER_GROUP_ID 구문에 SELECT, UPDATE, DELETE, INSERT 이외의 SQL을 사용하였다.

Action

GET CLUSTER_GROUP_ID 구문에는 SELECT, UPDATE, DELETE, INSERT 구문만 사용한다.

41032 (SQLSTATE: HY000): cursor variable type can not use an array

Cause

SQL_CURSOR 타입의 호스트 변수를 배열로 선언하였다.

Action

SQL_CURSOR 타입의 호스트 변수는 배열로 사용하지 않는다.

41033 (SQLSTATE: 42000): Invalid type for %s descriptor item host variable

Cause

Ansi descriptor에서 item에 맞지 않는 호스트 변수 타입을 사용하였다.

Action

Item에 맞는 호스트 변수 타입을 사용한다.

41034 (SQLSTATE: 42000): Invalid combination of descriptor and non-descriptor clauses

Cause

Dynamic SQL 구문에서 descriptor와 non-descriptor 절을 혼합하여 사용하였다.

Action

Dynamic SQL 구문에 descriptor와 non-descriptor 절을 혼합하여 사용하지 않는다.

41035 (SQLSTATE: 42000): variable "%s" for the descriptor's indicator must have the same size as SQLLEN

Cause

Descriptor에서 사용할 indicator 호스트 변수의 크기가 SQLLEN의 크기와 다르다.

Action

Indicator로 사용하는 호스트 변수를 SQLLEN과 크기가 동일한 타입으로 선언한다.

41036 (SQLSTATE: 42000): Expecting a value between 1 and 65535 inclusive

Cause

Ansi descriptor를 할당할 때 occurrence의 범위가 올바르지 못하다.

Action

Occurrence의 범위를 1 ~ 65535 내에서 사용한다. (기본값 100)

41037 (SQLSTATE: 42000): invalid descriptor index

Cause

Ansi descriptor 관련 구문에서 column index가 0 이하의 값으로 사용되었다.

Action

Column index를 0 보다 큰 값으로 설정한다.

41038 (SQLSTATE: 42000): preprocessor with no expression

Cause

전처리기가 정의되어 있지만, 해당 전처리기에 값이 설정되어 있지 않다. 예시 코드와 같이 전처리기에 값이 설정되지 않으면 조건문이 올바르게 평가되지 않는다.


#define ___AAA___

#if ___AAA___ == 0

VARCHAR var;

#else

char var;

#endif

Action

전처리기를 사용할 때는 반드시 참 또는 거짓으로 평가될 수 있도록 명확한 값을 설정해야 한다. 조건문에서 올바르게 평가할 수 있도록 값을 수정한다.

Communication 관련 에러

Communication 관련 에러

24000 (SQLSTATE: 08S01): Communication link failure

Cause

통신 연결이 끊어졌다.

Action

네트워크 상태 등을 확인하고 재접속한다.

24001 (SQLSTATE: 08S01): Invalid communication protocol

Cause

통신 프로토콜 형식에 오류가 있거나 네트워크 전송 중에 데이터가 손상 또는 변조되었다.

Action

서버와 호환되는 클라이언트 라이브러리를 사용하거나 네트워크 연결 상태를 점검한다.

24002 (SQLSTATE: 22000): Invalid GOLDILOCKS_DATA Directory

Cause

환경변수 GOLDILOCKS_DATA에 해당하는 directory 가 잘못되었다.

Action

환경변수 GOLDILOCKS_DATA 값을 확인한다.

24003 (SQLSTATE: 22000): not supported function

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

24004 (SQLSTATE: 22000): Invalid interprocess protocol

Cause

IPC 통신 버전이 호환되지 않는다.

Action

서버와 호환되는 client 버전을 사용한다.

24005 (SQLSTATE: 22000): Unable to attach the shared memory segment. unable to access the file '%s'

Cause

$GOLDILOCKS_HOME/conf/shmstatic_info 파일에 접근하지 못할 때 발생하는 오류이다.

이 파일은 서버가 startup 될 때 생성되며, 모든 서버 프로세스는 이 파일의 정보를 이용해 SSA 에 attach 한다.

Action

서버를 재시작하면 shmstatic_info 파일이 다시 생성된다.

24006 (SQLSTATE: HV090): Invalid string length or buffer length

Cause

클라이언트와 서버가 통신하는 과정에서 수신할 문자열 길이보다 버퍼 크기가 작을 때 발생하는 에러이다. 이 에러는 내부 프로토콜 처리 과정에서 서버 또는 클라이언트가 메시지의 길이를 잘못 해석했거나, 예상보다 큰 데이터를 수신하려 할 때 발생할 수 있다.

Action

해당 에러 발생 시 고객센터에 문의한다.

24007 (SQLSTATE: 22000): not matched command sequence number

Cause

User Datagram Protocol (UDP)을 사용하면 네트워크 환경에 따라 패킷이 손실될 수 있다. 이 에러는 command 요청이나 응답 패킷이 손실되어 클라이언트와 서버 간의 command 시퀀스 번호가 일치하지 않을 경우에 발생한다.

Action

누락된 command가 정상적으로 처리되지 않았을 수 있으므로 동일한 command를 다시 전송하여 재실행해야 한다.

24008 (SQLSTATE: HYT01): Connection timeout expired

Cause

통신 중에 EAGAIN 등과 같은 에러가 발생하였다.

Action

내부에서 제어되는 에러이다.

24009 (SQLSTATE: 08001): SSL connection failed

Cause

SSL 암호화 연결에 실패하였다.

Action

클라이언트와 서버의 OpenSSL 버전이 호환되는지 확인하고, 서버에 유효한 인증서가 올바르게 설정되어 있는지 점검한다.

Server Communication 관련 에러

52000 (SQLSTATE: 08S01): Communication link failure

Cause

데이터베이스가 완전히 시작되지 않은 상태에서 IPC 채널을 초기화하려고 했다.

Action

공유 메모리 상태를 확인한 후 데이터베이스를 다시 시작한다.

52001 (SQLSTATE: 08000): Invalid communication protocol

Cause

클라이언트와 서버 간의 통신 프로토콜 버전이 호환되지 않는다.

Action

서버 버전과 호환되는 클라이언트 라이브러리를 사용한다.

52002 (SQLSTATE: HY000): Not enough cm unit memory

Cause

데이터를 대용량으로 전송하거나 많은 수의 쿼리를 동시에 실행하여 통신 버퍼가 부족하다.

Action

설정 파일의 MAXIMUM_SESSION_CM_BUFFER_SIZE 값을 늘리거나 쿼리 최적화를 통해 불필요하게 많은 양의 데이터가 전송되지 않도록 한다.

52003 (SQLSTATE: HY000): exceeded maximum packet allocation timeout

Cause

고부하 상황에서 과도한 동시 연결이나 대용량 데이터 전송으로 인해 패킷 할당이 지연될 수 있다.

Action

설정 파일의 BLOCK_READ_COUNT 나 CLUSTER_PACKET_ALLOCATION_TIMEOUT 값을 늘린다.

52004 (SQLSTATE: 08001): exceeded maximum number of ipc channels

Cause

사용 가능한 IPC 채널의 최대 개수를 초과하였다.

Action

설정 파일의 IPC_CHNNEL_COUNT 값을 늘린다.

52005 (SQLSTATE: HYT00): Timeout expired

Cause

네트워크 통신 중 지정된 타임아웃 시간을 초과하였다.

Action

서버와 클라이언트의 타임아웃 설정을 조정하거나 방화벽, 네트워크 장비를 확인한다.

52006 (SQLSTATE: 08001): Unable to open certificate or key file : %s

Cause

SSL 인증서 파일 또는 개인 키 파일을 열 수 없다.

Action

SSL 인증서와 개인 키 파일이 실제로 존재하는지, 경로가 올바른지 확인하고, 인증서 파일 형식이 올바른지 점검한다.

52007 (SQLSTATE: 08001): SSL connection failed

Cause

SSL 보안 연결에 실패하였다.

Action

서버에 OpenSSL 라이브러리가 올바르게 설치되었는지 확인하고, SSL 인증서와 개인 키 파일의 유효성을 검증한다.

ServerLibrary 관련 에러

25000 (SQLSTATE: 0A000): feature not supported

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

25001 (SQLSTATE: 08001): Server is not running

Cause

클라이언트에서 서버가 준비되기 전에 연결을 시도했다.

Action

서버 상태를 확인한다.

25002 (SQLSTATE: HY000): Environment Variable "%s" is not defined

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

25003 (SQLSTATE: 08000): Invalid protocol

Cause

클라이언트와 서버 간의 프로토콜 통신 중에 잘못된 요청이나 파라미터가 전달되었다.

Action

애플리케이션 로직을 점검하거나 클라이언트 드라이버 버전과 서버 버전의 호환성을 확인한다.

25004 (SQLSTATE: HY000): STARTUP must be executed in dedicated session

Cause

데이터베이스 시작 명령을 shared 모드에서 실행하려고 했다.

Action

데이터베이스는 dedicated 모드에서 시작한다.

25005 (SQLSTATE: HY000): session killed

Cause

관리자가 세션을 강제로 종료했거나, 리소스 부족 또는 네트워크 연결 문제로 인해 세션이 비정상적으로 종료되었다.

Action

로그를 통해 세션 종료 원인을 파악한다.

25006 (SQLSTATE: HY000): remote session is not opened

Cause

클러스터 환경에서 원격 세션이 열리지 않은 상태로 원격 작업을 수행하였다.

Action

클러스터 상태를 확인한다.

25007 (SQLSTATE: 42000): the property '%s' of cluster member '%s' is not compatible with the cluster system

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

25008 (SQLSTATE: 42000): the scn '%s' of cluster member '%s' is mismatch

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

25009 (SQLSTATE: HY000): number of shared servers must be greater than or equal to number of request queues

Cause

Shared 서버의 개수가 요청된 queue의 개수보다 적게 설정되었다.

Action

설정 파일의 SHARED_SERVERS 값을 SHARED_REQUEST_QUEUE_COUNT 값보다 크게 설정한다.

25010 (SQLSTATE: 42000): internal error ( %s, %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다.

25011 (SQLSTATE: HY000): startup cannot be performed on ipc

Cause

IPC 연결에서 데이터베이스 시작 명령을 실행했다.

Action

Dedicated 연결을 사용하여 데이터베이스를 시작한다.

Foreign Function 관련 에러

26000 (SQLSTATE: 07006): the external type is not appropriate for the parameter

Cause

routine parameter의 datatype을 지정된 external parameter의 datatype으로 변환하려고 시도했지만 실패하였다.

Action

변환가능한 external datatype이나 parameter datatype을 지정한다.

26001(SQLSTATE: 07006): Incorrect Usage of MAXLEN in parameters clause

Cause

PARAMETER 절에 MAXLEN 의 키워드 사용이 잘못되었다.

Action

MAXLEN 은 OUT, IN OUT 또는 RETURN 타입의 CHAR 또는 BINARY 계열의 datatype의 routine parameter에 대해서만 선언 가능하다.

MAXLEN의 external datatype은 숫자형 타입만 허용된다.

26002(SQLSTATE: 07006): Incorrect Usage of LENGTH in parameters clause

Cause

PARAMETER 절에 LENGTH 의 키워드 사용이 잘못되었다.

Action

LENGTH 는 CHAR 또는 BINARY 계열의 datatype의 formal parameter에 대해서만 선언가능하다.

MAXLEN 의 external datatype은 숫자형 타입만 허용된다.

26003(SQLSTATE: 07006): Invalid external type specification for INDICATOR

Cause

INDICATOR 에 대한 external datatype이 잘못되었다

Action

INDICATOR의 external datatype은 숫자형 타입만 허용된다.

26004(SQLSTATE: 22003): numeric overflow

Cause

값 표현식을 평가하면 오버플로/언더플로가 발생한다.

Action

external parameter datatype이나 routine parameter datatype을 변경한다.

26005(SQLSTATE: 22027): Length Mismatch for CHAR or BINARY data

Cause

routine parameter의 길이가 external parameter의 길이보다 작다.

매개 변수의 길이가 외부 매개 변수의 길이보다 작다.

Action

routine parameter의 길이를 변경한다.

26006(SQLSTATE: 39000): failed to open library(%s)

Cause

dynamic link library를 열지 못했다.

Action

dynamic link library의 경로를 확인한다.

26007(SQLSTATE: 39000): invalid datetime format

Cause

external parameter의 날짜/시간 형식이 올바르지 않다.

Action

external parameter의 날짜/시간 값을 확인한다.

26008(SQLSTATE: HY000): failed to start up a process 'gextproc'

Cause

'gextproc' 프로세스를 시작하지 못했다.

Action

/tmp 에 'gextproc' 에서 사용하는 unix domain socket 이 정상적으로 생성 되는지 확인한다.

26009(SQLSTATE: 39000): lost connection to 'gextproc'

Cause

호출된 external C routine이 비정상적으로 종료되었다.

Action

external C routine의 동작을 확인한다.

gsql/ gsqlnet 관련 에러

40000 (SQLSTATE: 42000): syntax error

Cause

SQL 문법이 잘못되었다.


gSQL> SELECT FROM t1;

ERR-42000(40000): syntax error:

SELECT FROM t1

^ ^

Error at line 1

Action

SQL 문법을 준수한다.


gSQL> SELECT c1 FROM t1;

C1

--

1

1 row selected.

40001 (SQLSTATE: 0A000): feature not supported

Cause

내부 테스트용 에러이다.

Action

N/A

40002 (SQLSTATE: HY000): Bind variable "%s" not declared

Cause

Bind 변수를 선언하지 않았다.


gSQL> SELECT c1 FROM t1 WHERE c1 = :v1;

ERR-HY000(40002): Bind variable "v1" not declared

Action

다음과 같이 bind 변수를 선언하고 사용한다.


gSQL> \var v1 INTEGER

gSQL> \exec :v1 := 1

gSQL> SELECT c1 FROM t1 WHERE c1 = :v1;

C1

--

1

1 row selected.

40003 (SQLSTATE: 42000): "%s": table or view does not exist.

Cause

다음과 같은 gSQL 명령어를 수행하는 중에 해당 table 이 DROP 되면 발생한다.


gSQL> \desc t1

Action

DROP 이 완료된 후에 해당 명령을 다시 수행하면 다음과 같은 에러를 확인할 수 있다.


gSQL> \desc t1

ERR-42000(16040): table or view does not exist :

SELECT * FROM T1@LOCAL WHERE 1 = 0

*

ERROR at line 1:

40004 (SQLSTATE: 42000): "%s": index does not exist.

Cause

해당 인덱스가 존재하지 않을 경우에 발생한다.


gSQL> \idesc invalid_index

ERR-42000(40004): "INVALID_INDEX": index does not exist.

Action

올바른 인덱스 이름을 사용한다.


gSQL> \idesc idx1

COLUMN_NAME ORDINAL_POSITION IS_ASCENDING_ORDER IS_NULLS_FIRST

----------- ---------------- ------------------ --------------

C1 1 TRUE FALSE

40005 (SQLSTATE: RD000): Service is not available

Cause

ODBC 드라이버 로딩에 실패하여 gsql 을 사용할 수 없다.

Action

시스템 리소스를 확인한다.

40006 (SQLSTATE: RD000): Statement is not prepared

Cause

SQL 구문을 prepare 하지 않았다.


gSQL> \exec

ERR-RD000(40006): Statement is not prepared.

Action

다음과 같이 SQL 구문을 prepare 한 후에 \exec 를 수행한다.


gSQL> \prepare sql SELECT c1 FROM t1 WHERE c1 = 1;

SQL prepared.


gSQL> \exec

C1

--

1

1 row selected.

40007 (SQLSTATE: 42000): '%s': duplicate statement

Cause

gSQL 기능 중에 \alloc 을 이용하여 동일한 statement 이름을 정의할 때 발생한다.


gSQL> \alloc stmt2


gSQL> \alloc stmt2

ERR-42000(40007): 'stmt2': duplicate statement

Action

\alloc 명령을 사용할 때 서로 다른 이름을 사용한다.

40008 (SQLSTATE: 42000): '%s': statement does not exist

Cause

gSQL 명령에서 존재하지 않는 statement 이름을 사용할 때 발생한다.


gSQL> \alloc stmt2

gSQL> \free invalid


ERR-42000(40008): 'invalid': statement does not exist

Action

다음과 같이 존재하는 statement 이름을 사용한다.


gSQL> \free stmt2

gSQL>

40009 (SQLSTATE: 42000): '%s': statement is not prepared

Cause

gSQL 명령어 중에 \use 명령을 사용할 때 prepare 되지 않은 statement를 실행하면 발생한다.


gSQL> \alloc stmt1

gSQL> \use stmt1 exec


ERR-42000(40009): 'stmt1': statement is not prepared

Action

다음과 같이 prepare sql 이후에 사용해야 한다.


gSQL> \use stmt1 prepare sql SELECT * FROM t1;

SQL prepared.


gSQL> \use stmt1 exec

no rows selected.

40010 (SQLSTATE: 42000): insufficient privileges

Cause

다음과 같이 권한이 필요한 gSQL 명령어를 수행할 때 발생한다.


gSQL> \connect u1 u1

gSQL> \shutdown

ERR-42000(40010): insufficient privileges

Action

권한이 있는 사용자로 접속하여 수행해야 한다.

40011 (SQLSTATE: 42000): driver does not support %s function

Cause

gSQL 에서 사용하는 ODBC 함수를 ODBC 드라이버에서 제공하지 않을 때 발생한다.

Action

해당 함수를 지원하는 ODBC 드라이버를 사용해야 한다.

40012 (SQLSTATE: 42000): invalid object for describe

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

40013 (SQLSTATE: 42000): driver does not support the requested connection mode( %s )

Cause

gSQL 접속 모드가 유효하지 않을 때 발생한다.

Action

유효한 접속 모드 (D/A, C/S) 를 사용해야 한다.

40014 (SQLSTATE: HY000): the rollback was caused by an unspecified reason

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40015 (SQLSTATE: HY000): the rollback was caused by a communication failure

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40016 (SQLSTATE: HY000): a deadlock was detected

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40017 (SQLSTATE: HY000): a condition that violates the integrity of the resources was detected

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40018 (SQLSTATE: HY000): the resource manager rolled back the transaction branch for a reason not on this list

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40019 (SQLSTATE: HY000): a protocol error occurred in the resource manager

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40020 (SQLSTATE: HY000): a transaction branch took too long

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40021 (SQLSTATE: HY000): may retry the transaction branch

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40022 (SQLSTATE: HY000): the inclusive upper bound of the rollback codes

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40023 (SQLSTATE: HY000): resumption must occur where suspension occurred

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40024 (SQLSTATE: HY000): the transaction branch may have been heuristically completed

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40025 (SQLSTATE: HY000): the transaction branch has been heuristically committed

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40026 (SQLSTATE: HY000): the transaction branch has been heuristically rolled back

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40027 (SQLSTATE: HY000): the transaction branch has been heuristically committed and rolled back

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40028 (SQLSTATE: HY000): routine returned with no effect and may be re-issued

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40029 (SQLSTATE: HY000): the transaction branch was read-only and has been committed

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40030 (SQLSTATE: HY000): asynchronous operation already outstanding

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40031 (SQLSTATE: HY000): a resource manager error occurred in the transaction branch

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40032 (SQLSTATE: HY000): the XID is not valid

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40033 (SQLSTATE: HY000): invalid arguments were given

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40034 (SQLSTATE: HY000): routine invoked in an improper context

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40035 (SQLSTATE: HY000): resource manager unavailable

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40036 (SQLSTATE: HY000): the XID already exists

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40037 (SQLSTATE: HY000): resource manager doing work outside transaction

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40038 (SQLSTATE: HY000): unknown xa error

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40039 (SQLSTATE: HY000): marked the transaction branch rollback-only for unspecified reason

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40040 (SQLSTATE: HY000): cannot open the resource

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40041 (SQLSTATE: HY000): cannot close the resource

Cause

내부 X/A 테스트용 에러 코드이다.

Action

N/A

40042 (SQLSTATE: HY000): the sql is empty

Cause

\dynamic sql 명령을 실행할 때 bind 변수에 SQL 구문이 없다.


gSQL> \var sql_string VARCHAR(1024)

gSQL> \dynamic sql :sql_string


ERR-HY000(40042): the sql is empty

Action

다음과 같이 bind 변수에 SQL 구문을 설정한 후에 \dynamic sql 명령어를 사용한다.


gSQL> \exec :sql_string := 'SELECT c1 FROM t1'

gSQL> \dynamic sql :sql_string

C1

--

1

1 row selected.

40043 (SQLSTATE: HY000): invalid host variable type

Cause

\dynamic sql 명령에 대한 bind 변수는 string 계열의 data type 이어야 한다.


gSQL> \var v_int INTEGER

gSQL> \dynamic sql :v_int


ERR-HY000(40043): invalid host variable type

Action

다음과 같이 string 계열의 bind 변수를 사용한다.


gSQL> \var v_string VARCHAR(1024)

gSQL> \exec :v_string := 'SELECT c1 FROM t1'

gSQL> \dynamic sql :v_string

C1

--

1

1 row selected.

40044 (SQLSTATE: 08003): connection does not exist

Cause

Startup 하지 않은 상태에서 SQL 구문을 실행하였다.


% gsql --as sysdba

Connected to an idle instance.

gSQL> select * from dual;

ERR-08003(40044): connection does not exist:

Action

다음과 같이 startup 후에 SQL 구문을 실행한다.


gSQL> \startup

Startup success

gSQL> select * from dual;

DUMMY

-----

X

1 row selected.

40045 (SQLSTATE: HY000): invalid NUMSIZE value: NUMSIZE must be between %d and %d

Cause

NUMSIZE 값이 유효하지 않다.


gSQL> \set numsize -1

ERR-HY000(40045): invalid NUMSIZE value: NUMSIZE must be between 1 and 50

Action

유효한 범위 내의 NUMSIZE 값을 사용한다.


gSQL> \set numsize 50

40046 (SQLSTATE: HY000): invalid PAGESIZE value: PAGESIZE must be between %d and %d

Cause

PAGESIZE 값이 유효하지 않다.


gSQL> \set pagesize -1

ERR-HY000(40046): invalid PAGESIZE value: PAGESIZE must be between 1 and 100000

Action

유효한 범위 내의 PAGESIZE 값을 사용한다.


gSQL> \set pagesize 100

40047 (SQLSTATE: HY000): invalid LINESIZE value: LINESIZE must be between %d and %d

Cause

LINESIZE 값이 유효하지 않다.


gSQL> \set linesize -1

ERR-HY000(40047): invalid LINESIZE value: LINESIZE must be between 1 and 100000

Action

유효한 범위 내의 LINESIZE 값을 사용한다.


gSQL> \set linesize 100

40048 (SQLSTATE: HY000): invalid COLSIZE value: COLSIZE must be between %d and %d

Cause

유효하지 않은 범위의 COLSIZE 값을 사용하였다.


gSQL> \set colsize -1

ERR-HY000(40048): invalid COLSIZE value: COLSIZE must be between 1 and 104857600

Action

유효한 범위 내의 COLSIZE 값을 사용한다.


gSQL> \set colsize 100

40049 (SQLSTATE: HY000): invalid HISTORY value: HISTORY must be less equal than %d

Cause

HISTORY 값이 유효하지 않다.


gSQL> \set history 100000000000

ERR-HY000(40049): invalid HISTORY value: HISTORY must be less equal than 100000

Action

유효한 범위 내의 HISTORY 값을 사용한다.


gSQL> \set history 100

40050 (SQLSTATE: HY000): invalid DDLSIZE value: DDLSIZE must be between %d and %d

Cause

DDLSIZE 값이 유효하지 않다.


gSQL> \set ddlsize -1

ERR-HY000(40050): invalid DDLSIZE value: DDLSIZE must be between 1 and 10485760

Action

유효한 범위 내의 DDLSIZE 값을 사용한다.


gSQL> \set ddlsize 10000

40051 (SQLSTATE: HY000): invalid object identifier

Cause

SQL 객체의 DDL 구문 출력 명령어를 수행하는 중에 관련 객체가 변경되었다.

Action

DDL이 완료된 후에 SQL 객체의 DDL 구문 출력 명령을 사용한다.

40052 (SQLSTATE: HY000): not enough DDLSIZE.
                      use command: \set ddlsize {n}

Cause

DDLSIZE 값이 작아서 DDL 구문을 출력할 수 없다.


gSQL> \set ddlsize 10

gSQL> \ddl_table t1

ERR-HY000(40052): not enough DDLSIZE.

use command: \set ddlsize {n}

Action

DDLSIZE 값을 변경한 후 다시 실행한다.


gSQL> \set ddlsize 10000

gSQL> \ddl_table t1


SET SESSION AUTHORIZATION "TEST";

CREATE TABLE "PUBLIC"."T1"

(

"C1" NUMBER( 10, 0 )

)

PCTFREE 10

PCTUSED 60

INITRANS 4

MAXTRANS 32

STORAGE

(

INITIAL 524288

NEXT 262144

MINSIZE 524288

MAXSIZE 35184372088832

)

TABLESPACE "MEM_DATA_TBS"

;

COMMIT;

40053 (SQLSTATE: HY000): confirmation password mismatch

Cause

패스워드가 만료 후 새로 두 번 입력한 패스워드가 일치하지 않는다.


% gsql u1 u1_password

ERR-28000(16312): the password has expired

Changing password for u1

New password:

Retype new password:

ERR-HY000(40053): confirmation password mismatch

Action

패스워드를 정확하게 입력한다.

40054 (SQLSTATE: HY000): invalid locator ini property - '%s'

Cause

데이터 소스의 LOCATOR_DSN 설정에 따라 location 파일 또는 glocator로부터 멤버 노드의 접속 정보를 얻으려고 하였지만 접속 정보가 누락되었다.

Action

멤버 노드의 접속 정보를 glocator로부터 얻으려면 glocator의 HOST 또는 IP가 있어야 하며 glocator에 해당 노드의 접속 정보가 있어야 한다. 또는 location 파일로부터 얻으려면 각 멤버 노드의 접속 정보가 있어야 한다.

40055 (SQLSTATE: HY000): not exist member '%s' in file - '%s'

Cause

location 파일에 멤버 노드 이름과 일치하는 데이터 소스 이름이 없다.

Action

location 파일에 멤버 노드 이름을 사용하는 데이터 소스를 기입해야 한다.

40056 (SQLSTATE: HY000): some of nodes were failed to startup

Cause

cstartup을 수행하였는데 임의의 멤버 노드가 실패하였다.

Action

실패한 노드를 확인 후 따로 startup 한다.

40057 (SQLSTATE: HY000): not specified valid location information

Cause

LOCATOR_DSN 프로퍼티에 맞는 데이터 소스에 glocator 접속 정보 또는 location 파일 정보가 없다.

Action

LOCATOR_DSN에 맞는 데이터 소스에 glocator의 호스트, 포트 정보 또는 location 파일 정보를 기록해야 한다.

40058 (SQLSTATE: HY000): some of nodes were failed to shutdown

Cause

cshutdown 과정 중에 임의의 멤버 노드가 실패하였다.

Action

실패한 노드를 확인 후 따로 shutdown 한다.

40059 (SQLSTATE: HY000): failed to connect to original driver node '%s' after startup

Cause

cstartup 으로 클러스터 시작 작업은 완료되었지만, 원래 연결되어 있던 노드와 재연결에 실패하였다.

Action

원본 노드의 상태와 네트워크 연결을 확인한다.

40060 (SQLSTATE: HY000): cannot execute 'cstartup' or 'cshutdown' command in DA mode

Cause

DA 모드에서 cstartup 또는 cshutdown을 수행하려 하였다.

Action

CS 모드인 gsqlnet에서 cstartup 또는 cshutdown을 수행한다.

40061 (SQLSTATE: HY000): currently connected node is inactive

Cause

cstartup 명령으로 클러스터 시작은 완료되었지만, 기존에 연결되어 있던 노드가 클러스터에 참여하지 못했음을 알리는 경고 메시지이다.

Action

클러스터에 참여한 다른 노드에 접속한다.

40062 (SQLSTATE: HY000): file not exist -'%s'

Cause

C/S 모드에서 cstartup 또는 cshutdown 명령을 수행했지만 odbc.ini 파일에 지정된 DSN의 속성 중 LOCATOR_DSN 항목에 지정된 locator 파일이 존재하지 않다.

Action

LOCATOR_DSN 항목을 확인한다.


다음과 같이 .odbc.ini가 설정되어 있을 경우 .locator.ini 파일 유무를 확인해야 한다.


% cat .odbc.ini

[GOLDILOCKS]

HOST=127.0.0.1

PORT = 22581

LOCATOR_DSN = LOCATOR


[LOCATOR]

FILE = .locator.ini

gloader/ gloadernet 관련 에러

42000 (SQLSTATE: RD000): Service is not available

Cause

ODBC Env Handle 할당 중 메모리 할당에 실패하였거나 odbc.ini 파일을 읽는 중에 실패하였다.

Action

시스템의 메모리 또는 odbc.ini 파일을 확인한다.

42001 (SQLSTATE: HY000): invalid control file format

Cause

Control 파일의 분석 중에 실패하였다. 구문 또는 Field Terminator, Qualifier, Line Terminator의 제약 조건이 올바르지 않다. 이 외에는 에러메시지를 확인한다.

Action

Control 파일의 구문 및 제약 조건 또는 에러메시지를 확인 후 수정한다.

42002 (SQLSTATE: HY000): buffer exceeded overflow area

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

42003 (SQLSTATE: HY000): open same file(%s)

Cause

주어진 Data, Log, Bad 파일 중 동일한 이름이 있다.

Action

동일한 파일 이름을 사용하지 않는다.

42004 (SQLSTATE: HY000): occur invalid handle error

Cause

ODBC API 함수에서 SQL_INVALID_HADNLE이 반환 되었다.

Action

해당 에러 발생 시 고객센터에 문의한다.

42005 (SQLSTATE: HY000): occur error while operating SQLGetDiagRec/SQLGetDiagField

Cause

SQLGetDiagRec 또는 SQLGetDiagField 함수에서 SQL_ERROR가 반환되었다.

Action

해당 에러 발생 시 고객센터에 문의한다.

42006 (SQLSTATE: HY000): using same character for delimiter and qualifier

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

42007 (SQLSTATE: HY000): invalid thread unit count.(1~32)

Cause

병렬 처리에 지정한 Thread의 수가 범위에서 벗어났다.

Action

병렬 처리에 설정할 수 있는 Thread의 수 범위는 1~32 이다.

42008 (SQLSTATE: HY000): invalid array size.(1~65535)

Cause

Array Size의 크기가 범위에서 벗어났다.

Action

Array Size의 크기의 유효 범위는 1~65535이다.

42009 (SQLSTATE: HY000): unavailable multithreading in export mode.

Cause

export 모드에서 parallel 옵션을 사용하였다.

Action

export 모드에서는 parallel 옵션을 사용하지 못한다.

42010 (SQLSTATE: 08S01): Communication link failure

Cause

세션 연결이 끊어졌다.

Action

trace 로그 및 서버 상태를 확인 후 조치해야 한다.

42011 (SQLSTATE: HY000): invalid file size (minimum size : %d)

Cause

Binary 포맷을 사용할 때 주어진 파일 크기 옵션이 필요한 최소 크기보다 작다.

Action

파일 크기 옵션을 수정한다.

42012 (SQLSTATE: HY000): unavailable file size in text mode.

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

42013 (SQLSTATE: HY000): invalid column type.

Cause

Binary 포맷으로 Import 할 때 데이터의 데이터 타입과 테이블의 컬럼 타입이 일치하지 않는다.

Action

파일과 DB의 컬럼 타입을 일치시켜야 한다.

42014 (SQLSTATE: HY000): invalid column count.

Cause

Binary 포맷으로 Import 할 때 파일에 기록된 컬럼 수와 테이블의 컬럼 수가 일치하지 않는다.

Action

파일과 DB의 컬럼 수를 일치시켜야 한다.

42015 (SQLSTATE: HY000): invalid data size.

Cause

Binary 포맷으로 Import 할 때 파일의 컬럼 데이터 길이가 컬럼의 크기보다 크다.

Action

테이블의 컬럼의 크기는 파일의 컬럼 데이터와 같거나 커야 한다.

42016 (SQLSTATE: HY000): invalid binary file.

Cause

Binary 포맷으로 import 하는 과정에서 입력 파일이 유효하지 않은 경우에 발생하는 에러이다. 원인은 다음과 같다.

  • 파일 헤더의 체크섬이 일치하지 않는다.

  • 파일이 잘렸거나, 데이터 영역과 블록 정보가 일치하지 않거나, 레코드 처리 중 예상보다 일찍 EOF 에 도달했다.

  • Export 를 수행한 시점의 column 정의와 import 대상의 column 정의를 기준으로 계산한 내부 처리 단위가 서로 다르다.

Action

에러 메시지를 확인한 후 파일을 다시 전송하거나 binary 포맷으로 다시 export 한다.

42017 (SQLSTATE: HY000): file is empty.

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

42018 (SQLSTATE: HY000): Qualifier must be 1 length character.

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

42019 (SQLSTATE: HY000): LF and CR can not be used for delimiter or qualifier.

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

42020 (SQLSTATE: HY000): qualifiers and terminators must not be subsets of each other

Cause

Qualifier 및 다른 구분자들의 문자열이 부분 집합에 속한다.

Action

Qualifier 및 다른 구분자들은 서로 부분집합이 되어서는 안된다.

42021 (SQLSTATE: HY000): table name must be given in case of absence of control file.

Cause

Control 파일과 옵션으로 테이블 이름이 주어지지 않았다.

Action

테이블 이름을 입력한다.

42022 (SQLSTATE: HY000): can not fetch schema name.

Cause

Deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

42023 (22001): byte length of data greater than column length.

Cause

Binary 포맷으로 Import 할 때 데이터의 문자셋 변환이 발생하였는데 변환된 데이터가 컬럼의 크기 보다 크다.

Action

테이블의 컬럼 크기를 확장한다.

42024 (SQLSTATE: HY000): invalid direct io size

Cause

Direct Io Size 옵션에 사용한 수가 올바르지 않다. 또는 Binary 포맷으로 Import 할 때 사용한 데이터 파일의 Direct Io Size가 옵션과 일치하지 않는다.

Action

512 보다 큰 8의 배수를 사용한다.

42025 (SQLSTATE: HY000): Target column is invalid: %s

Cause

Control 파일의 테이블 구문에서 타겟 컬럼을 지정하였는데 테이블에는 존재하지 않는다.

Action

컬럼 이름과 수를 확인한다.

42026 (SQLSTATE: HY000): The number of target columns mismatch

Cause

Control 파일의 테이블 구문에 있는 타겟 컬럼들의 수가 테이블의 컬럼 수 보다 크다.

Action

컬럼 이름과 수를 확인한다.

42027 (SQLSTATE: HY000): ADD keyword is unusable in export mode

Cause

Export 할 때 control 파일의 테이블 구문에 target column을 지정하면서 ADD 키워드를 사용하였다.

Action

Export 할 때 타겟 컬럼을 ADD 키워드와 같이 사용할 수 없다.

42028 (SQLSTATE: HY000): the merge extent option is not available in parallel imports.

Cause

병렬 import를 수행할 때는 segment 단위의 저장공간을 merge 하는 옵션만 지정할 수 있다.

Action

Merge 옵션을 지정하지 않거나 segment 를 지정하여 병렬 import를 수행한다.

42029 (SQLSTATE: HY000): invalid arguments

Cause

gloader 실행 시 argument에 유효하지 않은 옵션이 사용되다.

Action

상세 에러 메시지를 확인한 후에 gloader를 다시 수행한다.

gmaster 관련 에러

44000 (SQLSTATE: HY000): database is already mounted

Cause

이미 MOUNT 단계에 있는 database 를 다시 MOUNT 하려고 할 때 발생하는 에러이다.


gSQL> ALTER SYSTEM MOUNT DATABASE;


System altered.


gSQL> ALTER SYSTEM MOUNT DATABASE;


ERR-42000(16114): database is already mounted

Action

데이터베이스를 LOCAL OPEN 단계로 변경한 후, 구문을 다시 수행한다.


gSQL> ALTER SYSTEM OPEN LOCAL DATABASE;


System altered.

44001 (SQLSTATE: HY000): database is already local opened

Cause

이미 LOCAL OPEN 단계에 있는 database 를 다시 LOCAL OPEN 하려고 할 때 발생하는 에러이다.


gSQL> ALTER SYSTEM OPEN LOCAL DATABASE;


System altered.


gSQL> ALTER SYSTEM OPEN LOCAL DATABASE;


ERR-42000(16115): database is already local opened

Action

데이터베이스를 OPEN 단계로 변경한 후, 구문을 다시 수행한다.


gSQL> ALTER SYSTEM OPEN DATABASE;


System altered.

44002 (SQLSTATE: HY000): database is already opened

Cause

이미 OPEN 단계에 있는 database 를 다시 OPEN 하려고 할 때 발생하는 에러이다.


gSQL> ALTER SYSTEM OPEN DATABASE;


System altered.


gSQL> ALTER SYSTEM OPEN DATABASE;


ERR-42000(16345): database is already opened

Action

별도의 조치는 필요없다.

44003 (SQLSTATE: HY000): system thread is already created

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다

44004 (SQLSTATE: HY000): failed to create system threads (%s)

Cause

startup 시 gmaster 의 system thread 생성에 실패하면 발생하는 오류이다.

원인은 다양하지만, 대부분 운영체제 자원이 부족할 때 발생한다.

Action

원인을 해결한 후, 서버를 다시 startup 한다.

44005 (SQLSTATE: HY000): member '%s' does not exist

Cause

startup 시 MOUNT 단계로 진행하는 과정에서 로컬 멤버의 location 정보가 없는 경우에 발생하는 에러이다.


gSQL> \STARTUP NOMOUNT


Startup success


gSQL> ALTER SYSTEM MOUNT DATABASE;


ERR-HY000(44004): failed to create system threads (cluster recover)

ERR-HY000(44005): member 'G1N1' does not exist

Action

로컬 멤버의 location 정보를 추가한 후, 다시 시도한다.


gSQL> CREATE CLUSTER LOCATION g1n1 HOST '127.0.0.1' PORT 11150;


Location created.


gSQL> ALTER SYSTEM MOUNT DATABASE;


System altered.

44006 (SQLSTATE: HY000): fail to send packet through communication context

Cause

startup 시 cluster recover 프로토콜을 원격으로 전송하려다 실패했을 때 발생하는 에러이다.

일반적으로 원격 소켓 연결이 끊어진 경우에 발생한다.

Action

서버를 다시 startup 한다.

44007 (SQLSTATE: HY000): failed to start up a process '%s'

Cause

startup 시 system process 생성에 실패하면 발생하는 오류이다.

원인은 다양하지만, 대부분 운영체제 자원이 부족할 때 발생한다.

Action

원인을 해결한 후, 서버를 다시 startup 한다.

44008 (SQLSTATE: HY000): timeout expired - '%s'

Cause

RECOVERY 소켓에 메시지를 전송한 후 응답을 기다리는 동안, 대기 시간이 CLUSTER_CONNECTION_TIMEOUT_SEC을 초과했을 때 발생하는 에러이다.

Action

CLUSTER_CONNECTION_TIMEOUT_SEC 값을 증가시킨 후 재시도하거나, 각 멤버를 병렬로 startup 하지 말고 순차적으로 진행시킨다.

gSQL> ALTER SYSTEM SET CLUSTER_CONNECTION_TIMEOUT_SEC = 10;

System altered.

44009 (SQLSTATE: HY000): RECOVERY socket is broken

Cause

원격 서버와의 RECOVERY 소켓 연결이 끊어진 경우에 발생하는 에러이다.

Action

네트워크 또는 원격 서버의 상태를 정상화한 후, startup 을 재시도한다.

44010 (SQLSTATE: HY000): invalid RECOVERY protocol

Cause

정상적이지 않은 프로토콜이 전송되는 경우에 발생하는 에러이다.

Action

네트워크 상태를 확인한다.

glsnr 관련 에러

45000 (SQLSTATE: HY000): Listener configuration file "%s" doesn't exist.

Cause

glsnr 설정 파일이 지정된 경로에 존재하지 않는다.

Action

$GOLDILOCKS_DATA/conf/goldilocks.listener.conf 파일이 존재하는지 확인한다.

45001 (SQLSTATE: HY000): Environment Variable "%s" is not defined.

Cause

해당 환경 변수가 정의되어 있지 않다.

Action

해당 환경 변수를 설정한다.

45002 (SQLSTATE: HY000): Listener is already started.

Cause

glsnr 이 이미 실행 중이다.

Action

현재 실행 중인 glsnr 의 상태를 확인한다.

45003 (SQLSTATE: HY000): overflow fd

Cause

시스템의 파일 디스크립터 값이 한계에 도달했다.

Action

시스템의 파일 디스크립터 한계값을 늘린다.

45004 (SQLSTATE: 08000): Invalid communication protocol

Cause

클라이언트가 지원되지 않는 통신 프로토콜을 사용했다.

Action

클라이언트와 서버 간의 버전 호환성을 확인한다.

45005 (SQLSTATE: 08004): access denied

Cause

클라이언트의 IP 주소가 접근 제어 목록에 의해 차단되었다.

Action

goldilocks.invited.conf 또는 goldilocks.excluded.conf 파일의 설정을 확인한다.

45006 (SQLSTATE: HY000): Operation timed out

Cause

glsnr 설정 파일의 TIMEOUT 에 지정된 시간 내에 연결이 완료되지 않았다.

Action

glsnr 설정 파일에서 TIMEOUT 값을 늘리거나 네트워크 연결 상태를 확인한다.

45007 (SQLSTATE: HY000): shared mode inactive

Cause

Shared 모드로 연결하려는 클라이언트가 있지만 shared 서버가 활성화되어 있지 않다.

Action

클라이언트를 dedicated 모드로 연결한다.

45008 (SQLSTATE: HY000): Invalid property value [ DEDICATED | SHARED ] : %s

Cause

glsnr 설정 파일의 DEFAULT_CS_MODE 값이 잘못 설정되었다.

Action

DEFAULT_CS_MODE 값을 DEDICATED 또는 SHARED 중 하나로 설정한다.

45009 (SQLSTATE: HY000): Invalid property value [ NO | INVITED | EXCLUDED ] : %s

Cause

glsnr 설정 파일의 TCP_VALIDNODE_CHECKING 값이 잘못 설정되었다.

Action

TCP_VALIDNODE_CHECKING 값을 NO, INVITED 또는 EXCLUDED 중 하나로 수정한다.

45010 (SQLSTATE: HY000): Invalid property value [ YES | NO | 1 | 0 ]: %s

Cause

glsnr 설정 파일 중 boolean 타입 속성에 잘못된 값이 설정되었다.

Action

Boolean 타입의 속성값을 YES, NO, 1, 0 중 하나로 수정한다.

45011 (SQLSTATE: HY000): Invalid property value [ %ld ~ %ld ]: %s

Cause

glsnr 설정 파일 중 정수 타입 속성값이 허용 범위를 벗어났다.

Action

glsnr 설정 파일에서 해당 속성값을 올바른 범위 내로 수정한다.

45012 (SQLSTATE: HY000): Invalid property value [ %ld ~ %ld ]: %s

Cause

glsnr 설정 파일 중 문자열 타입 속성의 길이가 허용 범위를 벗어났다.

Action

glsnr 설정 파일에서 해당 속성값을 적절한 길이로 수정한다.

45013 (SQLSTATE: HY000): buffer over flow %s

Cause

설정값을 처리하는 도중에 내부 버퍼 크기를 초과했다.

Action

glsnr 설정 파일의 경로 관련 속성들을 확인한다.

45014 (SQLSTATE: HY000): Unix Domain Socket [%s] does not exist

Cause

glsnr에서 생성한 Unix Domain Socket이 존재하지 않는다.

Action

glsnr를 종료한 후에 다시 시작해야 한다.

cyclone 관련 에러

46000 (SQLSTATE: RD000): Service is not available

Cause

이중화하려는 database와 정상적으로 연결되지 않았다.

Action

Database가 정상적으로 실행 중인지 확인하고, trace log에서 connection string이 올바른지 점검한다. 잘못된 정보가 있을 경우, 환경 파일에 정의된 database 접속 정보를 올바르게 수정한다.

46001 (SQLSTATE: HY000): "%s": file does not exist

Cause

환경 파일이나 기타 파일이 해당 경로에 존재하지 않는다.

Action

파일이 위치한 경로와 이름을 정상적으로 수정한 후에 재실행한다.

46002 (SQLSTATE: HY000): configure file processing error

Cause

환경 파일에 기술된 내용이 잘못되었다.

Action

출력된 오류 내용을 바탕으로 수정한다.

46003 (SQLSTATE: HY000): "%s": table does not exist

Cause

환경 파일에 기술된 table 정보가 database에 존재하지 않는다.

Action

환경 파일의 정보가 database와 일치하도록 수정한다.

46004 (SQLSTATE: HY000): "%s": schema does not exist

Cause

환경 파일에 기술된 schema 정보가 database에 존재하지 않는다.

Action

환경 파일의 정보가 database와 일치하도록 수정한다.

46005 (SQLSTATE: HY000): "%s.%s": previously added. maybe duplicated

Cause

환경 파일에 table 정보가 중복으로 기술되어 있다.

Action

환경 파일에서 중복된 table 정보를 제거한다.

46006 (SQLSTATE: HY000): "%s%s": table must have a primary key

Cause

기술된 table에 primary key가 설정되어 있지 않다.

Action

해당 table에 primary key를 설정하거나 추가한다.

46007 (SQLSTATE: HY000): internal error occurred (%s)

Cause

내부 오류로 인해 발생하는 에러이다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46008 (SQLSTATE: HY000): invalid datatype (%ld)

Cause

이중화를 지원하지 않는 데이터 타입을 사용하였다.

Action

이중화를 지원하는 데이터 타입인지 확인하고, 타 벤더 database와 연동할 때는 다른 DBMS와 연동할 때 Datatype 호환성 을 참고하여 올바른 데이터 타입을 사용한다.

46009 (SQLSTATE: HY000): "%s.%s" table must set supplemental log or primary key.

Cause

이중화를 수행하려면 supplemental logging이 활성화되어 있어야 하나, 지정된 테이블에 supplemental logging이 활성화되어 있지 않다.

Action

해당 테이블의 supplemental logging을 활성화하거나, Goldilocks property의 SUPPLEMENTAL_LOG_DATA_PRIMARY_KEY 속성을 YES로 변경한 뒤 재시작한다.

46010 (SQLSTATE: HY000): group [%s] is already running

Cause

환경 파일에 지정된 이중화 group과 동일한 이름의 group이 이미 실행 중이다.

Action

--status 옵션을 사용해 Cyclone의 실행 상태를 확인한다. 해당 group이 이미 실행 중이라면 종료 후 재실행하고, 새로운 group을 추가하려는 경우 동일한 이름의 group이 이미 존재하므로 환경 파일에 지정된 group 이름을 변경한다.

46011 (SQLSTATE: HY000): cyclone is not running

Cause

Cyclone이 실행 중이 아니거나, 기술된 Cyclone 이중화 group 이름이 올바르지 않다.

Action

--status 옵션을 사용하여 Cyclone의 실행 여부와 group 이름을 확인한다.

46012 (SQLSTATE: HY000): GOLDILOCKS_DATA system environment is invalid

Cause

시스템 환경 설정 인자 중에 GOLDILOCKS_DATA가 설정되지 않았다.

Action

이중화를 실행하는 환경에 GOLDILOCKS_DATA를 설정한다.

46013 (SQLSTATE: HY000): "%s" log file reused or invalid. restart cyclone with '--reset' option

Cause

이중화 데이터를 얻기 위해 지정된 redo log 파일이 재사용되었거나 archive log가 없어 더 이상 이중화를 진행할 수 없다.

Action

ARCHIVELOG_MODE가 활성화되어 있는지 확인한다. 기존 이중화 상태를 포기하고 현재 시점부터 새로 시작하려는 경우에는 --reset 옵션을 사용해 CYCLONE을 재실행한다.

46014 (SQLSTATE: HY000): fail to analyze flow[%s]

Cause

이중화 데이터 분석에 실패했다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46015 (SQLSTATE: HY000): Invalid Port Number (1024 ~ 49151) [%s]

Cause

환경 파일에 기술된 PORT 값이 올바르지 않다.

Action

PORT 값을 1024에서 49151 범위 내로 설정한다.

46016 (SQLSTATE: HY000): Communication link failure

Cause

Cyclone 이중화 연결에 문제가 있다.

Action

Master와 slave 간의 네트워크 상태가 정상인지 확인한다.

46017 (SQLSTATE: HY000): Invalid Protocol value (%s)

Cause

Master와 slave 간 통신 중에 비정상적인 프로토콜이 감지되었다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46018 (SQLSTATE: HY000): Master disconnect abnormally

Cause

Slave에서 master와의 연결이 비정상적으로 종료되었다.

Action

Master의 trace log를 확인한다.

46019 (SQLSTATE: HY000): Protocol Error Occurred (%s)

Cause

통신 프로토콜이 유효하지 않아 master와 slave간의 통신에 문제가 발생했다.

Action

Master와 slave 간의 버전 및 호환 정보를 확인한다.

동일한 문제가 지속적으로 발생할 경우, trace log를 확인하여 고객센터에 문의한다.

46020 (SQLSTATE: HY000): Already Slave Connected

Cause

Master 한 개당 하나의 slave와만 연결할 수 있다. Master가 이미 다른 slave와 연결되어 이중화가 진행 중일 경우에 발생하는 에러이다.

Action

Cyclone의 --status 옵션을 사용하여 해당 slave가 이미 운영 중인지 확인한다.

46021 (SQLSTATE: HY000): Invalid Transaction Slot Id

Cause

Cyclone이 실행된 후, GOLDILOCKS의 TRANSACTION_TABLE_SIZE 프로퍼티가 변경될 경우에 발생하는 에러이다.

Action

Cyclone을 재실행한다. 이중화 도중에 TRANSACTION_TABLE_SIZE를 변경할 경우에는 Cyclone을 다시 실행해야 한다.

46022 (SQLSTATE: HY000): Invalid Supplemental Log (%d)

Cause

Redo log를 분석할 때 문제가 발생하였다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46023 (SQLSTATE: HY000): Invalid operation for DDL

Cause

Cyclone이 처리할 수 없는 DDL이 발생하였다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46024 (SQLSTATE: HY000): Invalid value to analyze

Cause

Redo log를 분석하는 도중에 처리할 수 없는 문제가 발생하였다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46025 (SQLSTATE: HY000): Invalid group name

Cause

환경 파일에 이중화 group이 설정되어 있지 않다.

Action

환경 파일에 이중화 group을 설정한다.

46026 (SQLSTATE: HY000): Not set master ip

Cause

환경 파일에 slave 운영에 필요한 정보인, MASTER_IP가 설정되지 않았다.

Action

환경 파일에 MASTER_IP를 설정한다.

46027 (SQLSTATE: HY000): Invalid capture information

Cause

Recovery 정보가 올바르지 않다.

Action

--reset all 옵션을 사용하여 Cyclone을 재시작한다.

46028 (SQLSTATE: HY000): There is no group in configure

Cause

환경 파일에 이중화 group 정보가 설정되어 있지 않다.

Action

환경 파일에 이중화 group을 한 개 이상 설정한다.

46029 (SQLSTATE: HY000): Duplicate group name (%s)

Cause

환경 파일에 이중화 group 이름이 중복으로 기술되었다.

Action

환경 파일에 기술하는 이중화 group 이름은 서로 구분되도록 설정한다.

46030 (SQLSTATE: HY000): Invalid Value : %s(%ld)

Cause

환경 파일에 기술한 내용이 올바르지 않다.

Action

해당 값들을 정상적인 값으로 수정한다.

46031 (SQLSTATE: HY000): Too low value : %s(%ld)

Cause

환경 파일에 기술된 값이 너무 작다.

Action

해당 값의 최소 요구 사항을 확인하고, 그 이상으로 설정한다.

46032 (SQLSTATE: HY000): Invalid host port (%s)

Cause

환경 파일에 기술된 HOST_PORT 값이 올바르지 않다.

Action

환경 파일의 HOST_PORT 값을 정상적인 값으로 수정한다.

46033 (SQLSTATE: HY000): Redo Log file Read Timeout (%s)

Cause

LogMirror와 연동하거나 archive log 파일을 읽는 과정에서 대기 시간이 초과되었다.

(읽어야 할 파일을 10초 이상 찾지 못하면 발생하는 오류이다.)

Action

해당 파일이 존재하는지 확인한 후 Cyclone을 재시작한다. 동일한 문제가 지속적으로 발생할 경우, --reset all 옵션을 사용하여 Cyclone을 재시작한다.

46034 (SQLSTATE: HY000): Invalid archive log file (%s)

Cause

이중화를 수행할 수 있는 유효한 archive log 파일이 존재하지 않는다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46035 (SQLSTATE: HY000): Invalid Temporary File (%s)

Cause

이중화 transaction을 수행할 수 있는 파일이 존재하지 않는다.

Action

Cyclone이 운영되는 장비의 disk 공간을 확보하여 재시작한다. 동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

46036 (SQLSTATE: HY000): failed to write file (%s)

Cause

이중화 transaction 대상 파일을 처리하지 못했다.

Action

Cyclone이 운영되는 장비의 disk 공간을 확보하여 재시작한다. 동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

46037 (SQLSTATE: HY000): Fail to Update State (%s)

Cause

이중화를 위한 recovery 정보를 갱신하는 도중에 문제가 발생했다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46038 (SQLSTATE: HY000): failed to set propagate mode at session

Cause

환경 파일에 PROPAGATE_MODE를 enable로 설정했을 때 해당 설정이 실패하면 이 오류가 발생한다.

Action

환경 파일에 PROPAGATE_MODE를 disable로 설정하거나, trace log를 확인하여 고객 센터에 문의한다.

46039 (SQLSTATE: HY000): There is no active redo log file.

Cause

Goldilocks가 처리 중인 redo log 파일이 올바르지 않거나, LogFile switch 과정에서 disk 병목 현상 등으로 인해 처리 시간이 지연되는 경우에 발생할 수 있다.

Action

Cyclone을 재시작한다. 동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

46040 (SQLSTATE: HY000): There is no restart information. Master Database must be started first.

Cause

Recovery mode로 동작하려면 이전에 수행된 이중화에 대한 recovery 정보가 있어야 한다.

이 정보가 없을 경우 해당 오류가 발생한다.

Action

Cyclone을 실행할 때 --recovery 옵션을 제거하여 recovery mode로 동작하지 않도록 한다.

46041 (SQLSTATE: HY000): Cannot add new table. master database must be started first. (%s.%s)

Cause

환경 파일에 기술하거나 추가한 테이블을 이중화하려면, 해당 테이블 정보를 구성하기 위해 Goldilocks에 접속해야 한다.

이 때 Goldilocks가 online 상태가 아니거나 접속할 수 없어 정보를 구성하지 못하면 오류가 발생한다.

Action

환경 파일에 테이블을 추가한 경우에는 해당 테이블을 제거한 뒤 재시작한다.

또는 Goldilocks 운영 상태를 확인한다.

46042 (SQLSTATE: HY000): Master database must be started(Open status) for the first time, reset table.

Cause

Cyclone을 최초로 실행하거나 --reset 옵션을 사용해 실행할 경우에는 반드시 Goldilocks에 접속해야 한다. 이 때 접속에 실패하면 오류가 발생한다.

Action

Goldilocks 운영 상태를 확인한다.

46043 (SQLSTATE: HY000): Meta file has broken. please restart with '--reset all'(%s)

Cause

운영 정보가 저장되어 있는 meta 파일의 상태가 올바르지 않다.

Action

--reset 옵션을 사용하여 Cyclone을 재실행 한다.

46044 (SQLSTATE: HY000): Redo log file does not exist (%s).

Cause

Redo log 파일이 존재하지 않는다.

Action

Trace log를 확인하고 고객센터에 문의한다.

46045 (SQLSTATE: HY000): USER_ID or USER_PW does not exist.

Cause

Goldilocks에 접속하기 위한 USER_ID, USER_PW가 환경 파일에 설정되어 있지 않다.

Action

환경 파일에 USER_ID, USER_PW를 기술한다.

46046 (SQLSTATE: HY000): Slave is not running with --sync option.

Cause

Master가 SYNC mode로 수행되었지만 slave는 SYNC mode가 아니다.

Action

SYNC 기능을 수행하려면 master와 slave 모두 SYNC mode 로 실행되어야 한다.

--sync 를 사용하여 slave를 재실행한다.

46047 (SQLSTATE: HY000): Invalid Connect Information for sync (%s)

Cause

SYNC를 위한 접속 정보가 올바르지 않다.

Action

기술된 접속 정보를 확인하고 정보를 올바르게 수정한다.

46048 (SQLSTATE: HY000): (%s) value is too long

Cause

기술된 정보의 길이가 너무 길다.

Action

해당 정보의 최대 길이를 매뉴얼에서 확인하고 수정한다.

46049 (SQLSTATE: HY000): Invalid encrypt/decrypt key

Cause

Password를 암호화/ 복호화하기 위한 key가 올바르지 않다.

Action

환경 파일에 기술된 USER_ENCRYPT_PW 값을 정상적인 key로 생성된 값으로 수정한다.

46050 (SQLSTATE: HY000): no '--key' option

Cause

암호화된 password를 생성하지 않았거나, USER_ENCRYPT_PW를 복호화하기 위한 key 값이 설정되어 있지 않다.

Action

--key 옵션을 추가하여 실행한다.

46051 (SQLSTATE: HY000): password already exists (use one of USER_PW or USER_ENCRYPT_PW)

Cause

환경 파일에 USER_PW, USER_ENCRYPT_PW가 함께 기술되어 있다.

Action

USER_PW, USER_ENCRYPT_PW 중에 필요하지 않은 내용을 제거한 뒤에 재실행한다.

46052 (SQLSTATE: HY000): reset or sync table (%s.%s) has never participated in replication

Cause

--reset, --sync 'Table 이름' 옵션을 사용하여 특정 테이블을 초기화하려 했지만 해당 테이블이 존재하지 않거나 이중화를 수행한 이력이 없다.

Action

--reset, --sync 는 이중화 및 데이터를 초기화하는 중요한 옵션이므로 반드시 정확한 테이블 이름을 지정해야 한다. 만약 지정한 테이블이 새로 추가된 경우에는 해당 옵션 없이 수행해야 한다.

46053 (SQLSTATE: HY000): reset or sync argument is invalid (%s)

Cause

--reset, --sync 에 기술한 내용이 올바르지 않다.

Action

기술된 내용을 확인하고 올바르게 수정하여 재실행한다.

46054 (SQLSTATE: HY000): Table meta file has broken. please restart with '--reset all'

Cause

이중화에 필요한 정보를 기록한 meta 파일이 올바르지 않다.

Action

--reset all 옵션을 사용하여 Cyclone을 재실행한다.

46055 (SQLSTATE: HY000): protocol timeout

Cause

Heartbeat timeout 을 초과했다.

Action

연결 및 네트워크 상태를 확인한다.

46056 (SQLSTATE: HY000): Slave stopped normally

Cause

Slave가 종료됨에 따라 master도 함께 종료되었다.

Action

Cyclone을 재실행한다.

46057 (SQLSTATE: HY000): Cannot use reset and sync option at the same time.

Cause

--reset 과 --sync를 동시에 입력하여 Cyclone을 실행하였다.

Action

--sync 옵션은 내부적으로 reset 기능을 포함하고 있으므로 --sync 옵션만 사용하여 재시작한다.

46058 (SQLSTATE: HY000): There is no (%s.%s) table to sync (--sync option)

Cause

--sync 옵션에 지정한 테이블이 이중화 대상에 포함되어 있지 않다.

Action

환경 파일에 SYNC 하려는 테이블을 추가한 뒤, --sync 옵션을 사용하여 cyclone을 재실행한다.

46059 (SQLSTATE: HY000): (%s.%s) table (%s) column is not acceptable(GENERATED ALWAYS AS IDENTITY)

Cause

이중화 대상 테이블을 구성하는 column 중에 Generated Always As Identity 속성을 가진 column이 존재한다.

Action

해당 속성을 가진 column이 있을 경우에는 이중화를 수행할 수 없으므로, 해당 속성을 제거해야 한다.

46060 (SQLSTATE: HY000): driver does not support %s function

Cause

다른 벤더의 DB와 연동할 때, 입력한 driver가 해당 ODBC 함수를 지원하지 않는다.

Action

해당 ODBC 함수를 지원하는 driver를 확인하여 교체한다.

46061 (SQLSTATE: HY000): data type is not supported.

Cause

다른 벤더의 DB와 연동할 때, 지원되지 않는 데이터 타입이 사용되었다.

Action

매뉴얼의 다른 DBMS와 연동할 때 Datatype 호환성을 확인하여 지원 가능한 데이터 타입으로 변경한다.

46062 (SQLSTATE: HY000): Cluster information does not matched( before groupid(%d), memberid(%d)/current groupid(%d), memberid(%d) )

Cause

기존 이중화 정보 중에 cluster 정보는 변경되어서는 안되는데, 해당 정보가 변경되었다.

Action

환경 파일에서 Cluster 정보를 확인하거나, --reset all로 cyclone을 재시작하여 해당 정보를 초기화한다.

46063 (SQLSTATE: HY000): Invalid cluster information at configure file( %s )

Cause

환경 파일에 기술한 CLUSTER 정보가 올바르지 않다.

Action

ID, PORT, MASTER_IP가 중복되었거나 잘못 기록된 경우이며, 해당 값을 올바르게 수정해야 한다.

46064 (SQLSTATE: HY000): Fail to rollback transaction

Cause

이중화를 종료하는 과정에서 완료되지 않은 TX가 있어 rollback 처리에 실패했다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46065 (SQLSTATE: HY000): Slave is running with --sync option

Cause

Slave는 SYNC mode로 동작하는데 master가 SYNC mode로 실행되지 않았다.

Action

SYNC mode 동작 여부를 확인하여 master와 slave 모두 동일한 실행 옵션으로 재실행한다.

46066 (SQLSTATE: HY000): MYSQL_DATABASE configuration must needed to connect MySQL/MariaDB

Cause

다른 벤더의 DB와 연동할 때, MySQL이나 MariaDB는 반드시 MYSQL_DATABASE가 설정되어야 한다. 해당 값이 설정되지 않은 경우 오류가 발생한다.

Action

MySQL이나 MariaDB와 연동할 경우, 반드시 MYSQL_DATABASE 설정을 추가한다.

46067 (SQLSTATE: HY000): DB2_DATABASE configuration must needed to connect DB2

Cause

다른 벤더의 DB와 연동할 때, DB2는 반드시 DB2_DATABASE가 설정되어야 한다. 해당 값이 설정되지 않은 경우 오류가 발생한다.

Action

DB2와 연동할 경우, 반드시 DB2_DATABASE 설정을 추가한다.

46068 (SQLSTATE: HY000): Configuration described in an invalid area (Should not be described in a specific group, but in a global group)(%s)

Cause

환경 파일에 기술된 설정이 잘못된 위치에 있을 경우에 발생한다.

예: 환경 파일에 다음과 같이 기술되었을 경우 즉, SEPARATE_CONFLICT_LOG가 GROUP 내에 기술되었을 경우에 에러가 발생한다.


USER_ID=test

USER_PW=test

GROUP_NAME = Group1

{

...

SEPARATE_CONFLICT_LOG = 1

...

}

Action

해당 에러를 발생시킨 설정을 GROUP 밖에 기술하도록 환경 파일을 변경한다.


USER_ID=test

USER_PW=test

SEPARATE_CONFLICT_LOG = 1

GROUP_NAME=Group1

{

...

...

}

46069 (SQLSTATE: HY000): Data type is not supported.( %s )

Cause

ROWID 데이터 타입 colum이 이중화 대상에 포함되어 있다.

Action

ROWID 데이터 타입은 이중화가 지원되지 않으므로, 해당 테이블을 이중화 대상에서 제외하거나 해당 column을 제거한 후에 Cyclone을 재실행 한다.

46070 (SQLSTATE: HY000): Heartbeat protocol stopped abnormally.

Cause

Heartbeat protocol 연동 중 master와 slave 간 연결이 비정상적인 이유로 끊어졌다.

Action

네트워크 상태를 확인하고 Cyclone을 재실행한다. 동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

46071 (SQLSTATE: HY000): Failed to set SESSION_IS_CDC_APPLIER at session

Cause

Foreign key 또는 trigger 제약 조건 관련 환경 설정에 실패했다.

Action

Trace log를 확인하여 고객센터에 문의한다.

46072 (SQLSTATE: HY000): Error message count mismatch - server(%d), cyclone(%d)

Cause

Goldilocks DB 버전과 Cyclone 버전의 에러 메시지 정보가 일치하지 않아 하위 호환이 불가능하다.

Action

호환 가능한 Cyclone 버전을 확인한 뒤 재설치 한다.

46073 (SQLSTATE: HY000): mismatched major & minor version - server(%d.%d.%d), cyclone(%d.%d.%d)

Cause

Cyclone은 major 와 minor 의 버전이 동일할 경우에만 호환을 지원한다. Goldilocks DB와 Cyclone의 버전이 호환되지 않을 경우 오류가 발생한다.

Action

호환 가능한 Cyclone 버전을 확인한 뒤 재설치 한다.

46074 (SQLSTATE: HY000): mismatched patch version - server(%d.%d.%d), cyclone(%d.%d.%d)

Cause

Goldilocks DB의 patch 버전이 Cyclone보다 높은 경우, Cyclone은 하위 호환만 지원하므로 상위 호환은 지원하지 않는다.

Action

호환 가능한 Cyclone 버전을 확인한 뒤 재설치 한다.

46075 (SQLSTATE: HY000): Cyclone is not compatible with Server. Server Compatible Number(%d) Cyclone Compatible Number(%d)

Cause

Cyclone에서 지원하는 Goldilocks DB 버전이 아닌 경우에 발생한다.

Action

호환 가능한 Cyclone 버전을 확인한 뒤 재설치 한다.

46076 (SQLSTATE: HY000): Failed to set supplemental logging.(SUPPLEMENTAL_LOG_FORCE_MODE)(%s.%s.)

Cause

SUPPLEMENTAL_LOG_FORCE_MODE를 활성화했으나 해당 테이블의 supplemental logging 활성화에 실패한 경우에 발생한다.

Action

사용자에게 supplemental logging을 활성화할 수 있는 권한이 있는지 확인한다

46077 (SQLSTATE: HY000) : Failed to set deadlock_priority.(APPLIER_DEADLOCK_PRIORITY)

Cause

APPLIER_DEADLOCK_PRIORITY 가 설정되어 있음에도 applier 에 DEADLOCK_PRIORITY를 설정하지 못한 경우에 발생한다.

Action

사용자에게 deadlock_priority를 활성화할 수 있는 권한이 있는지 확인한다.

46078 (SQLSTATE: HY000): Deferred constraints is not supported.( %s.%s )

Cause

이중화 대상 table에 deferred constraints가 설정된 경우에 발생한다.

Action

해당 table 에서 deferred constraint를 제거한 후 이중화를 다시 시작하거나, 해당 table을 이중화 대상에서 제외한다.

46079 (SQLSTATE: HY000): Failed to set trace log id.(APPLIER_TRACE_LOG_ID)

Cause

APPLIER_TRACE_LOG_ID 에 설정한 값이 유효하지 않은 경우에 발생한다.

Action

TRACE_LOG_ID 의 flag 정보를 확인하여 유효한 값으로 수정한다.

LogMirror 관련 에러

47000 (SQLSTATE: RD000): Service is not available

Cause

Database와 정상적으로 연결되지 않았다.

Action

Database가 정상적으로 실행 중인지 확인하고, trace log에서 connection string이 올바른지 점검한다. 잘못된 정보가 있을 경우, 환경 파일에 정의된 database 접속 정보를 수정한다.

47001 (SQLSTATE: HY000): Invalid Protocol value (%s)

Cause

Master/slave의 통신 중에 비정상적인 protocol이 감지되었다.

Action

Trace log를 확인하고 고객센터에 문의한다.

47002 (SQLSTATE: HY000): "%s": file does not exist

Cause

환경 파일이나 기타 파일이 해당 경로에 존재하지 않는다.

Action

파일이 위치한 경로와 이름을 정상적으로 수정한 뒤 재실행한다.

47003 (SQLSTATE: HY000): "%s": configure file processing error

Cause

환경 파일에 기술된 내용이 잘못되었다.

Action

출력된 오류 내용을 바탕으로 수정한다.

47004 (SQLSTATE: HY000): invalid Control file

Cause

운영에 필요한 control 파일이 올바르지 않다.

Action

Trace log를 확인하고 고객센터에 문의한다.

47005 (SQLSTATE: HY000): Communication link failure

Cause

Master/slave 연결이 비정상적으로 종료되었다.

Action

Master와 slave 간의 네트워크 상태가 정상적인지 확인한다.

47006 (SQLSTATE: HY000): LogMirror is already running

Cause

LogMirror 가 이미 실행 중이다.

Action

LogMirror의 실행 상태를 확인하고 재실행한다.

47007 (SQLSTATE: HY000): GOLDILOCKS_DATA system environment is invalid

Cause

시스템 환경 설정 인자 중에 GOLDILOCKS_DATA가 설정되지 않았다.

Action

이중화를 실행하는 환경에 GOLDILOCKS_DATA를 설정한다.

47008 (SQLSTATE: HY000): There is no Shared Memory Area for LogMirror

Cause

Goldilocks가 LogMirror와 연동하기 위한 환경이 설정되지 않았다.

Action

Goldilocks 프로퍼티 중에 LOG_MIRROR_MODE=1 로 설정하여 재실행한다.

47009 (SQLSTATE: HY000): Invalid Value : %s(%s)

Cause

환경 파일에 기술한 내용이 올바르지 않다.

Action

해당 값들을 정상적인 값으로 수정한다.

47010 (SQLSTATE: HY000): Invalid port : (%d)

Cause

환경 파일에 기술된 PORT 값이 올바르지 않다.

Action

PORT 값을 65536 이하로 설정한다.

47011 (SQLSTATE: HY000): Master disconnect abnormally

Cause

Master와의 연결이 비정상적으로 종료되었다.

Action

네트워크가 정상인지 확인한다. Trace log를 확인하고 고객센터에 문의한다.

47012 (SQLSTATE: HY000): Invalid Log File(%s)

Cause

해당 로그 파일이 올바르지 않다.

Action

Trace log를 확인하여 고객센터에 문의한다.

47013 (SQLSTATE: HY000): Archive Log File does not exist

Cause

Archive log 모드가 설정 되어 있지 않다.

Action

Goldilocks를 archive log 모드로 활성화한 후 재시작한다.

47014 (SQLSTATE: HY000): Archive Log file Read Timeout (%s)

Cause

새로운 archive log 파일이 생성되지 않았다.

Action

운용 중인 장비의 disk 공간을 확보한 후 재시작한다.

47015 (SQLSTATE: HY000): LogMirror is not running

Cause

Logmirror가 실행되지 않은 상태에서 --stop 명령이 수행되었다.

Action

Logmirror 실행 상태를 확인한다.

47016 (SQLSTATE: HY000): Connection Information does not exist

Cause

Goldilocks와 연결되어 있지 않다.

Action

Goldilocks의 운영 상태를 확인한다.

47017 (SQLSTATE: HY000): Infiniband Receive Fail. (%ld)

Cause

Infiniband 네트워크 이상으로 인해 데이터를 수신하지 못했다.

Action

네트워크 상태를 확인한다. 동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

47018 (SQLSTATE: HY000): GOLDILOCKS Shutdown or Give-up LogMirror Service.

Cause

Goldilocks 운영이 종료되어 logmirror 서비스도 종료되었다.

Action

운영 상태를 확인한다.

47019 (SQLSTATE: HY000): Invalid encrypt/decrypt key

Cause

Password를 암호화/복호화하기 위한 key가 정상적이지 않다.

Action

환경 파일에 지정된 USER_ENCRYPT_PW 값을 정상적인 key로 생성된 값으로 수정한다.

47020 (SQLSTATE: HY000): no '--key' option

Cause

암호화된 password를 생성하거나, USER_ENCRYPT_PW를 복호화하기 위한 key값이 기술되지 않았다.

Action

--key 옵션을 추가하여 실행한다.

47021 (SQLSTATE: HY000): password already exists(use one of USER_PW or USER_ENCRYPT_PW)

Cause

환경 파일에 USER_PW, USER_ENCRYPT_PW가 모두 기술되어 있다.

Action

USER_PW, USER_ENCRYPT_PW 중에 불필요한 내용을 제거한 후에 재실행한다.

47022 (SQLSTATE: HY000): protocol heartbeat timeout

Cause

Heartbeat timeout 이 발생했다.

Action

연결 상태와 네트워크 상태를 확인한다.

cymon 관련 에러

48000 (SQLSTATE: HY000): GOLDILOCKS_DATA system environment is invalid

Cause

시스템 환경 설정 인자 중에 GOLDILOCKS_DATA가 설정되지 않았다.

Action

cymon을 실행하는 환경에 GOLDILOCKS_DATA를 설정한다.

48001 (SQLSTATE: HY000): "%s": file does not exist

Cause

환경 파일이나 기타 파일이 해당 경로에 존재하지 않는다.

Action

파일이 위치한 경로와 이름을 정상적으로 수정한 뒤 재실행한다.

48002 (SQLSTATE: RD000): Service is not available

Cause

Database와 정상적으로 연결되지 않았다.

Action

Database가 정상적으로 실행 중인지 확인하고, trace log에서 connection string이 올바른지 점검한다. 잘못된 정보가 있을 경우, 환경 파일에 정의된 database 접속 정보를 수정한다.

48003 (SQLSTATE: HY000): configure file processing error

Cause

환경 파일에 기술된 내용이 잘못되었다.

Action

출력된 오류 내용을 바탕으로 수정한다.

48004 (SQLSTATE: HY000): Duplicate group name (%s)

Cause

환경 파일에 이중화 group 이름이 중복으로 기술되었다.

Action

환경 파일에 기술하는 이중화 group 이름은 서로 구분되도록 설정한다.

48005 (SQLSTATE: HY000): Invalid Value : %s(%ld)

Cause

환경 파일에 기술된 내용이 잘못되었다.

Action

해당 값들을 정상적인 값으로 수정한다.

48006 (SQLSTATE: HY000): Invalid group name

Cause

환경 파일에 이중화 group이 설정되어 있지 않다.

Action

환경 파일에 이중화 group을 설정한다.

48007 (SQLSTATE: HY000): Invalid Port Number (1 ~ 65535)

Cause

환경 파일에 기술된 PORT 값이 올바르지 않다.

Action

PORT 값을 올바른 범위 내로 설정한다.

48008 (SQLSTATE: HY000): There is no group in configure

Cause

환경 파일에 이중화 group 정보가 설정되어 있지 않다.

Action

환경 파일에 이중화 group을 한 개 이상 설정한다.

48009 (SQLSTATE: HY000): cymon is already running

Cause

cymon이 이미 실행 중이다.

Action

cymon의 실행 상태를 확인하고 재실행한다.

48010 (SQLSTATE: HY000): Communication link failure

Cause

Cyclone 과의 연결이 비정상적으로 종료되었다.

Action

연결 및 네트워크 상태가 정상인지 확인한다.

48011 (SQLSTATE: HY000): Protocol Error Occurred (%s)

Cause

Cyclone과의 통신 중에 비정상적인 protocol이 감지되었다.

Action

Trace log를 확인하고 고객센터에 문의한다.

48012 (SQLSTATE: HY000): Already Monitor Connected

Cause

해당 Cyclone에 이미 cymon이 접속되어 있다.

Action

cymon의 운영 환경을 확인하고 고객센터에 문의한다.

48013 (SQLSTATE: HY000): cymon is not running

Cause

cymon이 실행되지 않은 상태에서 --stop 명령이 수행되었다.

Action

cymon 실행 상태를 확인한다.

48014 (SQLSTATE: HY000): internal error occurred (%s)

Cause

내부 오류로 인해 발생하는 에러이다.

Action

Trace log를 확인하여 고객센터에 문의한다.

48015 (SQLSTATE: HY000): Fail to update monitoring info

Cause

모니터링 정보 업데이트에 실패했다.

Action

cymon을 재시작하고 동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

48016 (SQLSTATE: HY000): USER_ID or USER_PW does not exist.

Cause

모니터링 정보를 업데이트하기 위해 Goldilocks에 접속해야 하지만, 환경 파일에 USER_ID와 USER_PW가 설정되어 있지 않다.

Action

환경 파일에 USER_ID와 USER_PW를 기술한다.

48017 (SQLSTATE: HY000): Invalid encrypt/decrypt key

Cause

Password를 암호화/ 복호화하기 위한 key가 올바르지 않다.

Action

환경 파일에 기술된 USER_ENCRYPT_PW 값을 정상적인 key로 생성된 값으로 수정한다.

48018 (SQLSTATE: HY000): no '--key' option

Cause

암호화된 password를 생성하지 않았거나, USER_ENCRYPT_PW를 복호화하기 위한 key 값이 설정되어 있지 않다.

Action

--key 옵션을 추가하여 실행한다.

48019 (SQLSTATE: HY000): password already exists(use one of USER_PW or USER_ENCRYPT_PW)

Cause

환경 파일에 USER_PW, USER_ENCRYPT_PW가 함께 기술되어 있다.

Action

USER_PW, USER_ENCRYPT_PW 중에 필요하지 않은 내용을 제거한 뒤에 재실행한다.

gdispatcher 관련 에러

50000 (SQLSTATE: HY000): Dispatcher is already started

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

50001 (SQLSTATE: HY000): overflow fd

Cause

시스템의 파일 디스크립터 값이 한계에 도달했다.

Action

시스템의 파일 디스크립터 한계값을 늘린다.

gbalancer 관련 에러

51000 (SQLSTATE: HY000): overflow fd

Cause

시스템의 파일 디스크립터 값이 한계에 도달했다.

Action

시스템의 파일 디스크립터 한계값을 늘린다.

gsyncher 관련 에러

53000 (SQLSTATE: HY000): invalid phase(%s): executable phase is %s

Cause

DB가 OPEN 상태가 아니다.

Action

DB가 OPEN 상태일 때 gsyncher를 실행할 수 있다.

53001 (SQLSTATE: HY000): GOLDILOCKS_DATA system environment is invalid

Cause

환경 변수 GOLDILOCKS_DATA가 유효하지 않다.

Action

환경 변수 GOLDILOCKS_DATA를 설정한다.

53002 (SQLSTATE: HY000): gmaster is active

Cause

gmaster 프로세스가 현재 동작 중이다.

Action

gsyncher는 gmaster 프로세스가 동작 중이면 실행할 수 없다.

53003 (SQLSTATE: HY000): gsyncher is already running

Cause

다른 gsyncher 프로세스가 이미 동작 중이다.

Action

이미 동작 중인 gsyncher가 종료되길 기다린다. gsyncher를 시그널로 종료할 경우 로그 파일이 손상될 수 있다.

53004 (SQLSTATE: HY000): Shared memory is cleared

Cause

공유 메모리가 이미 정리되었다.

Action

공유 메모리가 정리되면 gsyncher를 실행할 수 없다.

Cluster 관련 에러

56000 (SQLSTATE: HY000): location information of member '%s' already exists

Cause

Location 정보를 추가할 때 이미 동일한 멤버 정보가 존재하면 발생하는 오류이다.


gSQL> SELECT * FROM x$cluster_location;


MEMBER_NAME HOST PORT

----------- --------- -----

G1N1 127.0.0.1 11150


1 row selected.


gSQL> CREATE CLUSTER LOCATION g1n1 HOST '127.0.0.1' PORT 12150;


ERR-HY000(56000): location information of member 'G1N1' already exists :

CREATE CLUSTER LOCATION g1n1 HOST '127.0.0.1' PORT 12150

*

ERROR at line 1:

Action

별도의 조치는 필요없다.

56001 (SQLSTATE: HY000): location information of member '%s' does not exist

Cause

존재하지 않는 멤버의 location 정보를 변경하려고 할 때 발생하는 오류이다.


gSQL> SELECT * FROM x$cluster_location;


MEMBER_NAME HOST PORT

----------- --------- -----

G1N1 127.0.0.1 11150


1 row selected.


gSQL> ALTER CLUSTER LOCATION g1n2 HOST '127.0.0.1' PORT 12150;


ERR-HY000(56001): location information of member 'G1N2' does not exist :

ALTER CLUSTER LOCATION g1n2 HOST '127.0.0.1' PORT 12150

*

ERROR at line 1:

Action

멤버가 존재하는지 확인한 후 다시 수행한다.

56002 (SQLSTATE: HY000): location information of member '%s' is modified by concurrent execution

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

56003 (SQLSTATE: HY000): has inactive member ( %s )

Cause

모든 멤버가 active 상태여야만 수행할 수 있는 DDL 을 inactive 멤버가 있는 상태에서 실행하려고 할 때 발생하는 오류이다.


다음은 g1n2 가 inactive 상태일 때 테이블 생성에 실패하는 예이다.


gSQL> CREATE TABLE t1 ( i1 INTEGER );


ERR-HY000(56003): has inactive member ( G1N2 )

Action

Inactive 멤버를 cluster 에 참여시킨 후 DDL 을 다시 실행한다.


다음은 inactive 상태의 g1n2 를 cluster에 참여시킨 후 테이블을 다시 생성하는 예이다.


gSQL> SELECT local_member_name() FROM dual;


LOCAL_MEMBER_NAME()

-------------------

G1N2


1 row selected.


gSQL> ALTER SYSTEM JOIN DATABASE;


System altered.


gSQL> CREATE TABLE t1 ( i1 INTEGER );


Table created.

56004 (SQLSTATE: HY000): location file is corrupted - '%s'

Cause

NOMOUNT 단계로 진입할 때 location 파일이 손상되어 있으면 발생하는 오류이다.

Action

손상되지 않은 location 파일을 LOCATION_FILE 프로퍼티가 가리키는 위치에 저장한 후 다시 시도한다.

56005 (SQLSTATE: HY000): connections of some cluster members are broken

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다

56006 (SQLSTATE: 40000): transaction rollback: failed to prepare global transaction

Cause

다음 두 가지 경우에 발생하는 에러이다.

  • global transaction 이 PREPARE 될 때, transaction 이 접근했던 그룹의 모든 멤버가 inactive 상태인 경우

  • DDL 을 유발한 transaction 이 PREPARE 될 때, inactive 상태의 멤버가 있는 경우


다음은 테이블을 생성한 이후, g1n2 가 inactive 상태일 때 COMMIT 과정에서 PREPARE 에 실패하는 예이다.


gSQL> CREATE TABLE t1 ( i1 INTEGER );


Table created.


gSQL> COMMIT;


ERR-40000(56006): transaction rollback: failed to prepare global transaction

Action

inactive 멤버를 cluster 에 참여시킨 후 transaction 을 재수행 한다.

56007 (SQLSTATE: HY000): must be accessible to at least one of replicas

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

56008 (SQLSTATE: 40000): transaction rollback: failed to synchronize replicas

Cause

복제본에 대한 비동기식 동기화가 실패할 경우에 발생하는 오류이다.

Action

Trace 로그를 확인하여 원인을 조치한 후 다시 시도한다.


다음은 trace 로그에 기록된 예로, transaction 의 undo 가 할당된 공간을 초과하여 에러가 발생했다.


[ASYNC] failed to synchronize replica

(G1N1) ERR-40000(56008): transaction rollback: failed to synchronize replicas

(G1N1) ERR-HY000(14115): MEMBER(G1N2): transaction undo limit exceeded

56009 (SQLSTATE: HY000): remote server ( member ID: %ld ) is abnormally terminated

Cause

원격 세션이 비정상적으로 종료되었다.

Action

해당 에러 발생 시 고객센터에 문의한다.

56010 (SQLSTATE: 40000): transaction rollback: remote session is abnormally terminated

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

56011 (SQLSTATE: HY000): a shared session cannot modify NUMA property

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

56012 (SQLSTATE: HY000): no connection was established to recover in-doubt transactions

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

56013 (SQLSTATE: HY000): cannot resolve in-doubt transaction '%d.%d.%d' because '%d' members of the total '%d' remote cluster members were disconnected - connection map was '%s'

Cause

LOCAL OPEN 단계로 전환하는 과정에서 발생할 수 있으며 PREPARE 상태의 in-doubt transaction에 대해 COMMIT 또는 ROLLBACK 여부를 결정할 수 없을 때 발생한다.

Action

모든 멤버를 MOUNT 이상의 단계로 기동한 후 LOCAL OPEN 을 다시 시도한다.

56014 (SQLSTATE: HY000): MAX_NODE_COUNT property value '%d' must be equal to or less than '%d'

Cause

startup 시 MAX_NODE_COUNT 프로퍼티 값이 데이터베이스 생성 시 지정한 값보다 작은 경우에 발생하는 에러이다.


다음은 데이터베이스 생성 시 프로퍼티 값을 64 로 설정한 후, 이를 128 로 변경하고 다시 startup 했을 때 에러가 발생한 예이다.


gSQL> \STARTUP


ERR-HY000(56014): MAX_NODE_COUNT property value '128' must be equal to or less than '64'

Action

프로퍼티 값을 데이터베이스 생성 시 지정한 값 이하로 설정한 후 다시 startup 한다.


gSQL> ALTER SYSTEM SET max_node_count = 32 DEFERRED SCOPE = file;


System altered.


gSQL> \SHUTDOWN ABORT


Shutdown success


gSQL> \STARTUP


Startup success

56015 (SQLSTATE: HY000): '%s' property value must be greater than or equal to '%s' property value '%d'

Cause

startup 시 SYNC 서버 프로세스의 개수가 cluster dispatcher 의 SYNC thread 개수보다 작다.

Action

CLUSTER_DATA_SYNC_SERVERS 값을 CDISPATCHER_SYNC_THREADS 값 이상으로 설정한 후 다시 startup 한다.

56016 (SQLSTATE: HY000): all members affected by the transaction are inactive - cannot guarantee durability of the transaction

Cause

DOMAIN transaction 의 COMMIT 과정에서 발생할 수 있으며, transaction 이 변경한 그룹의 모든 멤버가 inactive 상태일 때 나타나는 경고 메시지이다.

Action

경고 메시지에 해당되며, 별도의 조치는 필요없다.

56017 (SQLSTATE: 40000): transaction rollback: failed to open remote session

Cause

프로토콜 실행을 위한 원격 세션을 생성하지 못했다.

해당 에러가 발생하면 transaction 은 자동으로 rollback 된다.


다음은 t1 테이블에 레코드를 삽입하려고 원격 세션을 생성하던 중 자원 부족으로 에러가 발생한 예이다.


gSQL> INSERT INTO t1 VALUES( 1 );


ERR-40000(56017): transaction rollback: failed to open remote session

ERR-HY000(11019): MEMBER(G1N2): Insufficient resource : exceeded maximum number of session environments

Action

에러 메시지를 참고하여 원인을 해결한 후, 작업을 다시 수행한다.

56018 (SQLSTATE: HY000): protocol payload size(%ld) exceed maximum packet size(%ld)

Cause

프로토콜 marshalling 과정에서, 단일 레코드의 크기가 CLUSTER_MAX_PACKET_SIZE 를 초과할 경우에 발생한다.

Action

CLUSTER_MAX_PACKET_SIZE 를 단일 레코드 크기보다 크게 설정한 후, 작업을 다시 수행한다.

56019 (SQLSTATE: HY000): failover busy

Cause

이 오류는 gmaster 의 failover thread 에서만 발생하며, 현재 다른 멤버가 failover 를 수행 중이므로 지금 failover 를 수행할 수 없다는 의미이다.

Action

별도의 조치는 필요없다.

56020 (SQLSTATE: HY000): internal error ( %s, %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다

56021 (SQLSTATE: HY000): exceeded maximum response timeout

Cause

gmaster 의 failover thread 에서만 발생하는 에러이다.

Failover 과정에서 사용하는 locator 프로토콜의 응답을 지정된 대기 시간 내에 받지 못하면 발생한다.

Action

이 에러가 발생하면 failover 정책에 따라 failover thread 가 정해진 규칙에 따라 처리한다.

응답 대기 시간 부족으로 문제가 발생한 경우라면 LOCATOR_QUERY_TIMEOUT 값을 늘린다.

56022 (SQLSTATE: HY000): failed to connect to a host

Cause

대상 노드로의 연결에 실패했을 때 발생하는 에러이다.

일반적으로 대상 노드가 종료되어 있거나, host 와 port 가 다르게 설정되어 있는 경우에 발생할 수 있다.


gSQL> ALTER CLUSTER GROUP g3 ADD CLUSTER MEMBER g3n3 HOST '127.0.0.1' PORT 13350;


ERR-HY000(16351): failed to connect to the cluster member 'G3N3'

ERR-HY000(56022): failed to connect to a host

ERR-HY000(11067): failed to connect to a host with a socket : poll() - port '13350' : stnConnect() returned errno(111)

Action

대상 노드의 정확한 host 와 port 를 지정한 후 다시 시도한다.

56023 (SQLSTATE: HY000): invalid cluster communication protocol

Cause

이 오류는 cserver에서 발생할 수 있으며, 인식할 수 없는 명령어 수행을 요청할 때 발생한다.

주로 드라이버 (driver) 멤버는 최신 버전으로 패치되어 있지만, 원격 (remote) 멤버가 이전 버전을 사용하고 있는 경우에 나타나는 에러이다.

Action

이전 버전을 최신 버전으로 패치한 후 다시 수행한다.

56024 (SQLSTATE: HY000): sequence '%s' is offline

Cause

다음 두 가지 경우에 발생하는 에러이다.

  • inactive 멤버가 존재하고 active 멤버들의 sequence 가 offline 상태인 경우

  • inactive 멤버가 존재하지 않고 active 멤버들의 sequence 가 offline 상태인 경우


다음은 1*2 환경에서 g1n1 의 seq 는 offline 상태이고, g1n2 는 inactive 상태일 때 nextval 을 실행한 결과이다.


gSQL> SELECT is_online FROM v$sequence@g1n1 WHERE sequence_name = 'SEQ';


IS_ONLINE

---------

FALSE


1 row selected.


gSQL> SELECT cm.member_name, vcm.status

2 FROM v$cluster_member@g1n1 vcm, cluster_member@g1n1 cm

3 WHERE vcm.member_id = cm.member_id AND cm.member_name = 'G1N2';


MEMBER_NAME STATUS

----------- --------

G1N2 INACTIVE


1 row selected.


gSQL> SELECT seq.nextval FROM dual;


ERR-HY000(56024): sequence 'SEQ' is offline

Action

Inactive 멤버가 존재하는 경우, 해당 멤버를 클러스터에 참여시킨 후 다시 실행한다.


gSQL> SELECT local_member_name() FROM dual;


LOCAL_MEMBER_NAME()

-------------------

G1N2


1 row selected.


gSQL> ALTER SYSTEM JOIN DATABASE;


System altered.


gSQL> SELECT seq.nextval FROM dual;


NEXTVAL

-------

21


1 row selected.


만약 inactive 멤버가 존재하지 않는 경우에는 ALTER DATABASE SYNCHRONIZE SEQUENCE 구문을 성공할 때까지 반복 수행한다.

56025 (SQLSTATE: HY000): cannot synchronize because some members are inactive

Cause

Sequence 동기화 구문 실행 시, inactive 멤버가 존재하고 active 멤버들의 sequence 가 offline 상태인 경우에 발생한다.


다음은 1*2 환경에서 g1n1 의 seq 는 offline 상태이고, g1n2 는 inactive 상태일 때 sequence 동기화 구문을 실행한 결과이다.


gSQL> SELECT is_online FROM v$sequence@g1n1 WHERE sequence_name = 'SEQ';


IS_ONLINE

---------

FALSE


1 row selected.


gSQL> ALTER SEQUENCE seq SYNCHRONIZE;


ERR-HY000(56025): cannot synchronize because some members are inactive

Action

Inactive 멤버를 클러스터에 참여시킨 후, 다시 수행한다.

56026 (SQLSTATE: HY000): identity column '%s' of table '%s' is offline

Cause

다음 두 가지 경우에 발생하는 에러이다.

  • inactive 멤버가 존재하고 active 멤버들의 identity sequence 가 offline 상태인 경우

  • inactive 멤버가 존재하지 않고 active 멤버들의 identity sequence 가 offline 상태인 경우


다음은 1*2 환경에서 g1n1 의 identity sequence 는 offline 상태이고, g1n2 는 inactive 상태일 때 실행한 결과이다.


gSQL> SELECT cm.member_name, vcm.status

2 FROM v$cluster_member@g1n1 vcm, cluster_member@g1n1 cm

3 WHERE vcm.member_id = cm.member_id AND cm.member_name = 'G1N2';


MEMBER_NAME STATUS

----------- --------

G1N2 INACTIVE


1 row selected.


gSQL> INSERT INTO t1 VALUES( DEFAULT );


ERR-HY000(56026): identity column 'I1' of table 'T1' is offline

Action

Inactive 멤버가 존재하는 경우, 해당 멤버를 클러스터에 참여시킨 후 다시 실행한다.


gSQL> SELECT local_member_name() FROM dual;


LOCAL_MEMBER_NAME()

-------------------

G1N2


1 row selected.


gSQL> ALTER SYSTEM JOIN DATABASE;


System altered.


gSQL> INSERT INTO t1 VALUES( DEFAULT );


1 row created.


만약 inactive 멤버가 존재하지 않는 경우에는 ALTER DATABASE SYNCHRONIZE SEQUENCE 구문을 성공할 때까지 반복 수행한다.

56027 (SQLSTATE: HY000): cannot resolve in-doubt transaction '%d.%d.%ld' because the transaction remains unfinished

Cause

노드가 종료된 후 다시 startup 할 때 PREPARE 상태인 특정 transaction이 아직 COMMIT 또는 ROLLBACK 을 되지 않았다.

Action

Transaction 을 먼저 COMMIT 또는 ROLLBACK 한 이후에 다시 startup 한다.

56028 (SQLSTATE: HY000): the property '%s' is not compatible with the cluster system

Cause

노드가 GLOBAL OPEN 단계로 진입할 때 멤버 간 global 프로퍼티 설정 값이 다른 경우에 발생하는 에러이다.

Action

멤버 간 프로퍼티 값을 동일하게 맞춘 후, 노드를 다시 startup 한다.

56029 (SQLSTATE: HY000): unable to open a remote session for read only statement

Cause

Transaction 이 없는 상태에서, 프로토콜 실행을 위한 원격 세션을 생성하는데 실패했다.


다음은 g1n2 의 t1 테이블을 검색하기 위해 원격 세션을 생성하는 과정에서 자원이 부족하여 에러가 발생하는 예이다.


gSQL> SELECT * FROM t1@g1n2;


ERR-HY000(56029): unable to open a remote session for read only statement

ERR-HY000(11019): MEMBER(G1N2): Insufficient resource : exceeded maximum number of session environments

Action

에러 메시지를 참고하여 원인을 해결한 후, 다시 실행한다.

56030 (SQLSTATE: HY000): total cdispatcher threads '%d' must be equal to or less than '%d'

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

56031 (SQLSTATE: HY000): startup of remote database '%s' is in progress

Cause

여러 멤버에서 동시에 startup phase를 global open으로 올리는 경우 발생하는 에러이다.

Action

하나의 멤버에서만 startup phase를 global open 단계로 올린다.

cserver 관련 에러

57000 (SQLSTATE: HY000): invalid statement

Cause

원격 세션에서, 이미 에러가 발생한 statement 를 다시 실행하려 할 때 발생한다.

Action

해당 에러는 이전 에러로 인해 발생한 2차 에러이며, 먼저 최초 에러의 원인을 해결한 후에 다시 수행한다.

cdispatcher 관련 에러

58000 (SQLSTATE: HY000): the sender failed to connect to the member(%d)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

58001 (SQLSTATE: HY000): the socket of target member '%s' is already disconnected

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

58002 (SQLSTATE: HY000): the location information for member '%s' is not found

Cause

MOUNT 단계에서 LOCAL OPEN 단계로 전환하는 과정에서 로컬의 location 정보가 삭제되었다.


gSQL> \STARTUP MOUNT


Startup success


gSQL> ALTER SYSTEM OPEN LOCAL DATABASE;


ERR-HY000(44004): failed to create system threads (monitor)

ERR-HY000(44007): failed to start up a process 'cdispatcher'

ERR-HY000(58002): the location information for member 'G1N2' is not found

Action

로컬의 location 정보를 다시 추가한 후에 LOCAL OPEN 단계로 재진입한다.


gSQL> CREATE CLUSTER LOCATION G1N2 HOST '127.0.0.1' PORT 11250;


Location created.


gSQL> ALTER SYSTEM OPEN LOCAL DATABASE;


System altered.

58003 (SQLSTATE: HY000): the connection information is invalid; %s %d is either equal to or greater than %d

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

58004 (SQLSTATE: HY000): the connection timeout from remote(%d)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

58005 (SQLSTATE: HY000): the disconnection timeout from remote(%d)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

58006 (SQLSTATE: HY000): invalid connection state transition

Cause

클러스터에 참여하는 과정에서 active 노드들이 보유한 joining 노드의 상태 정보가 이미 CONNECTING 상태인 경우에 발생한다.

이는 joining 노드가 참여 과정에서 비정상적인 에러로 실패한 직후, 짧은 시간 내에 다시 참여를 시도할 때 나타날 수 있다.

Action

Active 노드에서 joining 노드에 대한 상태 정리가 완료된 후 다시 시도한다.

동일한 문제가 지속적으로 발생할 경우, 고객 센터에 문의한다.

58007 (SQLSTATE: HY000): dispatcher thread counts of two hosts do not match

Cause

Active 노드와 joining 노드의 cdispatcher thread 개수가 다르다.


다음은 g1n1 과 g1n2 의 cdispatcher thread 개수를 서로 다르게 설정한 상태에서 멤버를 추가할 때 에러가 발생하는 예이다.


gSQL> ALTER CLUSTER GROUP G1 ADD CLUSTER MEMBER G1N2 HOST '127.0.0.1' PORT 11250;


ERR-HY000(16351): failed to connect to the cluster member 'G1N2'

ERR-HY000(58007): MEMBER(G1N2): cluster dispatcher thread count does not match

Action

Joining 노드의 CDISPATCHER_LOCKABLE_THREADS, CDISPATCHER_LOCKLESS_THREADSCDISPATCHER_SYNC_THREADS 값을 active 노드와 동일하게 설정한 후, joining 노드를 재구동하고 다시 시도한다.

58008 (SQLSTATE: HY000): failed to start '%s' thread of cluster dispatcher

Cause

Startup 과정에서 발생할 수 있으며 cdispatcher 의 thread 생성에 실패할 경우에 발생한다.

원인은 다양하지만, 대부분 운영체제 자원이 부족할 때 발생한다.

Action

원인을 해결한 후, 다시 startup 한다.

58009 (SQLSTATE: HY000): internal error ( %s, %d )

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

해당 에러 발생 시 고객센터에 문의한다

58010 (SQLSTATE: HY000): broken socket

Cause

노드 간 소켓이 끊어진 상태이다.

Action

네크워크 상태를 확인한 후, 연결이 끊어진 노드를 다시 참여시킨다.

58011 (SQLSTATE: HY000): old cluster connection is still alive

Cause

클러스터 참여 과정에서 active 노드에 기존 joining 노드와의 연결이 유지되고 있으면 오류가 발생한다.

Action

Active 노드에서 joining 노드의 상태 정리가 완료된 후에 다시 시도한다.

동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

58012 (SQLSTATE: HY000): failover event is in progress

Cause

클러스터에서 단절된 노드에 대한 failover 과정이 아직 진행 중인 상태에서 해당 노드를 다시 참여시키려고 했다.

Action

Active 노드들에서 진행 중인 failover 과정이 모두 종료된 후, 다시 시도한다.

58013 (SQLSTATE: HY000): the connection can be established at LOCAL OPEN or OPEN phase

Cause

Startup 이 진행 중인 노드가 클러스터 DDL 의 대상 노드가 될 때 발생하는 에러이다.

Action

Startup 이 완료한 이후에 다시 시도한다.

58014 (SQLSTATE: HY000): old cluster sessions are still alive

Cause

클러스터 참여 과정에서 active 노드에 joining 노드가 단절되기 이전에 생성된 세션이 여전히 남아 있는 경우에 발생하는 에러이다.

Action

단절된 노드의 세션은 gmaster 의 cleanup thread 에 의해 자동으로 cleanup 된다.

모든 세션 정리가 완료된 후에 다시 시도한다.

동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

58015 (SQLSTATE: HY000): Timeout expired - %s

Cause

클러스터 참여 과정에서 원격 노드로의 연결 시간이 CLUSTER_CONNECTION_TIMEOUT_SEC 설정 값을 초과했다.

Action

CLUSTER_CONNECTION_TIMEOUT_SEC 값을 늘려서 다시 시도한다.

58016 (SQLSTATE: HY000): cancel dequeue operation - database is going shutdown

Cause

서버 내부에서 사용하는 에러 코드이다.

Action

별도의 조치는 필요없다.

58017 (SQLSTATE: HY000): join database is in progress

Cause

서로 다른 세션에서 동시에 두 개 이상의 노드를 참여시키려고 할 경우에 발생하는 에러이다.


gSQL> ALTER SYSTEM JOIN DATABASE;


ERR-HY000(58017): MEMBER(G1N2): join database is in progress

Action

노드를 순차적으로 참여시킨다.

58018 (SQLSTATE: HY000): connection request from old cluster

Cause

A 클러스터에서 단절된 노드를 B 클러스터에 참여시키려고 할 때 발생하는 에러이다.

Action

해당 노드를 원래 속해 있던 올바른 클러스터에 참여시킨다.

58019 (SQLSTATE: HY000): member position is out of range( 0 to %ld ) - local(%d), remote(%d)

Cause

그룹 생성 또는 멤버 추가 시, 로컬의 member position 값이 MAX_NODE_COUNT 값을 초과하는 경우에 발생하는 에러이다.

이 오류는 일반적으로 추가할 노드의 MAX_NODE_COUNT 값이 active 노드들의 MAX_NODE_COUNT 값과 서로 다를 때 발생한다.


다음은 g1n1 의 MAX_NODE_COUNT 가 2로 설정된 상태에서, MAX_NODE_COUNT 가 1로 설정된 g1n2 를 추가하는 경우에 오류가 발생하는 예이다.


gSQL> ALTER CLUSTER GROUP G1 ADD CLUSTER MEMBER G1N2 HOST '127.0.0.1' PORT 11250;


ERR-HY000(16351): failed to connect to the cluster member 'G1N2'

ERR-HY000(58019): MEMBER(G1N2): member position is out of range( 0 to 1 ) - local(1), remote(0)

Action

Active 노드의 MAX_NODE_COUNT 와 동일한 값으로 설정한 후, 다시 시도한다.

58020 (SQLSTATE: HY000): the cluster protocol version '%d.%d' of cluster member '%d' is not compatible with the cluster protocol version '%d.%d' of cluster member '%d'

Cause

Joining 노드의 major cluster protocol version 이 active 노드의 major version 과 동일하지 않다.

Action

Joining 노드의 major protocol version 을 확인하고 올바른 패키지 버전으로 다시 시도한다.


다음은 노드의 cluster protocol version 을 확인하는 방법이다.


gSQL> SELECT stat_name, stat_value

2 FROM v$system_stat@local

3 WHERE stat_name LIKE '%_PROTOCOL_VERSION';


STAT_NAME STAT_VALUE

---------------------- ----------

MAJOR_PROTOCOL_VERSION 2

MINOR_PROTOCOL_VERSION 1


2 rows selected.

gtrclogger 관련 에러

59000 (SQLSTATE: HY000): exceeded port cnt

Cause

gtrclogger는 여러 서버의 로그를 수집하기 위해 최대 100개의 포트를 통해 수신할 수 있다. 이 오류는 시작 시 설정한 포트 개수가 허용된 최대치인 100개를 초과하여 발생한 것이다.

Action

gtrclogger를 실행할 때 수신 포트 개수를 100개 이하로 설정하여 실행해야 한다.

59001 (SQLSTATE: HY000): gtrclogger is already running

Cause

gtrclogger가 이미 실행 중인 상태에서 gtrclogger를 다시 시작하려 했다.

Action

gtrclogger를 새롭게 시작하려면, 현재 실행 중인 인스턴스를 먼저 종료해야 한다.

59002 (SQLSTATE: HY000): gtrclogger is not running

Cause

gtrclogger를 종료하려고 시도하였으나, 현재 실행 중인 인스턴스가 존재하지 않는다.

Action

gtrclogger가 실제로 실행 중이지 않기 때문에 종료할 필요는 없으며, 필요에 따라 프로그램을 새로 시작하면 된다.

59003 (SQLSTATE: HY000): Operation timed out

Cause

Stop 명령을 실행하면, 현재 실행 중인 gtrclogger 프로세스를 종료한 후 로그 파일에 대한 lock을 획득하여 정상적으로 종료되었는지를 확인한다. 이 오류는 로그 파일에 대한 lock을 여러 차례 시도했음에도 불구하고 획득하지 못한 경우에 발생한다.

Action

gtrclogger 프로세스가 여전히 종료되지 않았는지 확인한다.

다른 프로세스에서 로그 파일을 사용 중인지 확인한다.

시스템 전체에 파일 lock과 관련된 문제가 있을 수 있으므로, 파일 시스템 상태나 접근 권한 설정도 함께 점검한다.

59004 (SQLSTATE: 22000): Invalid GOLDILOCKS_DATA directory

Cause

환경 변수 GOLDILOCKS_DATA에 설정된 디렉토리 경로가 존재하지 않거나 설정된 경로에 접근할 수 없을 때 발생한다.

Action

GOLDILOCKS_DATA 환경 변수를 유효한 디렉토리 경로로 설정한다.

glocator 관련 에러

60000 (SQLSTATE: HY000): syntax error

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

60001 (SQLSTATE: HY000): file does not exist - '%s'

Cause

%s 파일이 존재하지 않는다.

Action

파일 유무를 확인하고 수정한다.

60002 (SQLSTATE: HY000): GOLDILOCKS_DATA system environment is invalid

Cause

GOLDILOCKS_DATA 환경 변수가 유효하지 않다.

Action

유효한 GOLDILOCKS_DATA 환경 변수를 설정한다.

60003 (SQLSTATE: HY000): Invalid value - %s(%s)

Cause

ADD SERVICE 구문에서 SERVICE 이름이 최대 길이를 초과하였다.

Action

식별자 이름은 128 bytes 보다 작아야 한다.

60004 (SQLSTATE: HY000): file name is too long - '%s'

Cause

파일 경로의 길이가 최대 길이를 초과하였다.

Action

1024 bytes 보다 작아야 한다.

60005 (SQLSTATE: HY000): glocator is already started.

Cause

glocator가 이미 동작하고 있다.

Action

새롭게 glocator를 실행하려면 이미 운영 중인 glocator 프로세스를 종료한다. 또는 같은 장비에 다른 glocator를 실행하려면 이미 동작하는 glocator와 다른 home과 접속 정보로 glocator를 실행 시킬 수 있다.

60006 (SQLSTATE: HY000): Location file is corrupted - '%s'

Cause

Location 파일이 손상되었다.

Action

Location 파일을 새로 생성해야 한다.

60007 (SQLSTATE: HY000): Property value is out of length - '%s'

Cause

주어진 속성 값의 길이가 유효 길이를 초과하였다.

Action

속성 값의 길이를 유효 범위 내로 사용한다.

60008 (SQLSTATE: HY000): Invalid property value [ YES | NO | 1 | 0 ] - '%s'

Cause

Boolean 속성에 유효하지 않은 값을 사용하였다.

Action

에러 메시지에 제시된 Boolean 값을 사용한다.

60009 (SQLSTATE: HY000): Invalid property value [ %ld ~ %ld ] - '%s'

Cause

Integer 속성에 범위를 초과한 값이 사용되었다.

Action

에러 메시지에 제시된 범위에서 정수 값을 사용한다.

60010 (SQLSTATE: HY000): Invalid property value [ %ld ~ %ld ] - '%s'

Cause

String 속성으로 사용한 문자열이 유효 길이 범위를 초과하였다.

Action

에러 메시지에 제시된 문자 길이 내의 문자열을 사용한다.

60011 (SQLSTATE: HY000): File already exists - '%s'

Cause

파일이 이미 존재한다.

Action

파일 확인 후 대응한다.

60012 (SQLSTATE: HY000): Location file exceeded max size(%ld) - over size(%ld)

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

60013 (SQLSTATE: HY000): Not exist node information - '%s'

Cause

주어진 노드 정보가 존재하지 않는다.

Action

trace 로그에서 확인한다.

Cluster 환경에서 Cluster Failover 과정 중에 이 에러가 발생하였다면 해당 노드의 gagent가 이미 종료된 상황이다.

gloctl 또는 global connection을 위한 노드 조회였다면 gloctl을 통하여 해당 노드에 대한 정보를 추가해야 한다.

60014 (SQLSTATE: HY000): Exceeded response time for failover.

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

60015 (SQLSTATE: HY000): Node is on failover - '%s'

Cause

gloctl을 통하여 ADD, DROP MEMBER 구문을 실행하였는데 노드가 Failover 과정 중에 있다.

Action

Failover 과정에 있는 노드 정보의 갱신은 불가하여 Failover가 끝난 후 다시 시도한다.

60016 (SQLSTATE: HY000): Need more alternate locator host information.

Cause

sync 옵션을 사용하였는데 ALTERNATE_LOCATOR 정보가 없다.

Action

Configure 파일에 ALTERNATE_LOCATOR 속성을 추가한다.

60017 (SQLSTATE: HY000): Invalid configure file specification - property:[%s]

Cause

ALTERNATE_LOCATOR 속성을 설정하였는데 문자열이 유효하지 않은 형식이다.

Action

ALTERNATE_LOCATOR 속성값은 ini object의 이름이고 configure file에 기술되어야 한다. 해당 ini object에는 유효한 host, port 속성을 기술해야 한다.

60018 (SQLSTATE: HY000): Failed to propagate - '%s:%d'

Cause

이중화 상태의 glocator에서 MEMBER 또는 SERVICE를 갱신하려 하였는데 실패하였다.

Action

UDP를 이용한 프로토콜 통신으로 패킷 손실이 발생하는 경우 재수행하거나 alternate glocator에서 직접 처리해야 한다.

60019 (SQLSTATE: HY000): Not exist service information - '%s'

Cause

주어진 서비스 정보가 존재하지 않는다.

Action

해당 서비스 정보를 확인한다.

60020 (SQLSTATE: HY000): '%s' node is already connected.

Cause

gagent와 연결을 하는데 동일한 이름을 갖는 노드가 이미 존재한다.

Action

동일 멤버의 gagent가 추가로 실행하려고 시도한 것이다. gagent의 trace 로그를 확인한다.

60021 (SQLSTATE: HY000): overflow fd.

Cause

시스템의 파일 디스크립터 값이 한계에 도달했다.

Action

시스템의 파일 디스크립터 한계값을 늘린다.

60022 (SQLSTATE: HY000): Connection is rejected.

Cause

  • gagent: glocator에 연결을 시도했으나, glocator가 primary가 아니다.

  • glocator: 다른 alternate glocator가 이미 사용 중이어서 연결을 시도한 glocator를 사용할 수 없다.

Action

  • gagent: Primary glocator에 연결한다.

  • glocator: 현재 연결된 alternate glocator 연결을 종료하고, 새로운 alternate glocator에 연결한다.

gloctl 관련 에러

61000 (SQLSTATE: HY000): Syntax error

Cause

입력 문자열이 구문을 위배하였다.

Action

문법을 확인한다.

61001 (SQLSTATE: HY000): File does not exist - '%s'

Cause

파일이 존재하지 않는다.

Action

파일 경로를 확인한다.

61002 (SQLSTATE: HY000): Can not find any ini object in file - '%s'

Cause

IMPORT 구문에 사용한 INI 파일에 어떠한 데이터 소스도 없다.

Action

IMPORT 구문에 사용한 INI 파일을 확인한다.

61003 (SQLSTATE: HY000): Dsn does not exist - '%s'

Cause

다음과 같이 ADD MEMBER 구문에서 멤버 이름만 입력하여 실행할 수 있다.


gLoctl> add member g1n1


멤버의 g1n1의 정보는 odbc.ini 파일에서 얻으려 하였지만 odbc.ini에 g1n1의 정보가 존재하지 않는다.

Action

odbc.ini 에 해당 멤버의 정보를 추가한다. odbc.ini 파일의 위치는 홈 디렉토리 또는 ODBCINI 또는 ODBCSYSINI 환경 변수에 따라 달라진다.

61004 (SQLSTATE: HY000): ADD MEMBER keyword syntax is error - '%s'

Cause

ADD MEMBER 구문에 사용된 키워드가 올바르지 못하다.

Action

ADD MEMBER 구문을 확인한다.

61005 (SQLSTATE: HY000): ADD SERVICE keyword syntax is error - '%s'

Cause

ADD SERVICE 구문에 사용된 키워드가 올바르지 못하다.

Action

ADD SERVICE 구문을 확인한다.

61006 (SQLSTATE: HY000): Invalid property value [ YES | NO | 1 | 0 ] - '%s'

Cause

Boolean 속성에 유효하지 않은 값을 사용하였다.

Action

에러 메시지에 제시된 Boolean 값을 사용한다.

61007 (SQLSTATE: HY000): Invalid property value [ %ld ~ %ld ] - '%s'

Cause

Integer 속성에 범위를 초과한 값이 사용되었다.

Action

에러 메시지에 제시된 범위의 정수 값을 사용한다.

61008 (SQLSTATE: HY000): Invalid property value [ %ld ~ %ld ] - '%s'

Cause

String 속성으로 사용한 문자열이 유효 길이 범위를 초과하였다.

Action

에러 메시지에 제시된 문자 길이 내의 문자열을 사용한다.

61009 (SQLSTATE: HY000): STL_ENV_DB_DATA system environment is invalid

Cause

Default Configure 파일의 위치를 얻을 때 GOLDILOCKS_DATA 환경변수를 참조 하는데 해당 환경변수가 없거나 결과 값의 문자열 길이가 1보다 작다.

Action

GOLDILOCKS_DATA 환경변수를 확인하거나 conf 옵션을 사용하여 Configure 파일을 직접 입력한다.

61010 (SQLSTATE: HY000): Keyword syntax is invalid - '%s'

Cause

입력한 키워드의 구문이 유효하지 않다.

Action

사용한 구문의 문법을 확인한다.

61011 (SQLSTATE: HY000): Data value is invalid - '%s'

Cause

특정 구문에서 누락된 정보가 있다. IMPORT 구문의 경우 HOST와 PORT 정보가 반드시 포함 되어야 한다. 또는 ADD SERVICE 구문의 경우에는 구문을 사용하였지만 SERVICE 멤버의 정보가 누락 되면 해당 에러가 발생한다.

Action

사용한 구문의 문법을 확인한다.

gmon 관련 에러

62000 (SQLSTATE: HY000): gmon is already running

Cause

gmon이 이미 동작 중이다.

Action

이전에 동작한 gmon을 정리하거나 trace 로그를 보고 대처한다.

62001 (SQLSTATE: HY000): process(%ld) did not respond signal

Cause

주어진 pid를 이용하여 gmaster의 process 이름을 얻으려 하였지만 실패하였다.

특정 os의 경우 pid를 이용하여 process 이름을 확인하는 것을 지원하지 않는다. 이 경우에 시그널을 이용하여 프로세스가 살아 있는지 확인하는데 프로세스가 응답하지 않았다.

Action

trace 로그를 보고 대처한다.

62002 (SQLSTATE: HY000): GOLDILOCKS_DATA system environment is invalid

Cause

GOLDILOCKS_DATA 환경 변수가 유효하지 않다.

Action

유효한 GOLDILOCKS_DATA 환경 변수를 설정한다.

gagent 관련 에러

63000 (SQLSTATE: HY000): GOLDILOCKS_DATA system environment is invalid

Cause

GOLDILOCKS_DATA 환경 변수가 유효하지 않다.

Action

유효한 GOLDILOCKS_DATA 환경 변수를 설정한다.

63001 (SQLSTATE: HY000): Property value is out of length - '%s'

Cause

주어진 속성 값의 길이가 유효 길이를 초과하였다.

Action

속성 값의 길이를 유효 범위 내로 사용한다.

63002 (SQLSTATE: HY000): Invalid property value [ YES | NO | 1 | 0 ] - '%s'

Cause

Boolean 속성에 유효하지 않은 값을 사용하였다.

Action

에러 메시지에 제시된 Boolean 값을 사용한다.

63003 (SQLSTATE: HY000): Invalid property value [ %ld ~ %ld ] - '%s'

Cause

Integer 속성에 범위를 초과한 값이 사용되었다.

Action

에러 메시지에 제시된 범위에서 정수 값을 사용한다.

63004 (SQLSTATE: HY000): Invalid property value [ %ld ~ %ld ] - '%s'

Cause

String 속성으로 사용한 문자열이 유효 길이 범위를 초과하였다.

Action

에러 메시지에 제시된 문자 길이 내의 문자열을 사용한다.

63005 (SQLSTATE: HY000): gagent is already started.

Cause

gagent가 이미 동작 중이다.

Action

이전에 동작 중인 gagent를 정리하거나 trace 로그를 확인하여 대처한다.

63006 (SQLSTATE: HY000): file name is too long - '%s'

Cause

파일 경로의 길이가 1024와 같거나 크다.

Action

1024보다 작은 길이를 사용한다.

63007 (SQLSTATE: HY000): file does not exist - '%s'

Cause

파일이 존재하지 않는다.

Action

파일 이름과 경로를 확인한다.

63008 (SQLSTATE: HY000): Database is not cluster.

Cause

Cluster 데이터베이스가 아니다.

Action

Cluster 데이터베이스에서 동작할 수 있다.

63009 (SQLSTATE: HY000): Invalid configure file specification - property:[%s]

Cause

INI 파일에 속성을 잘못 설정하였다.

Action

속성과 속성 값을 설정하는 방법을 확인한다.

63010 (SQLSTATE: HY000): Invalid phase(%s): executable phase is between %s and %s

Cause

현재 데이터베이스의 상태가 Open 상태가 아니다.

Action

데이터베이스를 Local Open 또는 Open 상태까지 Startup 하고 gagent를 실행한다.

63011 (SQLSTATE: HY000): Property PORT of dsn(%s) is not set in file 'odbc.ini'

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

63012 (SQLSTATE: 08000): Timeout expired.

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

63013 (SQLSTATE: HYT00): Unable to establish connection.

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

cyfile 관련 에러

64000 (SQLSTATE: RD000): Service is not available

Cause

Database와 정상적으로 연결되지 않았다.

Action

Database가 정상적으로 실행 중인지 확인하고, trace log에서 connection string이 올바른지 점검한다. 잘못된 정보가 있을 경우, 환경 파일에 정의된 database 접속 정보를 수정한다.

64001 (SQLSTATE: HY000): '%s' : file does not exist

Cause

환경 파일이나 기타 파일이 해당 경로에 존재하지 않는다.

Action

파일이 위치한 경로와 이름을 정상적으로 수정한 뒤 재실행한다.

64002 (SQLSTATE: HY000): configure file processing error

Cause

환경 파일에 기술된 내용이 잘못되었다.

Action

출력된 오류 내용을 바탕으로 수정한다.

64003 (SQLSTATE: HY000):  '%s': table does not exist 

Cause

환경 파일에 기술된 table 정보가 database에 존재하지 않는다.

Action

환경 파일의 정보가 database와 일치하도록 수정한다.

64004 (SQLSTATE: HY000):  '%s': schema does not exist 

Cause

환경 파일에 기술된 schema 정보가 database에 존재하지 않는다.

Action

환경 파일의 정보가 database와 일치하도록 수정한다.

64005 (SQLSTATE: HY000): '%s.%s': previously added. maybe duplicated 

Cause

환경 파일에 table 정보가 중복으로 기술되어 있다.

Action

환경 파일에서 중복된 table 정보를 제거한다.

64006 (SQLSTATE: HY000): '%s%s': table must have a primary key

Cause

기술된 table에 primary key가 설정되어 있지 않다.

Action

해당 table에 primary key를 설정하거나 추가한다.

64007 (SQLSTATE: HY000):  internal error occurred (%s)

Cause

내부 오류로 인해 발생하는 에러이다.

Action

Trace log를 확인하여 고객센터에 문의한다.

64008 (SQLSTATE: HY000):  invalid datatype (%ld) 

Cause

Cyfile을 지원하지 않는 데이터 타입을 사용하였다.

Action

Cyfile을 지원하는 데이터 타입인지 확인한다.

64009 (SQLSTATE: HY000):  '%s.%s': table must set supplemental log or primary key.

Cause

Cyfile을 수행하려면 supplemental logging이 활성화되어 있어야 하나, 지정된 테이블에 supplemental logging이 활성화되어 있지 않다.

Action

해당 테이블의 supplemental logging을 활성화하거나, Goldilocks property의 SUPPLEMENTAL_LOG_DATA_PRIMARY_KEY 속성을 YES로 변경한 뒤 재시작한다.

64010 (SQLSTATE: HY000):  group [%s] is already running

Cause

환경 파일에 지정된 이중화 group과 동일한 이름의 group이 이미 실행 중이다.

Action

--status 옵션을 사용해 Cyfile의 실행 상태를 확인한다. 해당 group이 이미 실행 중이라면 종료 후 재실행하고, 새로운 group을 추가하려는 경우 동일한 이름의 group이 이미 존재하므로 환경 파일에 지정된 group 이름을 변경한다.

64011 (SQLSTATE: HY000):  cyfile is not running  

Cause

Cyfile이 실행 중이 아니거나, 기술된 Cyfile 이중화 group 이름이 올바르지 않다.

Action

--status 옵션을 사용하여 Cyfile의 실행 여부와 group 이름을 확인한다.

64012 (SQLSTATE: HY000): GOLDILOCKS_DATA system environment is invalid

Cause

시스템 환경 설정 인자 중에 GOLDILOCKS_DATA가 설정되지 않았다.

Action

Cyfile을 실행하는 환경에 GOLDILOCKS_DATA를 설정한다.

64013 (SQLSTATE: HY000):  '%s' log file is reused or invalid: restart cyfile with '--reset' option

Cause

Cyfile 데이터를 얻기 위해 지정된 redo log 파일이 재사용되었거나 archive log가 없어 더 이상 진행할 수 없다.

Action

ARCHIVELOG_MODE가 활성화되어 있는지 확인한다. 기존 상태를 포기하고 현재 시점부터 새로 시작하려는 경우에는 --reset 옵션을 사용해 Cyfile을 재실행한다.

64014 (SQLSTATE: HY000):  failed to analyze flow [%s]

Cause

데이터 분석에 실패했다.

Action

Trace log를 확인하여 고객센터에 문의한다.

64015 (SQLSTATE: HY000):  Invalid transaction slot ID 

Cause

Cyfile이 실행된 후에 GOLDILOCKS의 TRANSACTION_TABLE_SIZE 프로퍼티가 변경되었다.

Action

Cyfile을 재실행한다. 이중화 도중에 TRANSACTION_TABLE_SIZE를 변경하려면 Cyfile을 다시 실행해야 한다.

64016 (SQLSTATE: HY000): Invalid operation for DDL 

Cause

Cyfile이 처리할 수 없는 DDL이 발생하였다.

Action

Trace log를 확인하여 고객센터에 문의한다.

64017 (SQLSTATE: HY000):  Invalid group name (%s) 

Cause

환경 파일에 group이 설정되어 있지 않다.

Action

환경 파일에 group을 설정한다.

64018 (SQLSTATE: HY000): Invalid capture information

Cause

Recovery 정보가 올바르지 않다.

Action

--reset all 옵션을 사용하여 Cyfile을 재시작한다.

64019 (SQLSTATE: HY000):  There is no group in configure

Cause

환경 파일에 group 정보가 설정되어 있지 않다.

Action

환경 파일에 group을 한 개 이상 설정한다.

64020 (SQLSTATE: HY000):  Duplicate group name (%s)

Cause

환경 파일에 group 이름이 중복으로 기술되었다.

Action

환경 파일에 기술하는 group 이름은 서로 구분되도록 설정한다.

64021 (SQLSTATE: HY000):  Invalid Value : %s(%s)

Cause

환경 파일에 기술한 내용이 올바르지 않다.

Action

해당 값들을 정상적인 값으로 수정한다.

64022 (SQLSTATE: HY000): Invalid host port (%s) 

Cause

환경 파일에 기술된 HOST_PORT 값이 올바르지 않다.

Action

환경 파일의 HOST_PORT 값을 정상적인 값으로 수정한다.

64023 (SQLSTATE: HY000):  Redo log file read timeout (%s)

Cause

Archive log 파일을 읽는 과정에서 대기 시간이 초과되었다.

(읽어야 할 파일을 10초 이상 찾지 못하면 발생하는 오류이다.)

Action

해당 파일이 존재하는지 확인한 후 Cyfile을 재시작한다. 동일한 문제가 지속적으로 발생할 경우, --reset all 옵션을 사용하여 Cyfile을 재시작한다.

64024 (SQLSTATE: HY000):  Invalid archive log file (%s)

Cause

유효한 archive log 파일이 존재하지 않는다.

Action

Trace log를 확인하여 고객센터에 문의한다.

64025 (SQLSTATE: HY000):  failed to write file (%s)

Cause

해당 파일을 저장하지 못했다.

Action

운영되는 장비의 disk 공간을 확보하여 재시작한다. 동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

64026 (SQLSTATE: HY000): failed to set propagate mode at session

Cause

deprecated

Action

해당 에러 발생 시 고객센터에 문의한다.

64027 (SQLSTATE: HY000):  There is no active redo log file

Cause

Goldilocks가 처리 중인 redo log 파일이 올바르지 않거나, LogFile switch 과정에서 disk 병목 현상 등으로 인해 처리 시간이 지연되는 경우에 발생할 수 있다.

Action

Cyfile을 재시작한다. 동일한 문제가 지속적으로 발생할 경우, 고객센터에 문의한다.

64028 (SQLSTATE: HY000):  Cannot add new table. master database must be started first. (%s.%s) 

Cause

환경 파일에 기술하거나 추가한 테이블을 처리하려면, 해당 테이블 정보를 구성하기 위해 Goldilocks에 접속해야 한다.

이 때 Goldilocks가 online 상태가 아니거나 접속할 수 없어 정보를 구성하지 못하면 오류가 발생한다.

Action

환경 파일에 테이블을 추가한 경우에는 해당 테이블을 제거한 뒤 재시작한다.

또는 Goldilocks 운영 상태를 확인한다.

64029 (SQLSTATE: HY000):  Master database must be started(Open status) for the first time, reset table.

Cause

Cyfile을 최초로 실행하거나 --reset 옵션을 사용하여 실행할 경우, 반드시 Goldilocks에 접속해야 한다. 이 때 접속에 실패하면 오류가 발생한다.

Action

Goldilocks 운영 상태를 확인한다.

64030 (SQLSTATE: HY000):  Meta file has broken. please restart with '--reset all'(%s)

Cause

Cyfile에 필요한 정보를 기록한 meta 파일의 상태가 올바르지 않다.

Action

--reset all 옵션을 사용하여 Cyfile을 재실행한다.

64031 (SQLSTATE: HY000):  Redo log file does not exist (%s)

Cause

Redo log 파일이 존재하지 않는다.

Action

Trace log를 확인하고 고객센터에 문의한다.

64032 (SQLSTATE: HY000): USER_ID or USER_PW does not exist 

Cause

Goldilocks에 접속하기 위한 USER_ID, USER_PW가 환경 파일에 설정되어 있지 않다.

Action

환경 파일에 USER_ID, USER_PW를 기술한다.

64033 (SQLSTATE: HY000):  (%s) value is too long

Cause

기술된 정보의 길이가 너무 길다.

Action

해당 정보의 최대 길이를 매뉴얼에서 확인하고 수정한다.

64034 (SQLSTATE: HY000):  Invalid encrypt/decrypt key

Cause

Password를 암호화/ 복호화하기 위한 key가 올바르지 않다.

Action

환경 파일에 기술된 USER_ENCRYPT_PW 값을 정상적인 key로 생성된 값으로 수정한다.

64035 (SQLSTATE: HY000): no '--key' option 

Cause

암호화된 password를 생성하지 않았거나, USER_ENCRYPT_PW를 복호화하기 위한 key 값이 설정되어 있지 않다.

Action

--key 옵션을 추가하여 실행한다.

64036 (SQLSTATE: HY000):  password already exists (use one of USER_PW or USER_ENCRYPT_PW)

Cause

환경 파일에 USER_PW, USER_ENCRYPT_PW가 함께 기술되어 있다.

Action

USER_PW, USER_ENCRYPT_PW 중에 필요하지 않은 내용을 제거한 뒤에 재실행한다.

64037 (SQLSTATE: HY000):   reset or sync table (%s.%s) has never participated in replication

Cause

--reset, --sync 'Table 이름' 옵션을 사용하여 특정 테이블을 초기화하려 했지만 해당 테이블이 존재하지 않거나 이중화를 수행한 이력이 없다.

Action

--reset, --sync 는 데이터를 초기화하는 중요한 옵션이므로 반드시 정확한 테이블 이름을 지정해야 한다. 만약 지정한 테이블이 새로 추가된 경우에는 해당 옵션 없이 수행해야 한다.

64038 (SQLSTATE: HY000):  reset or sync argument is invalid (%s)

Cause

--reset, --sync 에 기술한 내용이 올바르지 않다.

Action

기술된 내용을 확인하고 올바르게 수정하여 재실행한다.

64039 (SQLSTATE: HY000):  Table meta file has broken. please restart with '--reset all'

Cause

필요한 정보를 기록한 meta 파일이 올바르지 않다.

Action

--reset all 옵션을 사용하여 Cyfile을 재실행한다.

64040 (SQLSTATE: HY000):  (%s.%s) table (%s) column is not acceptable(GENERATED ALWAYS AS IDENTITY)

Cause

대상 테이블을 구성하는 column 중에 Generated Always As Identity 속성을 가진 column이 존재한다.

Action

해당 속성을 가진 column이 있을 경우에는 사용할 수 없으므로, 해당 속성을 제거해야 한다.

64041 (SQLSTATE: HY000): data type is not supported.(%s)  

Cause

지원하지 않는 데이터 타입을 사용하였다.

Action

Cyfile은 Long Varchar, Long Varbinary 등의 데이터 타입을 지원하지 않는다. 해당 데이터 타입을 가진 테이블을 수정한 후 재시작한다.

64042 (SQLSTATE: HY000): Cluster information does not matched( before groupid(%d), memberid(%d)/current groupid(%d), memberid(%d) ) 

Cause

기존 운영 정보 중에 cluster 정보는 변경되어서는 안되는데, 해당 정보가 변경되었다.

Action

환경 파일에서 Cluster 정보를 확인하거나, --reset all로 Cyfile을 재시작하여 해당 정보를 초기화한다.

64043 (SQLSTATE: HY000): Invalid cluster information at configure file( %s ) 

Cause

환경 파일에 기술한 CLUSTER 정보가 올바르지 않다.

Action

ID, PORT, MASTER_IP가 중복되었거나 잘못 기록된 경우이며, 해당 값을 올바르게 수정해야 한다.

64044 (SQLSTATE: HY000):  Control has broken(CRC Error)( %s )

Cause

운영에 필요한 control 파일이 올바르지 않다.

Action

--reset all로 Cyfile을 재시작하여 해당 정보를 초기화한다.

64045 (SQLSTATE: HY000):  Control has broken(internal CRC Error)( %s ) 

Cause

운영에 필요한 control 파일이 올바르지 않다.

Action

--reset all로 Cyfile을 재시작하여 해당 정보를 초기화한다.

gdump 관련 에러

67000 (SQLSTATE: HY000): actual file type (%s) does not match the specified type (%s)

Cause

사용자가 지정한 파일 타입과 실제 파일 타입이 일치하지 않는다.

Action

에러 메시지에 표시된 actual file type 으로 파일 타입을 변경하여 다시 시도한다.