暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

误删Oracle数据,别急着跑路2

取证知道 2021-05-25
313

前言:上周给大家介绍了在Oracle数据库中怎么利用“闪回技术”将数据进行恢复,但是存在一个问题:指定scn或者timestamp时间点之后的数据统统丢失。那到底有没有一种两全其美的办法呢?今天给大家介绍另外一种方式,既能恢复删除前的数据,又能保留原有的数据。

误删Oracle数据,别急着跑路

书接上文,上回我们对删除的数据进行了闪回操作,并执行:alter database open resetlogs,打开数据库;这时候数据库已经回到我们指定的时间点。导致结果:指定scn或者timestamp时间点之后产生的数据统统丢失

我们看看如果操作能够两全其美的保留数据?

操作步骤:

1、执行完闪回操作之后,输入命令:alter database open read only以只读模式打开数据库;

2、通过逻辑导出的方式将误操作涉及表的数据导出;这里的话我们可以通过

连接数据库可视化工具PL/SQL,我们可以很容易的导出该表的逻辑导入语句(另一种方式是数据泵方式):

INSERT INTO TEST(A,B,C) VALUES('PC','ORC',10);

INSERT INTO TEST(A,B,C) VALUES('IPHONE','IOS',20);

INSERT INTO TEST(A,B,C) VALUES('ANDROID','AD',30);

3、执行recover database命令,修复数据库到闪回操作前的状态;

4、再通过逻辑导入的方式,将之前误操作的表数据重新导入,这边采用执行步骤3中的导入语句。

5、验证当前数据库中的TEST数据,如下图,已有4条数据(包含闪回之前以及最开始的数据),至此闪回数据库操作已成功。

最后给大家介绍下闪回技术中几条常见的命令:

数据库是否开启归档和闪回功能

select log_mode,flashback_on from v$database;


获取数据库当前SCN

select dbms_flashback.get_system_change_number scn from dual;


查询数据库最大可闪回的时间点及SCN

select oldest_flashback_scn,to_char(oldest_flashback_time,'YYYY-MM-DD 

HH24:MI:SS') from v$flashback_database_log; 


SCN和时间戳相互转化

SCN转化成时间戳

select scn_to_timestamp(122037263) scn from dual;

时间戳转化成SCN

select timestamp_to_scn(to_date('2021-04-12,11:20:00','yyyy-mm-

dd,hh24:mi:ss')) scn from dual; 

以上就是今天给大家介绍的Oracl数据恢复的第二部分,将删除前后的数据完整的恢复回来,对整体数据没有造成影响。

喜欢小知的话请不要忘了关注,点赞,转发!

文章转载自取证知道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论