Wie liste ich aktive / offene Verbindungen in Oracle auf?

164

Gibt es eine versteckte Tabelle, Systemvariable oder etwas, das in einem bestimmten Moment aktive Verbindungen anzeigt?

Pistacchio
quelle

Antworten:

183

Verwenden Sie die V$SESSIONAnsicht.

V$SESSION Zeigt Sitzungsinformationen für jede aktuelle Sitzung an.

PaulJWilliams
quelle
5
Fehler ab Zeile 1 im Befehl: Wählen Sie * aus FROM v $ session aus. Fehler in der Befehlszeile: 1 Spalte: 14 Fehlerbericht: SQL-Fehler: ORA-00903: Ungültiger Tabellenname 00903. 00000 - "Ungültiger Tabellenname" * Ursache: * Aktion:
Pistacchio
3
Entweder haben Sie keine Berechtigungen oder Sie haben die DBA-Ansichten nicht richtig installiert.
S.Lott
4
Sie benötigen die Rolle select_catalog_role.
PaulJWilliams
2
Sie können v $ sqltext beitreten, um auch die aktuelle SQL von Sitzungen abzurufen.
Alkini
27
pistacchio, Sie haben 2 "von FROM" in der SQL: "Wählen Sie * von FROM v $ Sitzung"
marcprux
115

Eine vollständigere Antwort finden Sie unter: 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; 
ehrhardt
quelle
28

Wenn ich eingehende Verbindungen von unseren Anwendungsservern zur Datenbank anzeigen möchte, verwende ich den folgenden Befehl:

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

Einfach aber effektiv.

user2021477
quelle
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

Diese Abfrage versucht, alle Hintergrundprozesse herauszufiltern.

Alan
quelle
5
Select count(1) From V$session
where status='ACTIVE'
/
Juber
quelle
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;
user3848789
quelle
4
Willkommen bei SO! Bitte geben Sie eine Intuition für Ihre Antworten.
Vefthym
4
select status, count(1) as connectionCount from V$SESSION group by status;
Fletch F Fletch
quelle
4

Im Folgenden finden Sie eine Liste der Betriebssystembenutzer, sortiert nach Anzahl der Verbindungen. Dies ist hilfreich, wenn Sie nach einer übermäßigen Ressourcennutzung suchen.

select osuser, count(*) as active_conn_count 
from v$session 
group by osuser 
order by active_conn_count desc
jediz
quelle
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;
kirankumar M.
quelle
1
Während dieses Code-Snippet die Frage lösen kann, hilft eine Erklärung wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in Zukunft beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen.
DimaSan