错误修改删除数据后的恢复方法

Oracle ERP维护人员工作再小心也难免会有在正式库中误删或者误改数据并且已经commit的情况发生,那么我就要用到 - Oracle9i中的FlashBack功能,或许很多同事们都在用,下面我谈谈我在使用中的方法和一些感想:
具体方法如下 >>
1. 我们可以使用
SELECT item_cost FROM cst_item_costs
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' hour)
WHERE organization_id = 1
AND yyyymm = 200712
AND item_number = '6384BLCCSL';
来查看1个小时前的数据.
* 这里需要说明几点:
a. AS OF TIMESTAMP expr 是SELECT语句中的FLASHBACK子句
b. SYSTIMESTAMP 是系统提供的时间函数,精确度可以达到微秒级,并提供当前时区
eg. select SYSTIMESTAMP from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
29-DEC-07 11.16.08.112686 AM +09:00
c. INTERVAL 的作用是用来指定时间区间,下面是它参与运算的法则
Operand1 Operator Operand2 Result Type
-------------------------------------------------------
Datetime - Interval Datetime

我们可以通过修改时间单位和数量来改变倒退时间
eg. TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' day) --查询一天前的数据
TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' minute ) --查询十分钟前的数据
TIMESTAMP (SYSTIMESTAMP - INTERVAL '50' second ) --查询50秒前的数据
d. 关于在FlashBack中的可回朔时间
Oracle中有两个参数能够决定可回朔时间 >>
undo 表空间大小 和 undo_retention 初始化参数.
一般的ERP正式系统里面的 undo tablespace 为 20G左右, undo_retention设置为 3600S.
业务繁忙时间最大可回朔时间约为 2-3h,非业务时间为4-5h,这里需要注意: 最大可回朔时间是由
undo表空间大小及数据库数据变更的频繁程度来决定的.
如果超过最大可回朔时间时,系统会给出有名的 ORA-01555 快照太老(Snapshot too old)错误.
e. 做FlashBack必须要有 FlashBack Any Table 的系统权限.

2. 那么依此类推,我们就可以利用FlashBack来恢复某段时间前的数据了
UPDATE cst_item_costs SET item_cost =
(SELECT item_cost FROM cst_item_costs
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' hour)
WHERE organization_id = 1
AND yyyymm = 200712
AND item_number = '6384BLCCSL)
WHERE organization_id = 1
AND yyyymm = 200712
AND item_number = '6384BLCCSL';
* 这里也要说明几点:
a. 在恢复数据前,要检查WHERE条件是否具有唯一性
b. 如果要成批恢复或全表恢复数据的话,要检查是否在指定的时间区间内还有其他会话写入的数据
[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7200614/viewspace-996309/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7200614/viewspace-996309/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值