จะแสดงรายการการเชื่อมต่อที่ใช้งาน / เปิดใน Oracle ได้อย่างไร


164

มีตารางซ่อนตัวแปรของระบบหรืออะไรที่จะแสดงการเชื่อมต่อที่ใช้งานอยู่ในช่วงเวลาที่กำหนด?

คำตอบ:


183

ใช้V$SESSIONมุมมอง

V$SESSION แสดงข้อมูลเซสชันสำหรับแต่ละเซสชันปัจจุบัน


5
ข้อผิดพลาดเริ่มต้นที่บรรทัดที่ 1 ในคำสั่ง: เลือก * จาก F $ v เซสชันเซสชันข้อผิดพลาดที่บรรทัดคำสั่ง: 1 คอลัมน์: 14 รายงานข้อผิดพลาด: ข้อผิดพลาด SQL: ORA-00903: ชื่อตารางไม่ถูกต้อง 00903 00000 - "ชื่อตารางไม่ถูกต้อง" * สาเหตุ: * แอ็คชั่น:
pistacchio

3
คุณไม่มีสิทธิ์หรือคุณไม่ได้ติดตั้งมุมมอง DBA อย่างถูกต้อง
S.Lott

4
คุณจะต้องมีบทบาท select_catalog_role
PaulJWilliams

2
คุณสามารถเข้าร่วม v $ sqltext เพื่อรับ SQL ปัจจุบันของเซสชันด้วย
Alkini

27
pistacchio คุณมี 2 "จาก FROM" ใน SQL: "select * from FROM v $ session"
marcprux

116

สำหรับคำตอบที่สมบูรณ์ยิ่งขึ้นโปรดดูที่: 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

เมื่อฉันต้องการดูการเชื่อมต่อขาเข้าจากแอพพลิเคชันเซิร์ฟเวอร์ของเราไปยังฐานข้อมูลฉันใช้คำสั่งต่อไปนี้:

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

เรียบง่าย แต่มีประสิทธิภาพ


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

แบบสอบถามนี้พยายามกรองกระบวนการพื้นหลังทั้งหมด



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
ยินดีต้อนรับสู่ SO! โปรดให้สัญชาตญาณคำตอบของคุณ
vefthym


4

ต่อไปนี้แสดงรายการผู้ใช้ระบบปฏิบัติการที่เรียงลำดับตามจำนวนการเชื่อมต่อซึ่งมีประโยชน์เมื่อค้นหาการใช้ทรัพยากรมากเกินไป

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
ในขณะที่ข้อมูลโค้ดนี้อาจแก้ไขคำถามรวมถึงคำอธิบายช่วยปรับปรุงคุณภาพของโพสต์ของคุณ จำไว้ว่าคุณกำลังตอบคำถามสำหรับผู้อ่านในอนาคตและคนเหล่านั้นอาจไม่ทราบสาเหตุของการแนะนำรหัสของคุณ
DimaSan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.