`
lknh
  • 浏览: 25997 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

存储过程批量删除inactive session

 
阅读更多

在系统使用的过程中,数据库会出现很多inactive的session,占用服务器的资源,而这些session很多都是由于客户端以不正常的方式断开或者突然的断网产生的,如果清理掉必将会影响到数据库服务器的性能。我们可以通过select * from v$session WHERE status='INACTIVE' 来查看当前处在inactive 状态的sesion,然后将sid和serial#带入以下语句中将相应的session 杀死。

 alter system kill session 'sid,serial#' immediate;

然而,如果要大量的删除,以上的方法就会显得十分的繁琐,所以考虑通过存储过程来批量的删除,方法如下所示:

create or replace procedure KILL_INACTIVE_SESSIONS authid current_user is

  s VARCHAR2(1000);

  begin

  FOR sess IN (select SID, SERIAL# from v$session s

  where status='INACTIVE' 

        and (program='lg_server.exe' or program='JDBC Thin Client') 

        AND TYPE != 'BACKGROUND' and last_call_et>5000) 

        LOOP

  s := 'alter system kill session '''||sess.sid||','||sess.serial# ||'''immediate ' ;

  EXECUTE IMMEDIATE s;

  END LOOP;

end KILL_INACTIVE_SESSIONS;

 

需要注意的是,在存储过程中要查看系统的视图v$session时必须要给当前的用户授权,否则系统会提示找不到表或视图的错误,语句为:

grant select on v$session to current_user;

同样的在执行kill session 语句时用户需要有alter system的权限,否则会提示权限不足,而给随便给用户授权alter system又是不太严谨的,这个问题我们可以在创建语句中加入authid current_user解决这个问题

分享到:
评论

相关推荐

    精准掌控数据流:MySQL游标在批量更新和删除中的应用

    与批量更新类似,批量删除操作也需要通过调用存储过程来执行: ```sql CALL DeleteBatch(); ``` 通过调用 `DeleteBatch` 存储过程,即可实现批量删除指定状态的记录。 #### 四、代码示例 下面是使用游标进行批量...

    快速杀死oracle的session

    在尝试杀死Session的过程中可能会遇到一些问题,例如`alter system kill session 'sid,serial#'`命令执行失败等。这时可以采取以下步骤: 1. **检查Session状态:** 确认Session的状态是否允许被杀死,以及是否有...

    oraclev$sessionv$session_wait用途详解

    在Oracle数据库管理与优化的过程中,`v$session`与`v$session_wait`视图扮演着至关重要的角色,它们提供了关于当前活动会话及其等待事件的详细信息,这对于诊断性能问题、理解数据库行为以及进行有效的资源管理至关...

    session失效

    在实际应用中,Session的生命周期可以通过设置最大非活动间隔(Max Inactive Interval)来控制。该参数定义了从最后操作Session到Session自动过期的时间间隔。如果在此期间内没有对Session进行任何操作,则Session将...

    SESSION处于KILLED状态下如何找出对应的进程

    在Oracle数据库中,SESSION是指用户连接到数据库并执行操作的会话过程。每个SESSION都有一个唯一的SID(Session ID),它用来标识该会话。SESSION可以被分为不同的状态,如ACTIVE、INACTIVE、KILLED等。 为什么需要...

    plsql_session.docx

    ### Oracle V$SESSION 视图详解与应用 #### 概述 在Oracle数据库管理中,理解和掌握`V$SESSION`视图是非常重要的。这个视图提供了关于当前活动会话(session)的详细信息,包括用户的SID(会话标识符)、执行的SQL...

    存储的挂载.txt

    挂载过程实际上就是将一个文件系统的根目录与另一个目录节点相连接的过程,使得用户可以通过访问后者来访问前者的文件。本文将根据提供的文件内容,详细阐述在Linux操作系统上进行磁盘映射挂载的相关知识。 #### 二...

    如何快速的杀掉Oracle的Session

    2. 应用程序采用会话控制策略,限制用户连接数,但网络问题可能导致死进程,这些进程处于Inactive状态,使用`alter system kill session`命令后,进程状态变为killed,需要Pmon进程慢慢清理,而你可能需要更快的解决...

    oracle_v$session_v$session_wait用途详解

    ### Oracle V$SESSION 和 V$SESSION_WAIT 的详细解析 #### 概述 Oracle 数据库提供了大量的动态性能视图(Dynamic Performance Views),其中 `V$SESSION` 和 `V$SESSION_WAIT` 是两个非常重要的视图,它们能够帮助...

    5G NR RRC_IDLE 和RRC_INACTIVE态描述.DOCX

    本文档为5GNR RRC_IDLE 和RRC_INACTIVE态描述,描述了这两个状态的主要任务,以及相应的服务类型。根据3GPP协议翻译整理而成,仅供学习。

    锁表的SESSION处理方法

    DECODE(C.STATUS, 'INACTIVE', '不活动', 'ACTIVE', '活动') AS 活动情况, C.SERVER, C.SID, C.SERIAL#, C.PROGRAM AS 连接方式, C.LOGON_TIME FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$...

    howto_close_if_inactive.zip_If...

    标题 "howto_close_if_inactive.zip_If..." 暗示了这是一个关于VB6(Visual Basic 6)编程的代码示例,重点在于如何在应用程序无用户活动时自动关闭程序。"If..."标签可能指的是其中涉及的条件判断语句,这是编程中...

    HP P200G3 ISCSI配置过程

    标题 "HP P2000G3 ISCSI配置过程" 涉及的是在Windows Server 2008 R2操作系统环境下配置HP P2000 G3存储系统的ISCSI集群。ISCSI(Internet Small Computer System Interface)是一种网络协议,它允许通过IP网络将...

    Inactive - no progress-开源

    标题中的“Inactive - no progress-开源”可能是指一个开源项目的状态,该项目当前可能处于停滞或者没有更新的状态。在开源社区中,"Inactive"通常意味着项目的维护者或开发团队没有进行进一步的开发工作,可能是...

    inactive-users-action:GitHub Action,用于生成有关GitHub Enterprise Organization中用户活动的报告

    参数token : required的GitHub个人访问令牌,用于有权访问存储库和组织的用户,特定权限: read:org , repo , user:email organization : required要处理的组织的名称since :用来收集日期信息的日期,格式为...

    wordpress插件pro版本 inactive-logout-addon-2.4.0-n.zip

    使用 Inactive Logout 插件可以自动终止非活跃的用户会话,从而在用户离开无人参与的会话时保护站点。 该插件非常易于配置和使用。安装并激活插件后,只需从插件设置中配置空闲超时即可。然后,现在任何长时间无...

    An add-in that helps you hide ’inactive’ pieces of your co

    标题中的“An add-in that helps you hide ’inactive’ pieces of your code in include files”指的是一个插件,它的主要功能是帮助用户在包含文件(include files)中隐藏不活跃的代码段。这种工具对于大型项目...

    nadeko, [INACTIVE] 常数时间 Rust 实验.zip

    nadeko, [INACTIVE] 常数时间 Rust 实验 nadeko是一个实验性的语法扩展,它将函数转换为amd64汇编代码。比如,#[const_time]pub fn add3(a: u8, b: u8, c: u8) -> u8 { return a + b +

    怎样快速查出Oracle 数据库中的锁等待

    - `my_session`:存储会话相关信息。 - `my_lock`:存储锁相关信息。 - `my_sqltext`:存储SQL文本信息。 2. **定期同步数据**:设置定时任务,定期将`v$session`和`v$lock`视图中的数据同步到上述临时表中,...

    Dell MD3200连接windows2003配置

    ### Dell MD3200连接Windows 2003配置详解 #### 一、MDSM软件安装与运行...这一过程不仅增强了数据的安全性和可用性,还提高了存储资源的利用效率。对于依赖大量数据存储和处理的企业而言,掌握这一配置流程至关重要。

Global site tag (gtag.js) - Google Analytics