Oracle 归档历史数据,[生产库实战] 采用存储过程对生产线历史表数据进行归档...

生产线历史数据归档是数据库运维的一项日常基本工作。在建表设计时,通常都将数据流水表(如:日志、用户登录历史,软件下载记录,用户属性更改历史表等)设计为范围分区表、间隔分区表(11G),当超过业务要求的保留范围时,此数据基本是静态数据且应用程序再不对其进行访问,但有可能会由于某些特殊要求需要手动查询。在这个情况下,都将其数据从生产库归档至历史库,并对其进行压缩保存,如果超出特殊要求查询的范围,那就直接将其导出压缩备份到磁带。

在Oracle数据库中,用做表数据归档操作的方法很多,如:exp/imp、expdp/impdp、传输表空间等方法,这些都是日常数据库维护可能使用到的,这些工具的使用方法这里不展开了,下面进入今天的主题,使用存储过程归档生产线历史表数据,先对其简单做下总结:

1、简单,不容易出错;

2、对其源库(这里就是生产库)来说,就是一条select查询语句,性能影响小;

3、数据从源库到目标库不需要落地,和dblink+impdp迁移数据的方法类似,节约导出数据所需空间(上百GB的表)及归档时间;

4、可监控其归档进度及归档记录数;

5、如果是跨机房传输,请监控好网络带宽流量。

6、......

操作流程:

1、在生产库维护用户的Schema下创建一张视图,视图中包含需要归档的表的分区:

create view log_table_p201209

as

select * from user01.log_table partition(P201209);

注:为什么要建视图? 因为通过dblink查询不能用 select * from table partition (partition_name).....这样的语句。

2、在历史库放归档数据的用户下(历史库操作都下面都在此用户下操作)创建数据归档状态表及序列-- Create table

create table data_archive_status

(

id   NUMBER,

threadno   NUMBER,

table_name VARCHAR2(60),

syncnum    NUMBER,

state      NUMBER,

starttime  DATE,

synctime   DATE,

remark     VARCHAR2(2000)

);

-- Add comments to the columns

comment on column data_archive_progress.state

is '0:开始,1:打开、解析游标,2:提取数据,3:某个表同步完成,4:所有表全部完成,其他负数:错误编码';

-- Create sequence

create sequence seq_id

minvalue 1

maxvalue 9999999999999

start with 1

increment by 1

cache 20;

3、在历史

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值