programing

TNS-12505: TNS: 청취자가 현재 Connect Descriptor에 지정된SID를 인식하지 않음

goodsources 2023. 2. 25. 20:56
반응형

TNS-12505: TNS: 청취자가 현재 Connect Descriptor에 지정된SID를 인식하지 않음

다음 연결 문자열을 사용하여 NetBeans에서 Oracle 10.2.0에 연결하려고 합니다.

jdbc:oracle:thin:@localhost:1521:XE

가장 이상한 점은 재부팅할 때까지 모든 것이 정상적으로 작동했다는 것입니다..「 TNS-12505 」의를 봐 .내 마지막 엔트리를 보세요.listener.log:

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-APR-2011 13:46:48

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

System parameter file is D:\oraclexe\app\oracle\product\10.2.0\server\network\admin\listener.ora
Log messages written to D:\oraclexe\app\oracle\product\10.2.0\server\network\log\listener.log
Trace information written to D:\oraclexe\app\oracle\product\10.2.0\server\network\trace\listener.trc
Trace level is currently 0

Started with pid=3460
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Brodyaga-PC)(PORT=1521)))
Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
14-APR-2011 13:48:54 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58458)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:49:00 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58481)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:49:02 * (CONNECT_DATA=(SID=XE)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=Brodyaga))) * (ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=58487)) * establish * XE * 12505
TNS-12505: TNS:listener does not currently know of SID given in connect descriptor
14-APR-2011 13:50:23 * (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=Brodyaga))(COMMAND=services)(ARGUMENTS=64)(SERVICE=LISTENER)(VERSION=169869568)) * services * 0

처음 3개의 엔트리는 NetBeans에서 접속을 시도하는 것입니다.네 번째 SQL*Plus를 통한 연결은 정상적으로 작동했습니다.

내용은 다음과 같습니다.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = Brodyaga-PC)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

그리고:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = Brodyaga-PC)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

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

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

> lsnrctl 서비스로부터의 출력

C:\Users\Brodyaga>lsnrctl services

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 14-APR-2011 13:59
:45

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
  Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
The command completed successfully

두 Oracle 서비스가 모두 시작되고 SQL*Plus가 정상적으로 연결됩니다.

이 오류에 대한 해결 방법이 있습니까?

인스턴스를 리스너에 등록하려면 XE의 SID 엔트리를 추가해야 합니다.

Oracle XE 설치 후 모든 것이 정상으로 보이지만 문제 발생 시

C:\>sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup

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

인스턴스는 리스너에 등록되지 않습니다.

청취자를 편집해 주세요.또는 다음과 같습니다.

SID_LIST_LISTENER =
  (SID_LIST =
     (SID_DESC =
       (SID_NAME = XE)
       (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server)
     )
     (SID_DESC =
        (SID_NAME = PLSExtProc)
        (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
        (PROGRAM = extproc)
     )
     (SID_DESC =
       (SID_NAME = CLRExtProc)
       (ORACLE_HOME = D:\oraclexe\app\oracle\product\10.2.0\server)
       (PROGRAM = extproc)
     )
  )

이 문제는 Windows 7에 Oracle XE를 설치할 때 발생했습니다.Windows XP에서는 이 문제가 발생하지 않았습니다.인스턴스는 자동으로 리스너에 등록되기 때문에 일반적으로 이 엔트리는 필요하지 않습니다.Linux(Fedora)에서 Oracle XE를 실행하면 사이드 리스트에 XE를 추가할 필요가 없습니다.

이것은 나에게 효과가 있었다 - 나는 위의 모든 것을 한 후 변경했다:

jdbc.databaseurl=jdbc:oracle:thin:@localhost:1521:xe

대상:

jdbc.databaseurl=jdbc:oracle:thin:@localhost:1521/xe

Oracle 가상 머신에서 IP를 변경한 후 리스너가 다시 작동하지 않았습니다.마지막으로 이 명령어는 문제를 해결했습니다(192.168.10.200은 새로운 IP입니다).

[ sysdba @ sysdba admin ]$ sqlplus / as s

SQL*Plus: Release 11.2.0.1.0 2016년 5월 10일 (화) 12:57:37

Copyright (c) 1982, 2009, Oracle.무단 전재 금지.

연결처: Oracle Database 11g Enterprise Edition 릴리스 11.2.0.1.0 - 64비트 운영 환경에 파티셔닝, OLAP, 데이터 마이닝 및 실제 애플리케이션 테스트 옵션 포함

SQL > change system set local_listener=' (ADDRESS=(PROTOCOL=syslog)(HOST=192.168.10.200)(PORT=1521) 범위=둘 다;

시스템이 변경되었습니다.

시스템 레지스터 변경

시스템이 변경되었습니다.

SQL > 종료

DMZ에 있는 오류를 보고하는 데이터베이스 서버와 내부 네트워크 간의 액세스를 제한하기 위해 방화벽을 변경한 후 이 문제가 발생했습니다. 변경 전까지 통신은 정상적으로 작동했으며 시스템 및 데이터베이스 재시작은 도움이 되지 않았습니다.이 경우 Oracle XE11gR2는 모두 Windows에 설치되어 있습니다.

하루 종일 고생한 끝에 http://edstevensdba.wordpress.com/2011/07/30/exploring-the-local_listener-parameter/를 찾아 문제를 해결했습니다.

alter system set local_listener='(ADDRESS=(PROTOCOL=tcp)(HOST=[my server's ip])(PORT=1521))' scope=both;
alter system register;

