ora-12514 tns listener does not currently know...

doyeon kim·2024년 6월 21일

DB

목록 보기
7/8

ora-12514

오랜만에 DB에 접속하려니

이런 에러가 나왔다. 리스너가 요청되는 서비스를 모른다는 내용 같아서 찾아보니 Oracle 데이터베이스의 리스너가 요청된 서비스 이름을 인식하지 못할 때 발생한다고 한다.

해결방법

  1. 우선 명령 프롬프트에서 lsnrctl status 명령어로 리스너의 상태를 확인한다. 본인의 경우 문제 해결 전엔

이렇게 나왔는데 CLRExtProc 서비스만 인식이 되고 orcl 이나 xe는 인식이 안되는 상태였다.

  1. 리스너 매개변수 파일 위치 (C:\OracleDB\homes\OraDB21Home3\network\admin)
    에 가면
    listener.oratnsnames.ora 파일이 있을 것이다 해당 파일을 열면


이런식으로 작성되어 있는데 tnsnames 의 Host와 SERVICE NAME 이 맞게 선언되어 있는지 확인하고 리스너 파일에서 동일한 값을 사용하는지 확인한다.

편의를 위한 코드내역

tnsnames

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트 IP주소)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

LISTENER_XE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트 IP주소)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

listener

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\OracleDB\dbhomeXE)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\OracleDB\dbhomeXE\bin\oraclr.dll")
    )
    (SID_DESC =
      (SID_NAME = XE)
      (ORACLE_HOME = C:\OracleDB\dbhomeXE)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트 IP주소)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

DEFAULT_SERVICE_LISTENER = XE

※경로같은 부분은 일부 수정이 필요할 수 있음※

이러고 다시 cmd 창에서 리스너의 상태를 확인한다. 본인이 설정한 서비스 이름에 대한 처리기가 나오면 성공.


0개의 댓글