`
ithero
  • 浏览: 145601 次
社区版块
存档分类
最新评论

oracle锁.

阅读更多

网上摘抄

查看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解锁语句.txt

    oracle解锁语句,常用解锁语句,经过测试实用;oracle解锁语句,常用解锁语句,经过测试实用。

    Oracle OPatch 12.2.0.1.39

    Oracle OPatch 12.2.0.1.39 是一个重要的软件更新工具,专门用于处理基于Oracle Universal Installer (OUI) 的Oracle Home环境。这个版本的OPatch旨在提高Oracle产品的稳定性和性能,同时也解决了之前版本可能存在的...

    BLOG_Oracle_lhr_Oracle锁系列.pdf

    BLOG_Oracle_lhr_Oracle锁系列.pdfBLOG_Oracle_lhr_Oracle锁系列.pdf

    C:\Users\liuwei\Desktop\oracle解锁命令.txt

    oracle解锁命令oracle解锁命令oracle解锁命令oracle解锁命令

    Oracle的锁表与解锁

    ### Oracle的锁表与解锁:深入理解与操作 在Oracle数据库管理中,锁是一个至关重要的概念,用于控制多个用户或进程对数据的并发访问,确保数据的一致性和完整性。锁可以分为行级锁(Row Level Lock)和表级锁...

    oracle全套ppt教程

    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

    oracle课件.ppt

    改课件共263页,从安装到oracle详细的解读,罗列oracle大纲中涉及到...4.锁、并发、事务 5.表、索引、分区 6.数据类型、函数 7.SQL、视图 8.PL/SQL 9.存储过程、函数、触发器 10.备份恢复 11.ERWIN 12.linux基础、shell

    oracle解锁,死锁

    在深入讨论Oracle解锁和死锁之前,我们首先需要了解Oracle数据库中的锁机制。 1. **共享锁(S)**:允许多个用户读取行,但不允许修改。 2. **排他锁(X)**:允许单个用户修改行,其他用户只能等待。 3. **共享更新锁...

    解锁用户、重置oracle密码.zip

    在Oracle数据库管理中,解锁用户和重置密码是常见的运维任务,主要涉及到对数据库用户的权限管理和安全性控制。本文将详细讲解这两个操作,并提供相关的实践步骤。 首先,让我们了解Oracle数据库中的用户账户。...

    oracle锁表和解锁语句示例.sql

    oracle锁表和解锁语句示例。

    oracle锁表处理

    Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?

    oracle锁机制探讨

    在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁(用来保证表的结构不被用户修改),TX锁称为事务锁或行级锁。当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统...

    Oracle教程.docx

    Oracle教程.docx文档主要介绍了Oracle数据库的基础知识,包括Oracle公司的历史、版本演变、安装过程、重要概念、常用账户以及管理工具。以下是对这些内容的详细解释: 1. Oracle简介: Oracle公司由四位创始人创立...

    Oracle数据库.pdf

    Oracle数据库管理是数据库管理员(DBA)日常工作中不可或缺的一部分,涉及到用户管理、系统参数配置、表空间操作等多个方面。在Oracle环境中,以下是一些关键的知识点: 1. **用户管理**: - `ALTER USER`语句用于...

    unix下oracle命令.zip

    9. **进程与锁管理**: - 查看进程:`SELECT * FROM v$session;` - 解锁表:`ALTER TABLE table_name NOLOCK;` 10. **日志管理**: - 查看redo日志:`SELECT group#, member, status FROM v$log;` - 更改日志组...

    Oracle 例题.rar

    事务是数据库操作的基本单元,而并发控制则处理多用户同时访问同一数据的问题,例如使用锁定机制和乐观锁策略。 6. **分区和分片**:对于大数据量的表,Oracle提供了分区技术,将大表分成较小、更易管理的部分。分...

Global site tag (gtag.js) - Google Analytics