5

プロトコル違反が発生し、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 を再インストールしましたが、今のところ問題なく動作しています。なぜそうなのかわかりません。

4

1 に答える 1

0

SQL Developer は ORACLE_HOME を使用し、利用可能な場合はそのドライバを使用します。これで発生している問題は、ORACLE_HOME が SQL Developer にバンドルされている JDBC ドライバーと同じバージョンではないことです。

これに対する「修正」は、インストールした sqldev のバージョンで Oracle クライアントが最新であることを確認することです。これを見つける最も簡単な方法は、接続の実行時です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
于 2018-02-04T14:15:08.693 に答える