Oracle 11g下用模板建复合分区

利用模板建复合分区大大的降低了脚本的复杂度,下面来做个试验:

--未使用模板的方法建复合分区

SQL> drop table test purge;

SQL> create table test

(

owner VARCHAR2(10),

created date,

object_name VARCHAR2(10),

object_type VARCHAR2(20)

)

partition by range(created) subpartition by list(owner)

(

partition p_1 values less than(to_date(‘2012-01-01‘,‘yyyy-mm-dd‘))

(

subpartition p_1_sub1 values(‘sys‘),

subpartition p_1_sub3 values(‘system‘),

subpartition p_1_sub5 values(‘test‘),

subpartition p_1_sub7 values(‘hr‘)

),

partition p_2 values less than(to_date(‘2013-01-01‘,‘yyyy-mm-dd‘))

(

subpartition p_2_sub1 values(‘sys‘),

subpartition p_2_sub3 values(‘system‘),

subpartition p_2_sub5 values(‘test‘),

subpartition p_2_sub7 values(‘hr‘)

),

partition p_3 values less than(to_date(‘2014-01-01‘,‘yyyy-mm-dd‘))

(

subpartition p_3_sub1 values(‘sys‘),

subpartition p_3_sub3 values(‘system‘),

subpartition p_3_sub5 values(‘test‘),

subpartition p_3_sub7 values(‘hr‘)

),

partition p_other values less than(maxvalue)

(

subpartition p_other_sub1 values(‘sys‘),

subpartition p_other_sub3 values(‘system‘),

subpartition p_other_sub5 values(‘test‘),

subpartition p_other1_sub7 values(‘hr‘)

)

);

SQL> select s.partition_name

from user_tab_partitions s

where s.table_name = ‘TEST‘;

PARTITION_NAME

------------------------------

P_1

P_2

P_3

P_OTHER

SQL> col PARTITION_NAME  format a10

SQL> select s.partition_name, s.subpartition_name

from user_tab_subpartitions s

where s.table_name = ‘TEST‘;

PARTITION_ SUBPARTITION_NAME

---------- ------------------------------

P_1        P_1_SUB1

P_1        P_1_SUB3

P_1        P_1_SUB5

P_1        P_1_SUB7

P_2        P_2_SUB1

P_2        P_2_SUB3

P_2        P_2_SUB5

P_2        P_2_SUB7

P_3        P_3_SUB1

P_3        P_3_SUB3

P_3        P_3_SUB5

P_3        P_3_SUB7

P_OTHER    P_OTHER_SUB1

P_OTHER    P_OTHER_SUB3

P_OTHER    P_OTHER_SUB5

P_OTHER    P_OTHER1_SUB7

--使用模板的方法建复合分区

SQL> drop table test purge;

SQL> create table test

(

owner VARCHAR2(10),

created date,

object_name VARCHAR2(10),

object_type VARCHAR2(20)

)

partition by range(created) subpartition by list(owner)

subpartition template

(

subpartition sub1 values(‘sys‘),

subpartition sub3 values(‘system‘),

subpartition sub5 values(‘test‘),

subpartition sub7 values(‘hr‘)

)

(

partition p_1 values less than(to_date(‘2012-01-01‘,‘yyyy-mm-dd‘)),

partition p_2 values less than(to_date(‘2013-01-01‘,‘yyyy-mm-dd‘)),

partition p_3 values less than(to_date(‘2014-01-01‘,‘yyyy-mm-dd‘)),

partition p_other values less than(maxvalue)

);

SQL> select s.partition_name

from user_tab_partitions s

where s.table_name = ‘TEST‘;

PARTITION_

----------

P_1

P_2

P_3

P_OTHER

SQL> select s.partition_name, s.subpartition_name

from user_tab_subpartitions s

where s.table_name = ‘TEST‘;

PARTITION_ SUBPARTITION_NAME

---------- ------------------------------

P_1        P_1_SUB1

P_1        P_1_SUB3

P_1        P_1_SUB5

P_1        P_1_SUB7

