oracle 数据库当前连接查询 被占用的连接 哪些用户正在使用数据 杀掉进程

发布时间 2023-06-12 17:17:30作者: 一麻袋开心

--查询数据库当前进程的连接数:  
select count(*) from v$process;
--查看数据库当前会话的连接数:
select count(*) from v$session;
--查看数据库的并发连接数:
select count(*) from v$session where status='ACTIVE';
--查看当前数据库建立的会话情况:
select sid,serial#,username,program,machine,status from v$session where username='***';
--查询所有数据库的连接数
select schemaname,count(*) from v$session group by schemaname;
--查询终端用户使用数据库的连接情况。
select osuser,schemaname,count(*) from v$session where schemaname='***' group by schemaname,osuser;
--修改数据库允许的最大连接数:
alter system set processes = 1000 scope = spfile;


--查看当前有哪些用户正在使用数据:
select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine from v$session a,v$sqlarea b where a.sql_address = b.address order by cpu_time/executions desc;

--1.使用SQL语句查询出已被占用的连接:

SELECT s.sid, s.user#, s.serial#, s.status FROM v$session s, v$process p WHERE s.status = 'INACTIVE';

SELECT p.* FROM v$session s, v$process p WHERE s.status = 'INACTIVE' and s.username='***'


--2. 杀掉被占用的连接:

ALTER SYSTEM KILL SESSION 'sid,serial#'

--3. 查询正在运行的数据表:

SELECT p.spid, s.status, s.username FROM v$process p, v$session s WHERE p.addr = s.paddr and s.username='***';

--4. 用户可以查看哪些语句正在运行:

SELECT distinct sql_text FROM v$sql WHERE sql_address in (SELECT sql_address FROM v$session WHERE sid in (SELECT sid FROM v$process WHERE spid = ))