原创 2012年03月23日 06:26:50

一、oracle锁的特点

  1、oracle自动施加和释放锁

  2、oracle默认使用行级锁

  3、oracle默认把锁的信息放在数据块中

  4、oracle不支持锁的升级

  5、锁在事务中使用,事务结束后oracle释放锁;如果事务撤销到保存点,则保存点之后的操作持有的锁被释放。

  6、任何oracle锁模式都不影响select,反之亦然。

二、锁定的对象

  1、用户对象 如表、索引、行

  2、系统对象 如数据字典、内存中的共享数据结构

三、锁的粒度

  oracle使用行级粒度锁定对象

四、锁的类型

  1、DML锁:保护表或者索引中的数据。在进行DML操作时,oracle在被更改的行上施加行级锁

  2、DDL锁:在进行DML操作时,oracle自动施加一个表级DDL锁;在进行单纯的DDL操作时,oracle也会在表上施加DDL锁。

  3、内部锁:保护诸如表空间、数据文件、撤销段这样的结构的访问

  4、闩:保护SGA中的共享数据结构的内部机制

  5、数据字典锁:oracle在字典对象被修改时使用的锁

  6、分布锁:分布式数据库系统或者RAC中使用的特殊锁定机制

五、显示锁

  用户可以根据需要显示施加锁,如:lock table table_name  in lock_mode mode [nowait]

  --lock_mode的取值有:share、exclusive、row share、row exclusive、share row exclusive、share update

  也可以使用select .... from table_name for update [nowait];

六、阻塞锁

  一个事务持有其他事务请求的锁,就出现了阻塞锁。

  使用视图v$session查询阻塞关系:

  select username,sid,serial#,blocking_session from v$session    --block_session表示阻塞锁持有者的会话id

  where blocking_session_status='VALID';

  也可以使用v$session和dba_blockers连接查询阻塞锁持有者的信息 如:

  select .... from v$session s,dba_blockers b

  where s.sid=b.helding_session;

  还可以dba_waiters,dba_locks,v$lock等查看锁的情况。

  杀死阻塞会话:1、查询阻塞锁持有者的sid,serial#

                         2、alter system kill session 'sid,serial#';

 

七、死锁

  两个事务相互请求对象持有的锁,这是就发生了死锁。oracle自动解决死锁,杀死持有最近应用的锁的会话,终止其事务。

八、oracle锁管理

  1、执行$oracle_home/rdbms/admin下的catblock.sql和utllockt.sql

    catblock.sql创建与有关的视图 如:dba_waiters,dba_blockers,dba_locks等

    utllocks.sql创建一个树形结构的锁等待图,通过执行该脚本文件可以看到会话之间的阻塞关系

  2、使用oem管理所

 

 

相关文章推荐

线程、线程池、并发、同步、异步、锁

线程、线程池、并发、同步、异步、锁先看一个模拟多个线程同时写1000条日志例子:class Program { static void Main(string[] args) { ...

使用js控制表单重复提交(1加锁,2事件方式,3 EasyUI中解决表单重复提交)

方法一、var flag = true; $(function() { $("#interested").click(function() { beInterested(); }); }); ...

Cass9.1写锁授权工具深思S4驱动

  • 2017年09月18日 00:29
  • 2.13MB
  • 下载

PHP文件锁解析 flock()

1、普通写入和读取 b.php写入 $file = 'tt.txt'; $fp = fopen($file,'a+b'); fwrite($fp,"c"); sleep(3); fwr...

四位数字密码锁-无使用单片机

  • 2016年06月29日 15:23
  • 1002KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:
举报原因:
原因补充:

(最多只允许输入30个字)