当oracle Session被锁死的时候

经常出现一个问题,oracle的某张表突然无法更新了,无论是通过pl/sql Developer 还是通过sqlplus都无法更新,执行update语句或者执行select * from table_name for update 都一样,一直处于执行状态,无法完成,这时候我就猜想是不是session被锁死了呢?带着这个问题,我们写一条SQL语句:

--锁表查询SQL
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;

执行结果如下:

可以看到这一条数据,也就是说,存在那么一个表被锁死了,这时候呢,我们也确认了,之前无法执行update的这张表确实是因为被锁死了所以无法完成更新操作.

如何释放呢?继续执行一条SQl 语句:

ALTER system kill session '601, 802'; 

可以看到601 和802是查询到SID 和Serial ,格式为:alter system kill session ‘sid, serial#‘; 执行完成之后:

没有了被锁死的session了,这时候再去执行我们的表更新操作,可以看到,更新已经没有问题了.

时间: 2025-01-07 04:35:58

当oracle Session被锁死的时候的相关文章

Oracle session连接数和inactive的问题记录

Oracle session连接数和inactive的问题记录 http://timnity.javaeye.com/blog/280383 从上周起,服务器Oracle数据库出现问题,用不到半天,就会报maxsession(150)的问题,肯定是数据库的会话超过最大数了.   由于服务器跑的是文件传输应用,占用的请求和会话肯定很大,因此用户数不大就已经让oracle的会话数达到最大值.   处理方式不外乎两种:扩大oracle最大session数以及清除inactive会话,当然还有,就是从数

Oracle的表锁死以及解锁

oracle 查看锁死的表,锁死的进程. select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao, v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.sid; --解锁 --用db

Oracle session inactive状态临时表数据未清空问题

问题描述:Oracle数据库,java代码使用某数据库实例,获取connection并在使用结束关闭,而session未销毁,而是状态变为inactive从而导致临时表数据未清空. Oracle临时表有session级别和事务级别,正常情况下session级别临时表数据会在session关闭后自动清空.而项目中同时连接了多个实例,2个实例配置参数全部一致,另一个实例在关闭connection后,session自动销毁,该实例session却仅仅是状态在切换. 原因原因??

oracle session和process的关系

什么是session 通俗来讲,session 是通信双方从开始通信到通信结束期间的一个上下文(context).这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器.通过哪个应用程序.哪个用户在登录等信息[在pl/sql developer中,通过Tools-->Sessions可以查看当前数据库的session].session 是和connection同时建立的,两者是对同一件事情不同层次的描述.简单讲,connection是物理上的客户机同服务器段的通信链路,session是逻

oracle session 相关优化

导读: 同学们是不是都用遇到过这种情况,一个业务系统开发期业务并发量只是估算一个值,而系统上线后这个并发量可能会出现溢出或是不够的 情况.在这种情况下我们DBA怎么给出合理的性能优化建议呢?本文就是利用数据给出session并发量的合理值. 目的: 利用数据给出ORACLE性能优化session的合理值. 环境: OS: 6.1 AIX Oracle: 11.2.0.4  rac on 2 nodes 1.实例启动后用户最大并发session? select SESSIONS_CURRENT,S

未开启HugePages ORACLE session剧增时引起的一次悲剧

故障简单描述一下:LINUX系统未开启HugePages,主机内存将近300G,SWAP是32G.ORACLE 的 SGA_MAX_SIZE设置是主机内存的将近80%,SGA_TARGET设置是主机内在的将近60%,正常情况下数据库session大约在将近500.故障当天业务有变化,session数增加了一倍,达到上1000个,内存紧张,用到了SWAP空间. 解决:找时间关数据库,重新配置HugePages,重启数据库后观察,内存消耗较少,与未开启HugePages之前是数量级对比.Hugepa

记一次Oracle session数过多引起进程数超过processes限制最终导致客户端无法连接的问题

RAC突然告警,客户端尝试连接时会报:ORA-12520: TNS:listener could not find available handler for requested type of server 错误. 现整理解决过程,以便于后续遇到此问题时快速处理. 1. 登入服务器,使用sqlplus / as sysdba 发现可以进入数据库. 2. 查看alert日志,发现日志中有个错误信息:ORA-00020: maximum number of processes (2000) exc

oracle session NLS_LANGUAGE

以下代码可以加在程序包里面,用于修改当前session的语言参数. --设置session语言     PROCEDURE p_Set_Nls_Language(Pi_Nls_Lang IN VARCHAR2 DEFAULT 'SIMPLIFIED CHINESE') IS     BEGIN         EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_LANGUAGE=' || Chr(39) ||                           Pi

Oracle 10g安装64位图解流程

1. 安装准备阶段 1.1 安装Oracle环境 本例使用X-Manager来实现与Linux系统的连接,本例使用的所有命令和操作都是在X-Manager下进行.X-Manager安装完成后的配置方法如下: 1. 打开X-Manager的X-Shell 2. 点击New,新建一个连接地址,设置完成后,点击OK 3. 使用用户名,密码进行登录,登录完成后,进入如下图所示画面即成功连接到Linux系统 4. 4 4. 将下载的Oracle数据库的安装包10201_database_linux_x86