Làm thế nào để liệt kê các kết nối hoạt động / mở trong Oracle?


164

Có bất kỳ bảng ẩn, biến hệ thống hoặc một cái gì đó để hiển thị các kết nối hoạt động trong một thời điểm nhất định?

Câu trả lời:


183

Sử dụng V$SESSIONchế độ xem.

V$SESSION hiển thị thông tin phiên cho mỗi phiên hiện tại.


5
Lỗi bắt đầu từ dòng 1 trong lệnh: select * from FROM v $ session Lỗi tại Dòng lệnh: 1 Cột: 14 Báo cáo lỗi: Lỗi SQL: ORA-00903: tên bảng không hợp lệ 00903. 00000 - "tên bảng không hợp lệ" * Nguyên nhân: * Nguyên nhân: * Hành động:
pistacchio

3
Hoặc bạn không có quyền hoặc bạn đã không cài đặt chính xác các chế độ xem DBA.
S.Lott

4
Bạn sẽ cần vai trò select_catalog_role.
PaulJWilliams

2
Bạn cũng có thể tham gia v $ sqltext để nhận phiên SQL hiện tại.
Alkini

27
pistacchio, bạn có 2 "từ TỪ" trong SQL: "chọn * từ TỪ phiên v $"
marcprux

116

Để có câu trả lời đầy đủ hơn, hãy xem: http://dbaforums.org/oracle/index.php?showtopic=16834

select
       substr(a.spid,1,9) pid,
       substr(b.sid,1,5) sid,
       substr(b.serial#,1,5) ser#,
       substr(b.machine,1,6) box,
       substr(b.username,1,10) username,
--       b.server,
       substr(b.osuser,1,8) os_user,
       substr(b.program,1,30) program
from v$session b, v$process a
where
b.paddr = a.addr
and type='USER'
order by spid; 

28

Khi tôi muốn xem các kết nối đến từ máy chủ ứng dụng của chúng tôi đến cơ sở dữ liệu, tôi sử dụng lệnh sau:

SELECT username FROM v$session 
WHERE username IS NOT NULL 
ORDER BY username ASC;

Đơn giản mà hiệu quả.


6
select s.sid as "Sid", s.serial# as "Serial#", nvl(s.username, ' ') as "Username", s.machine as "Machine", s.schemaname as "Schema name", s.logon_time as "Login time", s.program as "Program", s.osuser as "Os user", s.status as "Status", nvl(s.process, ' ') as "OS Process id"
from v$session s
where nvl(s.username, 'a') not like 'a' and status like 'ACTIVE'
order by 1,2

Truy vấn này cố gắng lọc ra tất cả các quy trình nền.


5
Select count(1) From V$session
where status='ACTIVE'
/

5
select
  username,
  osuser,
  terminal,
  utl_inaddr.get_host_address(terminal) IP_ADDRESS
from
  v$session
where
  username is not null
order by
  username,
  osuser;

4
Chào mừng đến với SO! Vui lòng cung cấp một số trực giác cho câu trả lời của bạn.
vefthym


4

Dưới đây cung cấp cho bạn danh sách người dùng hệ điều hành được sắp xếp theo số lượng kết nối, rất hữu ích khi tìm kiếm việc sử dụng tài nguyên quá mức.

select osuser, count(*) as active_conn_count 
from v$session 
group by osuser 
order by active_conn_count desc

1
select 
    count(1) "NO. Of DB Users", 
    to_char(sysdate,'DD-MON-YYYY:HH24:MI:SS') sys_time
from 
    v$session 
where 
    username is NOT  NULL;

1
Mặc dù đoạn mã này có thể giải quyết câu hỏi, bao gồm một lời giải thích thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn.
DimaSan
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.