flashback database闪回数据库

来源:互联网 发布:综合格斗教学软件 编辑:程序博客网 时间:2024/06/06 12:08
如果说flashback query用来恢复指定时间的记录,flashback table可用来恢复被删除或者指定时间的表,那么flashback database直接提供一个数据库级别的恢复,可以直接将整个数据库恢复到指定时间,相比于钱两者,粒度更大。
flashback database可以不借助备份的情况下,将数据库向前恢复。oracle为了实现flashback database特性,另外引入一组新日志文件:flashback logs。其实flashback lohs与所有的日志文件功能一样,用来计记录日志的,只不过这个日志保存的信息有些特别,并不是记录你的操作,而是记录操作前要修改的数据,就是数据块的钱影像,这些信息被写入这个专用的存储区,就是flash recovery area,简称FRA。
开启flashback database的必备条件:
1.数据库必须处于归档模式
2.数据库必须指定flash recovery area(db_recovery_file_dest指定路径和db_recovery_file_dest_size指定大小)
3.数据库必须启动特性flashback database
4.初始化参数:db_flashback_retention_target 后面的值是时间,单位分钟,默认是1440
5.启用force logging
flashback的制约因素:
1.flashback database用来将数据库中的数据恢复到之前的某个时间点,而非介质恢复
2.如果控制文件被重建了,则在此之前所产生的flashback logs统统失效,就是说不能将数据库恢复到控制文件重建之前。
3.不支持数据库执行过shrink操作后的恢复
flashback database可以在RMAN命令中执行,也可以在sqlplus命令中执行
操作步骤(下面模拟一次故障,闪回数据库相关操作):
11:21:38 SQL> show parameter recovery                   //检查是否开启FRA

NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string/u01/app/oracle/fast_recovery_ area
db_recovery_file_dest_size     big integer 4182M
recovery_parallelism     integer0
11:21:48 SQL> archive log list;                         //检查归档是否打开
Database log mode       Archive Mode
Automatic archival       Enabled
Archive destination       /arch
Oldest online log sequence     126
Next log sequence to archive   128
Current log sequence       128
11:22:02 SQL> select flashback_on,force_logging from v$database;               //检查flashback database和force_logging

FLASHBACK_ON   FOR
------------------ ---
YES   YES

11:23:20 SQL> create table db1.milk2 (id number,name varchar2(22));             //新建测试表

Table created.

11:24:40 SQL> insert into db1.milk2 values(2,'qq');                        //插入测试数据

1 row created.

11:25:02 SQL> commit;

Commit complete.

11:25:05 SQL> select dbms_flashback.get_system_change_number from dual;               //查看当前scn号


GET_SYSTEM_CHANGE_NUMBER
------------------------
3569870

11:25:10 SQL> 11:25:10 SQL> select * from db1.milk2;

ID NAME
---------- ----------------------
2 qq

11:25:25 SQL> drop table db1.milk2;                              //模拟误删表

Table dropped.

11:25:47 SQL> shutdown immediate;                             //停库
Database closed.
Database dismounted.
ORACLE instance shut down.
11:26:06 SQL> startup mount;                                  //起到mount状态
ORACLE instance started.

Total System Global Area  889389056 bytes
Fixed Size    2258360 bytes
Variable Size  574622280 bytes
Database Buffers  306184192 bytes
Redo Buffers    6324224 bytes
Database mounted.

11:27:04 SQL> flashback database to scn 3569870;                         //闪回数据库到scn为3569870状态

Flashback complete.

11:27:32 SQL> alter database open read only;                              
//read only 模式打开,也可resetlog模式,但是resetlog就不需要后续操作,当时resetlog会导致你在误删表到停库之间的其他正常操作也被回退了,如果有dg的话,更不建议resetlog模式;

Database altered.

11:27:49 SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64b
it ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@milk11G ~]$  exp db1/db1  tables=db1.milk2 file=1.dmp                        //导出数据

Export: Release 11.2.0.4.0 - Production on Tue Jun 27 11:29:21 2017

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in US7ASCII character set and UTF8 NCHAR character set
server uses ZHS16GBK character set (possible charset conversion)

About to export specified tables via Conventional Path ...
. . exporting table                          MILK2          1 rows exported
Export terminated successfully without warnings.
[oracle@milk11G ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Tue Jun 27 11:29:32 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;  

ORACLE instance started

Total System Global Area  889389056 bytes
Fixed Size    2258360 bytes
Variable Size  574622280 bytes
Database Buffers  306184192 bytes
Redo Buffers    6324224 bytes
Database mounted.
SQL> recover database;                     //recover database; 
Media recovery complete.
SQL> alter database open;

Database altered.

SQL> select * from db1.milk2;                    //数据库恢复到最新的状态,但是表milk2没有,我们可以利用之前的导出的备份,导入
select * from db1.milk2
                    *
ERROR at line 1:
ORA-00942: table or view does not exist

原创粉丝点击