- 分区创建:
- 分区:
-- Create table
create table RHCJ_BILL_RELEASE_TERMINAL
(
ID VARCHAR2(32) not null,
RECORD_T_ID VARCHAR2(32),
RELEASE_TIME DATE,
OPERATE_TIME DATE,
STATUS VARCHAR2(32)
)
partition by range (RELEASE_TIME)
(
partition P_YEAR_1 values less than (TO_DATE(' 2010-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
partition SYS_P633 values less than (TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
partition SYS_P626 values less than (TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
);
- 自动分区
11g之前,维护分区需要手工。11g之后使用interval来实现自动扩展分区,简化了维护。
根据年: INTERVAL(NUMTOYMINTERVAL(1,'YEAR'))
根据月: INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))根据天: INTERVAL(NUMTODSINTERVAL(1,'DAY'))
根据时分秒: NUMTODSINTERVAL( n, { 'DAY'|'HOUR'|'MINUTE'|'SECOND'})
create table t_test (
pk_id number(30) not null PRIMARY KEY,
username VARCHAR2(32),
RELEASE_TIME DATE )
partition by range(RELEASE_TIME) interval (numtoyminterval(1,'year'))
(
partition p_year_1 values less than (to_date('2010-01-01','yyyy-mm-dd'))
);
- 其他oracle分区详解:
Oracle表分区分为四种:范围分区,散列分区,列表分区和复合分区
oracle分区索引创建
create index TERMINAL_RELEASE_TIME on test_abc(RELEASE_TIME) local
(
partition P_YEAR_1 ,
partition SYS_P633 ,
partition SYS_P626 ,
partition SYS_P627,
partition SYS_P628 ,
partition SYS_P630,
partition SYS_P629,
partition SYS_P631,
partition SYS_P632
);
全局索引:
create index RELEASE_TYPE_ID2 on test_abc (RELEASE_TYPE_ID);
或者并行
create index RELEASE_TYPE_ID2 on test_abc (RELEASE_TYPE_ID) nologging parallel 10;
alter index RELEASE_TYPE_ID2 noparallel;
alter table test_a parallel;
--告诉oracel,“请考虑并行执行。”oracle 会根据系统工作负载和查询本身来确定适当的并行度。资源充足,并行度上升,资源稀缺,并行度下降。 oracle能动态的增加或减少查询所需要的并发资源量。 ---更喜欢用此种方式启动并行查询。