Используя дб оракула через туннель ssh. Ошибка “РТЫ 12541: слушатель TNS:no”

Привет у меня есть проблема при доступе к 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 файле), чтобы вынудить некоторый определенный порт использоваться?

8
задан APC 13 January 2010 в 21:15
поделиться