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

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

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


相关文档:

在linux上silent安装oracle简直是一场噩梦

 Parsing command line arguments:
    Parameter "silent" = true
java.lang.ArrayIndexOutOfBoundsException: 2
        at oracle.net.ca.CmdlineArgs.parseArgs(Unknown Source)
        at oracle.net.ca.I ......

ORACLE查询或删除时指定使用索引的写法­

 查询时可以指定使用索引的写法。­
­
SELECT   /*+ index(TB_ALIAS IX_G_COST3) */­
  TB_ALIAS.*­
  from g_Cost TB_ALIAS­
WHERE Item_Two = 0­
   AND Flight_Date >= To_Date('20061201', 'YYYYMMDD')­
   AND Flight_D ......

向Oracle插入timestamp类型字段

 如果是中文字符集:
[TEST@ora10gr1#2009-11-25/08:39:38]
SQL>create table t1(t timestamp);
Table created.
[TEST@ora10gr1#2009-11-25/08:39:56]
SQL>insert into t1 values(to_timestamp('21NOV09 10:04:12.032','DDMONYY HH24:MI:SS.FF'));
* ERROR at li ......

关于oracle字符集


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

ORACLE函数大全

SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
2.CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号