閃回開關

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,否則系統會報錯並給出提示;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章