建议使用Chrome浏览器访问!
技术支持
互动社区
学习培训
深信服官网
合作伙伴

超融合HCI

关注
深信服超融合SANGFOR HCI是面向下一代数据中心的软件定义基础架构,通过虚拟化技术融合计算、存储、网络和安全等资源,并提供运维管理、容灾备份、智能监控等高级特性,帮助用户构建极简、稳定、高性能的云化数据中心基石。
故障案例库
典型场景排查思路

【aCloud】利用Oracle的flashback恢复误删(drop)表

更新时间:2019-06-19
  • 阅读权限:游客
  • 下载
  • 分享
  • 收藏
所属模块
适用版本 通用
本案例针对客户在日常的运维中,误删除(drop)了业务表,导致了数据的丢失。
(1)环境准备
1.登录普通帐号jay创建实验表和数据
  1. SQL> conn jay/123456;
  2. Connected.
  3. SQL> create table tt_2543 (id number,dtime date);

  4. Table created.

  5. SQL> insert into tt_2543 values(2543,sysdate);

  6. 1 row created.

  7. ... ... (创建若干条记录)

  8. SQL> commit;

  9. Commit complete.

  10. SQL> select * from tt_2543;

  11.         ID DTIME
  12. ---------- -------------------
  13.       2543 2019-06-16 11:00:59
  14.       2543 2019-06-16 11:01:01
  15.       2543 2019-06-16 11:01:03
  16.       2543 2019-06-16 11:01:05
  17.       2543 2019-06-16 11:01:07
  18.       2543 2019-06-16 11:01:07

  19. 6 rows selected.

2.模拟误操作,删除测试表tt_2532
  1. SQL> drop table tt_2543;

  2. Table dropped.

(2)处理过程
1.查询回收站里被删除的对象
  1. SQL> select OWNER,OBJECT_NAME,ORIGINAL_NAME,DROPTIME from DBA_RECYCLEBIN ;

  2. OWNER      OBJECT_NAME                    ORIGINAL_NAME        DROPTIME
  3. ---------- ------------------------------ -------------------- -------------------
  4. JAY        BIN$i2kfw4puVOfgUz0DBApsPg==$0 TT_2543              2019-06-16:11:03:29

2.闪回被删除的表
  1. SQL> flashback table jay.tt_2543 to before drop rename to tt_2543_before_bak;

  2. Flashback complete.

  3. SQL> select * from jay.tt_2543_before_bak;

  4.         ID DTIME
  5. ---------- -------------------
  6.       2543 2019-06-16 11:00:59
  7.       2543 2019-06-16 11:01:01
  8.       2543 2019-06-16 11:01:03
  9.       2543 2019-06-16 11:01:05
  10.       2543 2019-06-16 11:01:07
  11.       2543 2019-06-16 11:01:07

  12. 6 rows selected.

  13. SQL> select * from jay.tt_2543;

  14. no rows selected

  15. SQL> select OWNER,OBJECT_NAME,ORIGINAL_NAME,DROPTIME from DBA_RECYCLEBIN ;

  16. no rows selected   --此时回收站里已无数据

  17. 此时所有记录已恢复到备份表tt_2543_before_bak中。

3.当我们在不同的时间点删除的相同的表名的表时,依次闪回即可
  1. SQL> select OWNER,OBJECT_NAME,ORIGINAL_NAME,DROPTIME from DBA_RECYCLEBIN ;

  2. OWNER        OBJECT_NAME                    ORIGINAL_NAME            DROPTIME
  3. ------------ ------------------------------ ------------------------ -------------------
  4. JAY          BIN$i2kfw4pxVOfgUz0DBApsPg==$0 TT_2543                  2019-06-16:11:16:56
  5. JAY          BIN$i2kfw4pvVOfgUz0DBApsPg==$0 TT_2543                  2019-06-16:11:15:37
  6. JAY          BIN$i2kfw4pwVOfgUz0DBApsPg==$0 TT_2543                  2019-06-16:11:15:58

  7. SQL> flashback table jay.tt_2543 to before drop rename to tt_2543_before_bak2;

  8. Flashback complete.

  9. SQL> flashback table jay.tt_2543 to before drop rename to tt_2543_before_bak3;

  10. Flashback complete.

  11. SQL> flashback table jay.tt_2543 to before drop rename to tt_2543_before_bak4;

  12. Flashback complete.

  13. SQL>  select OWNER,OBJECT_NAME,ORIGINAL_NAME,DROPTIME from DBA_RECYCLEBIN ;

  14. no rows selected
注意:闪回的顺序为先进后出!
1.该案例适用于对表误删除操作;
2.闪回表依赖数据库的回收站,若回收站被覆盖或清空,则恢复不成功;
3.发现误操作一定要及时处理或上报;
本页目录
  • 问题描述
  • 解决方案
  • 建议与总结
您当前处于未登录状态,资料搜索或查找可能会不全面,请登录后以查找更全面的内容注册登录