In Oracle, warum zurückkehren current_timestamp manchmal Serverzeit, andere Zeiten GMT?

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

  •  19-09-2019
  •  | 
  •  

Frage

Ich habe eine Java-Anwendung ausgeführt wird für eine Oracle-9i-Datenbank. Die Datenbank verfügt über einen Trigger ein Auditprotokoll zu erstellen, die Änderungen an die Basisaufzeichnungsspuren. Der Trigger nutzt current_timestamp. Als ich den Basissatz mit der Anwendung Java ändern, spiegelt der Prüfsatz GMT. wenn ich Toad jedoch verwenden und die Basis Datensatz aktualisieren, spiegelt der Prüfsatz Serverzeit (die lokale Zeit eingestellt ist). Abfragt current_timestamp kehrt Serverzeit. Ich kann nicht scheinen zu finden, was den Unterschied verursacht. Irgendwelche Ideen da draußen?

War es hilfreich?

Lösung

NLS Parameterwerte können innerhalb einer Sitzung (manchmal in einem Login-Trigger), geerbt von der OS-Umgebung oder Satz an Startinstanz eingestellt werden, was sie aufzuspüren macht etwas heikel.

Die folgende Abfrage zeigt Abweichungen von der Datenbank, und wenn Sie diese Ausgabe von Ihren zwei divergierende Umgebungen zu bekommen, kann es helfen:

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

Als ich lief, dass auf einem Windows SQL * Plus, ich habe keine Zeilen zurückgegeben, so gab es keine Unterschiede zwischen meiner Anwendungsumgebung und dort Datenbank Standardwerten. Allerdings, wenn ich laufe es von einer Unix-Umgebung:

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top