Я установил Oracle 11g Express Edition Release 2 в моей 64-битной ОС Windows 7 и попытался выполнить программу JDBC, затем я получил следующую ошибку:
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.jlcindia.jdbc.JDBCUtil.geOracleConnection(JDBCUtil.java:28)
at Lab3O.main(Lab3O.java:15)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
... 8 more
Ответы:
Я исправил эту проблему, исправив строку jdbc.
Например, правильная строка jdbc должна быть ...
Но строка jdbs, которую я использовал ...
(Примечание: между
1521
иXE
должно быть/
)Эта плохая строка jdbc выдает мне ошибку ORA-12505.
источник
Есть несколько причин, которые могут вызвать эту проблему, но прежде чем начать работу с JDBC, вы должны быть уверены, что можете подключиться к базе данных с помощью SQL * Plus. Если вы не знакомы с SQL * Plus, это инструмент командной строки для подключения к базам данных Oracle, который долгое время был стандартной частью Oracle и включен в Oracle XE.
При подключении к базе данных Oracle с использованием JDBC вы не подключаетесь к базе данных напрямую. Вместо этого вы подключаетесь к слушателю TNS, который затем соединяет вас с базой данных. Ошибка
ORA-12505
означает, что слушатель подключен, и вы можете подключиться к нему, но он не может подключить вас к базе данных, потому что не знает, что эта база данных работает. Для этого есть две причины:ORA-12505 означает, что слушатель знает об этой базе данных, но слушатель не получил уведомление от базы данных о том, что база данных работает. (Если вы пытаетесь подключиться к неверной базе данных, используя неверный SID, вы получите сообщение об ошибке ORA-12154 «TNS: не удалось разрешить указанный идентификатор подключения».)
Какие службы Oracle работают в оснастке «Службы»? (Откройте его из Панели управления> Администрирование> Службы или просто Пуск> Выполнить>
services.msc
.) Вам необходимо, чтобы службы OracleServiceXE и OracleXETNSListener были запущены.Если обе службы были запущены, можете ли вы подключиться к базе данных в SQL * Plus, используя любое из следующего в командной строке? (Я предполагаю, что вы запускаете их на компьютере, на котором установлен Oracle XE.)
(Замените
system-password
на пароль, который вы установили для пользователей SYS и SYSTEM во время установки Oracle XE.)Первые из этих трех подключаются через прослушиватель TNS, но вторые два подключаются напрямую к базе данных, не проходя через прослушиватель, и работают только в том случае, если вы находитесь на той же машине, что и база данных. Если первый сбой, но два других успешны, то соединения JDBC также потерпят неудачу. Если это так, подключитесь к базе данных, используя любой из двух других, и запустите
ALTER SYSTEM REGISTER
. Затем выйдите из SQL * Plus и снова попробуйте первую форму.Если третий отказывает, но второй работает, добавьте свою учетную запись в группу ora_dba. Сделайте это в Панели управления> Управление компьютером> Локальные пользователи и группы.
После того, как вы можете получить соединения в форме
чтобы работать, вы должны иметь возможность подключиться к Oracle XE через JDBC. (Между прочим, вы не показали нам код JDBC, который вы используете для подключения к базе данных, но я подозреваю, что он, скорее всего, правильный; были бы другие ошибки, если бы части строки подключения были неправильными.)
источник
SP2-0734: unknown command beginning "system/ora..." - rest of line ignored.
на всех 3system/ora...
(или SQL * Plus прочитал эту строку из файла, который вы сказали ему прочитать). Командные строки, которые я дал выше, предназначены для использования из командной строки / оболочки / окна терминала. Если вы уже используете SQL * Plus, заменитеsqlplus
наconnect
.Я тоже получил ту же ошибку, но при попытке все три из них не удалось. Если вышеперечисленные три не удаются. Попробуйте статус LSNRCTL, если служба отсутствует (в моем случае XE), попробуйте это
Теперь вы можете увидеть сервис
Даже если не видите, попробуйте этот
Это, вероятно, должно работать ...
источник
local_listener
прослушиватель orcl теперь отображается вlsnrctl
. Бесконечно благодарен!ORA-65040: operation not allowed from within a pluggable database
что это значит? Неalter system set local_listener = ...
работал на меня.Когда вы получаете эту ошибку "ORA-12505, TNS: слушатель в настоящее время не знает SID, указанный в дескрипторе соединения"
Решение: откройте Службы и запустите
OracleServiceXE
, после этого попробуйте подключиться ...источник
Я нашел несколько причин для этого исключения.
1) Имя базы данных XE по умолчанию. Так что URL будет « jdbc: oracle: thin: @localhost: 1521: XE ».
2) Убедитесь, что OracleServiceXE, OracleXETNSListener запущен. Он будет находиться в Панели управления \ Все элементы панели управления \ Администрирование \ Сервисы
источник
Я решил эту проблему, исправив мой код JDBC.
правильная строка JDBC должна быть ...
Но строка JDBC, которую я использовал, была ...
Таким образом, ошибка указания orcl вместо xe показала эту ошибку, поскольку имя SID было неверным.
источник
conection = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:orcl","system","ishantyagi");
сработало.Моя проблема решена, когда я использую следующий код:
источник
Столкнулся с подобной ошибкой, ни одно из вышеперечисленных решений не помогло. Возникла проблема в файле listner.ora. По ошибке я добавил
SID
изSID_LIST
см. Ниже (раздел между звездами *).Исправлена эта ошибка, как показано ниже:
Остановился и база данных
Остановил прослушиватели OracleServiceXE и OracleXETNSListener вручную, так как он не остановился автоматически, перейдя в Панель управления \ Все элементы панели управления \ Администрирование \ Сервисы. Перезапустил базу данных, и она работала как шарм.
источник
Я изначально пришел сюда с той же проблемой. Я установил Oracle 12c в Windows 8 (64-разрядная версия), но с тех пор я разрешил его с помощью «TNSPING xe» в командной строке ... Если соединение не установлено или имя не найдено, попробуйте имя базы данных, в моем случае это был 'orcl' ... 'TNSPING orcl' снова, и если он успешно пропингует, вам нужно изменить SID на 'orcl' в этом случае (или любое другое имя базы данных, которое вы использовали) ...
источник
Одна возможность, которую я не видел широко обсуждаемой, заключается в том, что может быть проблема с разрешением имени хоста на самой машине. Если в / etc / hosts нет записи для $ (имя хоста), слушатель Oracle будет сбит с толку и не появится.
Это оказалось моей проблемой, и добавление имени хоста и IP-адреса в / etc / hosts решило проблему.
источник
Oracle: Синтаксис имени службы в тонком стиле
Имена сервисов в тонком стиле поддерживаются только тонким драйвером JDBC. Синтаксис:
@ // host_name: port_number / service_name
http://docs.oracle.com/cd/B28359_01/java.111/b31224/urls.htm#BEIDHCBA
источник
Если у вас есть работающее соединение в Oracle SQL Developer, используйте информацию в меню соединений для создания вашего URL, как описано на следующем рисунке:
В приведенном выше примере URL будет:
jdbc:oracle:thin:@ORADEV.myserver.com:1521/myservice
Обратите внимание, что если вы используете SID, то после имени хоста вместо косой черты ("/") стоит двоеточие (":").
источник
Я тоже столкнулся с той же проблемой. Я установил Oracle Express Edition 10g в ОС Windows XP, используя VMware, и он работал нормально. Поскольку вводить SQL-запросы в утилиту SQL, предоставляемую 10g, было очень неудобно, и поскольку я привык работать с разработчиком SQL, я установил 32-разрядный разработчик SQL в XP и попытался подключиться к моему SID БД "XE". Но соединение не удалось с ошибкой ORA-12505 Приемник TNS в настоящее время не знает SID, указанный в дескрипторе соединения. Я был в море о том, как возникла эта проблема, так как она работала нормально с утилитой SQL, и я также создал несколько отображений Informatica, используя то же самое. Я много раз просматривал эти материалы и применил предложения, предложенные мне после проверки статуса «lsnrctl» на публичных форумах, но безрезультатно. Тем не менее, сегодня утром я снова попытался создать новое соединение, и вуаля, это работало без проблем. Я предполагаю, что после прочтения нескольких постов иногда слушатель слушает, прежде чем подключается БД или что-то в этом роде (простите за грубую ссылку, так как я здесь новичок), но я предлагаю просто перезагрузить компьютер и проверить снова.
источник
У меня была такая же проблема, поэтому, чтобы решить эту проблему, я сначала перенастроил свой слушатель,
netca
после чего я удалил свою старую базу данных, которая была ORCL,dbca
а затем я снова создал новую базу данных, используяdbca
источник
Я столкнулся с той же проблемой и решил перезапустить службу OracleServiceXE. Перейдите на Services.msc, а затем убедитесь, что служба OracleServiceXE включена и работает.
источник
Я исправил эту проблему, изменив « SID » на « SERVICE_NAME » в моем файле TNSNAMES.ora.
Посмотрите, запрашивает ли ваша БД SID или SERVICE_NAME.
ура
источник
Если вы используете Oracle Express Edition, вы должны иметь этот URL
У меня была похожая проблема с плагином конфигурации liquibase в pom.xml. И я изменил свою конфигурацию:
источник
Соединение con = DriverManager.getConnection ("jdbc: oracle: thin: @localhost: 1521: xe", "scott", "tiger");
Ошибка, которую я получил:
java.sql.SQLException: слушатель отклонил соединение со следующей ошибкой: ORA-12505, TNS: слушатель в настоящее время не знает SID, указанный в дескрипторе соединения. Дескриптор соединения, используемый клиентом, был: localhost: 1521: xe
Как я это решил:
Соединение con = DriverManager.getConnection ("jdbc: oracle: thin: localhost: 1521: xe", "scott", "tiger");
(Удалять @)
Не знаю почему, но это работает сейчас ...
источник
Проверьте, выполнив tnsping и имя экземпляра на хост-машине. Это даст вам расшифровку tns, и в большинстве случаев имя хоста будет другим, что не совпадает.
Я также решаю свою проблему
В Unix машине $ tnsping (Enter)
Это дает мне полное описание TNS, где я обнаружил, что имя хоста отличается .. :)
источник
Пожалуйста, проверьте оба
OracleServiceXE
иOracleXETNSListener
наличие статуса начался, когда вы переходите черезstart->run->services.msc
.Для моего случая
OracleXETNSListener
был только запущен, ноOracleServiceXE
не был запущен, когда я началright clicking -> start
и проверил соединение, оно работает для меняисточник
У меня была похожая проблема в SQL Workbench.
URL:
JDBC: оракул: тонкий: @ 111.111.111.111: 1111: хе
не работает
URL:
jdbc: оракул: thin: @ 111.111.111.111: 1111: asdb
работает.
Это поможет мне в моей конкретной ситуации. Я боюсь, что может быть много других причин с разными решениями.
источник
Была похожая проблема. Проблема начала возникать внезапно - у нас URL-адрес соединения с базой данных с балансировкой нагрузки, но в соединениях jdbc я указывал на один БД напрямую.
Изменено, чтобы загрузить сбалансированный URL базы данных, и это работало.
источник
В моем случае не получалось, наконец-то я перезапустил оракула и слушателя TNS, и все заработало. Боролся за 2 дня.
источник
Я получил эту ошибку ORA-12505, TNS: слушатель в настоящее время не знает SID, указанный в дескрипторе соединения, когда я пытался подключиться к Oracle DB с помощью разработчика SQL.
Используемая строка JDBC была jdbc: oracle: thin: @myserver: 1521 / XE , очевидно, правильная и две обязательные службы Oracle: OracleServiceXE, OracleXETNSListener были запущены и работали .
То, как я решил эту проблему (в Windows 10)
источник
Помимо запуска сервисов (OracleServiceXE, OracleXETNSListener) существует вероятность того, что антивирусное программное обеспечение / брандмауэр все еще может их блокировать. Просто убедитесь, что они не заблокированы.
источник
Я просто исправил это путем перезапуска / запуска oracleService в сервисах
источник
Мой оракул перестал работать, и я получил эту ошибку. Я перезапустил свою машину, а также попробовал вышеуказанные решения. В конечном итоге я открыл службы компонентов и перезапустил службы Oracle, и все это заработало. Надеюсь, это кому-нибудь поможет.
источник
Я просто неправильно создавал ссылку на базу данных.
Для меня было просто изменить SID на SERVICE_NAME.
изменения
в
решил мою проблему.
источник