Oracle SqlError: нарушение протокола/OALL8 находится в несогласованном состоянии

Я получаю сообщение о нарушении протокола, а OALL8 — это несогласованное состояние исключения, пытающееся выполнить запросы SELECT, но только для НЕКОТОРЫХ моих таблиц. Я впервые заметил это в тестовом приложении, которое я написал, которое выполняло SELECT * FROM SOMETABLE. Он просматривал несколько сотен записей, а затем просто зависал на мне. Я попытался выполнить тот же запрос в Oracle SQLDeveloper и получил исключение «Нарушение протокола» для некоторых таблиц. В конце концов он доходит до того, что для любого запроса указывает, что «OALL8 находится в несогласованном состоянии».

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

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

  • Мгновенный клиент — 11.2.0.2.0, работающий на Win XP SP3, 32-разрядная БД Oracle:

  • Oracle Database 11g Express Edition Release 11.2.0.2.0 — рабочая версия, работающая на Windows Server 2003, x64

  • ОДАК: 11.2.0.3.0

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

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


person Stealth Rabbi    schedule 27.02.2012    source источник


Ответы (1)


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
person Kris Rice    schedule 04.02.2018