プロトコル違反が発生し、OALL8 は SELECT クエリを実行しようとする一貫性のない状態の例外ですが、一部のテーブルでのみ発生します。私が最初にこれに気付いたのは、SELECT * FROM SOMETABLE
. それは数百のレコードを通過し、その後私を閉じ込めます。Oracle の SQLDeveloper で同じクエリを実行してみましたが、一部のテーブルでプロトコル違反の例外が発生しました。最終的には、どのクエリに対しても「OALL8 が矛盾した状態にある」ことを示すポイントに到達します。
なぜこれが発生しているのか、問題を解決する方法を知っている人はいますか? 一貫性のない状態はどこにありますか? Oracle の SqlDeveloper は独自のスタンドアロン クライアントですか、それとも ODAC または Instant Client (PATH 環境変数で参照) に依存していますか?
最近変更された唯一の点は、odp.net を使用して .NET の System.Data.OracleClient を置き換えることができるように、ODAC をインストールしたことです。ITはODAC 11.2.0.3.0で、Oracle Developer Tools for Visual Studio、32ビットでした。それ以来、PATH 環境変数を更新して、スタンドアロンのインスタント クライアントを指すようにしました。
Instant Client - 11.2.0.2.0、Win XP SP3、32 ビット Oracle DB で実行:
Oracle Database 11g Express Edition リリース 11.2.0.2.0 - 本番、Windows Server 2003、x64 上で実行
- ODAC: 11.2.0.3.0
SqlDeveloper は ODAC をインストールする前にインストールされていましたが、PATH 環境変数で ODAC が参照されていないにもかかわらず、どういうわけか SqlDeveloper がクライアントとして ODAC を経由しているようです。
更新:最初に ODAC をインストールしたとき、クエリはすべて正常に機能していました。その後、1 日後に機能が停止しましたが、その理由は説明できません。ODAC をアンインストールしようとしましたが、削除する .DLL を探すときに失敗しました。次に、ORACLE_HOME を手動で削除し、ODAC を再インストールしましたが、今のところ問題なく動作しています。なぜそうなのかわかりません。