Oracle 閃回資料庫測試

chenoracle發表於2020-06-24

Oracle 閃回資料庫測試

1 設定閃回目錄和大小

SQL> show parameter recover
SQL> alter system set db_recovery_file_dest_size=5g;
SQL> alter system set db_recovery_file_dest='/fast_recovery';
SQL> show parameter recover
NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest     string /fast_recovery
db_recovery_file_dest_size     big integer 5G
db_unrecoverable_scn_tracking     boolean TRUE
recovery_parallelism     integer 0

2 啟用閃回

SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO

SQL> alter database flashback on;
Database altered.
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES

3 檢視時間

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI
-------------------- -------------------
     1114453 2020-06-24 08:30:49

4 建立測試資料

SQL> conn cjc/cjc
SQL> create table test1 as select * from dba_objects;
SQL> select count(*) from test1;
  COUNT(*)
----------
     87002

5 建立閃回點

SQL> create restore point test1;    
Restore point created.

6 檢視閃回點

SQL> set line 200
SQL> col time for a50            
SQL> col restore_point_time for a20
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
SQL> select scn,time,restore_point_time,name from v$restore_point;
       SCN TIME       RESTORE_POINT_TIME   NAME
---------- -------------------------------------------------- -------------------- ------------------------------
   1114756 24-JUN-20 08.36.20.000000000 AM   TEST1

7 繼續插入資料

SQL> ho date
Wed Jun 24 08:39:31 CST 2020
SQL> insert into test1 select * from test1;
87002 rows created.
SQL> commit;
Commit complete.
SQL> select count(*) from test1;
  COUNT(*)
----------
    174004

8 刪除表

SQL> drop table test1 purge;
Table dropped.
SQL> select count(*) from cjc.test1;
select count(*) from cjc.test1
                         *
ERROR at line 1:
ORA-00942: table or view does not exist

9 閃回資料庫

---test1是之前設定的閃回點名稱

SQL> conn / as sysdba
SQL> shutdown immediate
SQL> startup mount
SQL> flashback database to restore point test1;
Flashback complete.
SQL> alter database open resetlogs;

10 檢視資料,資料庫恢復到閃回點時刻

SQL> select count(*) from cjc.test1;
  COUNT(*)
----------
     87002

11 檢視閃回資料

[oracle@cjcos01 flashback]$ pwd
/fast_recovery/CJCDB01/flashback
[oracle@cjcos01 flashback]$ ll -rth
total 101M
-rw-r----- 1 oracle oinstall 51M Jun 24 08:30 o1_mf_hh57ow2w_.flb
-rw-r----- 1 oracle oinstall 51M Jun 24 08:49 o1_mf_hh57osvt_.flb

12 關閉閃回,閃回日誌自動刪除

SQL> alter database flashback off;
Database altered.
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
[oracle@cjcos01 flashback]$ ls

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!

Oracle 閃回資料庫測試

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2700598/,如需轉載,請註明出處,否則將追究法律責任。

相關文章