易截截图软件、单文件、免安装、纯绿色、仅160KB

oracle锁

锁定的概念:锁定是数据库用来控制共享资源并发布访问的机制。在多用户环境下,多个用户可同时访问相同的数据。Oracle 提供锁以确保在多用户环境下数据的完整性和一致性。在提交或回滚事务之前,Oracle 会锁定正被修改的数据。在用户完成或回滚事务之后,锁会自动释放。只有在提交或回滚事物之后,其他用户才可以更新这些数据。
锁的两种级别为:行级锁和表级锁。行级锁主要用于特定的行,表级锁主要用于整个表,下面我就行级锁和表级锁来个说明:
行级锁
行级锁只对用户正在访问的行进行锁定。如果该用户正在修改某行,那么其他用户就可以更新同一表中该行之外的数据。例如:如果用户1正在更新Jobs 表中的第一行,则用户2可以同时修改该表中的第二行。也就是说除了该表中的第一行,其他用户可以修改任意行,但是第一行的数据其他用户只能select。
行级锁是一种排他锁,防止其他事务修改此行,但是不会阻止读取此行的操作。在使用INSERT、UPDATE、DELETE 和SELECT…FOR UPDATE 等 语句时,Oracle 会自动应用行级锁锁定。SELECT...FOR UPDATE 语句允许用户每次选择多行记录进行更新,这些记录会被锁定,且只能由发起查询的用户进行编辑。只有在回滚或提交事务之后,锁定才会释放,其他用户才可以编 辑这些记录。
SELECT...FOR UPDATE 语句的语法如下:
SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT];
其中:
OF 子句用于指定即将更新的列,即锁定行上的特定列。
WAIT 子句指定等待其他用户释放锁的秒数,防止无限期的等待。
“使用FOR UPDATE WAIT”子句的优点如下:
⒈防止无限期地等待被锁定的行;
⒉允许应用程序中对锁的等待时间进行更多的控制。
⒊对于交互式应用程序非常有用,因为这些用户不能等待不确定
举例:比如一个用户在SQL PLUS下输入这条语句:SQL>SELECT * from order_master WHERE vencode='V002' FOR UPDATE;
此时再开启一个SQL PLUS,以相同的用户登陆,执行下面的命令。
SQL<> SELECT * from order_master WHERE vencode='V02' FOR UPDATE WAIT 5;
由于要更新的行已经被锁定,上述命令在等待5秒钟之后返回,并给出如下的错误信息:
ERROR 位于第1行;
ORA-30006;资源已被占用;执行操作时出现WAIT超时。
PS:再开启的SQL PLUS 是以相同用户登陆的,用其他用户登陆更是不可能。
表级锁
表级锁
表级锁被锁定的表,暂时放在内存中,不提交不进去数据库,也就是说,多个用


相关文档:

oracle 表空间操作

oracle表空间操作详解
  1
  2
  3作者:   来源:    更新日期:2006-01-04 
  5
  6 
  7建立表空间
  8
  9CREATE TABLESPACE data01
 10DATAFILE '/ora ......

Oracle 学习:PL/SQL循序渐进全面学习教程

 课程八 用户访问控制
  
  本课重点:
  1、创建用户
  2、创建角色来进行安全设置
  3、使用GRANT或REVOKE 来控制权限
  
  注意:以下实例中标点均为英文半角
  
  一、概述:
  ORACLE通过用户名和密码进行权限控制。
  数据库安全:系统安全和数据安全
  系统权限:使用户可 ......

Oracle 学习:PL/SQL循序渐进全面学习教程

 课程十 写执行语句
  
  本课重点:
  1、了解PLSQL执行区间的重要性
  2、写执行语句
  3、描述嵌套块的规则
  4、执行且测试PLSQL块
  5、使用代码惯例
  
  注意:以下实例中标点均为英文半角
  
  一、PLSQL 块的语法规则:
  1、语句可以跨跃几行。
  2、词汇单元可以包 ......

C#连接oracle的dll文件的编写过程

 初学c#加Oracle编程,看了许多网上教程,都介绍的是ado连接方式,而且采用的都是在后台输入连接字符串的方式。于是萌生了写一个dll文件来代替这个连接字符串,以后每次连接数据库事只要调用这个dll文件就行的想法。闲言少叙,将代码写出, ......

oracle性能优化之索引

 最近发现有一个页面的打开速度很慢,几乎每次都需要刷新十几次才能打开,分析原因可能是由于时间的积累,该表中的数据量过大引起的(该表是一张存放过程性数据的表)。经查实,果真是该表数据量过大,有7百万之多。遂决定将部分历史数据备份并清除掉,以提高性能。
使用:creart table table_bak as select * from t ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号