안녕하십니까. 데이터 센터에서 터널을 통해 Oracle DB에 액세스하는 데 문제가 있습니다.ssh 터널을 통한 oracle db 사용. 오류 "ORA-12541 : TNS : 리스너 없음"
(내가/etc/hosts 파일의 IP를 dc로 넣었습니다)와 Oracle DB를 내부에서 액세스 할 수있는 하나의 컴퓨터가있는 꽤 표준적인 데이터 센터가 있습니다.
ssh -L 1521:192.168.1.7:1521 [email protected]
물론 작동 (때때로 나는 또한 일부 디버그 -vv를 추가 : 내부 네트워크에 우리의 오라클 데이터베이스의 IP 주소는 내가 명령을 사용하고 터널을 만들려면 192.168.1.7
입니다 무엇이 통과하고 있는지 확인하기 위해).
이제 어려운 부분 인 Oracle에 연결하십시오. instantclient 11.2를 설치했습니다. 내 tnsnames.ora를은 다음과 같습니다
./sqlplus username/[email protected]
그것은 (필자는 ssh를 디버그에서 참조) 그러나 터널을 통해 연결 시작 :
testdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dbname)
)
)
을 그리고 난 다음 명령을 사용하여 연결하려고 할 때 그 tnsnames.ora 파일의 HOST에서 우리는 하
./sqlplus username/[email protected]
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 13 20:46:07 2010
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-12541: TNS:no listener
Enter user-name:
나는 그것이 작동 인트라넷 (에있을 때의이 같은 명령을 실행하기 위해 노력하고있어 분명히 유일한 차이점은 다음과 같습니다 그것은 이야기를 실패 ve 192.168.1.7이고 localhost는 아님).
나는 또한 간단한 명령 줄을 사용하려고 :./sqlplus username/[email protected]//localhost:1521/testdb
또는 대안
./sqlplus username/[email protected]//localhost:1521/testdb
을하지만 아무것도 내가 어떤 도움이나 제안을 부탁드립니다 :)
도움이되지 않습니다. 가능한 ssh 플래그가 누락 되었습니까?
아마 로그 파일 :
***********************************************************************
Fatal NI connect error 12541, connecting to:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=DBNAME)(CID=([email protected])(HOST=velvet)(USER=johndoe))))
VERSION INFORMATION:
TNS for Linux: Version 11.2.0.1.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 11.2.0.1.0 - Production
Time: 13-JAN-2010 20:48:42
Tracing not turned on.
Tns error struct:
ns main err code: 12541
TNS-12541: Message 12541 not found; No message file for product=network, facility=TNS
ns secondary err code: 12560
nt main err code: 511
TNS-00511: Message 511 not found; No message file for product=network, facility=TNS
nt secondary err code: 111
nt OS err code: 0
벨벳 내 로컬 호스트 이름과 JohnDoe에 내 로컬 사용자 이름입니다. 다른쪽에 왜 전송됩니까?
UPDATE : 더 데이터 센터 내부에서 약간의 조사 후
그것은 다음과 같습니다 - 첫 번째 연결 포트 1521 에 것입니다 -하지만 SQLPLUS 포트 번호> 3300로 리디렉션됩니다 때마다 다른 3 (적어도 몇 번 시도해보십시오) - 우리가 여물통을 연결하려고 할 때 sqlplus가 localhost에 연결하려고 시도 할 때 분명히 실패합니다.
그래서 "No Listener "우리가 tho를 리디렉션하지 않는다는 사실에서 아마 온다. 포트. 어떤 특정 포트를 사용하도록 강제하는 방법 (아마도 tnsnames.ora 파일의 일부 옵션일까요?)이 있습니까?
에서 볼 수 있습니까? Windows 인 경우 Google USE_SHARED_SOCKET –
누르세요. 솔루션을 찾았습니까? –
명확히하기 : Oracle RAC에 연결하고 있으며 다른 쪽에서 청취자를 재구성 할 수있는 위치에 있지 않습니다 (예 : 공유 소켓을 사용하도록 설정). sqlplus는 몇 번의 연결 시도가있을 때마다 한 번씩 연결합니다. 응용 프로그램이 연결을 관리하지 않습니다. –