Я получаю Нарушение протокола, и OALL8 является несовместимым состоянием исключений, пытающихся выполнить запросы SELECT, но только на НЕКОТОРЫХ из моих таблиц. Впервые я заметил это в тестовом приложении, которое я написал, которое сделало SELECT * FROM SOMETABLE
. Он пройдет через несколько сотен записей, а затем просто закроет меня. Я попытался выполнить тот же запрос в Oracle 'SQLDeveloper, и получал исключение нарушения протокола для некоторых таблиц. В конце концов он достигает точки, где он указывает «OALL8 находится в несовместимом состоянии» для любого запроса.
Кто-нибудь знает, почему это происходит и как решить проблему? Где мое противоречивое состояние? Является ли Oracle SqlDeveloper своим собственным автономным клиентом или он полагается на ODAC или Instant Client (на который ссылается переменная PATH envi)?
Единственное, что изменилось недавно, это то, что я установил 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:
Oracle Database 11g Express Edition, выпуск 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, и пока он работает нормально. Я не понимаю, почему это так.