闪回查询是Oracle数据库独有的功能,支持在设定时间内对包括行、事务、表、和数据库在内的恢复操作,最实用的功能就是可以在数据库保持联机状态时恢复数据。
本文详细讲解Oracle开启闪回查询功能的全流程,并分析流程中可能出现的各种问题。
检查闪回查询运行状态
要使用闪回询查功能,首先需要检查闪回查询功能是否已经开启:
# PL/SQL语句 # 检查版本信息 select * from v$version; # 检查闪回查询状态 select flashback_on from v$database;
如果结果是“NO”表示闪回查询已停用或者未开启,在不确定之前是否配置过闪回查询之前:
# PL/SQL语句 # 检查日志状态 archive log list; # 如果存在日志表示闪回查询为停止状态,尝试启动 alter database flashback on;
如果之前没有配置过闪回查询,现在开始。
配置闪回查询
设置参数
# PL/SQL语句 show parameter db_recovery # 先设置db_recovery_file_dest_size alter system set db_recovery_file_dest_size=20g; # 后设置db_recovery_file_dest 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
如果路径设置不当,则会出现以下错误:
第 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; # 关闭闪回查询 # alter database flashback off; select flashback_on from v$database;
常见故障处理
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;
原创文章禁止转载:技术学堂 » Oracle数据库开启闪回查询(flashback)