5

Я получаю нарушение протокола, а OALL8 - это несогласованные исключения состояния, пытающиеся выполнить запросы SELECT, но только в некоторых моих таблицах. Я впервые заметил это в тестовом приложении, которое написал, что сделал SELECT * FROM SOMETABLE. Он пройдет через несколько сотен записей, а затем просто закроет меня. Я попробовал запустить тот же запрос в Oracle SQLDeveloper и получил исключение протокола для некоторых таблиц. В конце концов, он доходит до точки, где указывает, что «OALL8 находится в непоследовательном состоянии» для любого запроса.Oracle SqlError: нарушение протокола/OALL8 находится в непостоянном состоянии

Кто-нибудь знает, почему это происходит и как исправить проблему? Где мое несогласованное состояние? Является ли Oracle SqlDeveloper своим автономным клиентом или полагается на ODAC или Instant Client (ссылка на PATH envi var)?

Единственное, что изменилось недавно, это то, что я установил ODAC, чтобы использовать odp.net для замены System.Data.OracleClient в .NET. Это был ODAC 11.2.0.3.0 с Oracle Developer Tools для Visual Studio, 32 бит. Я так обновил мою переменную окружения PATH, чтобы указать на мой автономный мгновенный клиент.

  • Instant Client - 11.2.0.2.0, работает на Win XP SP3, 32-битным Oracle DB:

  • Oracle Database 11g Express Edition Release 11.2.0.2.0 - Производство, запуск на Windows, Server 2003 x64

  • ODAC: 11.2.0.3.0

SQLDeveloper был установлен прежде чем я установил ODAC, но как-то SQLDeveloper, кажется, идет через ODAC как клиент, несмотря на ODAC не ссылаются в PATH.

Обновление: Когда я изначально устанавливал ODAC, все мои запросы функционировали нормально. Затем они перестали функционировать через день, и я не могу объяснить, почему. Я попытался удалить ODAC, который не удался при поиске .DLL для удаления. Затем я вручную удалил свой ORACLE_HOME и переустановил ODAC, и теперь он работает нормально. Я не понимаю, почему это так.

ответ

0

SQL Developer использует ORACLE_HOME и его драйверы, когда они доступны. Проблема, которую вы видите в этом, заключается в том, что ORACLE_HOME - это не та же версия, что и драйвер JDBC, поставляемый в SQL Developer.

«Исправлено», чтобы убедиться, что клиент oracle обновлен до версии sqldev, которую вы установили. Самый простой способ найти это - это когда выполняется соединение show jdbc

show jdbc 
-- Database Info -- 
Database Product Name: Oracle 
Database Product Version: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production 
Database Major Version: 12 
Database Minor Version: 1 
-- Driver Info -- 
Driver Name: Oracle JDBC driver 
Driver Version: 12.2.0.1.0 
Driver Major Version: 12 
Driver Minor Version: 2 
Смежные вопросы