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的更多相关文章

  1. ora-00031:session marked for kill处理oracle中杀不掉的锁

    http://www.cnblogs.com/songdavid/articles/2223869.html 一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定 ...

  2. 【转】ora-00031:session marked for kill处理oracle中杀不掉的锁

    一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不 ...

  3. ORA-00031: session marked for kill 处理Oracle中杀不掉的锁

    一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库.现在提供一种方法解决这种问题,那就是在ORACLE中杀不 ...

  4. session marked for kill处理oracle中杀不掉的锁

    ora-00031:session marked for kill处理oracle中杀不掉的锁   一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长 ...

  5. 查看oracle是否锁表以及解决方法

    Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容.(1)锁表查询的代码有以下的形式: select count ...

  6. 【转】ora-00031:session marked for kill(标记要终止的会话)解决方法

    今天碰到一个问题,有一张表不能操作,很可能是被锁了,首先想到的是kill session,于是执行了下列的脚本找到是哪个session有问题: select object_name, machine, ...

  7. Oracle数据库锁表及解锁进程

    下午代码迁移,更新数据库记录时for update语句无法执行,数据库被锁,KILL掉几个进程搞定. Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实 ...

  8. Oracle的锁表与解锁

    Oracle的锁表与解锁 SELECT /*+ rule */ s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) ...

  9. 查看Oracle是否锁表

    --Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容. --(1)锁表查询的代码有以下的形式: select ...

随机推荐

  1. sizeof 4字节对齐

    #include <iostream> #include<assert.h> using namespace std; typedef struct sys{ char a; ...

  2. 项目总结06:Java Excel文件导入功能HSSFWorkbook(xls)和 XSSFWorkbook (xlsx)

    项目中碰到Excel文件打入数据功能Mark一下 package com.blue.pem.client.util; import java.io.File; import java.io.FileI ...

  3. class configured for Signature (provider: BC) cannot be found

    java.security.NoSuchAlgorithmException: class configured for Signature (provider: BC) cannot be foun ...

  4. No appenders could be found for logger

    在运行代码时,出现下面的错误, log4j:WARN No appenders could be found for logger (genericTest.GenericTest). log4j:W ...

  5. Struts2框架的数据封装一之属性封装(属性封装的第二种方式:封装成javaBean)

    Struts2中提供了两类数据封装的方式? 第一种方式:属性驱动(有两种方式:一个对属性,另外一个是将参数封装到javaBean中) B. 在页面上,使用OGNL表达式进行数据封装.(将参数封装到ja ...

  6. Redhat(RHEL)配置静态IP

    vim /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=itcc.dev GATEWAY=192.168.0.1 v ...

  7. 移动端input 无法获取焦点的问题

    下午遇到一个问题,移动端的input都不能输入了,后来发现是 -webkit-user-select :none ; 在移动端开发中,我们有时有针对性的写一些特殊的重置,比如: * { -webkit ...

  8. 详解Cookie纪要

    参考文档链接:http://mp.weixin.qq.com/s?__biz=MzAxODE2MjM1MA==&mid=2651552892&idx=1&sn=126a1d32 ...

  9. 微软官方的.net开发人员代码示例

    微软官方的.net开发人员代码示例,需要的同学到这里下载: https://code.msdn.microsoft.com/

  10. 自己动手开启QUIC(转载)

    源:https://www.bennythink.com/quic.html#title-0 今天在推上偶然发现 Google 在自己的服务器上启用了 QUIC,QUIC 这东西嘛(发音同 quick ...