关于数据备份

[size=large][color=blue]
以下是关于数据备份的一些操作总结,是项目组数据库专家写的,我稍微整理了一下,也验证过,没有问题。

情景分析:
1.在执行回退脚本的时候把一个表的数据全部truncate 掉了,因为之前没有备份,所以导致无法恢复,需要防止这种情况在用户现场出现。

2.回退脚本一直是个问题。之前讨论是通过create table aa_bak as select * from aa的方式先进行备份。后续的回退是通过(1)truncate table aa;(2)insert into aa select * from aa_bak;但如果前面备份不成功或没有备份,后面执行回退脚本的时候就会发生不可挽回的事故。

基于以上原因,作出如下改进:

1.有insert、delete、update操作的表统一在一个脚本里进行备份,这个备份脚本在现网升级前首先执行,备份完之后再提供脚本进行查询备份是否成功。

举例:假如要给a表备份 ,则执行create table a_bak tablespace MREAD_HISDAT as select * from a;--注意这里表指定创建备份表存放的表空间
其次,查询创建是否成功 select count(t.table_name) from user_tables t where t.table_name='A_BAK';升级人员要看一下查询结果是否为零,如果为零则备份不成功。
note:查询的时候表名参数必须大写,因为数据库字典中保存的信息是大写的。
然后执行升级脚本。

2.为数据的回退单独提供一个脚本,在回退脚本中需判断备份表是否存在,然后再进行truncate 操作和insert 操作。可在一个存储过程中做这些事情。

举例:要退回a表的内容

select count(*) into :num from user_tables t where t.table_name='A_BAK';

if (num=1) then

truncate table a;

insert into a select * from a_bak;

end if;

truncated操作是很危险的,一不小心所有数据都会丢失,完全没办法找回来。[/color][/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值