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

The Connection descriptor used by the client was:
localhost:1521:orcl

ORA-12505 오류는 DriverManager Object를 이용하여 오라클과 연결할 때

SID를 못 찾거나 인식되지 않을때 발생한다.

주요 원인

1. 컴퓨터 이름을 바꿨을때....

2. 유동IP 일경우

3. TNSListener 서비스가 정상 시작 안될 경우

확인방법:

1. 실행>cmd> lsnrctl services

실행 후 나온 리스트 중 DEDICATED이고 상태가 READY인 SID를 사용하면 됨


여기 화면에 총 4개의 SID가 있는 것이 보이며,

상태가 Ready 상태인 것만 정상적으로 작동되는 것이다.

화면에서는 가장 위에 있는 SID는 사용이 안되지만 나머지 SID 3개는 상태가 Ready로 되어 있기 때문에 사용 가능하다.

에러나는 SID를 확인 해보자

아마 lsnrctl services 명령 실행 후 자신이 설정한 SID가 보이지 않거나 Ready 상태가 아닐 것이다.

환경 셋팅 파일로 가도록 하자

저의 환경은 10g로 되어 있기 때문에 10g에 맞추도록 하겠습니다.

C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN

10g를 기본 경로로 설치하면 이 경로로 들어가시면 됩니다.

다른 버젼이신분은 경로는 다르지만 DB 안에 Network 안에 admin 폴더가 있습니다.

아님 검색을 하세요

listener.ora

tnsnames.ora

이 2개의 파일이 문제가 있습니다.

파일을 열어보면

listener.ora ============================================

# listener.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1) <<< 오라클 설치 경로
(PROGRAM = extproc)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = SEOL)(PORT = 1521)) <<<<<< IP , 호스트, 포트
)
)

===============================================================

listener.ora에서 마지막 부분에 보시면

HOST 와 PORT 등 여러 셋팅 부분이 있습니다.

컴퓨터 이름이나 오라클 PORT 변경하신 분들은 예전 셋팅으로 되어 있는 경우가 있습니다. 바꿔주세요

tnsnames.ora ====================================================

# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = SEOL)(PORT = 1521)) <<<<<<<<<< IP, 호스트, 포트
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl) <<<<<<<<<<<<<<<<<<<<< SID
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

===============================================================

tnsnames.ora 파일은 같은 폴더에 있다

여기서도 IP, 호스트, 포트 등을 확인 해서 변경해주면 된다..

그리고 재부팅 함 해주면 접속이 될 것입니다.


listener.ora 설정 파일이 잘못됐을 경우도 있다고 한다.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = 오라클 설치경로)

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = 추가할SID)

(ORACLE_HOME = 오라클 설치경로)

(SID_NAME = 추가할SID)

)

)

Posted by airlueos
,

1. listener.ora 경로
    %ORACLE_HOME%network/admin/listener.ora

2.  listener.ora 상세 내용

SID_LIST_LISTENER = 
(SID_LIST = 
(SID_DESC = 
(SID_NAME = PLSExtProc) 
(ORACLE_HOME = %ORACLE_HOME%) 
(PROGRAM = extproc) 

    (SID_DESC =
      (GLOBAL_DBNAME = 추가할 SID) <-- 중요하다... 외부에서 접속하려면 필요(추가)
      (ORACLE_HOME = 오라클 설치 경로)
      (SID_NAME = 추가할 SID)   <-- 중요하다... 외부에서 접속하려면 필요(추가)

)


LISTENER = 
(DESCRIPTION_LIST = 
(DESCRIPTION = 
(ADDRESS_LIST = 
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC)) 

(ADDRESS_LIST = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 해당ip)(PORT = 1521)) 

# <== 127.0.0.1는 외부 접속 안됨



)


참조: http://yayongi.tistory.com/198

Posted by airlueos
,

오라클에서 접속가능한 SID 확인 방법

1. 실행 > cmd > lsnrctl services

실행 후 나온 리스트 중 DEDICATED이고 싱태가 READY인 SID 사용 가능


참조: http://blog.naver.com/kimgas2000/90132273820

Posted by airlueos
,

sqlgate 서비스 중 OracleOraDb11g_home1TNSListener 서비스 실행 안됨

cause by 해당 서비스의 실행파일경로 설정이 없어짐


1. 실행

시작 - 실행에서 'regedit'  실행

2. 수정

레지스트리에서

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\(서비스명) 을 차례로 선택 후

ImagePath를 설정(key=ImagePath , value=%ORACLE_HOME%\bin\TNSLSNR)

Posted by airlueos
,