oracle817怎么备份,ORACLE数据库年底前的备份和整理oracle817

用到了IMP EXP 分区 回滚段

1.有一个表存放每天的进销存业务

2.另外两张分别存放每天的销售流水

将去年的数据 转存到 不常用的表备份

将今年的数据表重新导出、导入 然后重新做数据索引

一 处理销售

select min(invoice_date),max(invoice_date),count(*),count(distinct invoice_date)

from invoice

create table invoice08

as

select * from invoice

where invoice.invoice_date between to_date(20080101,'YYYYMMDD') and

to_date(20081231,'yyyymmdd')

exp userid file = back_invoice_08.dmp tables = invoice08

delete from invoice where invoice_date

然后将invoice表数据重新做数据整理(现在本人没有学到其他的方法,但是我测试用EXP导出后IMP导入可以解决我的小问题)

1.   exp userid file = back_invoice.dmp tables = invoice;

2.   truncate table invoice

3.   imp userid file = back_invoice.dmp tables = invoice;

4.  重新做索引

结果只剩下2009年的当年数据(保留一年数据)

添加 数据的索引并加入分区功能 提高检索的速度

CREATE INDEX "SZSTORE"."INVOICE|_INDEX1"

ON "SZSTORE"."INVOICE"("INVOICE_DATE")

TABLESPACE "SYSTEM" GLOBAL

PARTITION BY RANGE (INVOICE_DATE) (

PARTITION "INVOICE|_INDEX1_P1"

VALUES LESS THAN (TO_DATE('2009-1-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P2"

VALUES LESS THAN (TO_DATE('2009-2-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P3"

VALUES LESS THAN (TO_DATE('2009-3-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P4"

VALUES LESS THAN (TO_DATE('2009-4-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P5"

VALUES LESS THAN (TO_DATE('2009-5-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P6"

VALUES LESS THAN (TO_DATE('2009-6-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P7"

VALUES LESS THAN (TO_DATE('2009-7-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P8"

VALUES LESS THAN (TO_DATE('2009-8-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P9"

VALUES LESS THAN (TO_DATE('2009-9-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P10"

VALUES LESS THAN (TO_DATE('2009-10-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P11"

VALUES LESS THAN (TO_DATE('2009-11-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P12"

VALUES LESS THAN (TO_DATE('2009-12-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P13"

VALUES LESS THAN (TO_DATE('2010-1-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P14"

VALUES LESS THAN (TO_DATE('2010-2-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P15"

VALUES LESS THAN (TO_DATE('2010-3-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P16"

VALUES LESS THAN (TO_DATE('2010-4-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P17"

VALUES LESS THAN (TO_DATE('2010-5-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P18"

VALUES LESS THAN (TO_DATE('2010-6-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P19"

VALUES LESS THAN (TO_DATE('2010-7-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P20"

VALUES LESS THAN (TO_DATE('2010-8-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P21"

VALUES LESS THAN (TO_DATE('2010-9-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P22"

VALUES LESS THAN (TO_DATE('2010-10-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P23"

VALUES LESS THAN (TO_DATE('2010-11-1','YYYY-MM-DD')) ,

PARTITION "INVOICE|_INDEX1_P24"

VALUES LESS THAN (MAXVALUE) )

--------------------------------------------------------------------------------------

因为明细的数据量太大 所以准备存放一个季度

--------------------------------------------------------------------------------------

1.查看数据

0818b9ca8b590ca3270a3433284dd417.png

2.创建并备份数据

create table invoice_line09_79 as select * from invoice_line

where invoice_date between to_date(20090701,'yyyymmdd')

and to_date(20090930,'yyyymmdd')

3.删除数据

/

alter rollback segment RBS5 shrink;

alter rollback segment RBS4 shrink;

alter rollback segment RBS3 shrink;

alter rollback segment RBS2 shrink;

alter rollback segment RBS1 shrink;

alter rollback segment RBS0 shrink;

alter rollback segment RBS6 shrink;

/

delete from invoice_line

where invoice_date between to_date(20090701,'yyyymmdd')

and to_date(20090930,'yyyymmdd')

0818b9ca8b590ca3270a3433284dd417.png

4. 整理数据 EXP 导出 IMP 导入一遍

问题1:

删除数据 报错回滚段满了

TABLE1 为存放每日 进销存数据 每日增加大约50000条数据 一年在200000000数据左右 所以删除非常慢

才有一下删除防范

删除TABLE1中的数据 按照每个月COMMIT 一次 可以防止 回滚段占满 报错 优化一下应该

alter rollback segment RBS5 shrink;

alter rollback segment RBS4 shrink;

alter rollback segment RBS3 shrink;

alter rollback segment RBS2 shrink;

alter rollback segment RBS1 shrink;

alter rollback segment RBS0 shrink;

alter rollback segment RBS6 shrink;

declare

month number(2);

begin

for 1..12 loop

delete from TABLE1

where to_char(run_date,'yyyy')=2008

and to_char(run_date,'mm')=month;

commit;

alter rollback segment RBS5 shrink;

alter rollback segment RBS4 shrink;

alter rollback segment RBS3 shrink;

alter rollback segment RBS2 shrink;

alter rollback segment RBS1 shrink;

alter rollback segment RBS0 shrink;

alter rollback segment RBS6 shrink;

end;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值