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>
改了表结构也无法恢复被删除的数据。
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>
改了表结构也无法恢复被删除的数据。
相关文章推荐
- Oracle9 利用闪回功能恢复偶然丢失的数据
- 利用ORACLE的闪回功能恢复数据
- 利用ORACLE的闪回功能恢复数据
- oracle_利用闪回功能恢复数据
- oracle利用flashback 闪回功能恢复delete数据
- 用Oracle闪回功能恢复偶然丢失的数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- 利用oracle flashback技术恢复数据之 ――事务级别闪回
- 使用oracle闪回查询功能恢复之前删除的数据
- 用Oracle闪回功能恢复偶然丢失的数据
- Oracle闪回功能----——恢复偶然丢失的数据
- 用Oracle闪回功能恢复偶然丢失的数据
- 用Oracle闪回功能恢复偶然丢失的数据--数据被误删除了,多亏了万能的oracle,....后怕
- 利用oracle flashback技术恢复数据之 ――事务级别闪回
- oracle数据闪回功能(恢复误删除的表信息)
- 用Oracle闪回功能(flashback)恢复删除的数据
- 用Oracle闪回功能恢复偶然丢失的数据
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- 用Oracle闪回功能(flashback)恢复删除的数据---Oracle;闪回;回滚段;数据恢复
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据