มีตารางซ่อนตัวแปรของระบบหรืออะไรที่จะแสดงการเชื่อมต่อที่ใช้งานอยู่ในช่วงเวลาที่กำหนด?
มีตารางซ่อนตัวแปรของระบบหรืออะไรที่จะแสดงการเชื่อมต่อที่ใช้งานอยู่ในช่วงเวลาที่กำหนด?
คำตอบ:
ใช้V$SESSION
มุมมอง
V$SESSION
แสดงข้อมูลเซสชันสำหรับแต่ละเซสชันปัจจุบัน
สำหรับคำตอบที่สมบูรณ์ยิ่งขึ้นโปรดดูที่: 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;
เมื่อฉันต้องการดูการเชื่อมต่อขาเข้าจากแอพพลิเคชันเซิร์ฟเวอร์ของเราไปยังฐานข้อมูลฉันใช้คำสั่งต่อไปนี้:
SELECT username FROM v$session
WHERE username IS NOT NULL
ORDER BY username ASC;
เรียบง่าย แต่มีประสิทธิภาพ
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
แบบสอบถามนี้พยายามกรองกระบวนการพื้นหลังทั้งหมด
Select count(1) From V$session
where status='ACTIVE'
/
select
username,
osuser,
terminal,
utl_inaddr.get_host_address(terminal) IP_ADDRESS
from
v$session
where
username is not null
order by
username,
osuser;
select status, count(1) as connectionCount from V$SESSION group by status;
ต่อไปนี้แสดงรายการผู้ใช้ระบบปฏิบัติการที่เรียงลำดับตามจำนวนการเชื่อมต่อซึ่งมีประโยชน์เมื่อค้นหาการใช้ทรัพยากรมากเกินไป
select osuser, count(*) as active_conn_count
from v$session
group by osuser
order by active_conn_count desc
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;