Як перелічити активні / відкриті з'єднання в Oracle?


164

Чи є якась прихована таблиця, системна змінна чи щось, що показує активні з'єднання в даний момент?

Відповіді:


183

Використовуйте V$SESSIONподання.

V$SESSION відображає інформацію про сеанс для кожного поточного сеансу.


5
Помилка при запуску в рядку 1 в команді: виберіть * з FROM v $ сесія Помилка в командному рядку: 1 стовпець: 14 Повідомлення про помилку: помилка SQL: ORA-00903: недійсне ім'я таблиці 00903. 00000 - «недійсне ім’я таблиці» * Причина: * Дія:
фісташка

3
Або у вас немає дозволів, або ви неправильно встановили представлення даних DBA.
С.Лотт

4
Вам знадобиться роль select_catalog_role.
PaulJWilliams

2
Ви можете приєднатись до $ sqltext, щоб отримати також поточний SQL сеансів.
Алкіні,

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.