Проблемы с 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 ответов
Вероятно, это проблема конфигурации, поэтому нам трудно решить ее удаленно. Две вещи, которые вам нужно проверить:
- Записи в вашем
LISTENER.ORA
файл соответствует вашемуTNSNAMES.ORA
файл - Информация в вашем
hosts
файл правильный.
Это локальная или удаленная база данных, к которой вы пытаетесь подключиться?
редактировать
Файл hosts (в среде Windows) находится где-то как
C:\WINDOWS\system32\drivers\etc
Очевидно, это зависит от того, как настроена ваша среда (другая буква диска или что-то еще).
редактировать
Вам нужно GLOBAL_DBNAME
в файле слушателя, чтобы соответствовать SERVICE_NAME
в файле tnsnsames т.е. ORCL
К сожалению, эта ошибка может произойти в разных случаях.
- Служба базы данных Oracle (OracleServiceXE или любая другая версия, которую вы используете) фактически не работает.
- Пользователь пытался запустить службу TNSListener под учетной записью без прав администратора, не позволяя ему зарегистрировать связанную службу Windows.
- Произошел конфликт из-за более чем одного ORACLE_HOME на машине.
- Нет ничего плохого в настройках службы или конфигурации, но служба 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-адрес.