oracle锁表会话超时时间,ORACLE快速彻底Kill掉的会话,防止锁表

ORACLE快速彻底Kill掉的会话,防止锁表

2020-05-30

编程之家收集整理的这篇文章主要介绍了ORACLE快速彻底Kill掉的会话,防止锁表,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

万能是sql重启服务,不然,以下之:

在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个sql语句杀掉会话后,数据库并不会立即释放掉相关的资源,有时候你会发现锁定的资源很长时间也不会释放,即使会话状态为“KILLED”,依然会阻塞其它会话。

下面根据Eygel的"Oracle中Kill session的研究",构造一个案例看看kill session到底做了什么。如下所示

会话1:

Connected.

sql> update test set status='invalid';

55944 rows updated.

sql> update test2 set dropped='Y';

3090 rows updated.

会话2:

user

USER is "SYS"

update etl.test2 3090 会话3

select saddr,sid,serial#,paddr,username,status from v$session where username =upper('etl') or username ='sys');

SADDR SID SERIAL# PADDR USERNAME STATUS

---------------- ---------- ---------- ---------------- ------------------------------ --------

000000025C233B00 27 33353 000000025F1D1FC8 ETL INACTIVE

000000025C23A608 37 11448 000000025F1D27B0 SYS ACTIVE

000000025C24BC50 63 54311 000000025F1D5F08 SYS ACTIVE

alter system kill '27,33353';

System altered.

SADDR SID SERIAL# PADDR USERNAME STATUS

--------------000000025C233B00 27 33353 000000025C21A0B0 ETL KILLED

000000025C23A608 37 11448 000000025F1D27B0 SYS ACTIVE

000000025C24BC50 63 54311 000000025F1D5F08 SYS INACTIVE

如下所示,我杀掉了其中两个会话后,这两个会话的地址都变为000000025C21A0B0了(请见PADDR列)。当在Oracle中kill session以后,Oracle只是简单的把相关session的paddr 指向同一个虚拟地址.此时v$process和v$session失去关联,进程就此中断。然后Oracle就等待PMON去清除这些Session.所以通常等待一个被标记为Killed的Session退出需要花费很长的时间.如果此时被Kill的process,重新尝试执行任务,那么马上会收到进程中断的提示,process退出,此时Oracle会立即启动PMON来清除该session.这被作为一次异常中断处理.

'63,54311';

000000025C233B00 27 33353 000000025C21A0B0 ETL KILLED

000000025C24BC50 63 54311 000000025C21A0B0 SYS KILLED

我们根据下面sql找到进程的地址,然后在v$process里面找到对应的spid,然后从操作系统中杀掉该进程。

select p.addr from v$process p where pid <> 1

2 minus

3 select s.paddr session s;

ADDR

--

000000025F1D1FC8

000000025F1D5F08

session

000000025C24BC50 63 54311 000000025C21A0B0 SYS KILLED

select addr,pid,spid,username from v$process where addr in ('000000025F1D1FC8','000000025F1D5F08');

ADDR PID SPID USERNAME

-- ---------- ------------ ---------------

000000025F1D1FC8 22 12959 oracle

000000025F1D5F08 38 12971 oracle

sql> ! kill -9 12959

kill -9 12971

000000025C23A608 37 11448 000000025F1D27B0 SYS ACTIVE

在ORACLE数据库杀掉会话进程有三种方式:

1: ALTER SYSTEM KILL SESSION

关于KILL SESSION Clause ,如下官方文档描述所示,alter system kill session实际上不是真正的杀死会话,它只是将会话标记为终止。等待PMON进程来清除会话。

The KILL SESSION clause lets you mark a session as terminated,roll back ongoing transactions,release all session locks,and partially recover session resources. To use this clause,your instance must have the database open. Your session and the session to be terminated must be on the same instance unless you specify integer3.You must identify the session with the following values from the V$SESSION view:

For integer1,specify the value of the SID column.

For integer2,specify the value of the SERIAL# column.

For the optional integer3,specify the ID of the instance where the target session to be killed exists. You can find the instance ID by querying the GV$ tables.

If the session is performing some activity that must be completed,such as waiting for a reply from a remote database or rolling back a transaction,255)">then Oracle Database waits for this activity to complete,marks the session as terminated,and then returns control to you. If the waiting lasts a minute,255)">then Oracle Database marks the session to be terminated and returns control to you with a message that the session is marked to be terminated. The PMON background process then marks the session as terminated when the activity is complete.

Whether or not the session has an ongoing transaction,Oracle Database does not recover the entire session state until the session user issues a request to the session and receives a message that the session has been terminated.

