按天分区并通过存储过程删除历史分区
admin
2023-04-19 10:23:34
0

-- 按天创建分区表,并通过存储过程定期删除指定天数前的分区

/****/
/ 创建按天分区表 */
/****/

-- 订单订单资产快照表
drop table DTSDATA.tyebasset_beforecash_ds_self;
create table DTSDATA.tyebasset_beforecash_ds_self
(
id_yebassetself VARCHAR2(32) default sys_guid() not null,
vc_tradeacco VARCHAR2(17) not null,
vc_fundcode VARCHAR2(6) not null,
d_carryday DATE not null,
en_cday15endasset NUMBER(16,2),
en_cday24endasset NUMBER(16,2),
en_frozenbala NUMBER(16,2),
en_accumincome NUMBER(16,2),
remark VARCHAR2(200) ,
created_by VARCHAR2(100) not null,
created_date DATE not null,
updated_by VARCHAR2(100) not null,
updated_date DATE not null
)
partition by range (d_carryday)
INTERVAL (NUMTODSINTERVAL(1,'day'))
(
partition asset_self_p1 values less than (to_date('2018-01-01','yyyy-mm-dd'))
);

-- Add comments to the table
comment on table DTSDATA.tyebasset_beforecash_ds_self
is '订单订单资产快照表';

-- Add comments to the columns
comment on column DTSDATA.tyebasset_beforecash_ds_self.id_yebassetself
is '记录编号(唯一)';
comment on column DTSDATA.tyebasset_beforecash_ds_self.vc_tradeacco
is '交易账号';
comment on column DTSDATA.tyebasset_beforecash_ds_self.vc_fundcode
is '基金代码';
comment on column DTSDATA.tyebasset_beforecash_ds_self.d_carryday
is '待分配收益日期';
comment on column DTSDATA.tyebasset_beforecash_ds_self.en_cday15endasset
is 'cday截止15点资产';
comment on column DTSDATA.tyebasset_beforecash_ds_self.en_cday24endasset
is 'cday截止24点资产';
comment on column DTSDATA.tyebasset_beforecash_ds_self.en_frozenbala
is '冻结份额';
comment on column DTSDATA.tyebasset_beforecash_ds_self.en_accumincome
is '累计收益';
comment on column DTSDATA.tyebasset_beforecash_ds_self.remark
is '备注';
comment on column DTSDATA.tyebasset_beforecash_ds_self.CREATED_BY
is '录入人员';
comment on column DTSDATA.tyebasset_beforecash_ds_self.CREATED_DATE
is '创建日期';
comment on column DTSDATA.tyebasset_beforecash_ds_self.UPDATED_BY
is '更新人员';
comment on column DTSDATA.tyebasset_beforecash_ds_self.UPDATED_DATE
is '更新日期';

-- 创建主键
alter table DTSDATA.tyebasset_beforecash_ds_self add constraint PK_tyebasset_ds_self primary key (id_yebassetself) using index initrans 16 ;

-- 创建索引
create unique index DTSDATA.IDX_tyebasset_ds_self on DTSDATA.tyebasset_beforecash_ds_self (vc_tradeacco,vc_fundcode,d_carryday) local ;

-- 创建同义词、授权
create or replace public synonym tyebasset_beforecash_ds_self for dtsdata.tyebasset_beforecash_ds_self ;
grant select, insert, update, delete on DTSDATA.tyebasset_beforecash_ds_self to FDWKTL, DTSOPR, R_DTSDATA_DML;
grant select on DTSDATA.tyebasset_beforecash_ds_self to R_DTSDATA_QRY,R_DTSDATA_DEV_QRY;

/****/
/ 定时删除分区表历史分区 package /
/****/

create or replace package puf_dts_xxx is
procedure del_self_partition(
days in int, --保留天数
r_error_code out int, --错误代码
r_error_message out varchar2 --错误消息
);
end puf_dts_xxx;
/

