欢迎投稿

今日深度:

Oracle锁表处理方式,

Oracle锁表处理方式,


目录
  • Oracle锁表处理
    • 1.查看被锁的表
    • 2.查看锁表的进程
    • 3.杀死进程
    • 4.查找对应进程号
    • 5.杀死进程
  • 总结

    Oracle锁表处理

    1.查看被锁的表

    select b.owner,b.object_name,a.session_id,a.locked_mode
    from v$locked_object a,dba_objects b
    where b.object_id = a.object_id

    2.查看锁表的进程

    select a.OS_USER_NAME, c.owner, c.object_name, b.sid, b.serial#, logon_time
      from v$locked_object a, v$session b, dba_objects c
     where a.session_id = b.sid
       and a.object_id = c.object_id 
     order by b.logon_time;

    3.杀死进程

     -- immediate 添加为立即结束
     alter system kill session 'sid,serial' immediate

    注:执行步骤3,可能存在权限不足的问题

    解决方式:

    GRANT ALTER SYSTEM TO <username>;

    步骤3执行完,锁表已正常解决

    4.查找对应进程号

    步骤3可能存在‘ORA-00027: 无法终止当前会话’ 错误。

    此时,需要通过杀死对应的进程号来解决

    select a.SID,a.USERNAME,a.status,a.process,b.SPID from v$session a,v$process b where a.PADDR=b.ADDR;

    5.杀死进程

    • Linux系统
    kill -9 进程号
    • Windows系统

    1.任务管理器直接终止相应的PID

    2.命令行

    orakill sid spid

    sid 是数据库实例名

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持PHP之友。

    您可能感兴趣的文章:
    • Oracle锁表问题的解决方法
    • Oracle查锁表的实现(史上最全)
    • Oracle解锁表、包、用户、杀会话、停job的方法实现
    • oracle数据库锁表的原因及解决方法

    www.htsjk.Com true http://www.htsjk.com/oracle/48609.html NewsArticle Oracle锁表处理方式, 目录 Oracle锁表处理 1.查看被锁的表 2.查看锁表的进程 3.杀死进程 4.查找对应进程号 5.杀死进程 总结 Oracle锁表处理 1.查看被锁的表 select b.owner,b.object_name,a.session_i...
    评论暂时关闭