oracle共享锁和排他锁 Oracle for update获得:1.RS:表级行共享。2.行级行共享更新,只允许查询不可更新。PS:表级才有共享锁,行级无共享锁。--个人理解,你自己理解试试。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、表行锁。2、共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务职能读取数据,不能修改数据。排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能在对A加任何类型的封锁。获准排他锁的事务既能读取数据,也能修改数据。数据库死锁的原因:若干事务相互等待对方释放封锁,就陷入了无限期等待状态,系统进入死锁。预防数据库死锁的方法:1、要求一个事务必须一次性封锁所需要的所有数据(要么全成功,要么全部成功)2、规定封锁数据的顺序,所有事务必须按照这个顺序实行封锁解除数据库死锁的方法:允许死锁发生,然后解除它,如果发现死锁,则将其中一个代价较小的事务撤销,回滚这个事务,并释放此事务持有的封锁,使其他事务继续进行。 谢谢讲解 - -另外请问一下:“如果事务T对数据A加上排他锁,事务T对数据A加上共享锁”这个如何加呢?能举个例子么?什么样的操作是加排他锁,什么样的操作是加共享锁? SQL> select * from v$mystat where rownum=1; SID STATISTIC# VALUE---------- ---------- ---------- 134 0 1SQL> select * from emp where empno=7788 for update; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7788 SCOTT ANALYST 7566 19-4月 -87 3000 20SQL> set linesize 2000SQL> select * from v$lock where sid=134;ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------208344BC 208344D0 134 TO 8706 1 3 0 16778 01FDC4584 1FDC459C 134 TM 51151 0 3 0 113 01FE307AC 1FE308C8 134 TX 131101 9567 6 0 16778 0TM:表级锁TX:行级排它锁 有关oracle11g分区表的问题,新人求解答 ORA-09817 ORA-09945 Linux Error: 28: oracle 连接 诡异问题 再问个这种存储过程当有记录返回记录没记录就返回-1,一定要存储过程的,谢谢 大公司大企业的程序员们请进? 求一句sql语句.......... 如何检查到“用户对ORACLE的所有操作痕迹”的日志 一个简单的问题,请指教!谢谢 UP都有分~~Oracle为什么老是有错,可以随便愿意留下联系方法吗?(QQ优先) 怎样判断一个事务是否成功? 表分析对正常的dml语句影响有多大 为何大公司会用oracle的?
2、共享锁(S锁):
如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务职能读取数据,不能修改数据。
排他锁(X锁):
如果事务T对数据A加上排他锁后,则其他事务不能在对A加任何类型的封锁。获准排他锁的事务既能读取数据,也能修改数据。
数据库死锁的原因:若干事务相互等待对方释放封锁,就陷入了无限期等待状态,系统进入死锁。
预防数据库死锁的方法:
1、要求一个事务必须一次性封锁所需要的所有数据(要么全成功,要么全部成功)
2、规定封锁数据的顺序,所有事务必须按照这个顺序实行封锁
解除数据库死锁的方法:允许死锁发生,然后解除它,如果发现死锁,则将其中一个代价较小的事务撤销,回滚这个事务,并释放此事务持有的封锁,使其他事务继续进行。
另外请问一下:“如果事务T对数据A加上排他锁,事务T对数据A加上共享锁”这个如何加呢?
能举个例子么?什么样的操作是加排他锁,什么样的操作是加共享锁?
---------- ---------- ----------
134 0 1SQL> select * from emp where empno=7788 for update; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20SQL> set linesize 2000
SQL> select * from v$lock where sid=134;ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
-------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
208344BC 208344D0 134 TO 8706 1 3 0 16778 0
1FDC4584 1FDC459C 134 TM 51151 0 3 0 113 0
1FE307AC 1FE308C8 134 TX 131101 9567 6 0 16778 0
TM:表级锁
TX:行级排它锁