Fork me on GitHub

oracle误删除和误修改恢复数据以及其他常用工具

简介

数据修改和删除前请先利用查询语句确保无误后,方可进行删除和修改,但是在这过程中难免有误失,故需要将数据进行恢复,希望各种猿们永远不会用到。

恢复

误删除

--查询表A001中ID为1088271842的值
SELECT * FROM  A001 WHERE ID='1088271842'
--删除A001中ID为1088271842的值
DELETE  A001 WHERE ID='1088271842'
--再次查询A001中ID为1088271842的值
SELECT * FROM  A001 WHERE ID='1088271842'
--使用恢复语句查询A001中ID为1088271842的值
SELECT * FROM (select * from A001  as of timestamp to_timestamp('2022-04-17 14:06:00','yyyy-mm-dd hh24:mi:ss'))T WHERE T.ID='1088271842' 
--将A001中删除的ID为1088271842的值还原到原先的A001表中
insert into A001 (SELECT * FROM (select * from A001  as of timestamp to_timestamp('2022-04-17 14:06:00','yyyy-mm-dd hh24:mi:ss'))T WHERE T.ID='1088271842' );注意要保证主键不重复。

误修改

--查询表A001中ID为1088271842的值
select * from A001 WHERE  ID='1088271842'
--修改表A001中ID为1088271842的列A001001的值为张三
update  A001 set A001001='张三' WHERE ID='1088271842'
--再次查询表A001中ID为1088271842的值
select * from A001 WHERE  ID='1088271842'

--使用oracle自带的恢复功能查询表A001中ID为1088271842的值
SELECT * FROM (select * from A001  as of timestamp to_timestamp('2022-04-17 14:06:00','yyyy-mm-dd hh24:mi:ss'))T WHERE T.ID='1088271842' 
--将查询到的值恢复到另外的表中
create table A001BF as SELECT * FROM (select * from A001  as of timestamp to_timestamp('2022-04-17 14:06:00','yyyy-mm-dd hh24:mi:ss'))T WHERE T.ID='1088271842' 

--将A001中ID为1088271842的值的A001001列更新为原来的值
update  A001 set A001001='刘**' WHERE ID='1088271842'
  • 关键语句
    select * from A001 as of timestamp to_timestamp('被修改前或删除前的时间','yyyy-mm-dd hh24:mi:ss')
    恢复前提是原先的存储块一定没有被填充新的值,一旦填充了新的值,那就无法恢复了。

参考

https://www.csdn.net/tags/NtDaYgxsOTg5ODUtYmxvZwO0O0OO0O0O.html
https://wenku.baidu.com/view/b882601c5b0216fc700abb68a98271fe910eaf7b.html

PL/SQL用户下的表导出与导入

表导出与表导入

常用工具

查询语句的SQL导出

image

打开PL/SQL的多窗口

Tools->Windows List 即可打开,进行查询窗口的来回切换。

posted @ 2020-09-26 14:18  晨度  阅读(992)  评论(0编辑  收藏  举报