劳务公司网站怎么做,如何在网站后台备份数据库表,建商城网站带app多少钱,肇庆建设局网站在开发Oracle数据库时#xff0c;我们常遇到频繁操作的Oracle数据表#xff0c;会出现Oracle锁表。现在就针对这一问题#xff0c;提下个人的解决Oracle锁表的技巧。首先问题分析#xff1a;(1)锁的分析ORACLE里锁有以下几种模式#xff1a;0#xff1a;none1#xff1a…在开发Oracle数据库时我们常遇到频繁操作的Oracle数据表会出现Oracle锁表。现在就针对这一问题提下个人的解决Oracle锁表的技巧。首先问题分析(1)锁的分析ORACLE里锁有以下几种模式0none1null 空2Row-S 行共享(RS)共享表锁sub share3Row-X 行独占(RX)用于行的修改sub exclusive4Share 共享锁(S)阻止其他DML操作share5S/Row-X 共享行独占(SRX)阻止其他事务操作share/sub exclusive6exclusive 独占(X)独立访问使用exclusive 数字越大锁级别越高, 影响的操作越多。1级锁有 S e l e c t 有时会在v$locked_object出现。2级锁有Select for updateLock For UpdateLock Row Share select for update当对话使用for update子串打开一个游标时所有返回集中的数据行都将处于行级(Row-X)独占式锁定其他对象只能查询这些数据行不能进行update、delete或select for update操作。3级锁有InsertUpdateDeleteLock 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错误。00054, 00000, resource busy and acquire with NOWAIT specified // *Cause: Resource interested is busy. //*Action: Retry if necessary.5级锁有Lock Share Row Exclusive 具体来讲有主外键约束时update / delete ... 可能会产生45的锁。6级锁有Alter table, Drop table, Drop Index,Truncate table, Lock Exclusive(2)查询锁方法以DBA角色, 查看当前数据库里锁的情况可以用如下SQL语句select t2.username,t2.sid,t2.serial#,t2.logon_time fromv$locked_object t1,v$session t2 where t1.session_idt2.sidorder by t2.logon_time如果有长期出现的一列可能是没有释放的锁。解决方法(1)释放锁的方法我们可以用下面SQL语句杀掉长期没有释放非正常的锁alter system kill session sid,serial#; //sid,serial#是上面查询出来的(2)系统级杀进程方法释放锁select spid from v$process where addr (select paddrfrom v$session where sidsid);$ kill -9 spid //spid是上面查询出来的(3)注意点如果出现了锁的问题, 某个DML操作可能等待很久没有反应。 当你采用的是直接连接数据库的方式也不要用OS系统命令 $kill process_num 或者 $kill -9 process_num来终止用户连接因为一个用户进程可能产生一个以上的锁杀OS进程并不能彻底清除锁的问题。【编辑推荐】【责任编辑瑞峰 TEL(010)68476606】点赞 0