Я получаю сообщение о нарушении протокола, а 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, и пока он работает нормально. Я не понимаю, почему это так.