利用闪回功能恢复删除(drop,delete)的数据和表及数据,update之后数据恢复
2017-10-01 14:52
477 查看
一、drop表
从 flashback table 里查询被删除的数据表
1、select * from recyclebin order by droptime desc
2、执行表的恢复
flashback table '需要恢复的表名' to before drop
二、delete表中数据
1、先从 flashback_transaction_query 视图里查询,视图提供了供查询用的表名称、事务提交时间、undo_sql等字段。
select * from flashback_transaction_query where table_name='需要恢复数据的表名(大写)';
2、查询删除的时间点
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time,
to_char(dbms_flashback.get_system_change_number) scn
from dual;
3、记得删除点,你也可以这样试试查询,找出删除前的时间点
select * from '需要恢复数据的表名' as of timestamp to_timestamp('时间点', 'yyyy-mm-dd hh24:mi:ss');
4、进行数据恢复
通过第二步找到数据丢失的时间点,恢复极为简单,语句为
flashback table '需要恢复数据的表名' to timestamp to_timestamp('数据丢失的前一时间点','yyyy-mm-dd hh24:mi:ss');
5、注意:在执行上述操作的时候,需要允许 oracle 修改分配给行的 rowid,这时候 oracle 需要给恢复的数据分配新的物理地址。
开启行移动:alter table table_name enable row movement;
6、其实找到数据丢失前的时间点后,恢复数据也可以将需要恢复的数据直接插入到目标表中
insert into '数据丢失的表' select * from t of timestamp to_timestamp('时间点', 'yyyy-mm-dd hh24:mi:ss') where .......;
恢复结束后也可以关闭行移动:
alter table table_name disable row movement;
三、update后恢复
1、在v$sqlarea 这视图里面找到你操作那条SQL的时间;
select r.FIRST_LOAD_TIME,r.* from v$sqlarea r order by r.FIRST_LOAD_TIME desc;
2、把数据恢复到一个新表
create table t_table_recove --新表
as
select * from t_table--你操作后要恢复的那张表
as of timestamp to_timestamp('2010-06-02 11:36:53','yyyy-mm-dd hh24:mi:ss');
3、查看t_table_recove 的数据是否是update前的数据
如果是则导入原表,数据恢复成功
从 flashback table 里查询被删除的数据表
1、select * from recyclebin order by droptime desc
2、执行表的恢复
flashback table '需要恢复的表名' to before drop
二、delete表中数据
1、先从 flashback_transaction_query 视图里查询,视图提供了供查询用的表名称、事务提交时间、undo_sql等字段。
select * from flashback_transaction_query where table_name='需要恢复数据的表名(大写)';
2、查询删除的时间点
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') time,
to_char(dbms_flashback.get_system_change_number) scn
from dual;
3、记得删除点,你也可以这样试试查询,找出删除前的时间点
select * from '需要恢复数据的表名' as of timestamp to_timestamp('时间点', 'yyyy-mm-dd hh24:mi:ss');
4、进行数据恢复
通过第二步找到数据丢失的时间点,恢复极为简单,语句为
flashback table '需要恢复数据的表名' to timestamp to_timestamp('数据丢失的前一时间点','yyyy-mm-dd hh24:mi:ss');
5、注意:在执行上述操作的时候,需要允许 oracle 修改分配给行的 rowid,这时候 oracle 需要给恢复的数据分配新的物理地址。
开启行移动:alter table table_name enable row movement;
6、其实找到数据丢失前的时间点后,恢复数据也可以将需要恢复的数据直接插入到目标表中
insert into '数据丢失的表' select * from t of timestamp to_timestamp('时间点', 'yyyy-mm-dd hh24:mi:ss') where .......;
恢复结束后也可以关闭行移动:
alter table table_name disable row movement;
三、update后恢复
1、在v$sqlarea 这视图里面找到你操作那条SQL的时间;
select r.FIRST_LOAD_TIME,r.* from v$sqlarea r order by r.FIRST_LOAD_TIME desc;
2、把数据恢复到一个新表
create table t_table_recove --新表
as
select * from t_table--你操作后要恢复的那张表
as of timestamp to_timestamp('2010-06-02 11:36:53','yyyy-mm-dd hh24:mi:ss');
3、查看t_table_recove 的数据是否是update前的数据
如果是则导入原表,数据恢复成功
相关文章推荐
- Oracle里用delete或者drop命令删除的数据或者表可以通过闪回功能找回数据
- oracle利用flashback 闪回功能恢复delete数据
- 用Oracle闪回功能(flashback)恢复删除的数据
- oracle使用闪回功能恢复删除的表数据
- oracle数据闪回功能(恢复误删除的表信息)
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- 用Oracle闪回功能恢复偶然丢失的数据--数据被误删除了,多亏了万能的oracle,....后怕
- Oracle闪回查询恢复delete删除数据
- Oracle闪回查询恢复delete删除数据
- 利用logminer恢复delete误删除操作的数据
- 利用Log Explorer将你已经delete,truncate,drop过的数据进行恢复
- Oracle —— 闪回查询恢复delete删除数据
- 非归档模式下恢复利用offline drop命令误删除的数据文件
- 利用logminer,恢复delete误删除操作的数据
- 利用事务日志来恢复Update、Delete误操作引起的数据丢
- 利用ORACLE的闪回功能恢复数据
- Oracle闪回查询恢复delete删除数据
- 利用Log Explorer将你已经delete,truncate,drop过的数据进行恢复
- Oracle闪回技术之一Oracle 11g 利用FlashTable (闪回表)恢复(用delete)误删的数据
- 用Oracle闪回功能(flashback)恢复删除的数据---Oracle;闪回;回滚段;数据恢复