首页 / ORACLE / Oracle锁等待的处理方法
Oracle锁等待的处理方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle锁等待的处理方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3078字,纯文字阅读大概需要5分钟。
内容图文
![Oracle锁等待的处理方法](/upload/InfoBanner/zyjiaocheng/556/bf040e2e626a44a1b79019ba68f4145c.jpg)
锁等待的管理是数据库管理员在日常工作中会碰到较多的一个问题,一般来说大型的ERP锁等待的处理会相对较少,小型的应用系统锁等待
前言:锁等待的管理是数据库管理员在日常工作中会碰到较多的一个问题,一般来说大型的ERP锁等待的处理会相对较少,小型的应用系统锁等待会相对比较多。
常规的锁等待的处理方法如下:
1) 先查找持有锁的对象:
脚本:select a.sid, b.spid from (select s.sid, s.paddr from v$session s,v$lock l WHERE l.sid = s.sid and l.block=1) a, v$process b where a.paddr=b.addr;
2)kill相应的session:
脚本:alter system kill session 'sid,serial#';
以上的操作可以处理大约80%的锁等待的问题,还有20%的锁等待问题通过以上的语句是解决不了的,最近在就碰到了一个,当进行kill session的时候出现了提示"ORA-00031: session marked for kill",这个问题可以有两个处理方法:
方法一、重启数据库:这个方法肯定是不推荐的,每个公司对系统的可用性都是有很高的要求的,一旦重启了系统就表示这个重启的过程中系统属于不可用的状态,IT的系统可用性就降低了。(该方法适合不同Oracle且连sqlplus都不知道怎么用的朋友)
方法二、从操作系统进行杀线程的操作,因为unix和windows操作系统的不一样,所以处理的方法也有些不一样;
1)unix和linux下面的操作步骤如下:
a)根据sid的信息找出操作系统的进程信息
脚本:select p.spid, oSUSEr, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=&SID;
SQL> select p.spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=&SID;
Enter value for sid: 23
old 1: select p.spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=&SID
new 1: select p.spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=23
SPID OSUSER PROGRAM
------------ ---------------- -----------------------------------------
8782014 ecqadm dw.sapECQ_DVEBMGS00@joeoneecq (TNS V1-V3)
b) root用户下,通过操作系统进行杀进程
脚本:kill -9 8782014
2)由于windows操作系统下面ORACLE在任务管理只能查看一个oracle.exe的进程,,当然不能直接对这个进程进行结束。oracle提供了相应的操作工具orakill,详细的操作如下:
C:\Users\Administrator>orakill orakill
Usage: orakill sid thread
where sid = the Oracle instance to target
thread = the thread id of the thread to kill
The thread id should be retrieved from the spid column of a query such as:
select spid, osuser, s.program from
v$process p, v$session s where p.addr=s.paddr
orakill sid thread
sid:表示要杀死的进程属于的实例名
thread:是要杀掉的线程号,即第3步查询出的spid。
例:c:>orakill orcl 8782014
总结:公司的ERP系统运行了3年的时间了,数据量也到2TB了,数据库也是公司所有的数据库里面最繁忙的一个了,但是从运行到现在还没有进行过kill session的操作。相比公司的另外一个属于自己开发的系统,数据量10G不到,但是几乎每个月都会出现锁等待,需要DBA从中干预。锁等待或死锁不是数据库的问题而是应用程序的问题,经常遇到有这些问题的应用,恭喜你升官加薪的机会就在眼前。
在CentOS 6.4下安装Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虚拟机中安装步骤
Debian 下 安装 Oracle 11g XE R2
Oracle性能优化 之 共享池
本文永久更新链接地址:
内容总结
以上是互联网集市为您收集整理的Oracle锁等待的处理方法全部内容,希望文章能够帮你解决Oracle锁等待的处理方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。