文档 · 2018年12月10日 0

Oracle打开闪回功能

一.首先要确保数据库处于归档模式。查看是否开启归档模式。

SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled #归档模式----启用,没有启用的的请先参考XXX启用;
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 6
Next log sequence to archive 8
Current log sequence 8

确保归档模式启用后,继续;

1.设置闪回区大小

SQL>alter system set db_recovery_file_dest_size=50g scope=spfile; #大小自己看着办

System altered

2.设置闪回区路径

SQL> alter system set db_recovery_file_dest='/home/oracle/dbflashback' scope=spfile;

System altered.

3.设置闪回时间:

#例:设置闪回时间是10天,每天是1440分钟
SQL> alter system set db_flashback_retention_target=14400 scope=spfile;

System altered.

4.打开闪回功能

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback on; #开启闪回功能
SQL> alter database open;

5.确认闪回功能是否启用

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

SQL> 
SQL> quit

如果你顺利的执行完以上步骤说明你成功了;以下是我遇到的几个问题!!!

1.在第4步执行 startup mount; 时候

SQL> startup mount;
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
ORA-01262: Stat failed on a file destination directory
Linux-x86_64 Error: 2: No such file or directory

不要方,这是说没有辣个文件,也就是你在第2步中指定的闪回区路径,手动创建一下就OK,然后继续

SQL> startup mount;
ORACLE instance started.

Total System Global Area 3256942592 bytes
Fixed Size 2217752 bytes
Variable Size 1778387176 bytes
Database Buffers 1459617792 bytes
Redo Buffers 16719872 bytes
Database mounted.

2.在第4步执行 alter database flashback on; 时候报错

SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-01264: Unable to create flash back file name
ORA-19800: Unable to initialize Oracle Managed Destination
Linux-x86_64 Error: 13: Permission denied

不要方,还记得你刚才创建的路径么? 对就没错就是他,因为我是在root下创建的,不属于oracle
so 给他Oracle的权限:

root@test>chown -R oracle:oinstall /home/oracle/dbflashback

登录数据库开启闪回功能

SQL> alter database flashback on;

Database altered.

###—————————————-搞定———————————————

打赏