oracle中加锁与解锁
来源:互联网 发布:json 遍历map 编辑:程序博客网 时间:2024/05/05 09:13
oracle中的数据在并发操作时,为了防止错误的发生可以进行记录或者数据库表的加锁操作。当锁操作完成时可以进行解锁操作。
数据库中加锁有两种方式,独占模式和共享模式。
1.独占模式,不允许其他会话以任何方式共享锁定资源,当进行数据库数据修改时可以使用这种模式。
2.共享模式,允许在数据访问时,并发共同访问,但是当修改数据时上升为独占模式。
锁分为行级锁和表级锁,行级锁是锁定某些行记录,表级锁是锁定整张表。
1.行级锁。
insert update delete (隐式加行锁)
select...for update(显示加行锁,共享模式)
select * from emp where deptno=30 for update update emp set ename='Joke' where empno=7499;在释放锁之前其他用户只能对进行数据查询,不能对数据进行insert、delete和update。
假如有其他用户要锁定同一资源:可以使用wait 子句对锁的等待时间控制 如: 在另一用户中:select * from emp where deptno=30 for update wait 2 (等待2秒 如2秒钟还未释放资源,系统将会给出提示信息。
2.表级锁。
共享模式(in share mode)
共享更新模式(in share update mode) 排他锁模式 锁定表的通用语法:
lock table 表名 in <share or share update or exclusive mode>;
1) 共享模式
不允许其他用户插入,更新和删除行,多个用户可以同时在同一表上设置共享锁,这样设置锁的多个用户都只能执行查询 lock table emp in share mode;
2)共享更新模式(in share update mode)
允许多个用户同时锁定表的不同行, 允许其他用户进行DML(insert update delete select)操作 , 除了已锁定的行
如: lock table emp in share update mode;
select * from emp where deptno=30 for update //锁定的行 其他用户不能delete ,update 部门30的雇员信息
其他用户可以查看锁定的行: select * from emp where deptno=30
3)排他锁模式(限制性强)
不允许其他用户插入,更新和删除行, 允许查看数据,但只有一个用户可以在表中放置排他锁
lock table emp in exclusive mode;
解锁:
(1)锁表查询的代码有以下的形式:select count(*) from v$locked_object;select * from v$locked_object;(2)查看哪个表被锁select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;(3)查看是哪个session引起的select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time; (4)杀掉对应进程执行命令:alter system kill session'1025,41';其中1025为sid,41为serial#.
- oracle中加锁与解锁
- oracle用户解锁与加锁
- Oracle 用户加锁与解锁
- oracle用户解锁/加锁
- 注册表加锁与解锁
- 自动加锁与解锁
- NSLock加锁与解锁
- Oracle解锁与加锁(hr用户为例)
- Oracle解锁与加锁(hr用户为例)
- oracle数据库用户加锁和解锁
- 给oracle数据库用户加锁和解锁
- oracle数据库用户加锁和解锁
- UNIX操作系统中加锁和解锁
- Oracle用户管理系列③----防御黑客:登陆错误限制加锁、解锁操作、以及设置配置文件与用户名关系
- oracle 11g 安装之后如何为用户解锁、加锁
- oracle 为 用户 解锁 加锁 (以hr为例)
- oracle数据库用户加锁、解锁以及修改密码等操作
- Oracle 11g用户修改密码及加锁解锁
- cocos2d_x 问题汇总
- javascript引用类型
- 使用clojure访问SQL Server数据库
- [第4天] 函数——函数的应用(练习02)
- POJ 1852 Ants
- oracle中加锁与解锁
- 三角形
- 使用axis2构建webservice时客户端内存不断增长导致应用服务器频繁重启的解决方案 .
- Android中导致小米系列手机直接崩溃的主要原因。
- Intent 传递InputStream、Bitmap
- 浅谈 PHP 与手机 APP 开发(API 接口开发)
- C语言赋值运算符
- javascript 数组对象中的迭代方法
- HDOJ 5090 Game with Pearls 二分图匹配