处理历史数据的一种方法,建库考虑~~-阿里云开发者社区

开发者社区> 神垕> 正文

处理历史数据的一种方法,建库考虑~~

简介: 利用Oracle的分区技术,很好的处理历史数据。。代码如下: create table sale_data (sale_id number(5), salesman_name varchar2(30), sales_amount number(10), sales_date date) partition by range(sales_date) ( partition s
+关注继续查看

利用Oracle的分区技术,很好的处理历史数据。。代码如下:

create table sale_data

(sale_id number(5),
salesman_name varchar2(30),
sales_amount number(10),
sales_date date)
partition by range(sales_date)
(
partition sales_2009_1 values less than(to_date(20090201,'yyyymmdd')),
partition sales_2009_2 values less than(to_date(20090301,'yyyymmdd')),
partition sales_2009_3 values less than(to_date(20090401,'yyyymmdd')),
partition sales_2009_4 values less than(to_date(20090501,'yyyymmdd')),
partition sales_2009_5 values less than(to_date(20090601,'yyyymmdd')),
partition sales_2009_6 values less than(to_date(20090701,'yyyymmdd'))
)


--创建过程
create or replace procedure drop_partition_test as
  v_part_name varchar2(100); --要添加分区表的名称前缀
  v_over_time number; --过期时间间隔
  v_err_num   number; --ora错误号
  v_err_msg   varchar2(100); --错误描述


begin
  --得到实践最早的分区
  select min(a.partition_name)
    into v_part_name
    from user_tab_partitions a
   where a.table_name = 'SALE_DATA';


  --取得时间最早的分区到当前的时间间隔
  select months_between(sysdate,
                        to_date(substr(min(a.partition_name)), 7, 8),
                        'yyyymm')
    into v_over_time
    from user_tab_partitions a
   where a.table_name = 'SALE_DATA';


  if v_over_time > 12 then
    execute immediate 'alter table sale_data drop partition ' ||
                      v_part_name;
  end if;


exception
  when others then


    v_err_num := SQLCODE;
    v_err_msg := substr(sqlerror, 1, 100);


    dbms_output.put_line('执行错误:' || v_err_num || '错误描述:' || v_err_msg);


end drop_partition_test;


--job
declare


  job varchar2(100);
begin
  dbms_job.submit(job, 'drop_partition_test;', sysdate, 'sysdate+1');
end;


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
7537 0
MaxCompute数据仓库在更新插入、直接加载、全量历史表三大算法中的数据转换实践
2018“MaxCompute开发者交流”钉钉群直播分享,由阿里云数据技术专家彬甫带来以“MaxCompute数据仓库数据转换实践”为题的演讲。本文首先介绍了MaxCompute的数据架构和流程,其次介绍了ETL算法中的三大算法,即更新插入算法、直接加载算法、全量历史表算法,再次介绍了在OLTP系统中怎样处理NULL值,最后对ETL相关知识进行了详细地介绍。
4738 0
Database · 理论基础 · 数据库事务隔离发展历史
事务隔离是数据库系统设计中根本的组成部分,本文主要从标准层面来讨论隔离级别的发展历史,首先明确隔离级别划分的目标;之后概述其否定之否定的发展历程;进而引出 Adya给出的比较合理的隔离级别定义,最终总结隔离标准一路走来的思路。
1253 0
RDS for MySQL 通过分区自动归档历史数据
RDS for MySQL 通过分区归档历史数据 原始表 分区 用于分区维护的存储过程 每月调用存储过程的事件 随着数据的积累,数据量的增加,越来越多的表体积变的庞大,不但影响查询的执行时间,而且使得管理工作(比如添加删除索引)变的越发复杂和困难。本文介绍一个通过分区滑动来归档历史
7630 0
数据仓库数据模型之:极限存储--历史拉链表
摘要: 在数据仓库的数据模型设计过程中,经常会遇到文内所提到的这样的需求。而历史拉链表,既能满足对历史数据的需求,又能很大程度的节省存储资源。 在数据仓库的数据模型设计过程中,经常会遇到这样的需求:1. 数据量比较大;2. 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等;3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的
4357 0
因图片处理软件一个漏洞,Facebook给出历史最高漏洞赏金
本文讲的是因图片处理软件一个漏洞,Facebook给出历史最高漏洞赏金,ImageMagick是一个免费开源的图像处理软件,用于创建、编辑、合成图片,可运行于大多数的操作系统,支持PHP、Ruby、NodeJS和Python等多种语言,使用非常广泛。
1178 0
+关注
神垕
实践、研究Hive、Spark、Vertica
59
文章
4
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载