oracle误操作(update)数据后怎么恢复到之前--超详细
操作数据库,经常会出现误操作,昨天执行的更新操作之后发现更新错了,只能想办法数据恢复了,现在整理一下文档。
# dba登录
SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户。在数据库安装完之后,应立即修改SYS,SYSTEM这两个用户的密码,以保证数据库的安全。
如果忘记sys密码,通过下面方式修改密码。
cmd命令行下输入 sqlplus / as sysdba;
alter user sys identified by xxxxx
1
# 查询执行更新操作的时间
select r.FIRST_LOAD_TIME,r.* from v$sqlarea r where r.SQL_TEXT like '%xxxxx%' order by r.FIRST_LOAD_TIME desc;
1
执行上面那条SQL语句,在下图的SQL_TEXT字段找到你执行更新操作的那条更新语句,找到更新操作时间
条件是误操作的SQL语句。
# 创建新表
把数据恢复到新建的表里
create table t_table_bak --新表
as
select * from table1--你操作的那张表
as
of timestamp to_timestamp('2020-08-25/11:20:09','yyyy-mm-dd hh24:mi:ss'); --执行更新操操作的时间
1
2
3
4
5
2
3
4
5
# 恢复数据
delete table1;--将原表的数据全部删除
insert into table1 select * from t_table_bak;--恢复数据
1
2
2
这步操作一定要慎重。
# 总结
在生产环境中操作sql一定要慎重,更新或者删除语句,一定要看SQL中有没有where条件,减少不必要的麻烦。
上次更新: 2024/06/14, 13:58:29