当前位置: 代码迷 >> Oracle管理 >> 勿操作,怎样恢复(急)?解决方法
  详细解决方案

勿操作,怎样恢复(急)?解决方法

热度:991   发布时间:2016-04-24 06:22:28.0
勿操作,怎样恢复(急)?
环境:oracle 10 归档模式

今天上午对一张业务表部分数据进行更新,后发现更新语句有问题(当初测试不到位)。
导致业务停止。
最后没有办法,把该业务表delete,然后有最初备份的数据进行了覆盖,虽然现在业务可以正常进行,
但这期间的数据都丢失了,现在想找回这些数据,应该怎么办?

本人数据库水平不高,还请高人指点!

------解决方案--------------------
探讨
环境:oracle 10 归档模式

今天上午对一张业务表部分数据进行更新,后发现更新语句有问题(当初测试不到位)。
导致业务停止。
最后没有办法,把该业务表delete,然后有最初备份的数据进行了覆盖,虽然现在业务可以正常进行,
但这期间的数据都丢失了,现在想找回这些数据,应该怎么办?

本人数据库水平不高,还请高人指点!

------解决方案--------------------
事情已经悲剧了,用LogMiner找到那段时间的操作,然后手工弥补
------解决方案--------------------
回3楼,闪回查询并不是你理解的覆盖,而是能查询到过去一个时间点时表的内容。
------解决方案--------------------
-------先创建一张表,把数据闪回到你操作失误之前的时间点
SQL> create table scott.emp_bak as select * from scott.emp as of timestamp to_timestamp('2010-12-17 14:10:20','yyyy-mm-dd hh24:mi:ss');

Table created
-----删除原表数据
SQL> truncate table scott.emp;

Table truncated

----把数据从备份表还原过来
SQL> insert into scott.emp select * from scott.emp_bak;

----删除备份表
SQL> drop table emp_bak;
------解决方案--------------------
以前我们也遇到过类似情况.
是按归档回复表,然后让前台根据票根把丢失用户交费数据再次做了录入.
------解决方案--------------------
探讨
试试这个看看~
FLASHBACK TABLE 表名 TIMESTAMP
TO_TIMESTAMP('时间', 'YYYY-MM-DD HH24:MI:SS');
ps:直接执行FLASHBACK,可能不行,先要更改一下设置:
ALTER TABLE occ_cef ENABLE ROW MOVEMENT;

  相关解决方案