闪回数据库
1,查看数据库是否开启了flashback database
SQL> select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------------------------------
NO
2.,检查是否启用了归档
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Next log sequence to archive 3
Current log sequence 3
3,下面具体的实验步骤:
SQL> alter system set db_flashback_retention_target=2880;
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 83887696 bytes
Database Buffers 197132288 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database flashback on;
Database altered.
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as "the time drop user" from dual;
the time drop user
--------------------------------------
2012-12-31 13:59:53
SQL> drop user HR cascade;
drop user HR cascade
我们回到flashback 的目录/u01/app/oracle/flash_recovery_area 可以看到flashback是用来记录flashback database log的。
[oracle@even TEST]$ ll
total 20
drwxr-x--- 4 oracle oinstall 4096 Dec 30 10:30 archivelog
drwxr-x--- 4 oracle oinstall 4096 Dec 31 13:59 autobackup
drwxr-x--- 3 oracle oinstall 4096 Dec 28 12:20 backupset
drwxr-x--- 2 oracle oinstall 4096 Dec 31 13:59 flashback
drwxr-x--- 2 oracle oinstall 4096 Dec 28 11:55 onlinelog
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount exclusive
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 83887696 bytes
Database Buffers 197132288 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> flashback database to timestamp to_date('2012-12-31 13:59:53','yyyy-mm-dd hh24:mi:ss');
Flashback complete.
SQL> alter database open read only;
Database altered.
SQL> select username from dba_users where username='HR';
USERNAME
------------------------------------------------------------
HR
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database open resetlogs;
数据库flashback成功。
数据库用resetlogs打开的最好是立即做个全库备份。
4,Flashback Database 相关的3个视图:
1. V$database
这个视图可以查看是否启用了Flashback database功能
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------------------------
YES
2. V$flashback_database_log
Flashback Database 所能回退到的最早时间,取决与保留的Flashback Database Log 的多少, 该视图就可以查看许多有用的信息。
Oldest_flashback_scn / Oldest_flashback_time : 这两列用来记录可以恢复到最早的时点
Flashback_size: 记录了当前使用的Flash Recovery Area 空间的大小
Retention_target: 系统定义的策略
Estimated_flashback_size: 根据策略对需要的空间大小的估计值
SQL> select estimated_flashback_size "EFS",flashback_size "FS",oldest_flashback_scn "OFS",oldest_flashback_time "OFT" from v$flashback_database_log;
EFS FS OFS OFT
---------- ---------- ---------- -------------------
0 8192000 680411 2012-12-31 13:59:24
3. V$flashback_database_stat
这个视图用来对Flashback log 空间情况进行更细粒度的记录和估计。 这个视图以小时为单位记录单位时间内数据库的活动量,Flashback_Data 代表Flashback log产生数量,DB_Date 代表数据改变数量,Redo_Date代表日志数量,ESTIMATED_FLASHBACK_SIZE: 为了达到Retention_target定义的要求,预计需要多大的空间,这个值用于指导设置Flash Recovery Area大小。
SQL> select *from v$flashback_database_stat;
BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE
------------------- ------------------- -------------- ---------- ---------- ------------------------
2012-12-31 14:23:01 2012-12-31 14:38:04 2449408 1064960 828928 0
本人不太理解为什么ESTIMATED_FLASHBACK_SIZE 的值是0??网上查了下资料,没有找到好的解释?如有同仁知道请告诉我下,谢谢!