可以使用ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE 来快速回滚事物、释放会话的相关锁、立即返回当前会话的控制权。

Specify IMMEDIATE to instruct Oracle Database to roll back ongoing transactions,recover the entire session state,and return control to you immediately.

2: ALTER SYSTEM DISCONNECT SESSION

ALTER SYSTEM DISCONNECT SESSION 杀掉专用服务器(DEDICATED SERVER)或共享服务器的连接会话,它等价于从操作系统杀掉进程。它有两个选项POST_TRANSACTION和IMMEDIATE, 其中POST_TRANSACTION表示等待事务完成后断开会话,IMMEDIATE表示中断会话,立即回滚事务。

sql> ALTER SYSTEM DISCONNECT SESSION 'sid,serial#' POST_TRANSACTION;

3: KILL -9 SPID (Linux) 或 orakill ORACLE_SID spid (Windows)

可以使用下面sql语句找到对应的操作系统进程SPID,然后杀掉。当然杀掉操作系统进程是一件危险的事情,尤其不要误杀。所以在执行前,一定要谨慎确认。

SET LINESIZE 100

COLUMN spid FORMAT A10

COLUMN username FORMAT A10

COLUMN program FORMAT A45

SELECT s.inst_id,

s.sid,244)"> s.serial#,monospace; width:878.046875px; padding:0px; direction:ltr; line-height:12pt; background-color:white"> p.spid,244)"> s.username,monospace; width:878.046875px; padding:0px; direction:ltr; line-height:12pt; background-color:white"> s.program

FROM gv$session s

JOIN gv$process p ON p.addr = s.paddr AND p.inst_id = s.inst_id

WHERE s.type != 'BACKGROUND';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

格式化文本

1.后台获取文本后文本内部存在回车&#xff0c;但是浏览器不能编译\n\t所以使用pre,使文本能够编译文本&#xff0c;2.若文本长度超出预设宽度&#xff0c;可以添加样式&#xff0c;下列代码&#xff0c;可以使超出后的文本自动换行。/*将文本解析为段落,是段落自动化行*/pre {…

webstorm快捷键

Ctrl/ 或 CtrlShift/ 注释&#xff08;// 或者/*…*/ &#xff09; ShiftF6 重构-重命名 CtrlX 删除行 CtrlD 复制行 CtrlG 查找行 CtrlShiftUp/Down 代码向上/下移动。 F2 或ShiftF2 高亮错误或警告快速定位 写代码&#xff0c;按Tab 生成代码 选中文本&#…

vue支付密码

从网上搜索了好多都很麻烦&#xff0c;花了点事件自己做了个&#xff0c;简单轻便&#xff0c;老少皆宜 <template> <section class"pay-mask" click"close_mask" v-show"payshow"> <div class"container"> <div…

打造智能建筑商

构建API时&#xff0c;您应该始终考虑谁将使用它。 当API简单易用时&#xff0c;用户就会感到满意。 当用户满意时&#xff0c;每个人也都会满意。 但是出色的可用性并非总是容易实现的。 有一些模式对此有所帮助&#xff0c;在这篇文章中&#xff0c;我将重点介绍经典的构建器…

结合BeautyEye开源UI框架实现的较美观的Java桌面程序

BeautyJavaSwingRobot 结合BeautyEye开源UI框架实现的较美观的Java桌面程序&#xff0c;主要功能就是图灵机器人和一个2345网站万年历的抓取。。。。   挺简单而且实用的一个项目&#xff0c;实现出来的效果也还不错。希望可以学到知识的小可爱不对应该是帅哥&#xff0c;可…

oracle外表日期,三步教会您掌握oracle外表(external table)

三步教会你掌握oracle外表(external table)外表(externaltable)就像普通的表对像一样&#xff0c;可以select等&#xff0c;只是它是只读的&#xff0c;数据库中只保存了表结构的描述&#xff0c;表数据却没有存放在数据库内&#xff0c;而是存放在了文件系统上。当用户想偶尔使…

【从入门到放弃】23种设计模式(1):设计模式综述

一、设计模式的分类 总体来说设计模式分为三大类&#xff1a; 创建型模式&#xff0c;共五种&#xff1a;工厂方法模式&#xff08;Factory Method&#xff09;、抽象工厂模式&#xff08;Abstract Factory&#xff09;、单例模式&#xff08;Singleton&#xff09;、建造者模式…

Bootstrap警告框

前面的话 在网站中&#xff0c;网页总是需要和用户一起做沟通与交流。特别是当用户操作上下文为用户提供一些有效的警示框&#xff0c;比如说告诉用户操作成功、操作错误、提示或者警告等。在Bootstrap框架有一个独立的组件&#xff0c;实现类似的效果&#xff0c;这个组件被称…

