开启:
注意:需要使用dba账号,并且操作的是orcl数据库就行
要使用闪回询查功能,首先需要检查闪回查询功能是否已经开启:
连接数据库cmd运行:
sqlplus sys/bao as sysdba
--conn sys/bao as sysdba
--远程:sqlplus sys/bao@//127.0.0.1:1521/orcl
连接成功后查询是否已开启闪回:
select * from v$version;
select flashback_on from v$database;
如果结果是“NO”,则先尝试启用:
archive log list;
alter database flashback on;
如果报错“ORA-38706”:
第 1 行出现错误:
ORA-38706: 无法启用 FLASHBACK DATABASE 事件记录。
ORA-38707: 尚未启用介质恢复。
使用:
alter database archive;
如果报错“ORA-02231”:
第 1 行出现错误:
ORA-02231: ALTER DATABASE 选项缺失或无效
使用:
alter database archivelog;
如果报错“ORA-01126”:
第 1 行出现错误:
ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开
则:
shutdown immediate
startup mount
alter database archivelog;
alter database open;
archive log list;
开启闪回查询前先设置参数(也可以不设置使用默认参数)
show parameter db_recovery
alter system set db_recovery_file_dest_size=20g;
alter system set db_recovery_file_dest=\'D:\Oracle\app\Administrator\flashback\' scope=both;
alter system set undo_retention=21600 scope=both;
show parameter db_recovery
注意:必须先设置db_recovery_file_dest_size后设置db_recovery_file_dest;
如果路径设置不当,则会出现以下错误:
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-01261: 无法转换参数 db_recovery_file_
ORA-01263: 文件目标目录的名称无效
OSD-04018: 无法访问指定的目录或设备。
O/S-Error: (OS 3) 系统找不到指定的路径。
开启闪回查询 flashback
select log_mode,open_mode,flashback_on from v$database;
说明开启成功。
使用:
查询指定时间数据:
SELECT * FROM t_p_plan AS OF TIMESTAMP TO_TIMESTAMP('2019-09-06 12:30:00', 'yyyy-mm-dd hh24:mi:ss');
回滚数据到指定时间:
ALTER TABLE t_p_plan ENABLE ROW MOVEMENT;
FLASHBACK TABLE t_p_plan TO TIMESTAMP TO_TIMESTAMP('2019-09-06 12:30:00','yyyy-mm-dd hh24:mi:ss');
ALTER TABLE t_p_plan DISABLE ROW MOVEMENT;