4、分区,如果要将表按列分区,那么分区键就只能由表的一个单独的列组成,然而可以用范围分区或散列分区方法进行分区的所有的列,都可以用列表分区的方法进行分区。(4)复合分区 有时候我们需要根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。复合分区是先使用范围分区,然后在每个分区内再使用散列分区的一种分区方法。(例子:将物料交易的记录按时间分区,然后每个分区中的数据分三个子分区,将数据散列地存储在三个指定的表空间中)1、创建表SQL> CREATE TABLE T (ID NUM
5、BER PRIMARY KEY, TIME DATE);2、插入数据SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS;SQL> COMMIT;3、在线重定义的表自行验证,看该表是否可以重定义,SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(user, 'T', DBMS_REDEFINITION.CONS_USE_PK); (如果没有定义主键会提示以下错误信息 begin dbms_redefinit
6、ion.can_redef_table(user,'pft_party_profit_detail'); end; ORA-12089: cannot online redefine table "OFSA"."PFT_PARTY_PROFIT_DETAIL" with no primary key ORA-06512: at "SYS.DBMS_REDEFINITION", line 8 ORA-06512: at "SYS.DBMS_REDEFINITION", line 247 ORA-06512:
7、at line 1 出错了, 该表上缺少主键,为该表建主键。再执行验证。 SQL> alter table t add constraint pk_t primary key(id); Table altered)4、建个和源表表结构一样的分区表,作为中间表。按日期范围分区 SQL> CREATE TABLE T_NEW (ID NUMBER PRIMARY KEY, TIME DATE) PARTITION BY RANGE (TIME) (PARTITION P1 VALUES LESS T
8、HAN (TO_DATE('2004-7-1', 'YYYY-MM-DD')), PARTITION P2 VALUES LESS THAN (TO_DATE('2005-1-1', 'YYYY-MM-DD')), PARTITION P3 VALUES LESS THAN (TO_DATE('2005-7-1', 'YYYY-MM-DD')), PARTITION P4 VALUE