Oracle не удается найти
Я использую оракул 10g и жабу 11.5. Я пытаюсь вызвать api из анонимного блока.
Если я перекомпилирую api после добавления dbms_output.put_line , а затем попытаюсь выполнить анонимный блок, он отобразит ошибку как
Однако, если я завершаю текущий сеанс и открываю новый сеанс, анонимный блок будет выполнен с ошибкой.
Из-за этой проблемы, я вынужден повторно подключать сеанс каждый раз, когда я вношу изменения в API. Может ли кто-нибудь помочь, если эта проблема может быть решена путем создания любых конфигураций на уровне жабы или базы данных.
ОТВЕТЫ
Ответ 1
Я подозреваю, что вы сообщаете только о последней ошибке в стеке:
Если это так, потому что ваш пакет неактивен:
Значения переменных, констант и курсоров, которые пакет объявляет (в своем описании или в своем теле) его пакет состояние. Если пакет PL/SQL объявляет хотя бы одну переменную, константу, или курсором, тогда пакет stateful; в противном случае это безстоящий.
При перекомпиляции состояние теряется:
Если тело экземпляра, пакет с сохранением состояния перекомпилирован (либо явно, с выражением "ALTER PACKAGE Statement", или неявно), следующий вызов подпрограммы в пакете вызывает Oracle Database отказаться от существующего состояния пакета и повысить исключение ОР-04068.
После того, как PL/SQL вызывает исключение, ссылка на пакет вызывает База данных Oracle для повторной инициализации пакета, который повторно инициализирует это.
Вы не можете избежать этого, если ваш пакет имеет состояние. Я думаю, что довольно редко нужно, чтобы пакет был сдержанным, поэтому вы должны пересмотреть все, что вы заявили в пакете, но вне функции или процедуры, чтобы увидеть, действительно ли это необходимо на этом уровне. Так как вы на 10g, это включает в себя константы, а не только переменные и курсоры.
Но последний абзац из цитированной документации означает, что в следующий раз, когда вы ссылаетесь на пакет в том же сеансе, вы не получите ошибку, и она будет работать как обычно (пока вы не перекомпилируете снова).
Ответ 2
похоже, что открытие нового сеанса - это ключ.
Ответ 3
Основываясь на предыдущих ответах. Я решил проблему, удалив глобальную переменную на уровне пакета до процедуры, поскольку в моем случае не было никакого воздействия.
Оригинал script был
Переписал то же самое без глобальной переменной V_ERROR_NAME и перешел на процедуру под уровнем пакета как
Измененный код
Ответ 4
Я перекомпилировал спецификацию пакета, хотя изменение было только в теле пакета. Это решило мою проблему
Попробуйте этот URL, это работает для меня
TL; DR; Удалите и переустановите, используя учетную запись администратора.
Я столкнулся с этой ошибкой после установки Oracle Express 11g 64 bit с использованием стандартной учетной записи. После поиска исправления на разных сайтах я понял, что проблема, скорее всего, была вызвана неправильной настройкой. Разные люди предлагали редактировать разные файлы, что мне было неинтересно. Я нашел одного человека, который утверждал, что проблема связана с настройками реестра. Поскольку для установки я использовал стандартную учетную запись, я подумал, что, возможно, параметр реестра нельзя изменить с помощью стандартной учетной записи. Поэтому я удалил и переустановил, используя учетную запись администратора, и все заработало.
Вы можете напрямую перейти на и получить домашнюю страницу своей базы данных Oracle.
Щелкните правой кнопкой мыши ярлык> выберите свойства> перейдите на вкладку безопасности> выберите прошедшие проверку пользователи> и дайте разрешение делать все
а теперь попробуйте изменить URL-адрес, вы сможете это сделать.
Надеюсь на эту помощь
Просто выполните несколько шагов
В командной строке SQL просто введите
sql> net start OracleServiceXe после запуска сервера Oracle.
Введите SQL> Подключите SYS / System как SYSDBA / SYSOPERA
Затем введите свой пароль, который вы указали во время установки Oracle 11g XE. (Нажмите Ввод).
но вы можете войти в систему в Oracle через это
Я успешно вошел в систему.
В моем случае порт 8080 уже используется моим локальным сервером xampp во время установки программного обеспечения oracle, проверьте неиспользуемый порт, например, для меня появляется всплывающее окно
Я тоже столкнулся с этой проблемой
После некоторой исследовательской работы я обнаружил, что мой т.е. занимал , и, следовательно, соединение с установить не удалось.
Что я сделал для решения этой проблемы:
Служба OracleServiceXE запускается . Служба OracleServiceXE была запущена успешно.
- Вручную ввел адрес в мой браузер, который автоматически перенаправил меня на
Вот и моя проблема решена.
Чтобы запомнить этот новый URL-адрес и убедиться, что в следующий раз, когда я нажимаю , меня перенаправляют на вместо , я сделал следующее:
- Перейдите к и найдите .
- Щелкните правой кнопкой мыши и выберите
- Измените свой URL и нажмите
Надеюсь это поможет.
Если в вашей системе установлено какое-либо другое приложение, использующее порт: 8080, попробуйте другой порт, например, 8081, или удалите его, и во время установки он спросит, на каком порту он будет запускать сервер Oracle DBA.
Я установил Oracle Express Edition, и у меня такая же ошибка. Одна из возможных причин заключается в том, что у вашего пользователя нет разрешения на открытие этого ярлыка. Вот как я решил проблему.
1. Щелкните ярлык правой кнопкой мыши и выберите .
2. Теперь щелкните . Теперь вы увидите ярлык .
3. Теперь щелкните правой кнопкой мыши и выберите . Затем выберите своего пользователя и дайте ему разрешение на вкладке .
Решением этой проблемы является НЕ ввод вручную URL-адреса вашего браузера, который работает, но вы должны делать это каждый раз.
Просто убедитесь, что службы Oracle включены
У меня такая же ошибка, и когда я ищу здесь, в Stack Overflow, я объединил то, что нашел, и это работает для меня. Просто следуйте этому:
В этой теме рассматривается ряд вопросов, которые могут возникнуть при настройке и использовании издателя Oracle.
Ошибка, касающаяся клиентского и сетевого программного обеспечения Oracle
«Не удалось подключиться к серверу с помощью [поставщика Microsoft OLE DB для Oracle]. Клиентские и сетевые компоненты Oracle не найдены. Эти компоненты поставляются корпорацией Oracle и являются частью установочного пакета клиентского программного обеспечения Oracle 7.3.3 или более поздней версии. Поставщик не может функционировать, пока эти компоненты не будут установлены».
Если на распространителе устанавливается подходящее клиентское программное обеспечение Oracle, то убедитесь в том, что SQL Server остановлен, а затем перезапустите его после завершения установки клиентского ПО. Это необходимо SQL Server для распознавания клиентских компонентов.
Если проверено, что эти разрешения предоставлены и что компоненты установлены должным образом, но эта ошибка продолжает возникать, убедитесь в правильности значений настроек в разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI.
Для Oracle 10g правильными являются следующие значения настроек:
Для Oracle 9i правильными являются следующие значения настроек:
Распространителю SQL Server не удается подключиться к экземпляру базы данных Oracle
Если распространителю SQL Server не удается подключиться к издателю Oracle, необходимо убедиться в следующем:
Необходимое программное обеспечение Oracle установлено на распространителе.
База данных Oracle доступна в режиме в «сети» и к ней не удается подключиться при помощи такого средства, как SQL*Plus.
Имя входа, которое репликация использует для подключения к издателю Oracle, имеет достаточно разрешений. Дополнительные сведения см. в статье Настройка издателя Oracle.
Имена TNS, определенные во время настройки издателя Oracle, приводятся в файле tnsnames.ora.
Используются правильные значения Oracle Home и пути. Даже если есть только один набор исполняемых файлов Oracle, установленных на распространителе SQL Server , проверьте, чтобы были правильно установлены переменные среды, относящиеся к Oracle Home. При изменении значений переменных среды необходимо остановить и перезапустить SQL Server , чтобы эти изменения вступили в действие.
Дополнительные сведения о настройке и проверке подключения см. в подразделе "Установка и настройка клиентского сетевого программного обеспечения Oracle на распространителе SQL Server" раздела Настройка издателя Oracle.
Издатель Oracle связан с другим распространителем
«Экземпляр "<OraclePublisherName>" сервера Oracle ранее использовал "<SQLServerDistributorName>" в качестве распространителя. Чтобы использовать "<NewSQLServerDistributorName>" в качестве его распространителя, необходимо удалить текущую конфигурацию репликации на экземпляре сервера Oracle, в результате чего будут удалены все публикации на этом экземпляре сервера».
«Сервер Oracle "<OracleServerName>" уже определен в качестве издателя "<OraclePublisherName>" на распространителе "<SQLServerDistributorName>. <DistributionDatabaseName> ". Для повторного создания удалите издатель или открытый синоним " <SynonymName> "».
При удалении издателя Oracle объекты репликации в базе данных Oracle автоматически очищаются. Однако в некоторых случаях необходима ручная очистка объектов репликации Oracle. Для ручной очистки объектов репликации Oracle, созданных при репликации, выполните следующее:
Подключитесь к издателю Oracle с разрешениями администратора базы данных.
Выполните команду SQL DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR; .
Выполните команду SQL DROP USER <replication_administrative_user_schema>``CASCADE; .
Ошибка SQL Server 21663 возникает из-за отсутствия первичного ключа
«Не найден правильный первичный ключ для исходной таблицы [<TableOwner>].[<TableName>]»
Сведения о требованиях для первичных ключей см. в подразделе «Уникальные индексы и ограничения» раздела Design Considerations and Limitations for Oracle Publishers.
Ошибка SQL Server 21642, связанная с повторяющимся именем входа связанного сервера
«Для разнородных издателей необходим связанный сервер. Связанный сервер с именем " <LinkedServerName> " уже существует. Удалите связанный сервер или выберите другое имя издателя».
Эта ошибка может возникнуть при попытке непосредственно создать связанный сервер, или если ранее была удалена связь между издателем Oracle и распространителем SQL Server , и теперь предпринимается попытка перенастроить издатель. Если эта ошибка возникает при попытке перенастроить издатель, удалите связанный сервер с помощью sp_dropserver (Transact-SQL).
Если вам нужно подключиться к издателю Oracle через подключение связанного сервера, создайте другое имя службы TNS и используйте это имя при вызове процедуры sp_addlinkedserver (Transact-SQL). Сведения о создании имен службы TNS см. в документации Oracle.
Ошибка SQL Server 21617
«Не удается запустить SQL*PLUS. Убедитесь, что на распространителе установлена текущая версия клиентской программы Oracle».
Попытайтесь найти SQL*PLUS на распространителе. Для установки клиента Oracle 10g имя этого исполняемого файла — sqlplus.exe. Обычно данная программа устанавливается в каталог %ORACLE_HOME%/bin. Чтобы убедиться, что путь SQL*PLUS содержится в системном пути, проверьте значение системной переменной Path:
Щелкните правой кнопкой мыши Мой компьютер, затем выберите Свойства.
Перейдите на вкладку Дополнительно , затем щелкните Переменные среды.
В диалоговом окне Переменные среды , в списке Системные переменные выберите переменную Path и щелкните Изменить.
В диалоговом окне Изменение системной переменной выполните следующие действия: если в текстовом поле Значение переменной путь к папке, содержащей sqlplus.exe, отсутствует, измените строку, чтобы она содержала этот путь.
Если на распространителе не удается найти sqlplus.exe, установите на распространителе текущую версию клиентского программного обеспечения Oracle. Дополнительные сведения см. в статье Настройка издателя Oracle.
Ошибка SQL Server 21620
При соединении с базой данных Oracle, версия которой предшествует версии 8.1, для публикации Oracle необходимо, чтобы версия клиентского программного обеспечения Oracle, установленного на распространителе, была не ниже 9. При соединении с базой данных Oracle 8.1 или более поздней версии рекомендуется, чтобы версия клиентского программного обеспечения Oracle была не ниже 10.
«Версия SQL*PLUS, доступная через переменную системного пути, в настоящее время недостаточна для поддержки публикации Oracle. Убедитесь, что на распространителе установлена текущая версия клиентской программы Oracle».
Если на распространителе установлено несколько версий клиентского программного обеспечения Oracle, убедитесь, что самая последняя версия не ниже 9, и что переменная системного пути ссылается вначале на эту версию (ссылки на другие версии могут использоваться, если самая последняя версия располагается первой). Дополнительные сведения о редактировании переменной системного пути см. в приводимом выше разделе «Ошибка SQL Server 21617».
Ошибка SQL Server 21624 или 21629
Если используется клиентское программное обеспечение Oracle версии 10g, поставщиком является OraOLEDB10.dll, для версии 9i — это OraOLEDB.dll. Поставщик устанавливается в каталог %ORACLE_HOME%\BIN (например, в «C:\oracle\product\10.1.0\Client_1\bin»). Если обнаружено, что поставщик Oracle OLEDB не установлен на распространителе, установите его с установочного диска клиентского программного обеспечения Oracle, предоставляемого корпорацией Oracle. Дополнительные сведения см. в статье Настройка издателя Oracle.
- regsvr32 OraOLEDB10.dll или regsvr32 OraOLEDB.dll .
Возникает ошибка SQL Server 21626 или 21627
- «Невозможно подключиться к серверу базы данных Oracle "%s" с помощью поставщика OLEDB для Oracle (OraOLEDB.Oracle)».
Ошибка SQL Server 21628
«Не удалось обновить реестр распространителя "%s", чтобы позволить поставщику OLEDB для Oracle (OraOLEDB.Oracle) запускаться в процессе с SQL Server. Убедитесь, что пользователю с текущим именем входа разрешается вносить изменения в разделы реестра, принадлежащие SQL Server ».
Для системы публикации Oracle необходимо, чтобы запись реестра существовала и была установлена в 1 для 64-разрядных распространителей. Если запись не существует, SQL Server будет пытаться создать ее. Если запись существует, но установлена в 0, установка не изменится, и настройка издателя Oracle завершится неудачей.
Для просмотра и изменения установки реестра выполните следующие действия:
В диалоговом окне Выполнить введите regedit, затем нажмите кнопку OK.
Перейдите к папке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\ <InstanceName> \Providers.
В папке для поставщиков (Providers) должна находиться папка с именем OraOLEDB.Oracle. В этой папке должна присутствовать DWORD-переменная с именем AllowInProcess, которой присвоено значение 1.
Если обнаружено, что переменная AllowInProcess установлена в 0, обновите запись реестра до 1:
Щелкните правой кнопкой мыши запись, затем щелкните Изменить.
В диалоговом окне Изменение строкового параметра введите 1 в поле Значение поля .
Возникает ошибка SQL Server 21684
«Разрешений, связанных с именем входа администратора для издателя Oracle «%s», недостаточно».
Чтобы проверить разрешения, предоставленные пользователю, выполните следующий запрос: SELECT * from session_privs . Результат выполнения должен быть аналогичен следующему:
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
Проблемы, связанные с разрешениями для пользовательской схемы репликации
Пользовательская схема репликации должна иметь разрешения, описанные в подразделе "Создание пользовательской схемы вручную" раздела Настройка издателя Oracle.
Ошибка Oracle ORA-01000
Репликация использует курсоры в издателе Oracle в процессе добавления статей в публикацию. Во время этого процесса возможно превышение максимально допустимого количества курсоров, доступных на издателе. Если это происходит, возникает следующая ошибка:
«ORA-01000: превышение максимального числа открытых курсоров»
Для исключения этой проблемы необходимо убедиться, что для параметра max_open_cursors в базах данных Oracle установлено достаточно большое число (по меньшей мере, 1 000). Дополнительные сведения об этой установке приводятся в документации Oracle.
Ошибка Oracle ORA-01555
Следующая ошибка базы данных Oracle относится не к репликации моментального снимка, а к тому, как Oracle строит подходящие для чтения представления данных:
"ORA-01555: слишком старый моментальный снимок"
При помощи объектов, называемых сегментами отката, Oracle создает пригодные для чтения представления данных на момент выдачи инструкции SQL. Ошибка «слишком старый моментальный снимок» может возникнуть, если данные отката переписываются другими, одновременно выполняющими сеансами. До версии Oracle 9i для уменьшения частоты появления этой ошибки рекомендовался метод увеличения размера или количества сегментов отката и назначения больших транзакций для определенных сегментов отката.
В Oracle 9i корпорация Oracle ввела концепцию табличного пространства UNDO, заменяющую сегмент отката. Для предотвращения ошибки «слишком старый моментальный снимок» в Oracle 9i рекомендуется следующее:
Создайте табличное пространство UNDO с достаточным количеством свободного места.
Установите гарантию хранения для табличного пространства (для версий Oracle 10G и выше).
Настройте параметры инициализации Oracle UNDO_MANAGEMENT и UNDO_RETENTION.
Дополнительные сведения об исключении причин ошибки «слишком старый моментальный снимок» см. в документации Oracle.
Ошибка Oracle ORA-22285
Если в таблице имеется столбец BFILE, данные для столбца хранятся в файловой системе. Административной учетной записи репликации должно быть предоставлено право доступа в каталог, в котором хранятся данные. С этой целью должно использоваться следующее синтаксическое выражение:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
«ORA-22285: несуществующий каталог или файл для операции FILEOPEN»
Выполнены изменения, требующие перенастройки издателя
Для изменения таблиц метаданных репликации или процедур необходимо удалить и перенастроить издатель. Чтобы перенастроить издатель, необходимо удалить издатель и настроить его вновь при помощи среды SQL Server Management Studio, Transact-SQL или объектов RMO. Дополнительные сведения о настройке издателя см. в разделе Настройка издателя Oracle.
Удаление издателя Oracle (среда SQL Server Management Studio )
Подключитесь к распространителю для издателя Oracle в среде SQL Server Management Studio , а затем раскройте узел сервера.
Щелкните правой кнопкой мыши Репликация, затем щелкните Свойства распространителя.
На странице Издатели диалогового окна Свойства распространителя снимите флажок для издателя Oracle.
Я использую TOAD 10.2.1.3 под Windows7 и получаю следующую ошибку:
Это странно, потому что точно по тому же пути я могу найти oci.dll . Это 64-битная система, возможно, это не проблема! Есть идеи? Благодарю за каждую подсказку!
Если вы используете TOAD, вам потребуется загрузить 32-разрядную версию Oracle Client Tools.
Поскольку клиентские инструменты различаются в зависимости от архитектуры процессора, вам, вероятно, потребуется установить версии.
Я использовал SQLTool, где я получал, что oci.dll не был найден, затем я загрузил Instantclient-basic-nt-12.2.0.1.0, извлек его и добавил папку до файла oci.dll в переменной пути
Например: Путь:.; D: \ Softwares \ Oracle Instant Client \ instantclient_12_2
Это решило мою проблему, теперь я могу открыть SQLTool
Если вы используете 64-битный компьютер, Oracle не совместим с ним. Oracle не находит файл oci.dll в 64-разрядной версии.
Поэтому вы можете попробовать поменять oracle home наверху. В результате домашний путь изменится.
По крайней мере, я решил эту ошибку, изменив путь.
Я заметил, что последние установщики клиентов Oracle меняют права доступа к файлам.
У меня был установлен 32-битный клиент Oracle 12.0.1 на год. Недавно я установил 64-битный клиент Oracle 12.0.1. При установке Oracle изменяются ВСЕ разрешения для файлов в 32-битных папках.
Мое приложение внезапно перестало работать.
Я изменил разрешения для всего в клиентских папках Oracle, и приложение работает должным образом.
Я тоже искал решение этой проблемы. Может, этот ответ кому-то поможет.
В моем случае аналогичная проблема возникла, когда я использовал Oracle Instant Client 18.5 для подключения к БД с помощью Toad 13.1.1.5
Чтобы решить эту проблему, я загрузил более свежую версию OIC - Oracle Instant Client 19.3 и Toad без проблем подключился к базе данных Oracle.
Возможно, возникла проблема несовместимости версий. Для новой версии Toad требуется новая версия библиотеки oci.
Оба OIC были 64-битными, и папки с обоими я добавил в переменную Path пользователя.
Клиентская ОС: Win10
Я просто добавил папку oracle к своим переменным окружения и исправил мою идентичную ошибку
У меня была эта проблема, я запускаю 64-битную Windows и скачал 64-битный пакет TOAD. В конце концов я пришел к выводу, что это произошло потому, что я разархивировал пакет в общей папке Windows с помощью unzip командной строки cygwin. Оказалось, что TOAD не понравились разрешения на некоторые файлы. Когда я разархивировал с помощью проводника Windows, все работало, как ожидалось.
С помощью инструкций по установке (не обновлено для 18_3) и загрузок, есть ОШИБКИ на шаге 13 , так что остерегайтесь этого.
Когда вы создаете структуру папок для загрузок, просто напишите их старым способом "c: \ oraclient". Затем, когда вы разархивируете базовую версию, SDK и мгновенную установку клиента для Windows 10_x64 извлеките их в «C: \ oraclient \», потому что они все записываются в одну и ту же папку по умолчанию. Затем, когда вы устанавливаете переменную ENV (которая больше не ORACLE_HOME, а теперь OCI_LIB64) и PATH, вы указываете на «C: \ oraclient \ Instantclient_18_3».
Чтобы убедиться, что вы все правильно поняли, просмотрите информацию и найдите все повторяющиеся папки "Instantclient_18_3". Если они у вас есть, вырежьте и вставьте СОДЕРЖАНИЕ в корневую папку "C: \ oraclient \ Instantclient_18_3 \".
Тот, кто работает с документацией в Oracle, должен лучше устранять неполадки. Я видел "C: \ oreclient_dir_install", "c: \ oracle", "c: \ oreclient" и "c: \ oraclient", все упомянутые как каталоги установки, все для установки Windows x64
Читайте также: