Archive for 十一月 22nd, 2007

行移动

星期四, 十一月 22nd, 2007

如果用于确定分区的列发生改变,我们需要考虑两种情况

一、修改不会导致使用一个不同的分区:行仍属于原来的分区

二、修改行会导致跨分区移动。只有当表起用了行移动时才支持。

alter table table_name enable row movement;

导致ROWID改变主要有以下几种情况。

因为更新ROWID会改变

更新IOT主键可能导致ROWID改变

10G中的FLASHBACK TABLE

ALTER TABLE SHRINK 等都有可能导致ROWID改变。

要尽量避免行移动,因为它的开销比UPDATE还大。要避免这种情况就要在构建系统时设计好。。

ORACLE分区机制

星期四, 十一月 22nd, 2007

主要有四种分区机制:

一、区间分区:比如说按时间存储数据。一个月一个分区。

二、散列分区:是指在一个列上引用一个散列函数。

三、列表分区:指定一个离散值集,来确定应该存储在一起的数据。比如可以指定STATUS列值在(‘A’,‘M’,‘Z’)的行放在分区1。

四、组合分区:是区间分区和散列分区的一种组合,或者是区间分区和列表分区的组合。

(全文…)