在oracle中如何找回被删除的数据?

在oracle中如何找回被删除的数据?,第1张

1、首先新建一张测试表TEST,里面输入记录。由于删除/更新/插入恢复步骤相同,这里仅演示删除数据的情况。

2、删除其中1条记录,查看表中记录情况,由下图可见,记录2被删除了。

3、恢复之前先确定要恢复到的时间点,下图可以看出2018-03-07 15:33:00数据是正确的。

SELECT *

FROM TEST AS OF TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS')

4、下面进行表数据恢复

FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS')

可以看到报错了,原因是没有开启行移动。

5、开启该表的行移动。

ALTER TABLE TEST ENABLE ROW MOVEMENT

6、再次执行数据恢复。

FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2018-03-07 15:33:00', 'YYYY-MM-DD HH24:MI:SS')

然后查看数据情况,可以看到已经恢复了。

数据恢复方法是利用oracle提供的闪回方法进行数据恢复,适用于delete删除(一条记录)方式:

首先需要知道是什么时间进行的删除 *** 作,如果不能确定具体时间点则选择尽量准确的删除数据前的时间。然后利用

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

语句可以找回删除的数据。利用

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

语句就可以将恢复出来的数据插入原表中(注意要保证主键不重复)。

另一种方法可以通过闪回整个表来恢复误删除的数据,但仅适用于表结构没有发生改变且用户有flash any table权限的情况下,语句如下:

·alter table 表名 enable row movement

第一:用安装数据库时的管理员用户登录:创建一个新的用户,如:\x0d\x0a//创建用户123密码456\x0d\x0acreate user 123 identified by 456\x0d\x0a第二:授权,赋予dba的权限\x0d\x0agrant dba to 123\x0d\x0a第三:导入数据库\x0d\x0aimp 123/456@orcl file=E:\*.DMP fromuser=expuser touser=123\x0d\x0a注意:如上导入需要直接在cmd界面执行;expuser是导出用户名,可以随便写,但会有警告;orcl是你创建的数据库事例,在安装oracl的时候,默认会新建一个orcl\x0d\x0a最后:希望我描述清楚了,能帮到你。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6906620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-30
下一篇 2023-03-30

发表评论

登录后才能评论

评论列表(0条)

保存