Wie kann ich anzeigen, welche NLS-Einstellungen für andere Sitzungen aktiv sind?

8

Ich habe eine weitere Sitzung, von der ich vermute, dass sie nicht mit den 'richtigen' NLS-Einstellungen für uns in Oracle 11gR2 ausgeführt wird. Was kann ich abfragen, um die NLS-Einstellungen für eine andere aktive Sitzung anzuzeigen? Alle NLS_ * -Ansichten verweisen auf meine aktuelle Sitzung.

rfusca
quelle
Es gibt keine gute Möglichkeit, dies zu tun. Führen Sie entweder eine Sitzungsverfolgung durch oder verwenden Sie einen DB-Anmeldetrigger, um die NLS-Einstellungen für Sitzungen zur späteren Analyse in einer Tabelle abzulegen.
Philᵀᴹ
@Phil - Ich stimme zu, das ist die Antwort und ich denke, du solltest sie als eine posten.
Leigh Riffel
@LeighRiffel Prost, fertig! ;)
Philᵀᴹ

Antworten:

4

Es gibt keinen einfachen Weg, dies zu erreichen. Sie können dies entweder tun, indem Sie die Sitzung verfolgen oder einen Anmeldetrigger verwenden. Hier ist ein Beispiel für die Verwendung eines DB-Anmeldetriggers.

Protokollierungstabelle:

create table nls_session_parameters_log
(
    inserted_date    date,
    sid              number,
    username         varchar2(128),
    parameter        varchar2(30),
    value            varchar2(40)
);

Öffentlicher Zuschuss und Synonym:

grant insert on nls_session_parameters_log to public;

create public synonym nls_session_parameters_log for sys.nls_session_parameters_log;

Auslöser für die Datenbankanmeldung:

create or replace trigger nls_log_dbtrig after logon on database
begin
  if user in ('PHIL') then
    insert into nls_session_parameters_log
    select sysdate, (select sys_context('USERENV','SID') from dual), (select user from dual),parameter, value
    from nls_session_parameters;
  end if;

  exception
    when others then 
      null;
end;
/

Prüfung:

SQL> conn phil/phil
Connected.
SQL> select count(*) from nls_session_parameters_log;

  COUNT(*)
----------
        17

SQL>

Offensichtlich ist es besser, wenn Sie die Tabelle in ein geeignetes Schema einfügen und pro Benutzer gewähren.

Wenn Sie Hilfe bei einem anderen Ansatz (Sitzungsverfolgung) benötigen, lassen Sie es mich wissen.

Philᵀᴹ
quelle
Das Speichern der Informationen während der Anmeldung hilft jedoch nicht, wenn der Benutzer die NLS-Einstellung mitALTER SESSION...
a_horse_with_no_name
@a_horse_with_no_name Offensichtlich. Die Ablaufverfolgung ist die einzige Option, wenn eine Sitzung dies tut.
Philᵀᴹ
1

Der einzige (mir bekannte) NLS-Typwert, der leicht aus dem Datenwörterbuch abgerufen werden kann, ist client_charset in V $ SESSION_CONNECT_INFO

dh

select * from V$SESSION_CONNECT_INFO;
Schnürsenkel
quelle