Benutzer-Werkzeuge

Webseiten-Werkzeuge


dba:sqlnet_session_settings

Die aktuellen Oracle NLS Settings einer SQL Session ermittlen

Erstellt 09.2013

Möglichkeiten:

  • In einer Session mit den NLS views
  • Login Trigger Monitoring
  • Trace mit OraDEBUG für anderes Sessions
Die Eigenschaften werden IMMER vom Client zur Datenbank vererbt, d.h. ist sind keine Einstellung in der DB oder dem DB Server, es sind die Client Einstellungen, die für die NLS Settings einer Session verantwortlich sind!

Innerhalb einer Session über die NLS Views die Einstellungen ermitteln

Mit SQL*Plus an der DB anmelden und mit der View nls_session_parameters die Eigenschaften innerhalb dieser Session überprüfen:

COLUMN parameter format a24 heading "NLS Session Parameter"
COLUMN VALUE     format a30 heading "Setting"
 
SELECT  PARAMETER
       ,VALUE
 FROM nls_session_parameters 
ORDER BY 1
/

Login Trigger Monitoring

Stichwort:

Login Trigger erstellen, der mit einer autonomen Transaktion die NLS Werte in eine Log Tabelle schreibt.

Im Prinzip gleich wie beim ein allgemeiner Error Trigger, siehe hier DB Fehler protokollieren.

CREATE OR REPLACE TRIGGER trg_logon
after logon
ON DATABASE
DECLARE
  PRAGMA AUTONOMOUS_TRANSACTION;
 
BEGIN
  -- Werte aus nls_session_parameters lesen
……
 -- wert in Log Tabelle schreiben 
 
 ……
END;
/

Ist der Trigger ungültig, kann keine Anmeldung an der DB erfolgen! Daher sorgfältig entwickeln!


Einen Trace mit OraDEBUG erzeugen

Für einen Trace mit dem „OraDEBUG“ Kommando in SQL*Plus muss die OS PID (Process ID) der zu analysierenden Session bekannt sein.

  1. Mit SQL*Plus an der DB als sys User anmelden:
    sqlplus / AS sysdba
  2. OS PID ermittlen:
    SQL>SELECT p.inst_id  
        , to_char(p.spid) AS os_pid
        , vs.username
        , p.tracefile AS trace_file_location
    FROM gv$session vs
       , gv$process p
    WHERE vs.paddr=p.addr
      AND vs.inst_id=p.inst_id
      AND vs.username IS NOT NULL
      AND vs.username LIKE '%&&USER_NAME.%'
    ORDER BY vs.username
    /
  3. Trace für die Session erstellen und Parameter in das Tracefile schreiben lassen:
    SQL> oradebug  SETOSPID <os_pid>;
    SQL> oradebug dump modified_parameters 1; 

Auch mit mit oradebug dump modified_parameters 0; testen!

  1. Das Tracefile in der DIAG Destinatin der Datenbank öffnen (Name wie <DB_ID>_ora_<os_pid>.trc ):
    host notepad  <trace_file_location>
    ....
    -- ** 2013-08-26 19:58:32.881
    Processing Oradebug command 'dump modified_parameters 1'
    DYNAMICALLY MODIFIED PARAMETERS:
      nls_language             = GERMAN
      nls_territory            = GERMANY
      nls_sort                 = GERMAN
      nls_date_language        = GERMAN
      nls_date_format          = DD.MM.RR
      nls_currency             = €
      nls_numeric_characters   = ,.
      nls_iso_currency         = GERMANY
      nls_calendar             = GREGORIAN
      nls_time_format          = HH24:MI:SSXFF
      nls_timestamp_format     = DD.MM.RR HH24:MI:SSXFF
      nls_time_tz_format       = HH24:MI:SSXFF TZR
      nls_timestamp_tz_format  = DD.MM.RR HH24:MI:SSXFF TZR
      nls_dual_currency        = €
      nls_comp                 = BINARY

Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
dba/sqlnet_session_settings.txt · Zuletzt geändert: 2018/01/23 10:22 von gpipperr