이는 단순히 ik_zelf가 제안한 '하이브리드 시스템 레지스터' 때문에 작동했을 수 있습니다.listener.ora와 tnsnames.ora의 관련 장소에 IP가 이미 설정되어 있습니다.

스텝 1 – DB 리스너 상태 확인

   lsnrctl status

필요한 리스너(이 경우는 「orcl」)가 표시되지 않는 것에 주의해 주세요.

순서 2 – sqlplus 경유 로그인

   sqlplus sys/oracle as sysdba

Sqlplus에서 다음 오류 메시지가 표시되었습니다.

   Writing audit records to Windows Event Log failed

스텝 3 – Windows 이벤트뷰어로 이동합니다(eventvwr.exe).

"Windows 로그"에서 응용 프로그램을 마우스 오른쪽 버튼으로 클릭하고 "로그 지우기"를 선택합니다.시스템에 대해서도 같은 작업을 수행합니다.

응용 프로그램을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하는 것도 좋습니다.그런 다음 "로그 크기"에서 "최대 로그 크기에 도달했을 때"에서 "필요에 따라 이벤트 덮어쓰기" 옵션을 선택합니다.이로 인해 로그가 최대치를 초과하여 DB가 시작되지 않도록 해야 합니다.

Windows Vista 이후에서는, 다음의 커맨드를 실행하고, 애플리케이션 로그를 클리어 할 수 있습니다.

   wevtutil cl Application

스텝 4 – sqlplus 경유 로그인

   sqlplus sys/oracle as sysdba

이제 오류 메시지 없이 로그인할 수 있습니다.

스텝 5 - DB 리스너 상태 확인

   lsnrctl status

이것으로 리스너가 동작하고 있는 것을 확인할 수 있습니다.

스텝 6 – UCM 시작

이것으로 UCM이 기동합니다.

이 질문에 대한 자세한 답변은 제 블로그 투고 전문을 참조하십시오.

Windows 8에서 oracle xpress 에디션 11.2를 실행하고 있는데 sqldeveloper를 사용하여 DB에 연결하려고 할 때 동일한 오류가 발생했습니다.

위의 Brandt 답변에 따라 listener.ora를 편집하고 심지어 컴퓨터를 재부팅했습니다.이 문제는 해결되지 않았습니다.

다음 작업을 수행했습니다.컨트롤 패널 -> 관리도구 -> 서비스에는 "Oracle Service X"라는 서비스가 있습니다.E'는 실행되지 않습니다.

기동하고 나서 다시 접속을 시도했습니다만, 문제는 해결되었습니다.

을 한 바와 같이:한다./가가 sid 、 가가가가 。

저도 이런 일이 있었어요.

Windows 7에서도 같은 문제가 발생했습니다.원인은 Cisco AnyConnect Secure Mobility Client를 사용하여 VPN에 접속되어 있었기 때문입니다.

체크 - LSNRCTL > stat I get results 。

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1522)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production 
Start Date                17-APR-2016 10:12:38 
Uptime                    0 days 10 hr. 6 min. 16 sec 
Trace Level               off 
Security                  ON: Local OS Authentication 
SNMP                      OFF
Listener Parameter File 
                        C:\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File        c:\app\admin\diag\tnslsnr\admin-PC\listener\alert\log.xml Listening
Endpoints Summary...  
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1522ipc)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1522)))
Services Summary... Service "CLRExtProc" has 1 instance(s).   Instance
 "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).   Instance "orcl", status READY, has 1 handler(s) for this service... 
Service "orclXDB" has 1 instance(s). 
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully.

