oracle 自动分区+修改分区名称函数+定时修改区名

oracle 自动分区+修改分区名称函数+定时修改区名

踩坑记录
自动
代码:
**根据数据的时间自动创建分区(每月1号)
CREATE TABLE FU_SHIYAN
(
ID VARCHAR2(36) ,
APP_ID VARCHAR2(50) ,
INSTITUTION_UUID VARCHAR2(50) ,
GB_INDEX_ID VARCHAR2(50) ,
RESIDENT_ID VARCHAR2(50) ,
IMAGE_ID VARCHAR2(1000),
TYPE VARCHAR2(50) ,
STATUS VARCHAR2(50) ,
UPDATE_TIME DATE
) PARTITION BY RANGE (UPDATE_TIME) INTERVAL (numtoyminterval(1, ‘month’))
(partition p_202103 values less than(to_date(‘2021-03-01’, ‘yyyy-mm-dd’)));

查询分区语句**
select * from user_tab_partitions where table_name=‘FU_SHIYAN’;
在这里插入图片描述
查询分区表里的数据:
select * from FU_SHIYAN partition(P_202106);
在这里插入图片描述

想要上面格式的分区名需要写函数
在这里插入图片描述
函数代码:
CREATE OR REPLACE
procedure pro_partition
as
v_sql varchar(400);
v_table_name user_tab_partitions.table_name%type;
v_partition_name user_tab_partitions.partition_name%type;
v_high_value varchar(200);
v_tmp_partition_name user_tab_partitions.partition_name%type;
cursor cur1 is
select
table_name ,
partition_name ,
high_value
from user_tab_partitions
where partition_name like ‘SYS%’ and table_name=‘FU_SHIYAN’;
begin
open cur1;
loop
fetch cur1 into v_table_name,v_partition_name,v_high_value;
exit when cur1%notfound;
v_tmp_partition_name := substr(v_high_value,11,10);
v_tmp_partition_name := to_char( to_date(v_tmp_partition_name,‘yyyy-mm-dd’) , ‘yyyymm’);
v_sql := ‘alter table ‘||v_table_name||’ rename partition ’
||v_partition_name
||’ to P_’||v_tmp_partition_name;
execute immediate v_sql;
end loop;
close cur1;
end;
这样会把所有自动生成的SYS开头的区名称全部替换成自己想要的时间格式
可以点击运行测试哦
现在设置自动更换区名称
登录PLSQL****右键新建
在这里插入图片描述
在这里插入图片描述
这样会每分钟执行一次这个函数去把区名称改成自己想要的格式哦
时间想变可以参考
在这里插入图片描述

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值