一般情况只发生锁超时,就是一个进程需要访问数据库表或者字段的时候,另外一个程序正在执行带锁的访问(比如修改数据),那么这个进程就会等待,当等了很久锁还没有解除的话就会锁超时,报告一个系统错误,拒绝执行相应的SQL操作。发生死锁的情况比较少,比如一个进程需要访问两个资源(数据库表或者字段),当获取一个资源的时候进程就对它执行锁定,然后等待下一个资源空闲,这时候如果另外一个进程也需要两个资源,而已经获得并锁定了第二个资源,那么就会死锁,因为当前进程锁定第一个资源等待第二个资源,而另外一个进程锁定了第二个资源等待第一个资源,两个进程都永远得不到满足。
erp100.com
一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那就是在ORACLE中杀不掉的,在OS一级再杀。
1.下面的语句用来查询哪些对象被锁:selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id = o.object_idandl.session_id=s.sid
2.下面的语句用来杀死一个进程:altersystemkillsession"24,111"(其中24,111分别是上面查询出的sid,serial#)【注】以上两步,可以通过Oracle的管理控制台来执行。
3.如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:selectspid,osuser,s.programfromv$sessions,v$processpwheres.paddr=p.addrands.sid=24(24是上面的sid)4.在OS上杀死这个进程(线程):1)在unix上,用root身份执行命令:#kill-912345(即第3步查询出的spid)2)在windows(unix也适用)用orakill杀死线程,orakill是oracle提供的一个可执行命令,语法为:orakillsidthread其中:sid:表示要杀死的进程属于的实例名thread:是要杀掉的线程号,即第3步查询出的spid。例:c:>orakillorcl12345
首先你要知道表锁住了是不是正常锁?因为任何DML语句都会对表加锁。你要先查一下是那个会话那个sql锁住了表,有可能这是正常业务需求,不建议随便KILLsession,如果这个锁表是正常业务你把sessionkill掉了会影响业务的。建议先查原因再做决定。(1)锁表查询的代码有以下的形式:selectcount(*)fromv$locked_objectselect*fromv$locked_object(2)查看哪个表被锁selectb.owner,b.object_name,a.session_id,a.locked_modefromv$locked_objecta,dba_objectsbwhereb.object_id=a.object_id(3)查看是哪个session引起的selectb.username,b.sid,b.serial#,logon_timefromv$locked_objecta,v$sessionbwherea.session_id=b.sidorderbyb.logon_time(4)查看是哪个sql引起的selectb.username,b.sid,b.serial#,c.*fromv$locked_objecta,v$sessionb,v$sqlcwherea.session_id=b.sidandb.SQL_ID=c.sql_idandc.sql_id=""orderbyb.logon_time(5)杀掉对应进程执行命令:altersystemkillsession"1025,41"其中1025为sid,41为serial#.
在对指定表做append操作,其他再做truncate时候,会产生锁表,如下验证步骤,1、创建测试表,create table test_lock(id number, value varchar2(200))2、执行append语句;并且不做提交,insert /* append*/ into test_lock values(1,1)3、再次执行清表语句,truncate table test_lock报锁表错误,4、查看锁表语句,发现被锁表,select b.object_name, t.* from v$locked_object t, user_objects b where t.object_id = b.object_id
简单地说,锁是为了保证数据的一致性,锁不止存在于oracle,其他数据库一样有,只不过机制上可能大相径庭。至于什么样的操作会锁表,其实锁的种类很多,你所说的锁表大概说的是行级锁——也就是事务锁吧。比如一个update语句,被update的行上会有锁——能阻塞其他事务对这些行进行修改的锁,虽然这时候这张表上也有表级锁,但这个表级锁并不影响其他事务对表中的其他行进行修改,只是会阻碍对这张表的DDL操作。
通过下面的语句查看是否有引发锁表的语句在执行,找到执行用户,然后跟对应的用户沟通select l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#, l.os_user_name, s.machine, s.terminal, a.sql_text, a.action from v$sqlarea a, v$session s, v$locked_object l where l.session_id = s.sid and s.prev_sql_addr = a.address order by sid, s.serial#如果一直没有锁表的语句出现,那可能是对应的表在做DDL操作,如添加索引,也可能引发锁表,这个可以去alert日志里查看下是否有人在添加索引
什么是CRM客户管理系统软件,企业为什么要实施CRM管理系统软件?什么是CRM管理系统?首先,我们需要了解CRM的具体定义—CRM是客户关系管理。客户关系管理是挖掘、分析客户并与之建立长期关系的过程。我们今天听到的CRM一般是指CRM管理系
微信搭建小程序需要域名和服务器吗?理论上你不需要,但是那样的话,你的小程序的所有操作都必须在小程序端完成,也就是微信,不能实现网络交互和存储。相当于我们通常所说的“独立软件”。例如,如果你做一个计算器,你不需要域名或服务器。但是如果你的应用
怎么把QQ空间里的日志设置为私密日志?怎么?1. 打开QQ空间日志,选择私密日志。2. 单击“批量管理”以选择需要传输到我的日志的文章。3. 单击以记录。怎么把私密日志转为公开日志?我找不到发布日志的选项。在哪里可以设置私人日志?选择符号以
tomcat启动原理?Tomcat服务器的工作原理概括如下:1。Tomcat是在JVM中运行的进程。顾名思义,它被定义为“中间件”,是Java项目和JVM之间的中间容器。2. Web项目的本质是大量的资源文件和方法。web项目没有entry
网页设计主要干什么的?网页设计的说法不准确。随着科技的不断发展精细化,网页设计有了更加细致的分工。笔者将其分为以下三类:第一,网页视觉设计。通常,这类人才具有较强的审美意识和艺术技能。它们可以解决色彩搭配和视觉舒适的问题。更多的页面可以知道
资源销售是什么意思?如果你有别人没有的东西,也就是说,你的信息很差。可能是因为你有很多人脉、产品、价格、知识等等。只要别人没有,你所拥有的就可以作为资源出售。人力资源销售怎么做?营销人力资源是一种以人力资源为核心的人力资源管理,但非常善于营
如何使用jconsole远程连接?根据Oracle网站上的文档,在本地使用jconsole没有问题。但是当我从windows连接到Linux(centos5.4)时,我总是无法连接。原因是Linux上JVM给jconsole的RMI配置文件
如何下载旧版本的微信?使用ACE assistant 7.0,您可以下载微信的旧版本,如下所示:1。打开计算机上的软件“ace assistant 7.0”。2. 用数据线连接手机和电脑。3. 连接后,单击“应用程序游戏”。5. 选择相应的
邮储白领贷利率多少?邮政储蓄银行白领贷款利息不高,年平均利率约为5.22%。邮政储蓄银行的白领贷款额度也很高。一般贷款额度在5万元左右,最高贷款额度可达100万元,有效期为3年。总体来看,邮政储蓄银行的白领贷款情况非常好。现在计算一下邮政储
怎么建立个人博客?首先,你必须购买并注册一个域名。现在域名注册的地方很多。你可以去大的登记处买一个。大约60元。建议选择COM域名或CN域名。不过,个人博客最好使用个人名字。注册后,您可以提交实名认证。那些没有实名认证的人无法解决。您可以在