快速恢复刚删除的表及其数据

本文详细介绍了Oracle数据库中的闪回技术,包括事务闪回、行级闪回、表级闪回及数据库级闪回等不同恢复级别的应用。通过具体实例演示了如何授予用户闪回权限、恢复已删除的数据和更新的数据、恢复已删除的表等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

falshback支持的恢复级别包括

1.事务闪回:对表进行了insert update delete操作,已经commit了,发现弄错了,需要恢复到某个commit操作之前的数据,则需要撤销刚才的某个操作

2.行级闪回:对表进行insert ,update,delete操作,需要恢复到某个时间点

3.表级闪回:错误的drop table操作,需要表和表中的数据

4.数据库的闪回:错误的对整个数据库导入很多表数据,需要将整个数据库恢复到过去的时间点。


一:

授予用户闪回权限,一般用sys用户操作

show user

grant flashback any table to bankuser;

select * from session_privs where privilege like 'FLASHBACK%';

二:

恢复刚才删除的一条数据,模拟过程

delete from emp where ename='FORD'; 删除一条数据

select * fron emp where ename=''FORD;

select t.start_timestamp,  执行语句的时间

t.commit_timestamp,提交语句的时间

t.logon_user,操作的用户

t.operation,操作类型

t.table_name,操作的表名

t.table_owner,表的拥有者

t.undo_sql 恢复的sql语句

from flashback_transaction_query t

where table_name='emp';

根据查询出来的语句执行并提交,恢复之前的数据

三:

恢复刚更新的数百万条数据,模拟过程

update emp set job='ANALYStT';执行后提交

select * from emp;所有数据都更改了(这里只有14条,在实际中存在几百万条,不能一条一条恢复)

根据时间点恢复,比如大概在10分钟前的操作

select sysdate from dual;查看当前的时间

使用bankuser用户登录确认10分钟前的数据是否是想要恢复的数据

select * from emp as of timestamp to_timestamp('2011-4-3 10:00:00','yyyy-mm-dd hh34:mi:ss');

开始恢复

alter table emp enable row movment;

falshback table emp to timestamp

to_timestamp('2011-4-3 10:00:00','yyyy-mm-dd hh24:mi:ss');

执行后查看数据是否恢复


注:oracle数据库可以恢复到什么时候的数据?

flashback技术是以undo segment中的内容为基础的,受限于undo_retention参数

show parameter undo_retention 为15分钟

如果undo表空间足够大,可以恢复很长的时间的数据,并非15分钟,保证其有足够的存储空间

四. 恢复删除的表 模拟过程

drop table emp;  用户具有flashback权限

flashback table emp to before drop

五.如何知道那些删除的表可以恢复

登录bankuser 

create table test(a int);

drop table test;

select * from user_recyclebin order by droptime desc;查看数据库回收站可以恢复的表

select * from recyclebin order by droptime desc;








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值