python doctest测试

title: Python doctest测试 tags: Python --- doctest测试 python 提供了REPL&#xff08;read-eval-print loop&#xff0c;读取、求值、输出的循环&#xff09; 官方地址&#xff1a;https://docs.python.org/3/library/doctest.html """ This is the "e…

异步CDI事件

几天前&#xff0c;在我们的常规代码审查中&#xff0c;我的一位同事提出了一个问题&#xff0c;即如果可能&#xff0c;一次同时调用CDI观察者&#xff08;这样的方法带有参数Observes的方法&#xff09;会发生什么&#xff1f;用于不同的事件实例。 换句话说&#xff0c;在产…

oracle改了包怎么保存,Oracle存储过程、包、方法使用总结(推荐)

/***author&#xff1a;zhengwei*date:2017-04-28*desc:存储过程用法总结*/CREATE OR REPLACE PROCEDURE MYPROCEDURE(P_ID IN VARCHAR,P_STATUS OUT VARCHAR) --P_ID为输入参数 ,P_STATUS为输出参数AS---变量声明T_STATUS VARCHAR2(20);T_ID NUMBER;V_POSTYPE VARCHAR2(20);V_…

【2017级面向对象程序设计】第2次成绩排行

作业地址 https://edu.cnblogs.com/campus/fzu/OOP/homework/1864 评分标准 1&#xff09; C 流程图 or 文字描述程序结构 5分C 类图 or 文字描述程序结构 5分2&#xff09; 代码 共 10 分构造函数 &#xff1a;2 分析构函数 &#xff1a;2 分成员函数 显示当前所处楼层&#x…

css定位position

闲言碎语不多说&#xff0c;直接开写&#xff01; 关于定位 我们可以使用css的position属性来设置元素定位类型&#xff0c;position的设置项如下&#xff1a; a、relative生成相对定位元素&#xff0c;元素所占据的文档流的位置不变&#xff08;即元素不会脱离文档流&#x…

Spring Security登录

1.简介 本文将重点介绍使用Spring Security登录 。 我们将在前面的简单Spring MVC示例的基础上构建&#xff0c;因为这是设置Web应用程序和登录机制的必要部分。 2. Maven依赖 要将Maven依赖项添加到项目中&#xff0c;请参阅Spring Security with Maven文章 。 标准的spring-…

php运城,运城php培训

作用域&#xff1a;全局的request恳求   描绘&#xff1a;经过在Global中完成Application_Error办法&#xff0c;来到达侦听未经处置的异常   详细代码如下&#xff1a;sudo dtrace -qFn pid$target:Finding?Ray:Finding?Ray:r{ printf("%s\n", probefunc); } …

sql语句使用、说明及技巧

一、基础 1、说明&#xff1a;创建数据库CREATE DATABASE database-name 2、说明&#xff1a;删除数据库drop database dbname3、说明&#xff1a;备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- …

利用爬虫模拟网页微信wechat

1.登录页面&#xff0c;显示二维码 当我们打开网页微信时&#xff0c;会看到一个用于扫码登录的二维码&#xff0c;所以我们要模拟该页面给我们的页面也弄一个二维码 通过查看网页代码我们发现&#xff0c;这个二维码的标签为 这个src属性的最后一段每次访问都是不同的&#xf…

Bootstrap分页

前面的话 分页导航几乎在每个网站都可见&#xff0c;好的分页能给用户带来好的用户体验。本文将详细介绍Bootstrap分页 概述 在Bootstrap框架中提供了两种分页导航&#xff1a; ☑ 带页码的分页导航 ☑ 带翻页的分页导航 页码分页 带页码的分页导航&#xff0c;可能是最常见…

php 查询and or,php – SQL查询多个AND和OR不起作用

我有一个包含由双管分隔的值的单元格.我试图用以下内容搜索这个单元格的内容,(其中10是要搜索的数字)&#xff1f;,10&#xff05;,&#xff1f;&#xff05;和10我的查询似乎只返回10.没有其他变化.有人可以告诉我为什么它不起作用&#xff1f;提前谢谢了. (您在下面看到的SQL…

[codevs1213]解的个数 二分 + exgcd

题目← 扩欧&#xff0c;求不定方程解的个数 我们已经知道通解x0 x - (b/gcd(a,b))t&#xff0c;那只要知道有多少个t使x在题目给定的范围中就行了 但还有y 怎么办&#xff1f;求交集&#xff01; 分别二分确定在x取值范围内合法的t的范围和在y取值范围内合法的t的范围 然后交…