Привет у меня есть проблема при доступе к Oracle DB от нашего центра обработки данных до туннеля.
У нас есть довольно стандартный центр обработки данных с одной машиной, являющейся доступным с внешней стороны (я поместил, это - IP в/etc/hosts файле как dc), и DB Oracle внутри. IP-адрес нашей базы данных оракула по внутренней сети 192.168.1.7
Для создания туннеля, я использую команду:
ssh -L 1521:192.168.1.7:1521 root@dc
и конечно это работает (иногда, я также добавляю некоторую отладку-vv, чтобы видеть, проходит ли что-нибудь).
Теперь трудная часть - соединяющийся с Oracle. Я установил instantclient 11.2. и мой tnsnames.ora похож на это:
testdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dbname)
)
)
И когда я пытаюсь соединить использование команды:
./sqlplus username/pass@testdb
Это начинает соединяться через туннель (я вижу его в отладке ssh), но затем это приводит сообщение к сбою:
./sqlplus username/pass@testdb
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:
Когда я пытаюсь выполнить эту ту же команду на том, когда я нахожусь на интранет, она работает (очевидно, единственная разница - то, которые в tnsnames.ora РАЗМЕЩАЮТ, мы имеем 192.168.1.7 а не localhost).
Я также пытался использовать простую командную строку:
./sqlplus username/pass@//localhost:1521/testdb
или альтернативно
./sqlplus username/pass@//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=(PROGRAM=sqlplus@velvet)(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 является моим локальным именем пользователя. Почему это отправляется другой стороне?
ОБНОВЛЕНИЕ:
После исследования немного больше из центра обработки данных и это похоже: - первое соединение идет в порт 1521 - но затем sqlplus перенаправляется к номеру порта> 3300, который отличается каждый раз и постепенное увеличение 3 (по крайней мере немного попыток, которые я имел) - когда мы попытаемся соединить канавку, туннель sqlplus попытается соединиться с localhost, и это, очевидно, перестанет работать
Таким образом, ошибка "Никакой Слушатель" прибывает, вероятно, из того, что мы не перенаправляем те порты. Есть ли какой-либо путь (вероятно, некоторая опция в tnsnames.ora файле), чтобы вынудить некоторый определенный порт использоваться?