直播网站建设重庆/百度站长号购买
今天用oracle数据库的时候手动添加分区报错如下所示:
因为以前没接触过oracle,一脸懵逼的去百度,最后了解到了间隔分区是不能手动添加分区的,但是创建表的时候需要指定间隔分区interval(numtoyminterval(1,‘year’))。但是我看创建这张表的源代码是没有指定为为间隔分区的,这就非常的奇怪了。
于是百度了oracle查询分区的语句:
select * from user_tab_partitions where table_name='ST_USER_ORDER_DT_YYYYMMDD';
注意:table_name后面的表名必须大写。
这里可以看到后面两个分区很明显是间隔分区。现在基本确定了问题所在,现在我通过测试表来验证一下插入数据是否会自动添加分区。
首先创建一个测试表,并指定间隔分区:
create table TEMP_ST_USER_ORDER_LYQ2
(op_time TIMESTAMP(6)
)
partition by range (OP_TIME)
interval(numtoyminterval(1,'year'))
(partition TEMP_ST_USER_ORDER_LYQ2_2018 values less than (TIMESTAMP' 2018-01-01 00:00:00')tablespace TBS_FACTpctfree 10initrans 1maxtrans 255storage(initial 8Mnext 1Mminextents 1maxextents unlimited));
建表成功后,我通过软件查看了一下建表的语句:
这里也没有指定间隔分区的语句,我也不知道是什么原因了。
尝试着对测试表插入一条数据,测试它会不会自动添加分区:
insert into TEMP_ST_USER_ORDER_LYQ2(op_time) values('01-1月 -19 12.00.00.000000000 上午')
然后再去查看分区:
确认分区已建立好,并且分区名称是系统指定的SYS开头的。