分区相关
oracle自动增加表空间指定分区
当前日期是 20230106,执行下面的语句后,往数据库插入数据,会自动新增 20230201 的一个分区(一定要插入数据才会新增分区)
如果时间字段是 DATE 类型:TO_DATE() 函数
create table testTable
(
tjsj DATE not null
)
tablespace tablespace_name
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)
PARTITION BY RANGE(TJSJ)
INTERVAL (NUMTODSINTERVAL(1,'month')) store in ( tablespace_name)
(
PARTITION p_20230101 values LESS THAN (TO_DATE('2023-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
tablespace tablespace_name
);
如果时间字段是 TIMESTAMP 类型:TIMESTAMP 函数
create table testTable
(
tjsj TIMESTAMP(6) default SYSDATE
)
tablespace tablespace_name
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)
PARTITION BY RANGE(TJSJ)
INTERVAL (NUMTODSINTERVAL(1,'month')) store in ( tablespace_name)
(
PARTITION p_20230101 values LESS THAN (TIMESTAMP'2023-02-01 00:00:00')
tablespace tablespace_name
);
oracle修改分区表默认表空间
场景:每月自动增加表空间并没有指定分区,以后每月生成分区放在Oracle默认的表空间 USERS,发现数据没有入库,查看原因是因为报错:
ORA-01658:无法为表空间 USERS 中的段创建 INITIAL 区(原因:表空间满了,无法进行拓展)
原因:
上面的建表语句没有加 store in ( tablespace_name)
解决:执行下面的语句,再次往数据库插入数据,成功,并且以后月份的数据放在指定表空间里。(已验证)
alter table 用户名.表名 modify default attributes tablespace 表空间名;
oracle修改分区所在表空间属性
create table testTable
(
tjsj DATE not null
)
PARTITION BY RANGE(TJSJ)
INTERVAL (NUMTODSINTERVAL(1,'month')) store in ( tablespace_name)
(
PARTITION p_20230101 values LESS THAN (TO_DATE('2023-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
tablespace tablespace_name
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)
);
注意这里的建表语句,和上面的建表语句不同:表空间位置不一样。如果按照这里的建表语句,下个月的分区大小为 initail 8M
tablespace 表空间名
pctfree 10
initrans 1
maxtrans 255
strorage
(
initial 8M
next 1M
mienxtents 1
maxextents unlimited
)
想改变表空间属性值,可以这样改:
alter table 用户名.表名 modify default attributes
tablespace 表空间名
pctfree 对应值
initrans 对应值
maxtrans 对应值
strorage
(
initial 对应值
next 对应值
mienxtents 对应值
maxextents 对应值
);
oracle移动现有分区到其他表空间
场景:发现分区所在的表空间写错了,用下面的语句进行修改表空间
alter table 用户名.表名 move partition 分区名 tablespace 表空间名;
版权声明:本文为weixin_45005846原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。