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.