Bagaimana cara mendaftar koneksi aktif / terbuka di Oracle?


164

Apakah ada tabel tersembunyi, variabel sistem atau sesuatu untuk menunjukkan koneksi aktif pada saat tertentu?

Jawaban:


183

Gunakan V$SESSIONview.

V$SESSION menampilkan informasi sesi untuk setiap sesi saat ini.


5
Kesalahan dimulai pada baris 1 pada perintah: pilih * dari FROM sesi $ Kesalahan pada Baris Perintah: 1 Kolom: 14 Laporan kesalahan: SQL Error: ORA-00903: nama tabel tidak valid 00903. 00000 - "nama tabel tidak valid" * Penyebab: * Tindakan:
— pistacchio

3
Entah Anda tidak memiliki izin, atau Anda tidak menginstal tampilan DBA dengan benar.
— S.Lott

4
Anda membutuhkan peran select_catalog_role.
— PaulJWilliams

2
Anda dapat bergabung dengan v $ sqltext untuk mendapatkan sesi SQL saat ini juga.
— Alkini

27
pistacchio, Anda memiliki 2 "dari FROM" di SQL: "select * from FROM v $ session"
— marcprux

116

Untuk jawaban yang lebih lengkap, lihat: 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

Ketika saya ingin melihat koneksi yang masuk dari server aplikasi kami ke database saya menggunakan perintah berikut:

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

Sederhana tetapi efektif.


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

Kueri ini berupaya memfilter semua proses latar belakang.


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
Selamat datang di SO! Harap berikan intuisi untuk jawaban Anda.
— vefthym


4

Berikut ini memberi Anda daftar pengguna sistem operasi yang diurutkan berdasarkan jumlah koneksi, yang berguna saat mencari penggunaan sumber daya yang berlebihan.

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
Sementara potongan kode ini dapat menyelesaikan pertanyaan, termasuk penjelasan sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, dan orang-orang itu mungkin tidak tahu alasan untuk saran kode Anda.
— DimaSan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.