Dev_Log

[Oracle] TNS-12545: 대상 호스트 또는 개체가 존재하지 않아 연결에 실패했습니다

LeeDaniel 2022. 12. 8. 11:53

어제까지 잘되던 오라클DB가 갑자기 DB연결을 하지 못하면서 DBeaver에서 에러가 발생했다

잘되던게 안됨

 

# 리스터 상태 확인
C:\>lsnrctl status

lsnrctl status명령어로 리스너를 확인해보니

TNS-12545: 대상 호스트 또는 개체가 존재하지 않아 연결에 실패했습니다

에러를 발생했다

오라클 리스너 상태 확인

해결방법을 검색중 컴퓨터이름(Hostname)을 변경후 접속이 안되는 경우가 있는것을 발견했다

 

 

Oracle XE 컴퓨터 이름(Hostname) 변경후 접속 안될 때

Oracle XE가 설치된 컴퓨터의 이름을 변경한 후 데이터베이스에 접속이 안될 때 처리 방법입니다. 다음 폴더에서 두 개의 파일내에 컴퓨터 이름을 수정합니다. oraclexe\app\oracle\product\11.2.0\server\networ

offbyone.tistory.com

 

위 글을 보고 오라클DB연결을 시도하기전 컴퓨터이름을 변경한것이 생각이 났다

CMD에서 호스트네임을 확인해본다

# 윈도우 컴퓨터이름(hostname) 조회하기
C:\>hostname

현재 OS에 설정된 hostname의 값 확인

윈도우에서 내가 변경한 컴퓨터이름(hostname)값은 "LeeDaniel"이다

하지만 리스너 에러를 확인해보면 리스너가 참조하는 HOST값은 내가 변경하기전 값으로 되어있다

윈도우에서 hostname을 변경했지만 오라클리스너가 참조하는 HOST값은 그대로이다

 

따라서 오라클리스너가 참조하는 HOST값을 윈도우의 host값과 같도록 변경해주어야한다

오라클리스너가 값을 참조하는 파일은 2가지가 있다

listener.oratnsnames.ora

 

나는 오라클21c를 설치했기때문에 경로는 다음과 같다

# 오라클21C 리스너가 참조하는 설정값이 작성된 파일
C:\app\사용자명\product\21c\homes\OraDB21Home1\network\admin

listener.ora의 LISTNER부분의 HOST에 작성된 값을 OS의 hostname값과 같도록 수정한다

오라클리스너가 참조하는 listener.ora의 HOST값 변경해주기

tnsnames.ora의 XE와 LISTENER_XE의 HOST에 작성된 값을 OS의 hostname값과 같도록 수정한다

오라클리스너가 참조하는 tnsnames.ora의 HOST값 변경해주기

listener.ora tnsnames.ora를 변경한뒤 오라클을 재시작해준다

# cmd를 2개띄워야한다
# (1)sqlplus접속용 / (2)윈도우접속용

# 1번째 작업 - sqlplus접속(1)
C:\>sqlplus "/as sysdba"

# 2번째 작업 - 리스너 종료하기(2)
C:\>lsnrctl stop

# 3번째 작업 - 오라클 종료하기(1)
SQL>shutdown immediate

# 4번째 작업 - 오라클 종료확인뒤 다시 시작시키기(1)
SQL>startup

# 5번째 작업 - 리스너 실행하기(2)
C:\>lsnrctl start

# 6번째 작업 - 리스너 상태 확인하기(2)
C:\>lsnrctl status

 

오라클리스너가 참조하는 HOST값은 OS의 hostname과 일치하도록 수정했지만

TNS-12541 리스너가 없습니다

이제는 다른 에러가 발생했다

 

구글링 결과

실행창에서 services.msc를 입력해 윈도우서비스관리 창을 띄워

오라클과 관련된 서비스들을 재시작 해주었다

오라클 관련 서비스 재시작 해주기

재시작한뒤 CMD창에서

# 리스너 서비스 확인
C:\>lsnrctl services

리스너 서비스 확인을 해주면 정상적으로 다시 DB연결이 되었다

오라클 리스너 서비스 확인

 

DB연결 성공

728x90
반응형