网上摘抄
查看ORACLE锁的形式有
Select * From All_Objects b Where b.Object_Id In (Select Id1 From V$lock Where Type='TM');
ORACLE里锁有以下几种模式:
0:none
1:null 空
2:Row-S 行共享(RS):共享表锁
3:Row-X 行专用(RX):用于行的修改
4:Share 共享锁(S):阻止其他DML操作
5:S/Row-X 共享行专用(SRX):阻止其他事务操作
6:exclusive 专用(X):独立访问使用
数字越大锁级别越高, 影响的操作越多。
一般的查询语句如select ... from ... ;是小于2的锁, 有时会在v$locked_object出现。
select ... from ... for update; 是2的锁。
当对话使用for update子串打开一个游标时,
所有返回集中的数据行都将处于行级(Row-X)独占式锁定,
其他对象只能查询这些数据行,不能进行update、delete或select...for update操作。
insert / update / delete ... ; 是3的锁。
没有commit之前插入同样的一条记录会没有反应,
因为后一个3的锁会一直等待上一个3的锁, 我们必须释放掉上一个才能继续工作。
创建索引的时候也会产生3,4级别的锁。
locked_mode为2,3,4不影响DML(insert,delete,update,select)操作,
但DDL(alter,drop等)操作会提示ora-00054错误。
有主外键约束时 update / delete ... ; 可能会产生4,5的锁。
DDL语句时是6的锁。
以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句:
select object_id,session_id,locked_mode from v$locked_object;
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;
如果有长期出现的一列,可能是没有释放的锁。
我们可以用下面SQL语句杀掉长期没有释放非正常的锁:
alter system kill session 'sid,serial#';
如果出现了锁的问题, 某个DML操作可能等待很久没有反应。
当你采用的是直接连接数据库的方式,
也不要用OS系统命令 $kill process_num 或者 $kill -9 process_num来终止用户连接,
因为一个用户进程可能产生一个以上的锁, 杀OS进程并不能彻底清除锁的问题。
记得在数据库级别用alter system kill session 'sid,serial#';杀掉不正常的锁。
分享到:
相关推荐
oracle解锁语句,常用解锁语句,经过测试实用;oracle解锁语句,常用解锁语句,经过测试实用。
Oracle OPatch 12.2.0.1.39 是一个重要的软件更新工具,专门用于处理基于Oracle Universal Installer (OUI) 的Oracle Home环境。这个版本的OPatch旨在提高Oracle产品的稳定性和性能,同时也解决了之前版本可能存在的...
BLOG_Oracle_lhr_Oracle锁系列.pdfBLOG_Oracle_lhr_Oracle锁系列.pdf
oracle解锁命令oracle解锁命令oracle解锁命令oracle解锁命令
### Oracle的锁表与解锁:深入理解与操作 在Oracle数据库管理中,锁是一个至关重要的概念,用于控制多个用户或进程对数据的并发访问,确保数据的一致性和完整性。锁可以分为行级锁(Row Level Lock)和表级锁...
0、数据库系统概论.PPT 1、oracle之入门.PPT 2、oracle之查询语句.PPT 3-oracle之DDL和DML.ppt 6、oracle之数据库对象.PPT 8、oracle之安全.ppt 10、oracle之PLSQL基础.PPT 11、oracle之PLSQL高级.PPT...oracle之锁.PPT
改课件共263页,从安装到oracle详细的解读,罗列oracle大纲中涉及到...4.锁、并发、事务 5.表、索引、分区 6.数据类型、函数 7.SQL、视图 8.PL/SQL 9.存储过程、函数、触发器 10.备份恢复 11.ERWIN 12.linux基础、shell
在深入讨论Oracle解锁和死锁之前,我们首先需要了解Oracle数据库中的锁机制。 1. **共享锁(S)**:允许多个用户读取行,但不允许修改。 2. **排他锁(X)**:允许单个用户修改行,其他用户只能等待。 3. **共享更新锁...
在Oracle数据库管理中,解锁用户和重置密码是常见的运维任务,主要涉及到对数据库用户的权限管理和安全性控制。本文将详细讲解这两个操作,并提供相关的实践步骤。 首先,让我们了解Oracle数据库中的用户账户。...
oracle锁表和解锁语句示例。
Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?
在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁(用来保证表的结构不被用户修改),TX锁称为事务锁或行级锁。当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统...
Oracle教程.docx文档主要介绍了Oracle数据库的基础知识,包括Oracle公司的历史、版本演变、安装过程、重要概念、常用账户以及管理工具。以下是对这些内容的详细解释: 1. Oracle简介: Oracle公司由四位创始人创立...
Oracle数据库管理是数据库管理员(DBA)日常工作中不可或缺的一部分,涉及到用户管理、系统参数配置、表空间操作等多个方面。在Oracle环境中,以下是一些关键的知识点: 1. **用户管理**: - `ALTER USER`语句用于...
9. **进程与锁管理**: - 查看进程:`SELECT * FROM v$session;` - 解锁表:`ALTER TABLE table_name NOLOCK;` 10. **日志管理**: - 查看redo日志:`SELECT group#, member, status FROM v$log;` - 更改日志组...
事务是数据库操作的基本单元,而并发控制则处理多用户同时访问同一数据的问题,例如使用锁定机制和乐观锁策略。 6. **分区和分片**:对于大数据量的表,Oracle提供了分区技术,将大表分成较小、更易管理的部分。分...