oracle 11g分区表新特性---interval分区 的坑
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,oracle 11g分区表新特性---interval分区 的坑oracle 11g的范围分区表中新增的interval分区特性,此种范围分区不需要定义MAXVALUE,Oracle会根据分区定义的步
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
2020网络安全教育图片
软件开发面试都不会
花网络安全手抄报视频
中软国际网络安全
无线网络安全防护策略有哪些
物联网软件开发常见面试题
高考英语数据库建立
数据库备份接口
视频网站一般选用什么服务器
微信云数据库api接口开发
突然断电导致数据库停止
统一的金融信息数据库
日本gsm服务器
滨州智能养老软件开发系统
查看手机网络服务器ip和端口
芜湖润森网络技术
两台服务器网线相连
2022年网络安全报告
服务器集群搭建数据库
剑网三手游为什么只有一个服务器
商品化的数据库管理系统主要采用
linux服务器编译教程学习
泰康人寿软件开发岗
儿童信息网络安全规定
如何保护数据库的安全
小型互联网科技公司组建
无线网络安全防护策略有哪些
物联网软件开发常见面试题
2021关于网络安全问题的新闻
数据库怎么复制到另一个表