Làm cách nào tôi có thể xem cài đặt NLS nào đang hoạt động cho phiên khác?


8

Tôi đã có một phiên khác mà tôi nghi ngờ là không chạy với cài đặt NLS 'phù hợp' cho chúng tôi trong Oracle 11gR2. Tôi có thể truy vấn gì để hiển thị cài đặt NLS cho phiên hoạt động khác - tất cả các chế độ xem NLS_ * tham chiếu phiên hiện tại của tôi.


Không có cách nào tốt để làm điều đó. Hoặc theo dõi phiên hoặc sử dụng trình kích hoạt đăng nhập DB để chuyển các cài đặt NLS phiên sang bảng để phân tích sau.
Phil

@Phil - Tôi đồng ý, đó là câu trả lời và tôi nghĩ bạn nên đăng nó dưới dạng một.
Leigh Riffel

@LeighRiffel Chúc mừng, đã xong! ;)
Philᵀᴹ

Câu trả lời:


4

Không có cách đơn giản để đạt được điều này. Bạn có thể làm điều đó bằng cách truy tìm phiên hoặc bằng cách sử dụng kích hoạt đăng nhập. Đây là một ví dụ về cách thực hiện bằng trình kích hoạt đăng nhập DB.

Bảng ghi nhật ký:

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

Cấp công cộng và từ đồng nghĩa:

grant insert on nls_session_parameters_log to public;

create public synonym nls_session_parameters_log for sys.nls_session_parameters_log;

Kích hoạt đăng nhập cơ sở dữ liệu:

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;
/

Kiểm tra:

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

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

SQL>

Rõ ràng là bạn sẽ tốt hơn khi đặt bảng vào một lược đồ phù hợp và cấp trên cơ sở cho mỗi người dùng.

Nếu bạn cần trợ giúp với cách tiếp cận khác (theo dõi phiên), hãy cho tôi biết.


Nhưng việc bỏ thông tin trong khi đăng nhập sẽ không giúp ích nếu người dùng thay đổi cài đặt NLS bằng cách sử dụngALTER SESSION...
a_horse_with_no_name

@a_horse_with_no_name Rõ ràng. Truy tìm là lựa chọn duy nhất nếu một phiên làm việc đó.
Phil

1

Giá trị loại NLS duy nhất (mà tôi biết) có thể truy xuất dễ dàng từ từ điển dữ liệu là client_charset được tìm thấy trong V $ SESSION_CONNECT_INFO

I E

select * from V$SESSION_CONNECT_INFO;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.