Làm cách nào để kiểm tra số lượng kết nối tối đa được phép tới cơ sở dữ liệu Oracle?


89

Cách tốt nhất, sử dụng SQL, để kiểm tra số lượng kết nối tối đa được phép cho cơ sở dữ liệu Oracle là gì? Cuối cùng, tôi muốn hiển thị số phiên hiện tại và tổng số cho phép, ví dụ: "Hiện tại, 23 trong số 80 kết nối được sử dụng".

Câu trả lời:


120

Có một vài giới hạn khác nhau có thể ảnh hưởng đến việc xác định số lượng kết nối mà cơ sở dữ liệu Oracle hỗ trợ. Cách tiếp cận đơn giản nhất là sử dụng tham số SESSIONS và V $ SESSION, tức là

Số lượng phiên mà cơ sở dữ liệu đã được định cấu hình để cho phép

SELECT name, value 
  FROM v$parameter
 WHERE name = 'sessions'

Số lượng phiên hiện đang hoạt động

SELECT COUNT(*)
  FROM v$session

Tuy nhiên, như tôi đã nói, có những giới hạn tiềm ẩn khác cả ở cấp cơ sở dữ liệu và cấp hệ điều hành và tùy thuộc vào việc máy chủ chia sẻ đã được cấu hình hay chưa. Nếu máy chủ được chia sẻ bị bỏ qua, bạn có thể đạt đến giới hạn của thông số PROCESSES trước khi bạn đạt đến giới hạn của thông số SESSIONS. Và bạn có thể đạt đến giới hạn của hệ điều hành vì mỗi phiên yêu cầu một lượng RAM nhất định.


xin lỗi, làm thế nào chúng tôi có thể chạy truy vấn này? Tôi nhận được "bảng hoặc xem không tồn tại" cho "SELECT COUNT (*) FROM v $ session"
dân làng

3
@ Yin03 - Điều đó ngụ ý rằng bất kỳ người dùng Oracle nào bạn đang sử dụng đều không có đặc quyền trên v$sessionchế độ xem. Bạn cần yêu cầu DBA cấp cho bạn đặc quyền đó. Rất có thể, bạn muốn có select any dictionaryđặc quyền mặc dù select_catalog_rolevai trò hoặc khoản trợ cấp trực tiếp chỉ trên đối tượng đó cũng sẽ hoạt động.
Justin Cave

35

Các phiên tham số có nguồn gốc từ quá trình tham số và thay đổi cho phù hợp khi bạn thay đổi số lượng các quy trình tối đa. Xem tài liệu Oracle để biết thêm thông tin.

Để chỉ nhận thông tin về các phiên:

    select current_utilization, limit_value 
    from v$resource_limit 
    where resource_name='sessions';
CURRENT_UTILIZATION LIMIT_VALUE
------------------- -----------
                110 792

Hãy thử điều này để hiển thị thông tin về cả hai:

    select resource_name, current_utilization, max_utilization, limit_value 
    from v$resource_limit 
    where resource_name in ('sessions', 'processes');
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION LIMIT_VALUE
------------- --------------------------------- --------
quy trình 96 309 500
phiên 104 323 792

34

Tôi nghĩ rằng điều này sẽ hoạt động, dựa trên nguồn này .

SELECT
  'Currently, ' 
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of ' 
  || DECODE(VL.SESSIONS_MAX,0,'unlimited',VL.SESSIONS_MAX) 
  || ' connections are used.' AS USAGE_MESSAGE
FROM 
  V$LICENSE VL

Tuy nhiên, Justin Cave đã đúng. Truy vấn này cho kết quả tốt hơn:

SELECT
  'Currently, ' 
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of ' 
  || VP.VALUE 
  || ' connections are used.' AS USAGE_MESSAGE
FROM 
  V$PARAMETER VP
WHERE VP.NAME = 'sessions'

xin lỗi, làm thế nào chúng tôi có thể chạy truy vấn này? Tôi nhận được "bảng hoặc chế độ xem không tồn tại" cho "CHỌN ĐẾM (*) TỪ v $ phiên"
dân làng

2
@ Yin03 Bạn đang sử dụng Oracle hay một loại cơ sở dữ liệu khác? Nếu Oracle, nó có thể là một vấn đề về quyền.
JosephStyons

1
truy vấn hoàn hảo @JosephStyons!
Gaurav

@guarav, tôi rất vui vì bạn thấy nó hữu ích!
JosephStyons

4

Lưu ý: điều này chỉ trả lời một phần của câu hỏi.

Nếu bạn chỉ muốn biết số lượng phiên tối đa được phép, thì bạn có thể thực thi trong sqlplus, dưới dạng sysdba:

SQL> show parameter sessions

Điều này cung cấp cho bạn một đầu ra như:

    NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size           integer     0
java_soft_sessionspace_limit         integer     0
license_max_sessions                 integer     0
license_sessions_warning             integer     0
sessions                             integer     248
shared_server_sessions               integer

Tham số phiên là thông số bạn muốn.


4

Sử dụng phiên gv $ cho RAC, nếu bạn muốn nhận tổng số phiên trên toàn bộ cụm.



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.