oracle 12.2+中的flashback

1.设置恢复目录

首先数据库必须是归档模式.直接在CDB级别设置flashback on,但是必须先打开闪回恢复区,否则报错:

 

SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-38709: Recovery Area is not enabled.

配置恢复目录:

 

SQL> alter system set db_recovery_file_dest_size=5g scope=both;

 
System altered.

 
SQL> alter system set db_recovery_file_dest='/u01/recoverarea' scope=both;

 
System altered.

 
SQL> show parameter db_recover

 
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest            string  /u01/recoverarea
db_recovery_file_dest_size       big integer 5G

 

2.打开数据库闪回

 

SQL> alter database flashback on;

 
Database altered.

 

 

 

3.配置闪回日志保留时间

查看当前的闪回保留时间

 

SQL> show parameter flashback

 
NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440

这里的1440即1440分钟24小时.主要这只是一个目标值.因此基于存储空间上的压力.数据库会有限产生归档日志,而非保证闪回日志的保留时间.

因此如果你需要保证闪回区的空间正常.

查看当前闪回区的使用空间大小:

 

SQL> select file_type,percent_space_used,number_of_files from v$recovery_area_usage;

 
FILE_TYPE       PERCENT_SPACE_USED NUMBER_OF_FILES
----------------------- ------------------ ---------------
CONTROL FILE                 0       0
REDO LOG                 0       0
ARCHIVED LOG                 0       0
BACKUP PIECE                 0       0
IMAGE COPY               0       0
FLASHBACK LOG                 7.81       2
FOREIGN ARCHIVED LOG             0       0
AUXILIARY DATAFILE COPY          0       0

 

一旦设置完成了闪回,数据库就可以闪回到过去的任意时间点,只要保证该时间点在闪回日志保留时间内.

可以通过查询v$flashback_database_log查看可以恢复的最早的时间点和scn

 

  1* select * from v$flashback_database_log
SQL> /

 
OLDEST_FLASHBACK_SCN OLDEST_FL RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE     CON_ID
-------------------- --------- ---------------- -------------- ------------------------ ----------
         4186252 30-SEP-19         1440      419430400             70778880      0

 

还可以查看闪回日志的信息:

 

SQL> select * from v$flashback_database_logfile;

 
NAME                                   LOG#    THREAD#  SEQUENCE#      BYTES FIRST_CHANGE# FIRST_TIM TYPE          CON_ID
------------------------------------------------------------ ---------- ---------- ---------- ---------- ------------- --------- --------- ----------
/u01/recoverarea/ORA19C/flashback/o1_mf_gs40y33h_.flb             1      1      1  209715200       4186252 30-SEP-19 NORMAL         0
/u01/recoverarea/ORA19C/flashback/o1_mf_gs40y68t_.flb             2      1      1  209715200         0       RESERVED       0

 

除了闪回到某个时间点,还有就是创建还原点

 

4.创建还原点

例如,我们想对数据库版本进行升级,那么可以在升级之前创建一个还原点.如果在升级过程中有什么问题,可以进行数据库闪回:

 

SQL> create restore point before_update guarantee flashback database;

 
Restore point created.

 

查看还原点的信息,同意通过查询v$restore_point,还可以通过rman来进行查询:

 

RMAN> list restore point all;

 
using target database control file instead of recovery catalog
SCN              RSP Time             Type       Time                 Name
---------------- -------------------- ---------- -------------------- ----
4187203                               GUARANTEED 30-SEP-2019 21:51:19 BEFORE_UPDATE

 

5.闪回数据库

闪回数据库需要将数据库启动到mount状态

 

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

 
Total System Global Area  952106368 bytes
Fixed Size          9141632 bytes
Variable Size         570425344 bytes
Database Buffers      364904448 bytes
Redo Buffers            7634944 bytes
Database mounted.
SQL> flashback database to restore point before_update;

 
Flashback complete.

 

闪回完成之后记得将此还原点进行删除:

 

drop restore point before_update;

按照时间点或者scn进行闪回:

 

flashback database to time = to_date('2012-05-02 10:00:00','yyyy-mm-dd hh:mi:ss');
flashback database to scn=XXXX;

 

6.PDB级别闪回

上面的闪回都是基于CDB的.其实闪回步骤和以前的一模一样.除了可以对CDB进行闪回,还可以对PDB进行闪回.基本步骤和CBD的闪回一致,只是在创建还原点的时候是在PDB级别创建.

 

SQL> show pdbs

 
    CON_ID CON_NAME           OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
     3 BRENT              READ WRITE NO

创建PDB级别的还原点:

 


 
SQL>  create restore point test_pdb guarantee flashback database;

 
Restore point created.

 

关闭PDB:

 

SQL> alter pluggable database brent close;

 
Pluggable database altered.

 

PDB闪回:

 

SQL> flashback pluggable database to restore point test_pdb;

 
Flashback complete.

 

打开PDB:

 

SQL> alter pluggable database brent open resetlogs;

 
Pluggable database altered.

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章