• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Oracle锁表处理方式

    发布者: 山止川行 | 发布时间: 2025-6-18 09:27| 查看数: 124| 评论数: 0|帖子模式

    Oracle锁表处理


    1.查看被锁的表
    1. select b.owner,b.object_name,a.session_id,a.locked_mode
    2. from v$locked_object a,dba_objects b
    3. where b.object_id = a.object_id
    复制代码
    2.查看锁表的进程
    1. select a.OS_USER_NAME, c.owner, c.object_name, b.sid, b.serial#, logon_time
    2.   from v$locked_object a, v$session b, dba_objects c
    3. where a.session_id = b.sid
    4.    and a.object_id = c.object_id
    5. order by b.logon_time;
    复制代码
    3.杀死进程
    1. -- immediate 添加为立即结束
    2. alter system kill session 'sid,serial' immediate
    复制代码
    注:执行步骤3,可能存在权限不足的问题
    解决方式:
    1. GRANT ALTER SYSTEM TO <username>;
    复制代码
    步骤3执行完,锁表已正常解决

    4.查找对应进程号

    步骤3可能存在‘ORA-00027: 无法终止当前会话’ 错误。
    此时,需要通过杀死对应的进程号来解决
    1. 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系统
    1. kill -9 进程号
    复制代码

    • Windows系统
    1.任务管理器直接终止相应的PID
    2.命令行
    1. orakill sid spid
    复制代码
    sid 是数据库实例名

    总结

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

    来源:https://www.jb51.net/database/330969q24.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表