728x90
반응형
728x90
반응형

ORA-00054 resource busy and acquire with nowait specified or timeout expired

ORA-00054: 자원이 사용중이고, NOWAIT가 지정되어 있습니다. (TABLE LOCK) 

ORA-00054 문제에 대해 알아보겠습니다.

해당 메세지는 DB의 lock이 걸린 경우 또는 테이블 컬럼 변경시 해당 테이블이 사용중에 있을 때 발생합니다.

 

현재 사용중인 자원의 쿼리를 확인할 수 있습니다.

SELECT A.SID
     , A.SERIAL#
     , A.STATUS
  FROM V$SESSION A
     , V$LOCK B
     , DBA_OBJECTS C
 WHERE A.SID         = B.SID
   AND B.ID1         = C.OBJECT_ID
   AND B.TYPE        = 'TM'
   AND C.OBJECT_NAME = '테이블명'
;

lock이 발생한 경우라면 kill을 해주고 

ALTER SYSTEM KILL SESSION 'sid, serial#';

lock이 아닌 해당 테이블을 사용 중이라면 기다리거나 사용자가 사용하는 시간 외에 작업을 진행해 주시면 됩니다.

 

728x90
반응형
728x90
반응형

저는 DB툴로 SQLGate for Oracle Developer를 사용하고 있는데요.

노트북을 새로 구매하여 기존에 있던 접속 정보 백업이 필요했습니다.

접속 정보가 10개 미만이라면 수동으로 다시 저장할 수 있었지만 60개 이상이라 수동으로 저장하기가 어려웠습니다..ㅜ

그래서 구글링하여 접속 정보 백업하는 방법을 찾아 포스팅하려 합니다.

 

1. SQLGate 접속 정보 위치

 : SQLGate 설치된 경로로 이동합니다.

ex) C:\Program Files (x86)\SQLGate\SQLGate for Oracle Developer\bin

 - Connect.dat

 - SQLHistory.dat

위 두 개의 파일을 복사해주시면 됩니다.

 

복원이 완료된 것 을 확인할 수 있습니다.

728x90
반응형
728x90
반응형

오라클 계정 잠금 해제하는 법에 대해 알아보겠습니다.

오라클에서 계정 접속시 패스워드가 틀리거나 180일동안 접속하지 않으면 계정이 잠깁니다.

 

계정 잠금 화면

잠김 계정을 해제하기위해 SYSTEM 계정으로 접속합니다.

1. 계정 정보 확인하는 쿼리

SELECT * FROM DBA_USERS WHERE username='잠긴계정";

ACCOUNT_STATUS의 값이 LOCK이라면 계정이 잠겼다는 의미입니다.

2. 잠금해제

ALTER USER [사용자계정] ACCOUNT UNLOCK;

 

3. 패스워드 재설정

ALTER USER [사용자계정] IDENTIFIED BY [비밀번호];

 

open으로 변경된 것을 확인할 수 있습니다.

 

728x90
반응형
728x90
반응형

오라클에서 원격 접속 차단하는 방법에 대해 알아보겠습니다.

접속하는 피시에서 서버의 Listener를 통해 DB를 접속하는 경우가 있습니다.

제한을 두지 않는다면 모든 사용자가 접속을 할 수 있습니다.( DB접속 정보를 알고있다는 가정하에)

Listener 설정을 통해 차단 및 허용 IP 설정이 가능합니다.

sqlnet.ora파일을 수정해주시면 되는데요.

sqlnet.ora파일은 $ORACLE_HOME/network/admin/sqlnet.ora

오라클 설치경로 $ORACLE_HOME 디렉토리 하단에 존재합니다.

$ORACLE_HOME 오라클 설치 시 환경변수로 설정해두셨을 거라고 생각되는데요.

저는 D드라이브 밑에 오라클을 설치해두었습니다.

sqlnet.ora 파일을 찾으셨다면 에디터 프로그램으로 sqlnet.ora파일을 편집합니다.

 

TCP.VALIDNODE_CHECKING=YES
TCP.INVITED_NODES= (접속 허용 IP )
TCP.EXCLUDED_NODES= (접속 차단 IP)

 

편집후에는 listener를 재시작해줘야 해당 설정이 반영됩니다.

작업관리자 -> Listener 재시작

