oracle 11g分区表新特性---interval分区 的坑
发表于:2025-11-21 作者:千家信息网编辑
千家信息网最后更新 2025年11月21日,oracle 11g分区表新特性---interval分区 的坑oracle 11g的范围分区表中新增的interval分区特性,此种范围分区不需要定义MAXVALUE,Oracle会根据分区定义的步
千家信息网最后更新 2025年11月21日oracle 11g分区表新特性---interval分区 的坑oracle 11g分区表新特性---interval分区 的坑
oracle 11g的范围分区表中新增的interval分区特性,此种范围分区不需要定义MAXVALUE,Oracle会根据分区定义的步长来动态的分配新分区来容纳超过范围的数据。
解决了原本的范围分区需要手工编写job来预分配分区的问题,但是其分区名时自动命名的。
所以,对于间隔分区 interval(number) 或者 interval(NUMTODSINTERVAL(1,'DAY'))数字或者日期自动分区的分区查询条件可以是:
select * from test_part partition for(number/date); 那么自动清理分区时,是不是也可以使用该方法? 坑来了,使用该方法编写存储过程删除30天以前的旧分区:
create or replace procedure pd01.deltestdata_new(v_keep_days NUMBER DEFAULT 30) Authid CURRENT_USER
is
v_date date;
v_part_number number;
begin
v_date := sysdate - v_keep_days;
select count(partition_name) into v_part_number from all_tab_partitions where table_owner='PD01' and table_name='PD_TESTDATA';
if v_part_number >= v_keep_days then
execute immediate 'ALTER TABLE PD01.PD_TESTDATA DROP PARTITION FOR('||v_date||')';
select count(partition_name) into v_part_number from all_tab_partitions where table_owner='PD01' and table_name='PD_TESTDATA';
insert into pdms01.del_testdata_log(exec_time,dropped_partition_date,remain_partition_number) values(sysdate,to_char(v_date),v_part_number);
commit;
else
insert into pdms01.del_testdata_log(exec_time,dropped_partition_date,remain_partition_number) values(sysdate,'none',v_part_number);
commit;
end if;
end;
/
exec pdms01.deltestdata_new; -------------竟然报错。。。
ORA-14763: 无法将 FOR VALUES 子句解析为分区编号
ORA-06512: 在 "PDMS01.TEST11", line 7
ORA-06512: 在 line 1
原因:
interval分区中的partition for语法不支持使用绑定变量,不支持绑定变量。。。真是坑啊
自动清理分区只能通过其他方式来获取分区名实现清理。
oracle 11g的范围分区表中新增的interval分区特性,此种范围分区不需要定义MAXVALUE,Oracle会根据分区定义的步长来动态的分配新分区来容纳超过范围的数据。
解决了原本的范围分区需要手工编写job来预分配分区的问题,但是其分区名时自动命名的。
所以,对于间隔分区 interval(number) 或者 interval(NUMTODSINTERVAL(1,'DAY'))数字或者日期自动分区的分区查询条件可以是:
select * from test_part partition for(number/date); 那么自动清理分区时,是不是也可以使用该方法? 坑来了,使用该方法编写存储过程删除30天以前的旧分区:
create or replace procedure pd01.deltestdata_new(v_keep_days NUMBER DEFAULT 30) Authid CURRENT_USER
is
v_date date;
v_part_number number;
begin
v_date := sysdate - v_keep_days;
select count(partition_name) into v_part_number from all_tab_partitions where table_owner='PD01' and table_name='PD_TESTDATA';
if v_part_number >= v_keep_days then
execute immediate 'ALTER TABLE PD01.PD_TESTDATA DROP PARTITION FOR('||v_date||')';
select count(partition_name) into v_part_number from all_tab_partitions where table_owner='PD01' and table_name='PD_TESTDATA';
insert into pdms01.del_testdata_log(exec_time,dropped_partition_date,remain_partition_number) values(sysdate,to_char(v_date),v_part_number);
commit;
else
insert into pdms01.del_testdata_log(exec_time,dropped_partition_date,remain_partition_number) values(sysdate,'none',v_part_number);
commit;
end if;
end;
/
exec pdms01.deltestdata_new; -------------竟然报错。。。
ORA-14763: 无法将 FOR VALUES 子句解析为分区编号
ORA-06512: 在 "PDMS01.TEST11", line 7
ORA-06512: 在 line 1
原因:
interval分区中的partition for语法不支持使用绑定变量,不支持绑定变量。。。真是坑啊
自动清理分区只能通过其他方式来获取分区名实现清理。
范围
特性
分区表
变量
方法
分配
支持
动态
原因
原本
名实
子句
手工
数字
数据
方式
日期
条件
语法
过程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
哪些产品需要运动控制软件开发
软件开发职场情景剧
朵丹尼尔服务器
测试网络安全实训报告
web服务器安全设置有哪些
武大有没有软件开发这个专业
阿尔法狗服务器
中国数字货币合作的服务器
文件是随着网络技术
饥荒服务器怎么保存存档
网络技术服务营经营范围
网络安全教材书
网络安全法征文1500字
数据库如何备份实体文件
单位内部网络安全巡查
读秀数据库学位论文数量
软件开发所得税定率是多少
工业软件开发大学
奥鹏辅导数据库原理离线作业
怎么管理千台服务器
软件开发会计专业
mcgs的实时数据库介绍
去美国找软件开发工作
查看公司服务器密码管理
怪兽猎人世界无法连接服务器
达州中学网络安全
英业达软件开发可以学到什么
DRGS软件开发联系公司
网络技术白话文
wps服务器保存时间可以修改吗