您的位置:首页 > 数据库 > Oracle

oracle 利用闪回功能恢复数据

2008-09-04 10:35 579 查看
如果在丢失数据是使用了DDL语句造成或丢失数据后修改了表结构,那么就会造成使用不了闪回功能。SQL> select count(1) from test;
COUNT(1)----------9
SQL> select systimestamp from dual;
SYSTIMESTAMP---------------------------------------------------------------------------10-12月-07 11.29.05.765000 上午 +08:00
SQL> delete from test where rownum <3;
已删除2行。
SQL> commit;
提交完成。
SQL> select count(1) from test;
COUNT(1)----------7
SQL> col scn for 999999999999;SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN-------------1352535
SQL> select count(1) from test as of scn 1352530;
COUNT(1)----------7
SQL> select count(1) from test as of scn 1352520;
COUNT(1)----------9
SQL> create table test_rec as select *from test as of scn 1352520;
表已创建。
SQL> select count(1) from test_rec;
COUNT(1)----------9
SQL> delete from test;
已删除7行。
SQL> commit;
提交完成。
SQL> insert into test select *from test_rec;
已创建9行。
SQL> commit;
提交完成。
SQL>

如果是之前进行drop过表,就无法恢复:

SQL> create table zero as select *from test;create table zero as select *from test*ERROR 位于第 1 行:ORA-00955: 名称已由现有对象使用

SQL> drop table zero;
表已丢弃。
SQL> create table zero as select *from test;
表已创建。
SQL> insert into zero select *from test;
已创建9行。
SQL> commit;
提交完成。
SQL> select count(1)from zero;
COUNT(1)----------18
SQL> delete from zero where rownum <8;
已删除7行。
SQL> commit;
提交完成。
SQL> select count(1) from zero;
COUNT(1)----------11
SQL> col scn for 999999999999;SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN-------------1352901
SQL> select count(1) from zero as of scn 1352850;select count(1) from zero as of scn 1352850*ERROR 位于第 1 行:ORA-01466: 无法读数据 - 表定义已更改

SQL>
如果修改一下表结构呢?
SQL> alter table TEST rename column COL to COL1;
表已更改。
SQL> alter table TEST add col2 number;
表已更改。
SQL> update test set col2 = col1;
已更新9行。
SQL> commit;
提交完成。
SQL> select dbms_flashback.get_system_change_number scn from dual;
SCN-------------1352972
SQL> select * from test as of scn 1352965;select * from test as of scn 1352965*ERROR 位于第 1 行:ORA-01466: 无法读数据 - 表定义已更改

SQL>
改了表结构也无法恢复被删除的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: