随笔-227  评论-32  文章-175  trackbacks-1
10 2008 档案
insert append需要注意的一个小问题
摘要: 1. append方式添加记录对insert into ... values语句不起作用。 2. 以append方式批量插入的记录,其存储位置在hwm 之上,即使hwm之下存在空闲块也不能使用。 3. 以append方式插入记录后,要执行commit,才能对表进行查询。否则会出现错误: ORA-12838: 无法在并行模式下修改之后读/修改对象 4. 在归档模式下,要把表设置为nologging,然后以append方式批量添加记录,才会显著减少redo数量。在非归档模式下,不必设置表的nologging属性,即可减少redo数量。如果表上有索引,则append方式批量添加记录,不会减少索引上产生的redo数量,索引上的redo数量可能比表的redo数量还要大。阅读全文
posted @ 2008-10-27 22:28 一江水 阅读(812) | 评论 (0) 编辑
关于PCTFREE (PCTUSED)
posted @ 2008-10-24 22:47 一江水 阅读(268) | 评论 (0) 编辑
Oracle存储物理结构
posted @ 2008-10-23 00:49 一江水 阅读(658) | 评论 (0) 编辑
Oracle中组合索引的使用详解
摘要: 在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引; 2、在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自动选择成本低的访问路径; 3、从Oracle9i起,Oracle引入了一种新的索引扫描方式——索引跳跃扫描(index skip scan),这种扫描方式只有基于成本的优化器(CBO)才能使用。这样,当SQL语句的where子句中即使没有组合索引的前导列,并且索引跳跃扫描的成本低于其他扫描方式的成本时,Oracle就会使用该方式扫描组合索引(请见下面的测试3); 4、Oracle优化器有时会做出错误的选择,因为它再“聪明”,也不如我们SQL语句编写人员更清楚表中数据的分布,在这种情况下,通过使用提示(hint),我们可以帮助Orac阅读全文
posted @ 2008-10-19 21:11 一江水 阅读(2452) | 评论 (3) 编辑
高水位线(High Water Mark)
摘要: 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM通常增长的幅度为一次5个数据块,原则上HWM只会增大,不会缩小,即使将表中的数据全部删除,HWM还是为原值,由于这个特点,使HWM很象一个水库的历史最高水位,这也就是HWM的原始含义,当然不能说一个水库没水了,就说该水库的历史最高水位为0。但是如果我们在表上使用了truncate命令,则该表的HWM会被重新置为0。阅读全文
posted @ 2008-10-15 11:42 一江水 阅读(314) | 评论 (0) 编辑