In Oracle, perché a volte CURRENT_TIMESTAMP tornare ora del server, altre volte GMT?

StackOverflow https://stackoverflow.com/questions/2238782

  •  19-09-2019
  •  | 
  •  

Domanda

Ho un'applicazione Java in esecuzione in un database Oracle 9i. Il database ha un trigger per creare un record di controllo, che tiene traccia delle modifiche al record di base. Il trigger utilizza CURRENT_TIMESTAMP. Quando ho modificare il record di base con l'applicazione Java, il record di controllo riflette GMT. Tuttavia, se uso Toad e aggiornare il record di base, il record di controllo riflette ora del server (che è impostato per l'ora locale). Interrogazione CURRENT_TIMESTAMP restituisce ora del server. Io non riesco a trovare ciò che provoca la differenza. Tutte le idee là fuori?

È stato utile?

Soluzione

i valori dei parametri NLS possono essere impostati all'interno di una sessione (a volte in un trigger di accesso), ereditato dall'ambiente operativo, o impostare in caso di avvio, che li rende un po 'difficile rintracciare.

La query seguente mostra divergenza dal database, e se è possibile ottenere questo output dai due ambienti divergenti, può aiutare:

SELECT * FROM
(
SELECT PARAMETER, 
       VALUE AS SESSION_VALUE,
       (SELECT VALUE FROM NLS_INSTANCE_PARAMETERS NIP
         WHERE NIP.PARAMETER = NSP.PARAMETER) INSTANCE_VALUE,
       (SELECT VALUE FROM NLS_DATABASE_PARAMETERS NDP
         WHERE NDP.PARAMETER = NSP.PARAMETER) DATABASE_VALUE
  FROM NLS_SESSION_PARAMETERS NSP
)
 WHERE NVL(INSTANCE_VALUE, DATABASE_VALUE) <> DATABASE_VALUE
    OR NVL(SESSION_VALUE, NVL(INSTANCE_VALUE, DATABASE_VALUE)) <> DATABASE_VALUE

Quando ho eseguito che in un sistema Windows SQL * Plus, ho avuto nessun righe restituite, quindi non ci sono state differenze tra il mio ambiente applicativo e là valori predefiniti del database. Tuttavia, quando ho eseguito da un ambiente Unix:

PARAMETER                 SESSION_VALUE             INSTANCE_VALUE            DATABASE_VALUE
------------------------- ------------------------- ------------------------- -------------------------
NLS_DATE_FORMAT           YYYY-MM-DD HH24:MI:SS                               DD-MON-RR
NLS_TIMESTAMP_TZ_FORMAT   YYYY-MM-DD HH24:MI:SS.FF                            DD-MON-RR HH.MI.SSXFF AM
                          TZH:TZM                                             TZR
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top