`
zpball
  • 浏览: 910010 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle用户会话信息的查询方法

 
阅读更多
Oracle数据库中的用户会话信息应该如何查询呢?下文对Oracle用户会话信息的查询方法作了详细的描述,希望能对您有所帮助。
AD:
Oracle用户会话相信大家都比较了解,下面为您介绍的就是Oracle用户会话信息的查询方法,该方法供您参考,如果您感兴趣的话,不妨一看。

过V$SESSION视图,可以查询Oracle所有Oracle用户会话信息:

select sid,logon_time,username,machine from v$session;  

通过分组,统计每个不同的用户或主机打开的Oracle用户会话总数:

select username,machine,count(*) from v$session group by username,machine; 

根据SID和SERIAL#可以终止用户会话:

ALTER SYSTEM KILL SESSION 'v_sid,v_serial#' immediate;

Oracle用户会话的SID和SERIAL#可以通过V$SESSION视图查到:

SQL> select sid,serial#,username, machine,status from v$session where username like 'PCNSH%';  
 
     SID    SERIAL# USERNAME     MACHINE                      STATUS  
-------- ---------- --------------- ------------------------------- --------  
     366      14303 PCNSH197    client197.yourdomain.com     INACTIVE  
     369       1745 PCNSH003    server009                    INACTIVE  
     370      10165 PCNSH049    client049.yourdomain.com     INACTIVE  
     371      18999 PCNSH056    client056                    INACTIVE  
     372       6207 PCNSH056    client056                    INACTIVE  
     373       7688 PCNSH197    client197.yourdomain.com     INACTIVE  
     374      19246 PCNSH003    server009                    INACTIVE  
     377      17649 PCNSH003    server009                    INACTIVE  

在Oracle中终止掉的会话只有在这个进程再次尝试连接Oracle时才会被pmon清除,在进程再次尝试连接之前,查询V$SESSION视图时还是可以看到该会话。

当用户会话无法响应时,上面的方法可能无法终止用户会话,只好直接杀死系统进程(谨慎)。

用户会话对应的系统进程可以通过V$SESSION和V$PROCESS两个视图来查询,通过会话的SID和SERIAL#可以查询到系统进程号。

SQL> select p.spid from v$session s, v$process p   
  where p.addr=s.paddr and s.sid=518 and s.serial#=41831;  
 
SPID  
------------  
16782  

然后在操作系统中杀死进程:

kill -9 16782

某些软件会在启动时打开多个会话,当软件异常退出时,要批量的终止这些会话。存储过程基于用户名条件批量终止会话,创建存储过程脚本kill_user.sql如下:

create or replace procedure kill_user(v_name in varchar2)  
as  
message varchar2(50);  
cursor loguser is select sid,serial# from v$session where username=upper(v_name);  
v_info loguser%rowtype;  
sql_mgr varchar2(1000);  
i number default 0;  
begin  
open loguser;  
loop  
fetch loguser into v_info;  
exit when loguser%notfound;  
i :=1;  
sql_mgr :='alter system kill session '''||v_info.sid||','||v_info.serial#||''' immediate';  
execute immediate sql_mgr;  
dbms_output.put_line('All the sessions of '||v_name||' have been killed');  
end loop;  
close loguser;  
if i=0 then  
raise_application_error(-20004,'The user '||v_name||' is not login the database currently!');  
end if;  
exception  
when no_data_found then  
raise_application_error(-20004,'The user '||v_name||' is not login the database currently!');  
end;  
/ 

调用上面存储过程,终止用户所有进程的方法如下:

SQL> execute kill_user('user_name'); 
分享到:
评论

相关推荐

    oracle性能监控sql 监控当前会话 执行的sql及io等信息

    可以使用以下SQL语句来查询会话信息和会话IO: ```sql select a.sid, block_gets, consistent_gets, physical_reads, block_changes, consistent_changes, b.serial#, b.username, b.command, b....

    Oracle用户SQL会话还原方法研究.pdf

    综上所述,本文探讨的是一种在Oracle 8i/9i版本中进行用户会话还原的方法,该方法通过分析事务日志和审计日志中的关键字段,能够还原出用户的完整数据库操作过程,对于数据库的安全审计与监控具有重要意义。...

    ORACLE最大并发数查询

    要查询Oracle数据库的最大并发数,主要通过查看系统参数和监控会话信息来实现。以下是一些常用的方法: 1. **查看初始化参数:** 使用`show parameter`命令可以查看与并发相关的系统参数。例如,执行`show ...

    Oracle经典故障解析 连接数&会话数

    1. 连接数和会话数的概念:在Oracle中,连接数指的是同一时间连接到数据库的用户数量。每次用户通过SQL客户端登录到数据库时,都建立了一个连接。而会话数则是指为这些连接提供的会话的数量,每个连接对应一个或多个...

    BLOG_Oracle_lhr_如何让普通用户可以杀掉自己用户的会话.pdf

    这样的设计可以让普通用户只能查询到自己创建的会话,而不能看到其他用户的会话信息。 接着,创建一个公共同义词(PUBLIC SYNONYM)SYN_MYOWNERSESSION_LHR,它指向刚才创建的视图。由于这个同义词是公共的,所以...

    ORACLE用户常用数据字典的查询使用方法

    ### ORACLE用户常用数据字典的查询使用方法 在Oracle数据库中,数据字典是非常重要的组成部分,它存储了关于数据库自身的重要元数据信息,包括表、视图、索引等对象的信息及其属性。数据字典可以帮助数据库管理员及...

    在Oracle中使用登录触发器初始化用户会话

    在Oracle数据库中,初始化用户会话常常涉及到对特定信息的高效、安全且灵活的管理。Oracle 9i引入了After Logon触发器,这是一种在用户成功登录后自动执行的机制,用于初始化应用程序上下文,从而优化性能并提高安全...

    oracle临时表(事务级、会话级).docx

    3. 当一个会话结束(用户正常退出、用户不正常退出、Oracle 实例崩溃)或者一个事务结束的时候,Oracle 对这个会话的表执行 TRUNCATE 语句清空临时表数据。但不会清空其它会话临时表中的数据。 4. 你可以索引临时表...

    oracle锁表查询oracle锁表查询oracle锁表查询

    在Oracle数据库中,可以通过查询`V$LOCKED_OBJECT`视图来查看当前被锁定的对象信息。该视图包含了所有当前被锁定的对象的信息,包括对象ID、锁定模式等。 ```sql SELECT l.session_id sid, s.serial#, l.locked_...

    Oracle用户数据字典以及查询表字段

    ### Oracle用户数据字典以及查询表字段 在Oracle数据库中,数据字典是存储数据库元数据(即关于数据的数据)的特殊集合。这些元数据包括了数据库对象的名称、类型、属性等信息。数据字典对于数据库管理员和开发人员...

    查询oracle中所有用户信息

    ### 查询Oracle中所有用户信息的知识点 #### 一、概述 在Oracle数据库管理与维护过程中,经常需要查询数据库中的各种用户信息,以便更好地理解和管理数据库环境。本文将详细介绍如何使用SQL命令来查询Oracle数据库...

    ORACLE用户常用数据字典的查询方法

    ### ORACLE用户常用数据字典的查询方法 在Oracle数据库管理与开发中,了解如何有效查询数据字典是非常重要的技能之一。数据字典是数据库管理系统(DBMS)中用来存储有关数据库本身信息的一系列特殊表和视图。通过...

    通用查询分析器(Oracle数据查询)

    在使用时,用户需要配置Oracle数据库的连接信息(如服务器地址、端口、服务名、用户名和密码),然后就可以开始编写并执行SQL查询了。 通过通用查询分析器,无论是初学者还是经验丰富的DBA,都能够更有效地对Oracle...

    Oracle中通过触发器来追踪用户的活动

    在Oracle数据库中,跟踪用户活动是一项重要的管理任务,有助于监控系统的使用...不过,这种追踪机制也有其局限性,例如无法直接获取用户会话期间的所有活动细节,可能需要结合其他审计工具或方法来全面了解用户的行为。

    根据oracle数据库sid及serial#查找操作系统sid号

    - **Serial#**:当用户连接到Oracle数据库时,每个会话都会被分配一个唯一的序列号。这个序列号与SID结合使用,可以唯一地标识出当前会话。 #### Oracle PID - **PID (Process ID)**:在操作系统层面,每个运行的...

    Oracle设置用户权限

    ### Oracle 设置用户权限详解 #### 一、Oracle 创建新用户和密码 在Oracle数据库中,创建新用户是一项基本且重要的管理任务。通过创建用户并分配相应的权限,可以确保数据的安全性和完整性。 ##### 步骤: 1. **...

    oracle常见的锁查询和处理

    这些视图可以帮助识别导致锁冲突的会话信息,查看引起冲突的SQL语句,以及定位被锁定的数据对象。例如,通过`v$session`视图,可以找出持有特定表锁的会话,通过`v$lock`可以查看当前的锁状态。 处理锁冲突: 解决...

    oracle用户的权限详细说明以及赋权的操作

    以上就是Oracle用户权限的详细说明,以及创建用户并为其分配权限的操作方法。作为数据库管理员,理解这些基础知识是管理好Oracle数据库的前提。通过命令行工具和数据库管理系统提供的视图,DBA可以有效地实现权限...

    Oracle查询死锁表

    在Oracle数据库管理与维护的过程中,查询并解决死锁问题是至关重要的一环。死锁是指两个或多个事务在执行过程中因争夺资源而造成的一种僵局状态,若不及时处理,将直接影响到系统的性能和稳定性。本文将围绕“Oracle...

Global site tag (gtag.js) - Google Analytics