sql delete删除的数据怎么恢复_生产环境删除表之后怎么恢复?

概述

闪回表是一种能够恢复表或设置表到过去某个特定的时间点而又不需要进行不完全恢复的闪回技术。

使用闪回表时,所有的相关对象都能得到恢复。


Oracle11g flashback table 特性:

1、在线操作;

2、恢复到指定时间点或SCN的任何数据;

3、自动恢复相关属性、如索引、触发器等;

4、满足分布式的一致性;

5、满足数据一致性,所有相关对象将自动一致;

6、闪回表技术是基于回滚数据(undodata)来实现的,因此,要想闪回表到过去的某个时间上,必须确保与回滚表空间有关的参数设置合理。


闪回表语法:

FLASHBACK TABLE [SCHEMA.] TO {BEFORE DROP [RENAME TO TABLE] | [SCN | TIMESTAMP] expr [RNABLE |DISABLE] TRIGGERS}

实例:

SQL>delete from test where id=7766;SQL>commit;进行恢复SQL>alter table test enable row movement;SQL>flashback table test to timestamp to_timestamp('2019-03-1015:33:30','yyyyy-mm-dd hh24:mi:ss')

局限性:

FLASHBACK TABLE 命令作为单独一个事务执行,获取DML锁,统计信息不会闪回;当前索引及依赖对象被维护; 闪回表有如下特性:

1) 不能对系统表做闪回操作;

2) 在执行DDL操作后不能做闪回操作;

3) 闪回操作命令写入alert日志文件;

4) 闪回操作会产生undo 和redo数据;

注意 SYS 用户不支持闪回,Flashback Table 也是使用 UNDO tablespace 的内容来实现对数据的回退。

注意:如果想要对表进行 flashback,必须允许表的 row movement.

Alter table table _name row movement;

要 查 看 某 表 是 否 启 用 row movement , 可 以 到 user _tables 中 查 询 ( 或all_tables,dba_tables),

例如:

SQL> select row _movement from user_tables where table_name='EMP';

要启用或禁止某表 row movement,可以通过下列语句:

--启用

SQL> ALTER TABLE emp ENABLE ROW MOVEMENT;
b14e4aa38b2c2ad11cd8a67addc3be21.png

--禁止

SQL> ALTER TABLE table _name DISABLE ROW MOVEMENT;
c1d71850a5e5e167328778820f5ab8c8.png

实例:

1、基础环境准备

SQL> create table C (id number(2));SQL> insert into C values(1);SQL> insert into C values(2);SQL> commit;SQL> select * from c;SQL> alter session set nls _date_format="yyyy-mm-dd hh24:mi:ss";SQL> select sysdate from dual;SQL> select current _scn from v$database;
01566bde1e5bbe207bdecf68cc151198.png

2、删除数据

SQL> delete from C;SQL> commit;SQL> alter table c enable row movement;
1e2075dc920a088cae360c3d106392ae.png

3、恢复数据

SQL> flashback table c to scn 55714263;SQL> select * from C;
509d0bbc75b9aed03cca5143085f056d.png

总结

Flashback table 命令支持同时操作多个表,表名中间以逗号分隔即可,如果你执行一条flashback table 命令时同时指定了多个表,要记住单个 flashback table 是在同一个事务中,因此这些表的恢复操作要么都成功,要么都失败。

后面会分享更多关于devops和DBA方面内容,感兴趣的朋友可以关注下!!

7cf2da66a12ff6262f1d2ad5cdc2ec67.gif
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值