dba:sqlnet_session_settings
Inhaltsverzeichnis
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.
- Mit SQL*Plus an der DB als sys User anmelden:
sqlplus / AS sysdba
- 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 /
- 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!
- 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
- 12c ⇒ NLS_SESSION_PARAMETERS https://docs.oracle.com/database/121/REFRN/GUID-BB209B28-8180-4793-8FB6-E7C98C131133.htm#REFRN29032
dba/sqlnet_session_settings.txt · Zuletzt geändert: 2018/01/23 10:22 von gpipperr