Error

[오라클 Error] ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

꼬요버디 2024. 6. 27. 10:33
728x90

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

대충 리스너가 연결 정보에 기입한 SID를 모른다는 뜻

 

내 로컬 데이터베이스는 인스턴스1과 인스턴스2 총 2개로 구성되어 있다. 불과 몇 시간 전까지 잘 돌아가던 디비가 접속이 안 되는 문제가 발생했다. 대체 왜?


 

원인

며칠 전에 외부에서 내 로컬 DB 접속하려고 오라클 접속 정의 파일인 tnsnames.ora 파일과 listener.ora 내부의 아이피를 수정하고, 방화벽에 oracle 포트 허용 정책을 추가했었다. 테스트 후 원복하는 걸 까먹고 그대로 사용을 잘 했는데 오늘 아침 오라클 연결이 안 되고 SID가 없다는 에러 메시지가 떴다. 그래서 SID 정의해 놓은  listener.ora 파일을 열어보니 내 첫 번째 인스턴스 SID 하나가 빠져있었다.

 

 

 

해결

listener.ora 파일을 관리자모드로 열고 잃어버린 SID를 다시 추가해준다. 아래 예시를 보면 인스턴스1, 인스턴스2라고 되어있는 부분을 추가하면 됨. 보통 인스턴스를 1개만 사용할테니까 이런 문제는 자주 발생할 것 같지 않다.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\ggoyo\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\ggoyo\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
	(SID_DESC =
      (GLOBAL_DBNAME = 인스턴스1)
      (SID_NAME = 인스턴스1)
    ) 
    (SID_DESC =
      (GLOBAL_DBNAME = 인스턴스2)
      (SID_NAME = 인스턴스2)
    ) 
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = C:\app\ggoyo