首页 > 数据库 > Oracle > Flasback Database 的配置与演示
设置必要条件:
数据库处于归档状态:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 71305460 bytes
Database Buffers 92274688 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter system set log_archive_dest_1='location=/u01/orcl_arch';
System altered.
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/orcl_arch
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
启动Flashback Database
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
SQL> alter database flashback on;
Database altered.
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
设置FRA(Flash Recover area)
SQL> show parameter db_recover;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/app/oracle/flash_recovery
_area
db_recovery_file_dest_size big integer 2G
SQL> !mkdir /u01/FRA
SQL> alter system set db_recovery_file_dest='/u01/FRA';
System altered.
SQL> alter system set db_recovery_file_dest_size=5G;
System altered.
SQL> show parameter db_recover;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /u01/FRA
db_recovery_file_dest_size big integer 5G
DB_FLASHBACK_RETENTION_TARGET用来设置控制Flashback logs的保留时间
SQL> show parameter DB_FLASHBACK_RETENTION_TARGET;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
Oracle还建议在闪回数据库中启用Force Logging模式
注:该模式会强制所有日志写入重做日志,否则容易造成部分数据无法恢复
SQL> select force_logging from v$database;
FOR
---
NO
SQL> alter database force logging;
Database altered.
SQL> select force_logging from v$database;
FOR
---
YES
Flashback Database 演练:
SQL> conn scott/oracle
Connected.
SQL> create table emp_test as select * from emp;
Table created.
测试前先查看一下SCN
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
521620
删除一个表做下测试:
SQL> drop table emp_test purge;
Table dropped.
连接到SYS用户开始闪回数据库恢复:
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 71305460 bytes
Database Buffers 92274688 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> flashback database to scn 521620;
Flashback complete.
闪回数据库需要重做日志模式打开数据库,如果想要指定SCN之后的数据不丢失,可以Read Only打开数据库,将误操作的数据导出,再将数据库进行恢复到未执行Flashback Database前的状态,将数据逻辑导入即可。
SQL> alter database open resetlogs;
Database altered.
SQL> conn scott/oracle
Connected.
SQL> select tname from tab;
TNAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
EMP_TEST
DEPT_TEST
6 rows selected.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29320885/viewspace-1124968/ ,如需转载,请注明出处,否则将追究法律责任。