oracle 閃回

hurp_oracle發表於2014-08-10
閃回概述:
閃回資料庫就是當出現邏輯錯誤時,能夠將整個資料庫回退到出錯前的那個時間點上。實現閃回資料庫的基礎就是閃回日誌。只要我們配置了閃回資料庫,就會自動建立閃回日誌。這時只要資料庫裡的資料發生了變化,Oracle就會將資料被修改前的舊值儲存在閃回日誌裡。當我們需要閃回資料庫時,ORACLE就會讀取閃回日誌裡的記錄,並應用到資料庫上,從而將資料庫回退到歷史上的某個時間點的狀態上。
閃回日誌與聯機重做日誌一樣,都是迴圈使用的,但它們還是有不少的差異,當事務修改了buffer_cache裡的資料時,會將改變前的值和改變後的值都以重做記錄的形式儲存在log_buffer中,然後透過LGWR程式將這些重做記錄寫入到聯機日誌檔案中。但是在記錄閃回日誌時,只會將改變前的值儲存在flash buffer中,再由RVWR程式寫入到閃回日誌檔案中。

閃回分為如下幾種:
a)閃回資料庫
b)閃回刪除
c)閃回表
d)閃回版本查詢(flashback version query)
e)閃回事物查詢(flashback transaction query)
f)閃回查詢(flashback query)
注:上述六種閃回,只有閃回資料庫和Flash Recovery  Area有關係,閃回資料庫的閃回日誌(Flashback log只能放在閃回恢復區中。而其它的閃回功能,都和閃回恢復區沒有任何聯絡。也就是說,使用閃回資料庫功能時必須使用閃回恢復區,而10G的其它閃回功能中,閃回恢復區不是必須的。

閃回資料庫:

啟用閃回資料庫,必須按如下四個步聚進行;
1.將資料庫開啟為歸檔模式
  1. sql> archive log list;   #檢視是不是歸檔方式  
  2. sql> alter system set log_archive_start=true scope=spfile; #啟用主動歸檔  
  3. sql> alter system set log_archive_dest=''location=/oracle/ora9/oradata/arch'' scope=spfile;#設定歸檔路徑  
  4. #如果歸檔到兩個位置,則可以透過上邊方法實現  
  5. sql> alter system set log_archive_format=''arch_%d_%t_%r_%s.log''  #設定歸檔日記款式  
  6. sql> shutdown immediate;  
  7. sql> startup mount;    #開啟控制檔案,不開啟資料檔案  
  8. sql> alter database archivelog; #將資料庫切換為歸檔模式  
  9. sql> alter database open;   #將資料檔案開啟  
  10. sql> archive log list;   #檢視此時是否處於歸檔模式  
  11. 查詢以確定資料庫位於archivelog模式中且歸檔過程正在執行  
  12. sql> select log_mode from v$database;  
  13. sql> select archiver from v$instance;  

2.配置閃回恢復區
  1. sql> alter system set db_recovery_file_dest='/arch01/flash_recovery_area' scope=both;
  2. sql> alter system set db_recovery_file_dest_size='10g' scope=both sid='oyy3a';

3.配置閃回保留時間 
  1. sql> alter system set db_flashback_retention_target=2880 scope=spfile;   ----該引數以分鐘為單位,預設為1440分鐘,也就是24小時。

4.啟用閃回資料庫
  1. sql> startup mount;
  2. sql>alter databaase flashback on;

5.關閉閃回資料庫
注:一旦關閉閃回資料庫,則閃回恢復區的閃回日誌都被自動刪除
  1. sql> startup mount;
  2. sql>alter databaase flashback off;  
6.閃回資料庫
在配置完閃回資料庫以後,如果確實需要進行閃回資料庫操作的話,可以透過RMAN進行,也可以透過SQL*PLUS進行。
  1. sql> shutdown immediate;
  2. sql> startup mount exclusive;
  3. sql> flashback database to timestamp to_date('2005-10-01 15:32:00','yyyy-mm-dd hh24:mi:ss');
  4. sql> alter database open read only;  ----先以只讀模式開啟,來確認閃回的資料是否正常,如查資料正確,則需要關閉資料庫,並以resetlogs方式開啟。
  5. sql> alter database open resetlogs;



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

相關文章