Truy vấn giá trị tham số phiên của phiên chạy


8

Tôi không nghĩ rằng có một cách để làm điều này, nhưng tôi muốn có thể truy vấn giá trị của một phiên đang chạy hiện tại đối với tham số phiên COMMIT_WRITE của nó.

Tôi chưa thấy bất cứ điều gì trong các chế độ xem hiệu suất v $ ... có ai biết về chế độ xem SYS x $ mà từ đó giá trị đó có thể được truy xuất không?


Làm rõ - cần phải kéo cài đặt tham số cho phiên khác, chạy độc lập với phiên hiện tại.

Câu trả lời:


7

Tôi biết câu hỏi này đã hơn một năm tuổi, nhưng trong trường hợp bất kỳ ai vấp ngã ở đây như tôi đã làm, bạn có thể truy vấn V $ SES_OPTIMIZER_ENV:

SYS> select name, value 
        from  V$SES_OPTIMIZER_ENV 
        where sid=54 
           and name='hash_area_size';

NAME                                     VALUE
—————————————- ————————-
hash_area_size                           100000

Nguồn: http://oracleinaction.com/other-session-params/


4

Vâng, có một cách để kiểm tra điều này.

Bạn có thể truy vấn V $ PARAMETER bằng SQL này:

SELECT name, value
  FROM v$parameter
 WHERE name like 'commit_write'
;

NAME                 VALUE
-------------------- --------------------
commit_write         (null)

Sau đó thay đổi tham số trên cơ sở phiên:

ALTER SESSION SET commit_write = 'IMMEDIATE';

Và truy vấn tham số v $ một lần nữa:

SELECT name, value
  FROM v$parameter
 WHERE name like 'commit_write'
;

NAME                 VALUE
-------------------- --------------------
commit_write         IMMEDIATE

1
Thêm làm rõ vào câu hỏi ban đầu - thách thức là tìm ra giá trị tham số v $ này là gì cho một phiên khác .
KevinKirkpatrick

Bạn có thể có thể sử dụng lệnh oradebug để kết xuất các giá trị tham số đã sửa đổi. Tôi không nghĩ các tham số không liên quan đến trình tối ưu hóa từ phiên khác có thể nhìn thấy từ bất kỳ gv $ hoặc x $. Đôi khi chúng được lưu trữ trong phiên UGA và không được tiếp xúc. Tâm trí tò mò muốn biết, tại sao bạn cần điều này?
Raj

Muốn kiểm tra sự tỉnh táo rằng trình kích hoạt đăng nhập đã đặt đúng tham số commit_write cho phiên đó (và tham số commit_write không thay đổi cho phiên đó ngay cả khi tôi thay đổi HỆ THỐNG THAY ĐỔI) ... sau đó xảy ra với tôi "hey, nếu có một cách để "đạt đỉnh" ở các tham số của các phiên đang chạy, điều đó sẽ rất hữu ích ". Không quan trọng - chúng tôi sẽ sớm tìm ra nếu nó không hoạt động (dường như có), nhưng muốn xem có ai có cách nhanh chóng để xác minh trực tiếp không.
KevinKirkpatrick

1
Tôi không nghĩ rằng có thể nhận được giá trị của một phiên khác. Nhưng thông thường, bạn không thay đổi giá trị đó hai lần một ngày để các phiên khác có giá trị hệ thống được định cấu hình. Nếu bạn muốn biết nếu giá trị được thay đổi trên cơ sở phiên, bạn phải theo dõi phiên đó. Trình kích hoạt đăng nhập sẽ không giúp ích nhiều vì ngay sau khi đăng nhập, giá trị dựa trên phiên vẫn giống với giá trị toàn hệ thống.
ora-600

"và rằng tham số commit_write không thay đổi cho phiên đó ngay cả khi tôi thực hiện thay đổi HỆ THỐNG THAY ĐỔI)". Điều này là không thể thực thi, trừ khi tất nhiên bạn thu hồi 'ALTER SESSION' hoặc 'ALTER HỆ THỐNG' từ những người dùng mà bạn không muốn thực hiện thay đổi. Tôi hy vọng ALTER HỆ THỐNG không được cấp cho người dùng không phải DBA. Việc thu hồi ALTER SESSION có thể dễ dàng hơn, đặt commit_write ở cấp hệ thống nhưng bạn phải tính đến các yêu cầu mã nhà cung cấp nếu đó là trường hợp. Ngoài ra ALTER SESSION sẽ ghi đè cài đặt ALTER HỆ THỐNG ở cấp phiên nếu nó được thực hiện sau ALTER HỆ THỐNG. Vì vậy, thu hồi đặc quyền đó để được an toàn.
Raj
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.