li
  当前位置:主页 > 配置管理 > 文章内容
li
查找引起死锁的操作解决死锁问题
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-05-09   阅读:12  
本文章共1969字,分2页,当前第1页,快速翻页:
 
说道死锁问题的解决,一般情况下我们都是选择KILL进程,但如果不查出引起死锁的原因,死锁的现象则会频繁出现,其实只要通过查找引起死锁的的操作,就可以方便的解决死锁。

    具体的解决方法如下:

    1.再死锁发生时,我们可以通过下面的语法,查询到引起死锁的操作:

    use master

    go

    declare @spid int,@bl int

    DECLARE s_cur CURSOR FOR

    select 0 ,blocked

    from (select * from sysprocesses where blocked>0 ) a

    where not exists(select * from (select * from sysprocesses where blocked>0 ) b

    where a.blocked=spid)

    union select spid,blocked from sysprocesses where blocked>0

    OPEN s_cur

    FETCH NEXT FROM s_cur INTO @spid,@bl

    WHILE @@FETCH_STATUS = 0

    begin

    if @spid =0

    select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'

    else

    select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'

    DBCC INPUTBUFFER (@bl )

    FETCH NEXT FROM s_cur INTO @spid,@bl

    end

    CLOSE s_cur

    DEALLOCATE s_cur

    exec sp_who2

    2.然后查找程序/数据库,此t_sql语法具体在什么地方使用。

    3.分析已经找到的,解决问题。

    EG:

    /*

  -------------------------------------------------------

    引起数据库死锁的是: 71进程号,其执行的SQL语法如下

    EventType Parameters EventInfo

  -------------- ---------- ------------------------------

    Language Event 0

    select * from test

    insert test values(1,2)

    (所影响的行数为 1 行)

    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

  ------------------------------------------------------------

    进程号SPID:64被进程号SPID:71阻塞,其当前进程执行的SQL语法如下

www.ixdba.net


    EventType Parameters EventInfo

  -------------- ---------- ---------------------------------

    Language Event 0

    select * from test

    insert test values(1,2)

    (所影响的行数为 1 行)

    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

  -------------------------------------------------------------

    进程号SPID:65被进程号SPID:64阻塞,其当前进程执行的SQL语法如下

    EventType Parameters EventInfo

  -------------- ---------- -------------------------------------

    Language Event 0 begin tran

    select * from test with (holdlock)



阅读更多内容1 · 2 · 下一页>>


  上一篇: oracle 日志文件"alert log"过大...   下一篇: 如何使用"Automatic SGA Managem...
li
 §相关评论  
 热点文章

·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 编辑推荐
·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 相关篇章
·oracle 日志文件"alert log"过大...
·oracle dba与系统管理员的共同点...
·与操作系统相关的oracle知识问答
·Oracle数据库 ASM功能简介
·如何升级oracle10.2.0到oracle 1...
·将ORACLE数据库的数据倒入到EXCE...
·UNIX裸设备和文件系统之间移动OR...
·Oracle常用网址,欢迎各位网友补...
·Oracle常用数据字典总结
·Red Hat Linux AS4_U1 上安装 Or...
·如何使用"Automatic SGA Managem...
·怎样修改 DB Control 的服务端口
·修改了监听端口, 怎样保证 DB Co...
·Oracle数据库中的Kill session灵...
·Linux下oracle启动脚本DBSTART和...
·如何将 EXP 出来的数据 IMP 进不...
·oracle数据库基本表空间介绍
·oracle常见基本问题总结
·怎么样生成日期格式的文件
·sqlplus怎么与shell结合使用
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接