- 3
- 0
- 约8.94千字
- 约 9页
- 2017-08-20 发布于浙江
- 举报
Oracle数据库中锁、的序列、索引管理
详析Oracle数据库中锁、序列、索引管理
锁
1.1什么是锁
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。而锁就是用于控制事务对数据的访问,实现事务的并发控制,保持数据库的一致性。
1.2锁的类型
DDL锁:被Oracle自动的发布和释放
DML锁:在事务处理的开始时被施加,而且在事务处理完成时被释放(使用Commit或Rollback时被释放)
内部锁:由Oracle自己管理以保护内部数据库结构
注:DDL锁由数据库自动管理;DML锁和内部锁可以由用户直接或间接管理。
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)数据库级锁:锁定数据库为限制模式alter system enable restricted session;以下语句将锁定数据库为只读模式
startup mount; alter database open read only;
1.4锁的模式和使用
1)共享锁(Share Table Lock,S):
使用情况:当执行事务时,事务所要操作的表不希望被别的事务更新时可以使用。即某表被加锁后只能被加锁的事务全权控制,其他事务只能对该表执行查询操作。
加锁语法:Lock Table TableName In Share Mode;
使用度:中。当对表执行大面积更新操作时可使用,反之,则不用。
2)排它锁(Exclusive Table Lock,X):
使用情况:当执行事务时,事务所要操作的表不希望被别的事务执行任何操作时使用。即某表被加排它锁后只能被加锁事务全权控制,其他事务不能对该表执行任何操作。
加锁语法:Lock Table TableName In Exclusive Mode;
使用度:低。一般不使用。
3) 行级锁(Row Share Table Lock,RS):
使用情况:在一行或多行上不希望其他事务对所要操作的表的行执行更新操作时可以使用。即只对特定的行进行加锁,其他的行可以被其他事务进行所有操作。
加锁语法:LOCK TABLE TableName IN ROW SHARE MODE;
使用度:高。一般事务都使用它。
4) 行级排它锁(Row Exclusive Table Lock,RX):
使用情况:使用情况与3类似,但行级锁锁定的行可以被其他事务查询,而行级排他锁则不能执行任何操作。
加锁语法:LOCK TABLE TableName IN ROW EXCLUSIVE MODE;
使用度:高。
5)共享行级排它锁(Share Row Exclusive Table Lock,SRX):
使用情况:比共享锁有更多的限制,允许其他事务执行查询操作,但不允许执行查询更新(Select … From TableName For update…)
共享行级排它锁的语法为:Lock Table TableName In Share Row Exclusive Mode;
使用度:中。
当Oracle数据库发生TX锁等待时,如果不及时处理常常会引起Oracle数据库挂起,或导致死锁的发生,产生ORA-60的错误。
TX锁等待的分析
Oracle数据库中一般使用行级锁。
当Oracle检测到死锁产生时,中断并回滚死锁相关语句的执行,报ORA-00060的错误并记录在数据库的日志文件alertSID.log中。同时在user_dump_dest下产生了一个跟踪文件,详细描述死锁的相关信息。
在日常工作中,如果发现在日志文件中记录了ora-00060的错误信息,则表明产生了死锁。这时需要找到对应的跟踪文件,根据跟踪文件的信息定位产生的原因。
1.5与锁相关的数据字典视图
表2 数据字典视图说明 视图名 描述 主要字段说明 v$session 查询会话的信息和锁的信息。 sid,serial#:表示会话信息。
program:表示会话的应用程序信息。
row_wait_obj#:表示等待的对象,和dba_objects中的object_id相对应。 v$session_wait 查询等待的会话信息。 sid:表示持有锁
原创力文档

文档评论(0)