zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle数据库误操作回滚到指定的时间点方法

Oracle数据库方法 时间 指定 回滚
2023-09-11 14:15:13 时间

Oracle数据库中如果执行了误操作,比如update 某表某字段,但是没有加where 条件,会导致全表字段被修改,又或者误删除了某表所有记录,我们可以通过Oracle的的热备还原到指定的某一个时间点

--查询某一时间戳之前的数据
select * from B_DISPATCH as of timestamp to_timestamp('2019-11-25 17:00:00','yyyy-mm-dd hh24:mi:ss');
--将某一时间戳之前的数据镜像恢复到临时表
create table B_DISPATCH_BAK  AS select * from B_DISPATCH as of timestamp
to_timestamp('2019-11-25 17:00:00','yyyy-mm-dd hh24:mi:ss');

操作步骤如上,在删了或修改了里面的数据时,可以先建立一个快照临时表将删除修改之前状态的数据找回到这个表中:比如上面的B_DISPATCH_BAK :然后再进行下一步处理,比如表改名,同步更新等。

语法如下:
create table tableName(要建立的表名)  AS
select * from tablename(被删除的表) AS OF TIMESTAMP  sysdate-1/24   (一小时前的)
,减去的时间可以自己定,比如像上面的写法:to_timestamp('2019-11-25 17:00:00','yyyy-mm-dd hh24:mi:ss');

另外:如果是删除表后,可以采用如下操作:
在 user_recyclebin中找到最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。
FLASH BACK TABLE TABLE_NAME TO BEFORE DROP;