• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > 基于oracle中锁的深入理解

基于oracle中锁的深入理解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了oracle 查看锁表,oracle查询锁表语句,oracle查锁表,oracle 行锁,oracle锁表解锁等相关知识,希望本文的分享对您有所帮助

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):独立访问使用

数字越大锁级别越高, 影响的操作越多。
1级锁有:Select,有时会在v$locked_object出现。

2级锁有:Select for update,Lock For Update,Lock Row Share
select for update当对话使用for update子串打开一个光标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其它对象只能查询这些数据行,不能进行update、delete或select for update操作。

3级锁有:Insert, Update, Delete, Lock Row Exclusive
没有commit之前插入同样的一条记录会没有反应, 因为后一个3的锁会一直等待上一个3的锁, 我们必须释放掉上一个才能继续工作。

4级锁有:Create Index, Lock Share locked_mode为2,3,4不影响DML(insert,delete,update,select)操作, 但DDL(alter,drop等)操作会提示ora-00054错误。

ORA-00054: resource busy and acquire with NOWAIT specified
(ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源)

5级锁有:Lock Share Row Exclusive
具体来讲有主外键约束时update / delete ... ; 可能会产生4,5的锁。

当对父表进行修改时,若子表对应的记录存在,则产生ORA-02292
异常;否则只对父表加TX锁和RX锁;

当对子表进行修改时,则除了对子表加加TX锁和RX锁外;对父表
也加了加SS锁,这符合逻辑,因为父表此时必须满足参考完整性;
也就是,对父表加SS锁,避免此时对父表进行修改操作。

上面锁说的修改,都是对子父表存在参考完整性的字段操作的。

6级锁有:Alter table, Drop table, Drop Index, Truncate table, Lock Exclusive
以DBA角色:

如果利用上面的命令杀死一个进程后,进程状态被置为"killed",但是锁定的资源很长时间没有被释放,那么可以在os一级再杀死相应的进程(线程),首先执行下面的语句获得进程(线程)号:
</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 基于oracle中锁的深入理解

相关文章

  • 2017-05-11plsql与tsql的语法不同
  • 2017-08-07Oracle 数据库 练习题 T8
  • 2017-05-11ORACLE数据库查看执行计划的方法
  • 2017-05-11Oracle 11g收集多列统计信息详解
  • 2017-05-11修改oracle数据库用户名及密码的方法
  • 2017-05-11oracle ora-00054:resource busy and acquire with nowait specified解决方法
  • 2017-05-11Oracle SQL中实现indexOf和lastIndexOf功能的思路及代码
  • 2017-05-11Oracle 11g中密码过期问题详解
  • 2017-05-11oracle 数据泵导入导出介绍
  • 2017-05-11Oracle数据库中的级联查询、级联删除、级联更新操作教程

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Oracle 监控索引使用率脚本分享
    • Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)的完美解决方法
    • windows下oracle 11g r2 安装过程与卸载详细图解
    • Oracle数据库--表锁的情况查询
    • oracle 查询当天数据的sql条件写法
    • Oracle数据库安全策略分析(一)第1/2页
    • Oracle并行操作之并行查询实例解析
    • ORACLE实现字段自增示例说明
    • DBA_Oracle Startup / Shutdown启动和关闭过程详解(概念)(对数据库进行各种维护操作)
    • Oracle触发器表发生了变化 触发器不能读它的解决方法(必看)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有