web-dev-qa-db-fra.com

Le résultat Oracle SysMestamp diffère dans le serveur DB et le client

Je reçois une sortie étrange lors de l'exécution de la commande ci-dessous sur DB Server et sur la machine cliente connectée au même serveur DB.

Sur DB Server

SQL> select systimestamp from dual;

systimestamp

25-JUN-15 06.16.13.424135 PM +08:00

Sur la machine cliente

SQL> select systimestamp from dual;

SYSTIMESTAMP

25-JUN-15 02.16.57.936662 AM -08:00

En dessous de la sortie pour référence

SQL>  select dbtimezone, sessiontimezone from dual;

DBTIMEZONE                     SESSIONTIMEZONE

+00:00                            +08:00
1
Nitesh Kumar

Il est normal, car vos paramètres NLS diffèrent sur le serveur et sur le client.

La conversion NLS arrive toujours du côté du client, peu importe les paramètres de votre serveur. Comparez la sortie de ces:

select * from nls_database_parameters;
select * from nls_session_parameters;
1
BLT

Timezone de SYSTIMESTAMP est tiré du système d'exploitation. Toutefois, sur le système d'exploitation, cela peut être spécifique à l'utilisateur.

Avez-vous des résultats différents lorsque vous faites cela sur DB Server?

$ su Oracle

$ setenv TZ America/Winnipeg
$ sqlplus / as sysdba

SQL> select systimestamp from dual;
...
SQL> exit

$ setenv TZ Europe/Zurich
$ sqlplus / as sysdba

SQL> select systimestamp from dual;
...
SQL> exit
0