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导出
打开PL/SQL的多窗口
Tools->Windows List 即可打开,进行查询窗口的来回切换。
XFS