|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
珍贵的资金可以用于其他业务的启动,诸如市场、广告或调研和开发等。oracle
(转载自:http://fengyu.china.com/lock.htm)
ORACLE锁的办理
2003-03余枫ORACLE里锁有以下几种形式:0:none1: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...forupdate;是2的锁。当对话利用forupdate子串翻开一个游标时,一切前往会合的数据行都将处于行级(Row-X)独有式锁定,其他工具只能查询这些数据行,不克不及举行update、delete或select...forupdate操纵。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语句:selectobject_id,session_id,locked_modefromv$locked_object;selectt2.username,t2.sid,t2.serial#,t2.logon_timefromv$locked_objectt1,v$sessiont2wheret1.session_id=t2.sidorderbyt2.logon_time;假如有临时呈现的一列,多是没有开释的锁。我们能够用上面SQL语句杀失落临时没有开释非一般的锁:altersystemkillsessionsid,serial#;假如呈现了锁的成绩,某个DML操纵大概守候好久没有反响。当你接纳的是间接毗连数据库的体例,也不要用OS体系命令$killprocess_num大概$kill-9process_num来停止用户毗连,由于一个用户历程大概发生一个以上的锁,杀OS历程其实不能完全扫除锁的成绩。记得在数据库级别用altersystemkillsessionsid,serial#;杀失落不一般的锁。
有的时候,一些缺失的功能可以通过别的办法来实现,例如,在MySQL4.1以前,你可以通过使用join方法来替代子查询的功能。在MySQL5.0中,大多数关系型数据库所要求的功能已经都具备。 |
|