Проблемы с Oracle TNS?

У меня ошибка? Мой разработчик pl/Sql говорит, что моя база данных Oracle не может найти дескриптор службы, но когда я проверяю слушателя, я получаю эту ошибку.

LSNRCTL> start
Starting tnslsnr: please wait...

Service OracleOraDb10g_home1TNSListener already running.
TNS-12560: TNS:protocol adapter error
 TNS-00530: Protocol adapter error



LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   32-bit Windows Error: 61: Unknown error

содержание моего listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = Oracle10g)
      (ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  )

и содержание tnsnames.ora это

# tnsnames.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

VMOBILE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

VMOBILEMASTER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = ORCL)
    )
  )

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

Пожалуйста, у меня есть крайний срок для этого вечера. Пожалуйста помоги.

5 ответов

Вероятно, это проблема конфигурации, поэтому нам трудно решить ее удаленно. Две вещи, которые вам нужно проверить:

  1. Записи в вашем LISTENER.ORA файл соответствует вашему TNSNAMES.ORA файл
  2. Информация в вашем hosts файл правильный.

Это локальная или удаленная база данных, к которой вы пытаетесь подключиться?

редактировать

Файл hosts (в среде Windows) находится где-то как

C:\WINDOWS\system32\drivers\etc

Очевидно, это зависит от того, как настроена ваша среда (другая буква диска или что-то еще).

редактировать

Вам нужно GLOBAL_DBNAME в файле слушателя, чтобы соответствовать SERVICE_NAME в файле tnsnsames т.е. ORCL

К сожалению, эта ошибка может произойти в разных случаях.

  1. Служба базы данных Oracle (OracleServiceXE или любая другая версия, которую вы используете) фактически не работает.
  2. Пользователь пытался запустить службу TNSListener под учетной записью без прав администратора, не позволяя ему зарегистрировать связанную службу Windows.
  3. Произошел конфликт из-за более чем одного ORACLE_HOME на машине.
  4. Нет ничего плохого в настройках службы или конфигурации, но служба TNSListener не запустится успешно, пока сервер Windows не будет перезапущен.

Я решил это сообщение об ошибке сегодня, запустив LSNRCTL start из cmd.exe, запущенного "от имени администратора".

У меня есть сервер 'localhost' в listener.ora и tnsnames.ora. Также у меня есть SQLNET.AUTHENTICATION_SERVICES = (NONE) в sql.ini

Прежде чем я попытаюсь использовать LSNRCTL.EXE, у меня нет службы прослушивания в списке служб Windows. Команда запуска LSNRCTL из cmd администратора сделает это для меня.

Ошибка, вероятно, в listener.ora файл. Попробуйте заменить localhost в строке чтения (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) с именем ИЛИ номер ip сервера, на котором работает прослушиватель.

Я заменил бы localhost на то, что ipconfig говорит вам, что вы используете IP-адрес.

Другие вопросы по тегам