Oracle10gデータベースは最近11gにアップグレードされました。データベースはWindowsServer2003X64マシンで実行されています。TIMESTAMP(6)WITH TIME ZONEデータ列を持つテーブルにアクセスする.NETアプリケーションからのSQLクエリで、次の例外が発生します。
System.Data.OracleClient.OracleException:ORA-01805:日付/時刻操作でエラーが発生する可能性があります
例外に対して推奨されるアクションは、クライアントとサーバーが同じバージョンであることを確認することです。
ORA-01805:日付/時刻操作でエラーが発生する可能性があります原因:クライアントとサーバーのタイムゾーン・ファイルが一致していません。操作により、ローカルタイムゾーンファイルに基づいて誤った結果が生じる可能性があります。処置:クライアントとサーバーのタイムゾーンのバージョンが同じであることを確認してください。
次のクエリを実行して、問題のデータベースのタイムゾーンを確認しました。クライアントのタイムゾーンを設定する(またはタイムゾーンファイルを変更する)方法に関する情報が見つかりません。
SELECT dbtimezone FROM DUAL;
select * from v$timezone_file;
DBTIMEZONE
----------
+00:00
FILENAME VERSION
-------------------- ----------------------
timezlrg_14.dat 14
クライアントがインストールしたインスタントクライアント(バージョン11_2)を参照していると思いますか?System.Data.OracleClient.OracleConnection
.NETFrameworkによって提供されるようにクエリを実行しています。UIは、「タイムゾーンバージョン」によって、タイムゾーンファイルのバージョンを参照していると想定します。インスタントクライアントにタイムゾーンファイルがある場所がわかりません。どんな提案も認められます。