Oracle 11g開啟閃回功能Flashback

煙花丶易冷發表於2016-05-13

Oracle的建庫過程中,通常會提示是否開啟閃回並指定閃回恢復區大小,我一般會選擇不開啟。這樣,如果需要使用閃回功能,就需要手動開啟。

1.環境準備

我們在Oracle11g上進行測試。

點選(此處)摺疊或開啟

  1. SQL> select * from v$version;

  2. BANNER
  3. --------------------------------------------------------------------------------
  4. Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
  5. PL/SQL Release 11.2.0.3.0 - Production
  6. CORE 11.2.0.3.0 Production
  7. TNS for Linux: Version 11.2.0.3.0 - Production
  8. NLSRTL Version 11.2.0.3.0 - Production

  9. SQL>


2.查詢閃回功能是否開啟

可以透過查詢v$database檢視的flashback_on欄位來獲取閃回功能的狀態,該欄位是一個布林型別,YES表示開啟,NO表示未開啟。
點選(此處)摺疊或開啟

  1. SQL>
  2. SQL> select flashback_on from v$database;

  3. FLASHBACK_ON
  4. ------------------
  5. NO

  6. SQL>

3.開啟歸檔功能

在開啟閃回功能之前,我們必須首先開啟資料庫歸檔,否則資料庫會報錯。

點選(此處)摺疊或開啟

  1. SQL>
  2. SQL> archive log list;
  3. Database log mode No Archive Mode
  4. Automatic archival Disabled
  5. Archive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
  6. Oldest online log sequence 16
  7. Current log sequence 20
  8. SQL>
  9. SQL> alter database flashback on;
  10. alter database flashback on
  11. *
  12. ERROR at line 1:
  13. ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
  14. ORA-38707: Media recovery is not enabled.


  15. SQL>

ORA-38706和ORA-38707兩個報錯提醒我們要開啟資料庫歸檔,步驟如下;

點選(此處)摺疊或開啟

  1. SQL>
  2. SQL> alter database archive;
  3. alter database archive
  4.                      *
  5. ERROR at line 1:
  6. ORA-02231: missing or invalid option to ALTER DATABASE


  7. SQL> alter database archivelog;
  8. alter database archivelog
  9. *
  10. ERROR at line 1:
  11. ORA-01126: database must be mounted in this instance and not open in any
  12. instance


  13. SQL> 
  14. SQL>
  15. SQL> shutdown immediate
  16. Database closed.
  17. Database dismounted.
  18. ORACLE instance shut down.
  19. SQL>
  20. SQL> startup mount
  21. ORACLE instance started.

  22. Total System Global Area 941600768 bytes
  23. Fixed Size 1348860 bytes
  24. Variable Size 536873732 bytes
  25. Database Buffers 398458880 bytes
  26. Redo Buffers 4919296 bytes
  27. Database mounted.
  28. SQL>
  29. SQL> alter database archivelog;

  30. Database altered.

  31. SQL>
  32. SQL> alter database open;

  33. Database altered.

  34. SQL>
  35. SQL> archive log list;
  36. Database log mode Archive Mode
  37. Automatic archival Enabled
  38. Archive destination /u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
  39. Oldest online log sequence 16
  40. Next log sequence to archive 20
  41. Current log sequence 20
  42. SQL>
  43. SQL>

4.開啟閃回功能

4.1設定引數

閃回功能和兩個初始化引數有關,我們先認識一下,其中,db_recovery_file_dest_size表示閃回恢復區大小,db_recovery_file_dest表示閃回恢復區路徑。

點選(此處)摺疊或開啟

  1. SQL>
  2. SQL> show parameter db_recovery

  3. NAME TYPE VALUE
  4. ------------------------------------ ----------- ------------------------------
  5. db_recovery_file_dest string
  6. db_recovery_file_dest_size big integer 0
  7. SQL>
在開啟閃回功能前,必須設定這兩個引數,而且,二者還有先後順序,如果順序搞錯了系統也會報錯並給出提示資訊。

點選(此處)摺疊或開啟

  1. SQL>
  2. SQL> alter system set db_recovery_file_dest=\'/home/oracle/flashback\';
  3. alter system set db_recovery_file_dest=\'/home/oracle/flashback\'
  4. *
  5. ERROR at line 1:
  6. ORA-02097: parameter cannot be modified because specified value is invalid
  7. ORA-19802: cannot use DB_RECOVERY_FILE_DEST without DB_RECOVERY_FILE_DEST_SIZE


  8. SQL>
  9. SQL> alter system set db_recovery_file_dest_size=2g;

  10. System altered.

  11. SQL>
  12. SQL> alter system set db_recovery_file_dest=\'/home/oracle/flashback\';

  13. System altered.

  14. SQL>
  15. SQL> show parameter db_recovery

  16. NAME TYPE VALUE
  17. ------------------------------------ ----------- ------------------------------
  18. db_recovery_file_dest string /home/oracle/flashback
  19. db_recovery_file_dest_size big integer 2G
  20. SQL>

4.2開啟閃回功能

需要注意的一點是,在10G中,如果要開啟資料庫級別的閃回,需要設定相關的引數,並且使資料庫處於歸檔模式,然後再在MOUNT狀態下開啟閃回。在11G中,如果設定了相關的引數及其開啟了歸檔,那麼可以再OPEN狀態下開啟閃回。這也算是Oracle 11g的一個新特性。

點選(此處)摺疊或開啟

  1. SQL>
  2. SQL> select status from v$instance;

  3. STATUS
  4. ------------
  5. OPEN

  6. SQL>
  7. SQL> alter database flashback on;

  8. Database altered.

  9. SQL>
  10. SQL> select flashback_on from v$database;

  11. FLASHBACK_ON
  12. ------------------
  13. YES

  14. SQL>
這樣,我們就開啟了資料庫閃回功能,進而可以實現閃回資料庫等功能。

5.關閉閃回功能

關閉閃回功能十分簡單,一條語句就能搞定。

點選(此處)摺疊或開啟

  1. SQL>
  2. SQL> alter database flashback off;

  3. Database altered.

  4. SQL> select flashback_on from v$database;

  5. FLASHBACK_ON
  6. ------------------
  7. NO

  8. SQL>

6.總結

從上面的過程來看,需要注意幾點:

1.Oracle11g支援在Open狀態下開啟閃回功能,這一點和Oracle 10g等較早版本不一樣,算是一個新特性;
2.開啟資料庫閃回的前提條件是,開啟資料庫歸檔;

3.設定兩個初始化引數:閃回恢復區大小db_recovery_file_dest_size和閃回恢復區路徑db_recovery_file_dest,而這兩個引數是有先後順序的,必須先設定db_recovery_file_dest_size後設定db_recovery_file_dest,否則系統會報錯並給出提示;


hoegh
15.05.27
-- The End --

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

相關文章