실제로 적용 되는지 테스트를 해보았습니다.

1. 접속 허용 IP만 지정 (TCP.INVITED_NODES)

접속 허용 IP를 지정한 경우 해당 IP외 모든 IP는 접속이 제한됩니다.

2. 접속 차단 IP지정(TCP.EXCLUDED_NODES)

 2.1) 차단IP외 다른 IP에서 접속한 경우

 2.2) 차단IP에서 접속한 경우

차단 IP에서 접속한 경우에도 동일한 에러 메세지가 발생하네요.

3. Listner 종료 시 발생한 에러

ORA-12505, TNS: listener does not currently know of SID given in connect descriptor

메세지와 함께 DB접속이 되지 않네요.

 

추가로 여러 개 IP를 넣고 싶다면 쉼표(,)를 통해 구분하여 작성할 수 있습니다.

 

728x90
반응형
728x90
반응형

ORA-01722: invalid number 또는 ORA-01722: 수치가 부적합합니다. 

에러에 대해 알아보겠습니다.

 

저는 테이블에 값을 insert하는 중에 발생했는데요.

원인을 찾아보니 data형태가 맞지 않아서 발생한 오류.

숫자형 컬럼에 '숫자'를 입력함으로서 invalid number 오류가 발생.

문자형을 숫자형으로 변형하는 것은 문제가 없지만

숫자형을 문자형으로 변형하는 경우 에러가 발생한다고 합니다.

 

 

오라클 공식 도큐먼트입니다.

http://www.orafaq.com/wiki/ORA-01722

728x90
반응형
728x90
반응형

함수 호출 중에 해당 오류가 발생했습니다.

sql 로그를 찍지 않은 상황이라 문제를 찾느라 시간이 걸렸네요.

결국 서버에 로그를 찍어서 확인해본 결과 실행 함수에 데이터베이스명..함수명이 두 개로 실행되고 있엇네요.

데이터베이스명.함수명 으로 호출해야 값을 불러올 수 있는데 아주 간단한 문제였어요..

 

이것 말고도 select문에 콤마가 두개 들어가거나 하는 경우에 

ORA-01747: 열명을 올바르게 지정해 주십시오. 오류가 발생합니다.

 

SQL문을 작성할 때 콤마나 점을 누락하거나 쓰지 않도록 해야겠네요.

 

728x90
반응형
728x90
반응형

저는 오라클에서 where절에 in을 넣어서 조회를 자주 하는 편입니다.

문득 오라클 in 파라미터의 최대 몇개까지 조회가 되는지 궁금해 테스트를 해봤습니다.

 

결론부터 얘기하면 1000까지 값을 넣을 수 있습니다.

ORA-01795: maximum number of expressions in a list is 1000

또는 ORA-00939: too many arguments for function 메세지가 뜨네요.

1001개를 조회한 경우 : ORA-01795: maximum number of expressions in a list is 1000

1000개 이상을 조회한 경우 : ORA-00939: too many arguments for function 

 

추가로 저는 sql gate툴을 사용하고 있는데 select한 결과 값을 in으로 조회하고 싶은 경우가 있습니다.

값을 복사해서 엑셀로 넣어서 따옴표를 값으로 만들어 조회하거나 일일이 따옴표를 넣어서 조회를 했었습니다.

sql gate는 자동으로 in구문을 생성해주는 기능이 있습니다.

select한 값을 우클릭하면 IN 구문 생성이라는 기능이 있습니다.

클릭하면 자동으로 '','','',로 만들어준다는 사실 아주 편리한 기능이죠.

728x90
반응형
728x90
반응형

 

java.sql.SQLException: ORA-01400

오류에 대해 알아보겠습니다.

 

해당 오류는 테이블에 insert할 때 해당 컬럼에 not null 설정이 되어 있음에도 불구하고 null을 넣으려고 하기 때문에 발생한 오류입니다.

pk값에도 null을 넣으려고 한다면 해당 오류가 발생할 수 있겠죠.

 

에러 메세지 : ORA-01400: NULL을 ~~~~~ 안에 삽입할 수 없습니다.

 

개발 중에 ORA-01400 메세지를 발견하였다면 insert 쿼리를 로그로 찍어보면 금방 찾을 수 있습니다.

 

 

728x90
반응형
728x90
반응형

+ Recent posts