2011-10-06 215 views
4

我們的Oracle 10g數據庫最近已升級到11g。數據庫在Windows Server 2003 X64機器上運行。在訪問具有TIMESTAMP(6)WITH TIME ZONE數據列的表的.NET應用程序的SQL查詢中,出現以下異常。Oracle 11g數據庫上的Oracle ORA-01805

System.Data.OracleClient.OracleException:ORA-01805:日期可能出現的錯誤/時間操作

suggested action的例外是確保客戶端和服務器的版本相同:

ORA-01805:日期/時間操作中可能的錯誤 原因:客戶端和服務器上的時區文件不匹配。操作可能會導致基於本地時區文件的錯誤結果。 操作:請確保客戶端和服務器時區版本相同。

我已運行以下查詢來檢查有問題的數據庫上的時區。我還沒有找到有關如何爲客戶端設置時區(或更改時區文件)的信息。

SELECT dbtimezone FROM DUAL; 
select * from v$timezone_file; 

DBTIMEZONE 
---------- 
+00:00  

FILENAME    VERSION     
-------------------- ---------------------- 
timezlrg_14.dat  14  

我假定客戶端指的是我安裝的即時客戶端,它是版本11_2?我通過.NET Framework提供的System.Data.OracleClient.OracleConnection運行查詢。 U我認爲「時區版本」是指時區文件版本。我沒有看到即時客戶端在哪裏有時區文件。任何建議都很明確。

回答

3

使用「genezi -v」知道時區文件版本。

這裏有一個例子,我的Linux機器:

$ genezi -v 
Client Shared Library 32-bit - 11.2.0.2.0 

System name: Linux 
Release: 2.6.32-34-generic 
Version: #77-Ubuntu SMP Tue Sep 13 19:39:17 UTC 2011 
Machine: x86_64 

Operating in Instant Client mode. 
Small timezone file = timezone_14.dat 
Large timezone file = timezlrg_14.dat 
+0

隨着我的11.2.0.2.0客戶端,我得到基本相同的輸出。我猜11.2.0.1客戶早於版本14.謝謝 –

+0

提供的命令是有幫助的,但op是問如何更改值 – wonster

3

我確定我已安裝了即時客戶端的版本11_2_0_1。升級到11_2_0_2似乎解決了這個問題。然而,我仍然不清楚即時客戶端如何管理它的時區文件,甚至不知道它是什麼或它是什麼。我讀過的所有資料都表示,爲了確保客戶端和服務器具有相同的時區文件版本,但我不清楚客戶端實際上做了什麼。也許這不是我可以直接使用不同版本的即時客戶端來維護的東西?