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.

 

 

 

 

 

 

 

 

 

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