Oracle数据误删的恢复办法
删除语句案例:
在2022-04-12 12:00:00执行了这样的一条语句
DELETE FROM P_USER U WHERE U.CITY = '北京'
恢复步骤:
如果你找不到操作的具体时间,先查询最近有关这个表的操作:
SELECT * FROM v$sql WHERE sql_text LIKE '%表名%' ORDER BY FIRST_LOAD_TIME DESC -- 只查看操作sql和操作时间: SELECT SQL_TEXT, FIRST_LOAD_TIME FROM v$sql WHERE sql_text LIKE '%表名%' ORDER BY FIRST_LOAD_TIME DESC -- 案例: SELECT SQL_TEXT, FIRST_LOAD_TIME FROM v$sql WHERE sql_text LIKE '%P_USER%' ORDER BY FIRST_LOAD_TIME DESC从展示的数据中找到执行删除的语句和对应时间
查找出被误删除的数据
SELECT * FROM 表名 AS OF timestamp to_timestamp( 时间, 'yyyy-mm-dd hh24:mi:ss' ) WHERE 删除的条件); -- 案例: SELECT * FROM P_USER AS OF timestamp to_timestamp( '2022-04-12 12:00:00', 'yyyy-mm-dd hh24:mi:ss' ) WHERE CITY = '北京');将数据插回
INSERT INTO 表名 ( SELECT * FROM 表名 AS OF timestamp to_timestamp( 时间, 'yyyy-mm-dd hh24:mi:ss' ) WHERE 删除的条件 ); -- 案例: INSERT INTO P_USER ( SELECT * FROM P_USER AS OF timestamp to_timestamp( '2022-04-12 12:00:00', 'yyyy-mm-dd hh24:mi:ss' ) WHERE CITY = '北京' );
至此,误删的数据恢复就完成了
版权声明:本文为Yingduo_Lance原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。