开启闪回
数据库默认是没有开启闪回
查询是否开启闪回,0为关闭,1为打开
SQL> select para_name,para_value from v$dm_ini where para_name='ENABLE_FLASHBACK';
开启闪回
SQL> SP_SET_PARA_VALUE(1,'ENABLE_FLASHBACK',1);
或者
SQL> alter system set 'ENABLE_FLASHBACK' = 1 both;
再次查询闪回状态
SQL> select para_name,para_value from v$dm_ini where para_name='ENABLE_FLASHBACK';
GAN HUO
闪回查询
例:闪回查询特定时刻的 PERSON_TYPE2 表
创建测试表PERSON_TYPE2 表
SQL> CREATE TABLE PERSON.PERSON_TYPE2 AS SELECT * FROM PERSON.PERSON_TYPE;
SQL> SELECT * FROM PERSON.PERSON_TYPE2;
查询当前时间
SQL> SELECT SYSDATE FROM DUAL;
SQL> INSERT INTO PERSON.PERSON_TYPE2 VALUES(5,'防损员');
SQL> INSERT INTO PERSON.PERSON_TYPE2 VALUES(6,'保洁员');
SQL> COMMIT;
SQL> SELECT * FROM PERSON.PERSON_TYPE2;
查询数据插入之前的数据
SQL> SELECT * FROM PERSON.PERSON_TYPE WHEN TIMESTAMP '2021-06-23 09:53:20';
GAN HUO
闪回版本查询
用户通过闪回版本查询子句,可以得到指定表过去某个时间段内,事务导致记录变化的全部记录。指定条件可以为时刻,或事务号。
查询数据
SQL> select * from person.person_type2;
更新数据
SQL> SELECT SYSDATE FROM DUAL;
UPDATE PERSON.PERSON_TYPE2 SET NAME='保安员' WHERE PERSON_TYPEID=5;
COMMIT;
UPDATE PERSON.PERSON_TYPE2 SET NAME='收银员' WHERE PERSON_TYPEID=5;
COMMIT;
进行闪回版本查询,获得指定时间段内变化的记录。
SQL> SELECT VERSIONS_ENDTRXID, NAME FROM PERSON.PERSON_TYPE2 VERSIONS BETWEEN TIMESTAMP '2021-06-23 10:16:40' AND SYSDATE;