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

学习《Oracle 9i10g编程艺术》的笔记 (二)

 一.锁
数据库使用锁(lock) 来保证任何给定时刻最多只有一个事务在修改给定的一段数据。实质上讲,
正是锁机制才使并发控制成为可能。例如,如果没有某种锁定模型来阻止对同一行的并发更新,数据库就
不可能提供多用户访问。不过,如果滥用或者使用不当,锁反倒会阻碍并发性。如果你或数据库本身不必
要地对数据锁定,能并发地完成操作的人数就会减少。因此,要理解什么是锁定,你的数据库中锁定是怎
样工作的,这对于开发可扩缩的、正确的应用至关重要。
还有一点很重要,你要知道每个数据库会以不同的方式实现锁定。有些数据库可能有页级锁,另外
一些则有行级锁;有些实现会把行级锁升级为页级锁,另外一些则不然;有些使用读锁,另外一些不使用;
有些通过锁定实现串行化事务,另外一些则通过数据的读一致视图来实现(没有锁)。如果你不清楚这些微
小的差别,它们就会逐步膨胀为严重的性能问题,甚至演变成致命的bug。
以下是对Oracle 锁定策略的总结:
Oracle 只在修改时才对数据加行级锁。正常情况下不会升级到块级锁或表级锁(不过两段提
交期间的一段很短的时间内除外,这是一个不常见的操作)。
如果只是读数据,Oracle 绝不会对数据锁定。不会因为简单的读操作在数据行上锁定。
60
/ 849
写入器(writer)不会阻塞读取器(reader)。换种说法:读(read)不会被写(write)阻
塞。这一点几乎与其他所有数据库都不一样。在其他数据库中,读往往会被写阻塞。尽管听上
去这个特性似乎很不错(一般情况下确实如此),但是,如果你没有充分理解这个思想,而且想
通过应用逻辑对应用施加完整性约束,就极有可能做得不对。第7 章介绍并发控制时还会更详
细地讨论这个内容。
写入器想写某行数据,但另一个写入器已经锁定了这行数据,此时该写入器才会被阻塞。读
取器绝对不会阻塞写入器。
开发应用时必须考虑到这些因素,而且还要认识到这个策略是Oracle 所独有的,每个数据库实现锁
定的方法都存在细微的差别。即使你在应用中使用最通用的SQL,由于各数据库开发商采用的锁定和并发
控制模型不同,你的应用也可能有不同的表现。倘若开发人员不了解自己的数据库如何处理并发性,肯定
会遇到数据完整性问题。(开发人员从另外某种数据库转向Oracle,或者从Oracle 转向其他数据库时,如
果没有考虑在应用中采用不同的并发机制,这种情况就尤为常见。)
2.防止丢失更新
Oracle 的无阻塞方法有一个副作用,如果确实


相关文档:

oracle数据类型number

Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。
    NUMBER数据类型可以有两个限定符,如:
    column NUMBER ( precision, scale)
    precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。
&nb ......

ORACLE重建所有的索引


declare­
  STR VARCHAR2(400);­
begin­
  -- 重建ORACLE索引­
  FOR TMP_IDX IN (SELECT TABLESPACE_NAME, OWNER, TABLE_NAME, INDEX_NAME­
                  &nb ......

ORACLE数据导入到指定的表空间

create user 用户名 identified by 密码 default tablespace 缺省表空间 Temporary tablespace 临时表空间;­
­
grant connect,resource,dba to 用户名;­
  ­
revoke unlimited tablespace from 用户名;­
  ­
alter user 用户名 quota 0 on Users;­
­
alter user 用户名 quot ......

关于oracle字符集


 
分类:Oracle
一.引言
    ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储、处理和检索数据。利用全球化支持,ORACLE为用户提供自己熟悉的数据库母语环境,诸如日期格式、数字格式和存储序列等。Oracle可以支持 ......

oracle中如何实现给当前时间加一分钟?

 select   to_char(sysdate   +   1   /   (24   *   60),'yyyy/mm/dd   hh24:mi:ss')   from   dual
SQL>   ;  
      1     select   to_char(sysdate,   'hh:mi:ss')  
      2 &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号