P_2        P_2_SUB1

P_2        P_2_SUB3

P_2        P_2_SUB5

P_2        P_2_SUB7

P_3        P_3_SUB1

P_3        P_3_SUB3

P_3        P_3_SUB5

P_3        P_3_SUB7

P_OTHER    P_OTHER_SUB1

P_OTHER    P_OTHER_SUB3

P_OTHER    P_OTHER_SUB5

P_OTHER    P_OTHER_SUB7

时间: 2024-11-05 23:06:21

Oracle 11g下用模板建复合分区的相关文章

Oracle 11g下自动创建分区

11g之前,维护分区需要手工.11g之后使用interval来实现自动扩展分区,简化了维护. 根据年  INTERVAL(NUMTOYMINTERVAL(1,'YEAR')) 根据月  INTERVAL(NUMTOYMINTERVAL(1,'MONTH')) 根据天  INTERVAL(NUMTODSINTERVAL(1,'DAY')) 下面用按月自动扩展来做个试验: SQL> create table t_range (id number not null PRIMARY KEY, test_

oracle 11g下冷备数据库

1.关闭数据库 [email protected]>shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down. 2.退出[email protected]>exitDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit ProductionWith the Partitioning,

Oracle 11g下ORA-00119和ORA-00132错误的解决

在启动数据库时出现下列错误 [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Mon May 5 21:56:00 2014 Copyright (c) 1982, 2013, Oracle.  All rights reserved. Connected to an idle instance. [email protected]>startupORA-00119: inv

Oracle 11g下重现library cache lock等待事件

从下面的例子中可以看到,在生产数据库中对象的重新编译会导致library cache lock,所以应该尽量避免在业务高峰期编译对象.如果是package或过程中存在复杂的依赖关系就极易导致library cache lock的出现,所以在应用开发的过程中,也应该注意这方面的问题. session1: SQL> select * from v$version; BANNER -------------------------------------------------------------

Oracle 11g虚拟列上建分区

在Oracle 11g上,可以在虚拟列上做分区,这个特性还比较有用,下面来做一个测试: SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production PL/SQL Rele

Oracle 11g 新特性:自动创建分区(Interval Partition)

分区(Partition)一直是Oracle数据库引以为傲的一项技术,正是分区的存在让Oracle高效的处理海量数据成为可能,在Oracle 11g中,分区技术在易用性和可扩展性上再次得到了增强.在10g的Oracle版本中,要对分区表做调整,尤其是对RANGE分区添加新的分区都需要DBA手动定期添加,或都使用存储过程进行管理.在11G的版本中的Interval Partition不再需要DBA去干预新分区的添加,Oracle会自动去执行这样的操作,减少了DBA的工作量.Interval Par

Oracle 11g下 ORA-01417的解决办法

今天有兄弟反馈,有一条SQL在12C上没有问题,在11g上就报错,报错内容是ORA-01417: 表可以外部连接到至多一个其他的表.分析了下SQL,抽象为下列的例子. 在12c下没有问题: SQL> select * from v$version; BANNER                                                                               CON_ID ---------------------------------

SuSe 11g下的一次磁盘分区记录

说明:存储上划分1T空间给SuSe 11g的系统使用,先扫描磁盘,然后按照处理CentOS的常规思维操作,分好区,然后使用ext4文件系统进行格式化,然后挂载到/data目录下: 扫描磁盘: DYDMSAPTS01:/sys/class/scsi_host # echo "- - -" > /sys/class/scsi_host/host0/scan DYDMSAPTS01:/sys/class/scsi_host # echo "- - -" > /

Oracle 11G的间隔(INTERVAL)分区

-- Create table create table MS_BIGTABLE_LOG ( record_date DATE, col_1 VARCHAR2(2000), col_2 VARCHAR2(2000) ) PARTITION BY RANGE (record_date) INTERVAL (numtodsinterval(1,'day')) ( PARTITION P1 VALUES LESS THAN (TO_DATE('2014-1-1', 'YYYY-MM-DD')), PA