Oracle Flashback之flashback database

闪回数据库
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??网上查了下资料,没有找到好的解释?如有同仁知道请告诉我下,谢谢!

你可能感兴趣的:(Oracle Flashback之flashback database)