关于oracle的锁表解决session marked for kill
oracle 使用的过程中,有时候会遇到锁表的情况,数据库增、删、改、查都是会锁表的,但是锁的类型会不同,
大多是行锁,部分会是表锁。
在oracle运行中,一直是有表在锁的,只不过很快一个操作结束,锁就释放了。
但是,总是有操作很慢的时候。
如:一张纪录用户实时数据的大表(1000W数据),为了查询快,加了好几个索引,导致,更新表很慢,一直锁表。
死锁的时候,数据库会一直打trace文件,文件的会比较大(100+M),
如果硬盘空间不足,会导致数据库进程沾满,无法正常使用。并且,死锁是很占用系统资源的。
这种时候,我们就需要将锁表的操作杀掉,以防影响数据库正常运行。
首先,需要查询出什么操作在锁表:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
然后我们就可以得到锁表的session id 和 serialid
使用如下命令可以杀掉session:
alter system kill session '222,333'; (其中222,333分别是上面查询出的sid,serial#)
这样是可以解决死锁的问题的,但是见效比较慢,因为这种做法,其实不会马上杀掉session,是把session标记为"kill"状态,一定时间后再清楚(2小时?)
还有一种见效特别快的操作:
查询session 的process id:
select s.sid,p.spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid = 222
spid 即为session的系统线程。
在unix、linux上,使用root用户,kill线程:
kill -9 # 5555即为上面查询出的spid
在windos 上使用:
orakill orcl
5555 # 5555即为上面查询出的spid
搞定。
关于oracle的锁表解决session marked for kill的更多相关文章
- ora-00031:session marked for kill处理oracle中杀不掉的锁
http://www.cnblogs.com/songdavid/articles/2223869.html 一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定 ...
- 【转】ora-00031:session marked for kill处理oracle中杀不掉的锁
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不 ...
- ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不 ...
- session marked for kill处理oracle中杀不掉的锁
ora-00031:session marked for kill处理oracle中杀不掉的锁 一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长 ...
- 查看oracle是否锁表以及解决方法
Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容.(1)锁表查询的代码有以下的形式: select count ...
- 【转】ora-00031:session marked for kill(标记要终止的会话)解决方法
今天碰到一个问题,有一张表不能操作,很可能是被锁了,首先想到的是kill session,于是执行了下列的脚本找到是哪个session有问题: select object_name, machine, ...
- Oracle数据库锁表及解锁进程
下午代码迁移,更新数据库记录时for update语句无法执行,数据库被锁,KILL掉几个进程搞定. Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实 ...
- Oracle的锁表与解锁
Oracle的锁表与解锁 SELECT /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) ...
- 查看Oracle是否锁表
--Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容. --(1)锁表查询的代码有以下的形式: select ...
随机推荐
- WebForm从客户端中检测到有潜在危险的Request.Form 值的处理办法
从客户端中检测到有潜在危险的 Request.Form 值由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报错上面的错误. 如:在网页的Te ...
- Git之清除已保存的账户
Git会自动保存输入过的用户名.密码. Git的配置文件是-/.gitconfig.可在windows下的GIt Bash.Mac的命令行中,用vim ~/.gitconfig打开. Windows ...
- 将unitest整合和python发送测试报告
废话少说先上代码 # -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/12 21:29' import unittest i ...
- 浅谈Session与Cookie的区别与联系
一.Session的概念 Session 是存放在服务器端的,类似于Session结构来存放用户数据,当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标 ...
- Java_13.1.1 字符串的应用
1获取一个字符串中,另一个字符串出现的次数 思想: 1. indexOf到字符串中到第一次出现的索引 2. 找到的索引+被找字符串长度,截取字符串 3. 计数器++ p ...
- 线特征---Edge Drawing(七)
http://ceng.anadolu.edu.tr/cv/edgedrawing/ References C. Topal, C. Akinlar, Edge Drawing: A Combined ...
- opencv版本的问题
opencv版本的问题(由于我安装了两个版本opencv-2.4.9 and opencv-3.1.0),搜了相关问题,可以通过修改了CMakeList.txt解决此问题. 参考了这个博客:http: ...
- go语言websocket使用与客户端html5调用
我们通过使用如下库创建websocket服务 go get golang.org/x/net/websocket websocket服务端的代码如下: package main; import ( & ...
- go语言中的数组
package main; import ( "fmt" ) func main() { //声明一个数组 var a [3]int; a = [3]int{1, 2, 3}; / ...
- 10.17JS日记
1.变量提升 变量提升是浏览器的一个功能,在运行js代码之前,浏览器会给js一个全局作用域,叫window, window分为两个模块,一个叫做内存模块,一个叫做运行模块,内存模块找到当前作用域下的 ...