【误删数据不要慌,Oracle闪回表来帮忙】之五

本文通过具体步骤展示了如何使用Oracle数据库的闪回功能将表的数据恢复到过去特定的时间点,并详细解释了撤销表空间参数的作用及调整方法。

转载请注明:来自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:3520090604 10:59:44分别删除了ID=3ID=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

现在想把数据恢复到只有ID12时的状态,可以如下操作:

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

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值