闪回查询的用途
常用于误删数据库数据场景,用于恢复误删的数据;
配置闪回查询
注意:使用truncate 清空表的操作,使用闪回查询是恢复不了数据的
要使用闪回询查功能,首先需要检查闪回查询功能是否已经开启:
select * from v$version;
select flashback_on from v$database;
如果结果是“NO”,且不确定之前是否配置过flashback,先检查日志状态,如果日志状态正常,则尝试启动:
archive log list;
alter database flashback on;
否则开始配置flashback。
设置参数
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) 系统找不到指定的路径。
开启闪回查询
select status from v$instance;
alter database flashback on;
select flashback_on from v$database;
关闭闪回查询
alter database flashback off;
常见故障处理
如果报错“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
conn / as sysdba
startup mount
alter database archivelog;
alter database open;
archive log list;