2011-10-06 9 views
4

Notre base de données Oracle 10g a récemment été mise à niveau vers 11g. La base de données s'exécute sur une machine Windows Server 2003 X64. Dans les requêtes SQL d'une application .NET qui accède à une table contenant des colonnes de données TIMESTAMP (6) WITH TIME ZONE, j'obtiens l'exception suivante.Oracle ORA-01805 sur la base de données Oracle 11g

System.Data.OracleClient.OracleException: ORA-01805: erreur possible opération Date/heure

Le suggested action de l'exception est de faire en sorte que le client et le serveur sont la même version:

ORA-01805: erreur possible dans l'opération de date/heure Cause: Les fichiers de fuseau horaire sur le client et le serveur ne correspondent pas. L'opération peut potentiellement entraîner des résultats incorrects basés sur le fichier de fuseau horaire local. Action: Veuillez vous assurer que les versions de fuseau horaire du client et du serveur sont les mêmes.

J'ai exécuté les requêtes suivantes pour vérifier le fuseau horaire sur la base de données en question. Je n'ai pas trouvé d'informations sur la façon dont je définis le fuseau horaire (ou modifiez le fichier timezone) pour le client.

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

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

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

Je suppose que le client fait référence au client instantané que j'ai installé, à savoir la version 11_2? J'exécute les requêtes via un System.Data.OracleClient.OracleConnection tel que fourni par le .NET Framework. U Je suppose que par "version de fuseau horaire" il se réfère aux versions du fichier fuseau horaire. Je ne vois pas où le client instantané a un fichier de fuseau horaire. Toutes les suggestions sont appréciées.

Répondre

3

Utilisez "genezi -v" pour connaître la version du fichier de fuseau horaire.

Voici un exemple dans ma boîte 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

Avec mon 11.2.0.2.0 client, je reçois essentiellement la même sortie. Je devine que le client 11.2.0.1 était plus tôt que la version 14. Merci –

+0

la commande fournie est utile mais op demande comment changer la valeur – wonster

3

J'ai déterminé que j'avais la version 11_2_0_1 du client instantané installé. La mise à niveau vers 11_2_0_2 semble avoir résolu ce problème. Cependant, je ne suis toujours pas clair sur la façon dont le client instantané gère le fichier fuseau horaire, ou même où il est ou ce qu'il est. Toutes les sources que j'ai lues disent pour s'assurer que le client et le serveur ont la même version du fichier timezone, mais je ne sais pas comment cela se fait réellement sur le client. Peut-être que ce n'est pas quelque chose que je peux maintenir directement au-delà d'utiliser une version différente du client instantané?