다음 오라클 에러에 대해서 알아보도록 하자. ORA-00054: 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다. resource busy and acquire with NOWAIT specified. 1. commit을 안해서 LOCK걸린 경우 나의 경우에는 테이블 특정 컬럼의 길이를 변경하는 스크립트를 실행을 시키다가 에러가 발생하였다. 발생되는 원인을 확인해보니 다음과 같았다. 나를 포함한 누군가가 해당 테이블에 스크립트를 실행하고 커밋을 하지 않은 경우. 때문에, 해당 테이블에 진행 중인 트랜잭션이 완료되기 전까지는 LOCK에 걸려 작업을 할 수 없게 된다. 작업 중인 사용자를 찾아서 해당 테이블에 진행 중인 트랜잭션을 commit처리를 해야 한다. DB d..
Q0. 개요 흔히 사용하는 DML (Data Manipulation Language)에서 기존 자료를 조합해서 한번에 여러개를 저장하는 경우가 있다. 나의 경우에는 Insert ~ Select를 이용하여 기존에 존재하는 Select에 조회조건을 걸어 Insert할 때, PK를 비롯한 몇 가지의 데이터를 제외하고는 동일하게 생성시키는데 사용했다. 그런데, Insert ~ Select가 N건으로 실행되면서 Max(PK)+1가 계속 동일한 값으로 출력되는 문제가 발생되었다. 오늘은 이 문제가 발생하였을 때 처리했던 방법에 대해 정리하였다. - INSERT ~ SELECT문 INSERT ~ SELECT란, 이미 존재하는 테이블을 조회해서 나온 데이터를 일괄 등록하는 방법이다. (단, 전체 복사를 하려면 A와 B..
Q0. 개요 다음 오라클 에러에 대해서 알아보도록 하자. ORA-06576: 함수 또는 프로시저 이름이 부적합합니다. not a valid function or procedure name 프로시저를 호출할 때 에러가 나는 경우를 의미한다. 몇 가지 경우의 에러를 정리하자면 아래와 같다. 1. 프로시저가 컴파일 에러가 발생한 경우. 2. 프로시저의 body에서 begin - end가 없는 경우. 3. 프로시저가 시논임 또는 DB링크가 제대로 부여되지 않은 경우. 4. 프로시저를 호출시 파라미터의 개수를 잘못지정하여 호출하는 경우. 5. 프로시저명을 잘못 호출한 경우. Q1. 결론적으로 프로시저의 이름이 부적합하다는 에러는 프로시저를 찾지 못하고 있다는 에러이다. 대부분의 주된 에러는 명칭 또는 파라미터를 ..
Q0. 개요 다음 오라클 에러에 대해서 알아보도록 하자. ORA-06550: 식별자가 정의되어야 합니다 (PROC_INPUT_DATA) DML 구문이 업무에 따라 프로시저로 이루어진 경우도 있다. 이러한 경우에는 2가지 원인으로 발생됨을 알 수 있다. 1. 해당 스키마에 프로시저가 존재하지 않는 경우 2. DB계정이 해당 스키마의 프로시저에 접근할 권한이 없는 경우 (단, 다른 스키마의 프로시저를 시논임한 경우에도 접근권한이 없는 경우) Q1. 결론적으로 먼저 DB Developer에서 프로시저가 현재 존재하는지를 확인 -> 존재하는데 컴파일에 에러가 있지는 않는지 -> 현재 DB계정의 프로시저가 아닌 경우 시논임에 권한이 있는지까지 확인을 해야 한다.때문에, 작업할 때에는 항상 DB Developer에..
Q0. 개요 다음 오라클 에러에 대해서 알아보도록 하자. ORA-01841: 년은 -4713과 +4713사이의 값으로 지정해 주십시오. (full) year must be between -4713 and +9999, and not be 0 주요 발생되는 원인은 정해진 날짜 포맷의 범주를 벗어나는 경우이다. 조금 더 상황을 예를 들자면, 1. Insert시 컬럼의 순서를 잘못작성하여 Date타입의 컬럼에 데이터가 잘못 들어가는 경우. 2. TO_DATE(날짜, 'YYYYMMDD')의 입력받은 날짜의 값이 포맷의 범주에 벗어나는 경우. 3. BETWEEN 날짜1 AND 날짜2의 입력받은 날짜의 값이 포맷의 범주에 벗어나는 경우. Q1. 결론적으로 오라클에서 날짜 포맷과 관련되는 기능을 사용할때는 계산되는 값..
Q0. 개요 다음 오라클 에러에 대해서 알아보도록 하자. ORA-01843: 지정한 월이 부적합합니다 (not a valid month) 쿼리 작업 이후에 로컬에서 톰캣을 재구동했을 때, ORA-01843이라는 에러가 발생되는 경우가 있다. 이는 작성된 SQL의 출력물의 날짜 형식이 잘못되었거나 옳바르지 않은 경우이다. Q2. 날짜와 관련된 주요 기능 TO_CHAR는 날짜를 문자열로 변환하는 함수. TO_CHAR(SYSDATE, 'YYYYMMDD') TO_DATE는 문자열을 날짜로 변환하는 함수. TO_DATE('2023-11-21', 'YYYYMMDD') ALTER SESSION SET NLS_LANGUAGE = 'KOREAN'; --DB세션 한국어로 설정 ALTER SESSION SET NLS_DAT..