oracle数据库:初识大表格分区之范围分区
Range分区是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中.
一、任务:
如果系统订单数据较大,在查询数据时会有一定的影响。查询订单一般按照日期查询,可以考虑根据订单日期来进行分区。
二、分解
create table t_main_order(
omid char(12) primary key,
usid char(6) not null,
odate date default sysdate,
oamount number(12,3),
ostate char(1) check(ostate in('1','2','3','4'))
)partition by range(odate)
(partition p_d001 values less than(to_date('20100201','yyyymmdd')),
partition p_d002 values less than(to_date('20100301','yyyymmdd')),
partition p_d003 values less than(to_date('20100401','yyyymmdd')),
partition p_d004 values less than(to_date('20100501','yyyymmdd')),
partition p_d005 values less than(to_date('20100601','yyyymmdd')),
partition p_d006 values less than(to_date('20100701','yyyymmdd')),
partition p_d007 values less than(to_date('20100801','yyyymmdd')),
partition p_d008 values less than(to_date('20100901','yyyymmdd')),
partition p_d009 values less than(to_date('20101001','yyyymmdd')),
partition p_d010 values less than(to_date('20101101','yyyymmdd')),
partition p_d011 values less than(to_date('20101201','yyyymmdd')),
partition p_d012 values less than(maxvalue)
);
三、验证
ERROR at line 7:
ORA-00907: 缺失右括号
25日,记:
1,line7中的)partition by range(odate)改成加空格) partition by range(odate)或加TAB) partition by range(odate),一样报错
2,吸取24日的教训,仔细检查了脚本中全角空格、引号、多余逗号什么的,在sqlplus中纯手工输入执行,一样报错
3,将char改成varchar2,一样报错
4,将char改成varchar,一样报错
各种百度啊,各种情况啊,怎么都排除不了呢?
5,找了一段测试代码,测试通过
create table sale_data
(sale_id number(5), salesman_name varchar2(30),sales_date date)
partition by range(sales_date)
(partition sales_01 values less than (to_date('01/02/2012','DD/MM/YYYY')),
partition sales_02 values less than (to_date('01/03/2012','DD/MM/YYYY')),
partition sales_03 values less than (to_date('01/04/2012','DD/MM/YYYY')),
partition sales_04 values less than (to_date('01/05/2012','DD/MM/YYYY')),
partition sales_05 values less than (to_date('01/06/2012','DD/MM/YYYY')),
partition sales_06 values less than (to_date('01/07/2012','DD/MM/YYYY')),
partition sales_07 values less than (to_date('01/08/2012','DD/MM/YYYY')),
partition sales_08 values less than (to_date('01/09/2012','DD/MM/YYYY')),
partition sales_09 values less than (to_date('01/10/2012','DD/MM/YYYY')),
partition sales_10 values less than (to_date('01/11/2012','DD/MM/YYYY')),
partition sales_11 values less than (to_date('01/12/2012','DD/MM/YYYY')),
partition sales_12 values less than (to_date('31/12/2012','DD/MM/YYYY')))
6,受点启发,将第6行注释掉,OK--难道是check惹的祸,或是char(1)惹的祸
7,第6行去掉check,OK--看来不是char(1)惹的祸
8,天啊,我的天啊,第6行掉了一个)
2013.7.4补充
1\显示当前用户所有分区表的信息:USER_PART_TABLES
2\显示当前用户所有分区表的详细分区信息:USER_TAB_PARTITIONS
3\显示当前用户所有组合分区表的子分区信息:USER_TAB_SUBPARTITIONS
4\显示当前用户所有分区表的分区列信息:USER_PART_KEY_COLUMNS
5\显示当前用户所有分区表的子分区列信息:USER_SUBPART_KEY_COLUMNS
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5055.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