위의 세부사항에서 - 내 포트 번호는 - 1522이고 "orcl" 인스턴스를 사용하여 연결을 만들 수 있습니다. 따라서 포트를 1522로, 인스턴스를 "orcl"로 사용했습니다.- 현재 URL은 - 입니다.

DriverManager.getConnection("jdbc:oracle:thin:@localhost:1522:orcl", "SYS as SYSDBA","password");

동작했습니다.그래서 명령 프롬프트에서 LSNRCTL > stat을 체크하고 그에 따라 접속 URL을 설정해 주세요.
누군가에게 도움이 되길 바랍니다.

ORACLE_SID XE를 가진 데이터베이스가 listener.ora에 정의되어 있지 않습니다.이것은 문제가 되지 않습니다.데이터베이스가 정상적으로 열리면 디폴트리스너에 등록되기 때문에 포트 1521의 리스너로 괜찮습니다.

  1. 데이터베이스가 열려 있습니까?
  2. 청취자/대화자의 시작 순서는 무엇입니까?
  3. 에러가 계속 발생합니까?

데이터베이스가 리스너보다 먼저 시작되면 등록하는 리스너가 데이터베이스에 없습니다.몇 분 간격으로 표시되므로 잠시 후 등록이 이루어졌기 때문에 오류가 해소될 것으로 예상됩니다.발행할 수 있습니다.alter system register;속도를 높입니다.데이터베이스가 제한 모드일 경우 서비스를 사용하는 연결은 실패합니다.ORACLE_SID를 사용하고 있으므로 문제가 되지 않습니다.

또한 사용 중인 이름을 확인합니다.localhost는 Brodyaga-PC와 같은 주소로 해결됩니까?jdbc 문자열에서는 localhost를 사용하고 청취자는 om Brodyaga-PC를 듣습니다.localhost 127.0.0.1 인가요?

OracleServiceHari('HARI'는 SID)를 시작했는데, 이는 저를 위해 작동했습니다.

같은 문제에 직면한 다른 사용자는 서비스 상태를 확인할 수 있습니다.

저 같은 경우에는 윈도우 10에서 다음 단계를 거쳤습니다.

  1. 고토 제어판
  2. 관리를 클릭하다
  3. 클릭 서비스
  4. 발견하다OracelServeceXE,OracleXEClrAgeng,OracleXETNSListener
  5. 우클릭 후 누르기Start/Restart
  6. 프로세스 완료 후동작하는지 여부를 확인합니다.
  7. 다 했어요.
  8. 행운을 빌어요.

확인할 수 있는 다른 방법으로는 connect URL에 잘못된 포트 번호가 지정되어 있는 경우에도 동일한 문제가 발생하였습니다.새로운 oracle11g 인스턴스를 작성했는데 동일한 포트 1521을 점유하고 있는 이전 인스턴스를 삭제하는 것을 잊어버렸기 때문에 새로운 인스턴스는 포트 1522에서 자동으로 시작됩니다.포트 번호 편집으로 문제가 해결되었습니다.

Oracle XE 11.2 설치 직후에도 같은 문제가 발생했습니다.DBA 친구를 읽고 상담한 후 다음 명령을 실행했습니다.

C:\>tnsping xe

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 11-ENE-2017 14:27:44

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myLaptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))

OK(30밀리초)

C:\>

보시다시피 해결에 시간이 오래 걸리기 때문에 다음과 같이 hosts 파일에 엔트리를 추가했습니다.

127.0.0.1       localhost

완료되면 동일한 명령을 다시 실행합니다.

C:\>tnsping xe

TNS Ping Utility for 64-bit Windows: Version 11.2.0.2.0 - Production on 11-ENE-2
017 14:40:29

Copyright (c) 1997, 2014, Oracle.  All rights reserved.

Used parameter files:
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = myLaptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SER
VICE_NAME = XE)))
OK (30 msec)

C:\>

시간 응답이 급격히 감소하여 SQLDeveloper와의 연결을 성공적으로 시도했습니다.

접속이 완료되었습니다.

Windows 검색 옵션에서 관리 도구로 이동> 컴포넌트 서비스> Oracle Service XE(이 서비스 시작)

작업 관리자로 이동하여 아래 서비스가 실행 중인지 확인합니다(서비스를 시작하지 않은 경우).

OracleXETNSListener

OracleXEClrAgent

OracleServiceXE

이건 내게 마법처럼 통했어

데이터베이스에 로그인하여 청취자를 등록했습니다.

alter system set local_listener='(...)';
alter system register;

언급URL : https://stackoverflow.com/questions/5661610/tns-12505-tnslistener-does-not-currently-know-of-sid-given-in-connect-descript

반응형