Oracle数据库 - 数据恢复

恢复Delete

恢复少量数据

使用oracle提供的闪回方法进行数据恢复,适用于delete删除(少量数据)方式。

查看快照中数据(能查询出数据,才能恢复):

#as of timestamp - 应用Flashback Query查询过去的数据(基于时间的查询)

select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')

例如:
#查看数据
select * from mytable
#误删
delete from mytable
#查看快照(可加where条件在后边)
select * from mytable as of timestamp to_timestamp('2021-12-29 15:27:00','yyyy-mm-dd hh24:mi:ss')

恢复数据

将从快照中查询出来的数据插入原表中,注意要保证主键不重复。

insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss'));

例如:
insert into mytable (select * from mytable as of timestamp to_timestamp('2021-12-29 15:27:00','yyyy-mm-dd hh24:mi:ss'))

扩展:基于时间的查询,查看某一时间点后新增的记录

select * from mytable where my_id not in (
    select my_id from mytable as of timestamp to_timestamp('2022/1/6 11:21:00','yyyy-MM-dd hh24:mi:ss')
)

恢复整张表

闪回整个表来恢复误删除的数据,但仅适用于表结构没有发生改变且用户有flash any table权限的情况下。

当需要使用flashback table功能时,需要先打开row mvoement的选项(启用表的行移动),否则使用该功能会报错。

#将row movement设置为enable
alter table 表名 enable row movement
#将表中数据闪回到某一时间点
flashback table 表名 to timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')

#例子:
#误删
delete from mytable
#enable
alter table mytable enable row movement
#恢复
flashback table mytable to timestamp to_timestamp('2021-12-29 15:29:00','yyyy-mm-dd hh24:mi:ss')

恢复Drop

因为oracle数据库在删除表时会将删除信息存放于某虚拟“回收站”中而非直接清空,再此种状态下数据库标记该表的数据库为“可以复写”,所以在该块未被重新使用前依然可以恢复数据。该方法多用于drop删除

首先需要查询user_table视图找到被删除的表:

#查看所有未被drop的表
select table_name,dropped from user_tables
#查看已被drop的表
select object_name,original_name,type,droptime from user_recyclebin

original_name为原表名,table_name和object_name就是回收站中的存放表名,如果明确原表的名称可以通过以下命令恢复:

#将表恢复到drop前
flashback table 原表名 to before drop

如果不知道原表名称可以直接按照回收站中的表名称将数据恢复,通过表数据确定是否是要恢复的表,最后对数据表进行重命名即可。

#将表恢复到新表(重新创建一个表)
flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名

恢复数据库

利用oracle数据库的闪回功能可以将数据库恢复到过去某一状态,语法如下:

SQL>alter database flashback on
SQL>flashback database to scn SCNNO;
SQL>flashback database to timestamp to_timestamp('2007-2-12 12:00:00','yyyy-mm-dd hh24:mi:ss');

笔记摘自:搜狐
持续更新中。。。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值