欢迎来到天天文库
浏览记录
ID:35515180
大小:104.50 KB
页数:9页
时间:2019-03-25
《oracle数据库中锁、序列、索引管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、详析Oracle数据库中锁、序列、索引管理一、锁1.1什么是锁数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。而锁就是用于控制事务对数据的访问,实现事务的并发控制,保持数据库的一致性。1.2锁的类型DDL锁:被Oracle自动的发布和释放DML锁:在事务处理的开始时被施加,而且在事务处理完成时被释放(使用Commit或Rollback时被释放)内部锁:由Oracle自己管理以保护内部数据库结构注:DDL锁由数据库自动管理;DM
2、L锁和内部锁可以由用户直接或间接管理。1.3锁的粒度1)TX锁:行级锁(事务锁),会阻止这行上其它DML操作,直到Commit或Rollback时被释放,它只有X排他锁2)TM锁:表级锁。2.1)Row-S行共享(RS):共享行锁,即可被其他事务查询该行。2.2)Row-X行专用(RX):用于行的修改,即禁止其他事务对该行的所有操作。2.3)Share共享锁(S):阻止其他DML操作2.4)S/Row-X共享行专用(SRX):阻止其他事务操作2.5)exclusive专用(X):独立访问使用3)数据库级锁:锁定数据库为限制模式altersystemenable
3、restrictedsession;以下语句将锁定数据库为只读模式startupmount;alterdatabaseopenreadonly;1.4锁的模式和使用1)共享锁(ShareTableLock,S):使用情况:当执行事务时,事务所要操作的表不希望被别的事务更新时可以使用。即某表被加锁后只能被加锁的事务全权控制,其他事务只能对该表执行查询操作。加锁语法:LockTableTableNameInShareMode;使用度:中。当对表执行大面积更新操作时可使用,反之,则不用。2)排它锁(ExclusiveTableLock,X):使用情况:当执行事务时,
4、事务所要操作的表不希望被别的事务执行任何操作时使用。即某表被加排它锁后只能被加锁事务全权控制,其他事务不能对该表执行任何操作。加锁语法:LockTableTableNameInExclusiveMode;使用度:低。一般不使用。3)行级锁(RowShareTableLock,RS):使用情况:在一行或多行上不希望其他事务对所要操作的表的行执行更新操作时可以使用。即只对特定的行进行加锁,其他的行可以被其他事务进行所有操作。加锁语法:LOCKTABLETableNameINROWSHAREMODE;使用度:高。一般事务都使用它。4)行级排它锁(RowExclusi
5、veTableLock,RX):使用情况:使用情况与3类似,但行级锁锁定的行可以被其他事务查询,而行级排他锁则不能执行任何操作。加锁语法:LOCKTABLETableNameINROWEXCLUSIVEMODE;使用度:高。5)共享行级排它锁(ShareRowExclusiveTableLock,SRX):使用情况:比共享锁有更多的限制,允许其他事务执行查询操作,但不允许执行查询更新(Select…FromTableNameForupdate…)共享行级排它锁的语法为:LockTableTableNameInShareRowExclusiveMode;使用度:
6、中。当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。TX锁等待的分析Oracle数据库中一般使用行级锁。当Oracle检测到死锁产生时,中断并回滚死锁相关语句的执行,报ORA-00060的错误并记录在数据库的日志文件alertSID.log中。同时在user_dump_dest下产生了一个跟踪文件,详细描述死锁的相关信息。在日常工作中,如果发现在日志文件中记录了ora-00060的错误信息,则表明产生了死锁。这时需要找到对应的跟踪文件,根据跟踪文件的信息定位产生的原因。1.5与锁相
7、关的数据字典视图表2数据字典视图说明视图名描述主要字段说明v$session查询会话的信息和锁的信息。sid,serial#:表示会话信息。program:表示会话的应用程序信息。row_wait_obj#:表示等待的对象,和dba_objects中的object_id相对应。v$session_wait查询等待的会话信息。sid:表示持有锁的会话信息。Seconds_in_wait:表示等待持续的时间信息Event:表示会话等待的事件。v$lock列出系统中的所有的锁。Sid:表示持有锁的会话信息。Type:表示锁的类型。值包括TM和TX等。ID1:表示锁的
8、对象标识。lmode,request:
此文档下载收益归作者所有