ORA-12505 오류 해결

Oracle DB의 SID와 ServiceName에 대해서


ORA-12505 오류 발생과 해결

  • 오류 내용: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
  • 업무 중 타 시스템의 Oracle DB와 연동하는 작업을 진행 하였습니다. 이전까지 진행했던 Oracle DB 연결 작업의 절차를 따라 진행 하였음에도 ORA-12505 오류가 발생하며 연결에 차질이 생겼습니다. 이 문제를 해결하며 알게된 SID와 Service Name에 대해서 정리해 보았습니다.
  • 연결에 차질이 생긴 원인은 SID를 이용한 연결과 Service Name을 이용한 연결의 경우 Connection String이 다르기 구성되기 때문이었습니다.
  • 즉, 이전까지 진행했던 Oracle DB 연동은 SID를 이용하였으나 이번에는 Service Name을 이용하여 연동 작업을 진행했습니다. 그러나, Connection String을 SID 연동하던 사례를 바탕으로 작성하여 Service Name에 맞게 구성하지 못했기 때문에 ORA-12505오류가 발생하였습니다.

    물론 ORA-12505 오류가 발생하는 케이스는 훨씬 다양합니다. 그러나, 저와 같은 상황에 놓인 분들에게 이 글이 도움이 되었으면 좋겠습니다.

SID와 Service Name

  • SID: System Identifier의 약자로 하나의 특정 DB 인스턴스를 식별하는 ID입니다. 즉, 각 데이터베이스 인스턴스에 부여되는 ID입니다.
  • Service Name: 여러개의 인스턴스를 모아 하나의 서비스를 구성한 것을 식별하는 이름입니다.

Connection String

  • SID를 통한 연결
username/password@host:port:SID
  • Service Name을 통한 연결
username/password@host:port/SERVICE_NAME
  • 즉, SID는 ":"를 통해서 Service Name은 "/"을 통해서 연결합니다.
  • 문자 하나 차이로 간단하지만 막상 이러한 상황을 만나면 해결하는데 꽤 오랜 시간이 걸립니다. Connection String에 오류가 있다고 깨닫는데는 시간이 조금 걸리기 때문입니다.