转载请注明:来自http://blog.youkuaiyun.com/M_ChangGong/ 作者:张燕广
下面进行把数据恢复到某个点上的实验。
要实现把数据闪回到过去的某个点上,必须确保与撤销的表空间有关的参数设置合理。
已DBA身份登录数据库,查看撤销表空间有关参数:
SQL> conn sys/admin_0522 as sysdba;
已连接。
SQL> show parameter undo;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
undo_management 表示系统采用撤销表空间记录增、删、该数据。
undo_tablespace 表示撤销表空间名称是UNDOTBS1
undo_retention 表示记录在用撤销表空间内的记录增、删、该数据保留的时间,这里是900秒。也可以修改该参数,使保留时间更长。
SQL> alter system set undo_retention=1800 scope=both;
系统已更改。
下面测试一下查看闪回版本以及根据时间点恢复相应数据。
SQL> conn zygdemo/fhwlcatv@zygora
已连接。
SQL> select * from test;
ID
----------
1
2
3
下面依次执行如下操作:
第1组
DELETE FROM TEST WHERE ID=3;
Commit;
select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual;
结果为:
SQL> DELETE FROM TEST WHERE ID=3;
已删除 1 行。
SQL> Commit;
提交完成。
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'
-----------------
20090604 10:57:35
第2组
DELETE FROM TEST WHERE ID=2;
Commit;
select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual;
结果为:
SQL> DELETE FROM TEST WHERE ID=2;
已删除 1 行。
SQL> Commit;
提交完成。
SQL> select to_char(sysdate,'yyyymmdd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'
-----------------
20090604 10:59:44
在20090604 10:57:35和20090604 10:59:44分别删除了ID=3和ID=2的记录。
查询当前TEST表中记录:
Select * from test;
SQL> Select * from test;
ID
--------------------------------------------------------
1
查询10:59:43时刻TEST表中记录:
SQL> select * from test
2 as of timestamp
3 to_timestamp('20090604 10:59:43','yyyymmdd hh24:mi:ss');
ID
----------
1
2
查询10:57:34时刻TEST表中记录:
SQL> select * from test
2 as of timestamp
3 to_timestamp('20090604 10:57:34','yyyymmdd hh24:mi:ss');
ID
----------
1
2
3
现在想把数据恢复到只有ID为1和2时的状态,可以如下操作:
alter table test enable row movement;
flashback table test to timestamp
to_timestamp('20090604 10:59:43','yyyymmdd hh24:mi:ss');
select * from test;
结果为:
SQL> alter table test enable row movement;
表已更改。
SQL> flashback table test to timestamp
2 to_timestamp('20090604 10:59:43','yyyymmdd hh24:mi:ss');
闪回完成。
SQL> select * from test;
ID
----------
1
2
本文通过具体步骤展示了如何使用Oracle数据库的闪回功能将表的数据恢复到过去特定的时间点,并详细解释了撤销表空间参数的作用及调整方法。
1522

被折叠的 条评论
为什么被折叠?



