20.2 使用FlashBack Table 恢复表到先前状态

本文介绍如何在 Oracle 数据库中使用 FlashBackTable 功能来恢复表数据至指定的时间点或 SCN。演示了激活行移动特性、模拟数据误操作,并通过 SCN 和时间戳两种方式恢复表数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果要在某个表上使用 FlashBack Table 特征,则要求必须具有以下条件:

用户必须具有 FlashBack ANY TABLE 系统权限或 FlashBack 对象权限

用户必须在表上具有SELECT、INSERT、DELETE 和 ALTER 权限

必须合理设置初始化参数undo_retention, 以确保 UNDO 信息保留足够时间

必须激活行移动特征:ALTER TABLE EMP ENABLE ROW MOVEMENT

(1) 激活行移动特征

(2) 模拟用户 DML 误操作

(3) 使用 FLASHBACK TABLE 恢复表数据到先前时间点

 

SCN:

SQL> conn scott/tiger@demo
已连接。
SQL> alter table emp enable row movement;

表已更改。

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
    1975966

SQL> update emp set sal=sal*1.5 where deptno=10;

已更新3行。

SQL> commit;

提交完成。

SQL> select ename,sal from emp where deptno=10;

ENAME             SAL
---------- ----------
CLARK            3675
KING             7500
MILLER           1950

SQL> flashback table emp to scn 1975966;

闪回完成。

SQL> select ename, sal from emp where deptno=10;

ENAME             SAL
---------- ----------
CLARK            2450
KING             5000
MILLER           1300

 

TIMESTAMP:

SQL> host date
当前日期: 2009-02-19 星期四
输入新日期: (年月日)

SQL> host time
当前时间: 16:58:11.12
输入新时间:

SQL> update emp set sal=sal*1.5 where deptno=10;

已更新3行。

SQL> commit;

提交完成。

SQL> select ename,sal from emp where deptno=10;

ENAME             SAL
---------- ----------
CLARK            3675
KING             7500
MILLER           1950

SQL> flashback table emp to timestamp to_timestamp('2009-02-19 16:58:11','YYYY-MM-DD HH24:MI:SS');

闪回完成。

SQL> select ename,sal from emp where deptno=10;

ENAME             SAL
---------- ----------
CLARK            2450
KING             5000
MILLER           1300

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值