어제까지 잘되던 오라클DB가 갑자기 DB연결을 하지 못하면서 DBeaver에서 에러가 발생했다
# 리스터 상태 확인
C:\>lsnrctl status
lsnrctl status명령어로 리스너를 확인해보니
TNS-12545: 대상 호스트 또는 개체가 존재하지 않아 연결에 실패했습니다
에러를 발생했다
해결방법을 검색중 컴퓨터이름(Hostname)을 변경후 접속이 안되는 경우가 있는것을 발견했다
위 글을 보고 오라클DB연결을 시도하기전 컴퓨터이름을 변경한것이 생각이 났다
CMD에서 호스트네임을 확인해본다
# 윈도우 컴퓨터이름(hostname) 조회하기
C:\>hostname
윈도우에서 내가 변경한 컴퓨터이름(hostname)값은 "LeeDaniel"이다
하지만 리스너 에러를 확인해보면 리스너가 참조하는 HOST값은 내가 변경하기전 값으로 되어있다
따라서 오라클리스너가 참조하는 HOST값을 윈도우의 host값과 같도록 변경해주어야한다
오라클리스너가 값을 참조하는 파일은 2가지가 있다
listener.ora와 tnsnames.ora
나는 오라클21c를 설치했기때문에 경로는 다음과 같다
# 오라클21C 리스너가 참조하는 설정값이 작성된 파일
C:\app\사용자명\product\21c\homes\OraDB21Home1\network\admin
listener.ora의 LISTNER부분의 HOST에 작성된 값을 OS의 hostname값과 같도록 수정한다
tnsnames.ora의 XE와 LISTENER_XE의 HOST에 작성된 값을 OS의 hostname값과 같도록 수정한다
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연결 성공