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

本文介绍了在Oracle数据库中如何使用闪回表功能来恢复被删除的表,并演示了通过不同命令恢复特定版本表的过程及注意事项。

转载请注明:来自http://blog.youkuaiyun.com/M_ChangGong/ 作者:张燕广

下面进行测试删除TEST的实验。

DROP  TABLE  TEST  PURGE;

依次执行下面3组语句:

1组:

       CREATE TABLE TEST (ID NUMBER);
INSERT INTO TEST VALUES (1);
COMMIT;
DROP TABLE TEST;

2组:

       CREATE TABLE TEST (ID NUMBER);
INSERT INTO TEST VALUES (2);
COMMIT;
DROP TABLE TEST;

3组:

       CREATE TABLE TEST (ID NUMBER);
INSERT INTO TEST VALUES (3);
COMMIT;
DROP TABLE TEST;

查看当前模式中的所有表

SELECT * FROM TAB;

结果为:

TNAME                          TABTYPE  CLUSTERID

------------------------------ ------- ----------

BIN$nTqd5QZfTCKYuua0QlNzDw==$0  TABLE

BIN$xEXO3tErQSanuccwfq3OhQ==$0   TABLE

BIN$VMvc5HpzREKopxYRFTUuUA==$0 TABLE

 

下面利用闪回表进行恢复表TEST,执行如下语句:

Flashback table TEST TO BEFORE DROP;

对表TEST执行查询操作,字段ID的值应该是什么?

SELECT ID FROM TEST;

结果为:

SQL> SELECT ID FROM TEST;

 

        ID

----------

         3

       如果想要恢复第1组合第2组中的TEST表应该怎么操作呢?

  执行如下语句把表TEST彻底删除:

DROP TABLE TEST PURGE;

然后再次执行恢复表操作:

FLASHBACK TABLE TEST TO BEFORE DROP;

下面再次查询表TEST

SELECT * FROM TEST;

结果为:

SQL> Select * from test;

 

        ID

----------

         2

可以得出结论,相同名称的表执行多次创建和删除操作后,利用闪回表进行恢复时总是恢复最近删除的那张表。

同理,利用上面的方法也可以恢复第1组的TEST表。

但是,这种方法最大的缺憾时等成功恢复第1组的TEST表后,第2组和第3组的TEST表全都彻底删除了。

在不删除当前TEST表的情况下,如果恢复第1组的TEST表?

可不可以将第1组的TEST表恢复后进行重命名?

试一下再说。

执行如下语句:

FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;
结果为:
SQL> FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;
闪回完成。

TEST1执行查询操作:

SELECT * FROM TEST1;

结果为:

SQL> SELECT * FROM TEST1;

 

        ID

----------

         1

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值