/****/
/* 定时删除分区表历史分区 package body /
/****/

create or replace package body puf_dts_xxx is
procedure del_self_partition(days in int, --保留天数
r_error_code out int, --错误代码
r_error_message out varchar2 --错误消息
) is
partitions_size int;
delete_size int;
v_partition_name user_tab_partitions.partition_name%TYPE;
cursor c_partitions is
select partition_name from user_tab_partitions
where table_name = 'TYEBASSET_BEFORECASH_DS_SELF'
and partition_position > 1
order by partition_position asc;

begin
-- 获取除默认分区外的分区数量
select count(1) into partitions_size
from user_tab_partitions
where table_name = 'TYEBASSET_BEFORECASH_DS_SELF';

delete_size := partitions_size - 1 - days;     -- 待删除分区数量

open c_partitions;
loop
  fetch c_partitions
    into v_partition_name;
  EXIT WHEN delete_size <= 0;
  begin
    --删除分区后需要更新全局索引,否则后续插入数据会报ORA-01502异常
    execute immediate 'alter table  dtsdata.tyebasset_beforecash_ds_self drop partition ' || v_partition_name || ' update global indexes ';
    delete_size := delete_size - 1;
  end;
end loop;
close c_partitions;

Exception
When others then
r_error_code := SQLCODE;
r_error_message := SQLERRM;
puf_dts_error_log.log_error(r_error_code,
r_error_message,
'puf_dts_xxx.del_self_partition',
'删除' || days || '天前分区失败',
user);

end del_self_partition;

end puf_dts_xxx;
/

-- 指定分区查询
-- select * from TYEBASSET_BEFORECASH_DS_SELF partition(SYS_P131) ;

-- java代码 通过preparestatement调用
-- call puf_dts_clear_expproc.exportpredeal_proc(?,?,?,?)

--kettle定时任务 TyebassetBeforecashDsSelfMain

相关内容

热门资讯

“一次愉快的会晤”,泽连斯基披... 在俄乌互相加大对对方纵深目标打击之际,乌克兰总统泽连斯基7月28日造访了白宫,与美国总统特朗普举行会...
总统连遭“逼宫”,少帅临危受命 躲避着燃烧瓶和火箭弹袭击,四辆苏制BMP步兵战车快速穿行在马里乌波尔市区。即将出城的路口,迎面出现1...
独居女子在卧室玩偶内发现摄像头... 租房独居女子意外发现家中玩偶内藏着偷拍设备,报警后偷拍设备竟“不翼而飞”,门锁记录显示有人在她出门的...
伊学者:乌克兰袭击行动适得其反... 乌克兰袭击与伊朗有关的船只后,伊朗和俄罗斯接连作出强硬回应。伊朗外交学院教授法拉吉扎德在接受凤凰卫视...
20万人怒火不会停!蓝议员挺蒋... 海峡导报综合报道 在蓝白号召台湾民众上凯道呐喊“反毒台”后,台北市长蒋万安日前透露,近日不少民代私下...
柯文哲妻子陈佩琪畅游大陆,民进... 台湾民众党前主席柯文哲妻子陈佩琪27日在脸书发文证实,自己早前由儿子陪同前往上海、杭州与北京旅游一周...
高市早苗被问如何改善中日关系 据日本东京新闻报道,当地时间7月27日,日本首相高市早苗在首相官邸举行记者会。当被问及如何改善中日关...
扎哈罗娃批小泉进次郎涉核言论:... 【环球网报道 记者 张江平】综合俄新社等媒体报道,对于日本防卫大臣小泉进次郎涉核言论,俄罗斯外交部发...
“特高课”再现?日本强推“国家... 无视反对战争正义呼声 复刻战前军国主义体制日本强推“国家情报局”引发广泛担忧和批评(国际视点)本报记...
6G相比5G不只是速度更快 将...   6G相比5G不只是速度更快  【6G相比5G不只是速度更快】7月28日,相比5G,6G不仅是速度...