oracle查看表锁并解锁

oracle查看表锁并解锁

当在一个应用程序能改动数据库,而其他应用程序都不能改动时,基本就说明表被锁了

查看锁

执行命令:select * from v$locked_object;

如果出现表或视图不存在的错误,是因为用户权限不够

以系统身份登陆oracle服务器授权:
grant select any dictionary to 用户名;

再次执行上面的命令:

c9470acebb96289e482e7feaedca2d1

其中locked_mode的取值为:

0:none
1:null 空
2:Row-S 行共享(RS):共享表锁,sub share
3:Row-X 行独占(RX):用于行的修改,sub exclusive
4:Share 共享锁(S):阻止其他DML操作,share
5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive
6:exclusive 独占(X):独立访问使用,exclusive

直接根据process解锁(Linux:kill -9 10856;Windows:taskkill /pid 10856 /F)就行,如果想查看更详细点的信息,可使用下面两条命令查看:

  • 根据object_id查看表名:select * from user_objects where object_id = 269827;

  • 查看表名被锁的行:select * from ALGOJR_TPARAMETERS for update skip locked;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle中的表锁是一种非常重要的锁定机制,它可以保证在某些情况下对表的访问是串行化的,从而保证数据的一致性和完整性。在Oracle中,表锁有两种类型:共享锁和排他锁。 历史表锁是一种特殊的表锁,它可以用来锁定一个表的历史记录。历史表锁Oracle 10g引入的新功能,它可以在对表进行DDL操作时保护表的历史记录。 在Oracle中,表的历史记录是存储在表的undo段中的。当对表进行DDL操作时,Oracle会将表的历史记录保存到表的redo日志中,以便在出现故障时可以进行恢复。但是,在某些情况下,对表进行DDL操作可能会导致表的历史记录被删除或修改,从而导致数据的不一致性和完整性问题。为了解决这个问题,Oracle引入了历史表锁。 使用历史表锁可以确保在对表进行DDL操作时,表的历史记录不会被删除或修改。在进行DDL操作之前,需要获取历史表锁。获取历史表锁的方式与普通的表锁类似,可以使用LOCK TABLE语句来获取历史表锁。例如: LOCK TABLE mytable IN EXCLUSIVE MODE NOWAIT; 在获取历史表锁之后,就可以对表进行DDL操作了。在DDL操作完成后,需要释放历史表锁。释放历史表锁的方式与普通的表锁也类似,可以使用UNLOCK TABLE语句来释放历史表锁。例如: UNLOCK TABLE mytable; 需要注意的是,使用历史表锁会对系统的性能产生一定的影响,因此应该尽量避免在高并发的环境中使用历史表锁。另外,在使用历史表锁时,应该注意锁的粒度,尽量减少锁的粒度,以避免对系统的性能产生过大的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值