versions_starttime, versions_endscn,
versions_endtime, versions_xid,
versions_operation, c2
TO_TIMESTAMP('2025-07-25 04:00:00', 'YYYY-MM-DD HH24:MI:SS')
and TO_TIMESTAMP('2025-07-25 04:09:00', 'YYYY-MM-DD HH24:MI:SS');
versions_xid XID,
versions_startscn START_SCN,
versions_endscn END_SCN,
versions_operation OPERATION,
empname, salary
FROM t_emp
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE;

FROM flashback_transaction_query
WHERE xid = HEXTORAW('05001D00A0040000');
create flashback archive fla1 tablespace fda quota 2m retention 1 year;
grant flashback archive on fla1 to schema1;
SCHEMA1@pdb1> alter table emp1 flashback archive fla1;
ALTER DATABASE FLASHBACK ON;
需要设置参数控制闪回功能:
DB_FLASHBACK_RETENTION_TARGET -- flashback log保留时间,就是闪回的有效时间
DB_RECOVERY_FILE_DEST -- 保存flashback log的目录路径,闪回区路径
DB_RECOVERY_FILE_DEST_SIZE -- 闪回区允许占用磁盘的大小
所谓fast recovery area的路径和大小就是由DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE控制的。
配置闪回恢复区
mkdir /u01/flash_recovery_area
SYS@PROD>alter system set db_recovery_file_dest_size=2G;
SYS@PROD>alter system set db_recovery_file_dest='/u01/flash_recovery_area';
SYS@PROD>show parameter db_recovery
开归档,开数据库闪回
SYS@PROD>archive log list
SYS@PROD>alter database flashback on;
SYS@PROD>select flashback_on from v$database;
取当前scn
SYS@PROD>select current_scn from v$database;
做操作
在mount下做闪回操作
SYS@PROD>shutdown immeidate;
SYS@PROD>startup mount;
SYS@PROD>flashback database to scn 909515;
以只读方式打开确认数据库已经被闪回
SYS@PROD>alter database open read only;
以resetlog方式打开数据库
SYS@PROD>alter database open resetlogs;
闪回后,打开数据库,第一次最好用只读方式, 看看是否恢复到你希望的那个时间点上去了, 如果不是你希望的,还可以重新闪回(前闪/后闪都可以,因为只读方式 scn 是不会增长的)。