閃回與歸檔引數的設定
Oracle閃回技術提供了一組功能用來檢視資料的過去狀態並且支援資料按時間返回到之前的狀態不用對資料庫從備份中執行大量的還原操作或者執行按時間點恢復。在大部分情況下閃回功能非常有效破壞性比介質恢復小。
Oracle的大部分閃回功能是在邏輯層面進行操作,檢視和維護資料庫物件,比如:
Oracle 閃回查詢:指定目標時間對資料庫執行查詢來檢視在指定時間點的資料結果。為了從一個不想要生效的改變中對錶進行恢復,使用者可以選擇錯誤之前的時間並執行查詢來檢索丟失或改變的記錄。
Oracle閃回版本查詢:能檢視在指定時間間隔內一個或多個表中已經存在記錄的所有版本。還可以檢索行記錄不同版本的後設資料,包括開始時間,結束時間,操作和建立這個版本的事務ID。這個功能可以用來恢復丟失的資料和檢視錶的改變。
Oracle閃回事務查詢:能檢視由單個事務所產生的改變或者在一個時間週期內所有事務的改變。
Oracle閃回表:將一個表返回到之前某個時間點的狀態。當資料庫處於聯機狀態時也能還原表資料。只撤消特定表的改變。
Oracle閃回刪除:是dorp table的反操作
閃回表,閃回查詢,閃回事務查詢和閃回版本查詢都依賴於undo資料,記錄對Oracle資料庫每一個更新的影響。undo的主要作用主要是用於SQL查詢的一致性讀與事務的回滾,這些undo資訊包括了重構過去時間點資料所需要的資訊。
閃回刪除是建立在回收站機制上的,Oracle會將刪除的資料庫物件保留到因為要分配新空間而不得不覆蓋原來使用的空間為止。
注意:邏輯層面的閃回功能不依賴於RMAN。
在物理層面,Oracle閃回資料庫提供了一種對資料庫執行按時間點恢復的替代方法。如果資料檔案已經包含了所不期待的改變,那麼使用閃回資料庫能使用當前的資料檔案將它的內容還原到過去時間點所處的狀態。而結果就是按時間點恢復一樣,但其操作速度更快因為它不需要從備份中還原資料檔案,比介質恢復應用的重做要少很多。
閃回資料庫使用閃回日誌來訪問資料塊的之前版本,它的一些資訊與歸檔重做日誌一樣。閃回資料庫要求你對資料庫設定了閃回區,因為閃回日誌只能儲存在這裡。閃回日誌預設情況下是沒啟用的。閃回日誌所使用的空間由資料庫自動管理,在閃回區會讓空間使用保持平衡。
注意:閃回資料庫被整合到RMAN中,在執行閃回資料庫時可以自動從備份中檢索的任何歸檔重做日誌,它也能使用SQL*Plus來執行,但在這種情況下你必須保證它所要應用的歸檔日誌都在磁碟上。
如果閃回區沒有分配足夠的空間,那麼閃回日誌因為備份和歸檔日誌檔案可能會被刪除。資料庫按時間點恢復可以達到與閃回資料庫同樣的效果,將資料庫的內容返回到過去的時間點。
Oracle資料庫有聯機重做日誌,這個日誌是記錄對資料庫所做的修改,比如插入,刪除,更新資料等,對這些操作都會記錄在聯機重做日誌裡。一般資料庫至少要有2個聯機重做日誌組。當一個聯機重做日誌組被寫滿的時候,就會發生日誌切換,這時聯機重做日誌組2成為當前使用的日誌,當聯機重做日誌組2寫滿的時候,又會發生日誌切換,去寫聯機重做日誌組1,就這樣反覆進行。
如果資料庫處於非歸檔模式,聯機日誌在切換時就會丟棄. 而在歸檔模式下,當發生日誌切換的時候,被切換的日誌會進行歸檔。比如,當前在使用聯機重做日誌1,當1寫滿的時候,發生日誌切換,開始寫聯機重做日誌2,這時聯機重做日誌1的內容會被複製到另外一個指定的目錄下。這個目錄叫做歸檔目錄,複製的檔案叫歸檔重做日誌。
資料庫使用歸檔方式執行時才可以進行災難性恢復。
1.歸檔日誌模式和非歸檔日誌模式的區別
非歸檔模式只能做冷備份,並且恢復時只能做完全備份.最近一次完全備份到系統出錯期間的資料不能恢復.
歸檔模式可以做熱備份,並且可以做增量備份,可以做部分恢復.
用ARCHIVE LOG LIST 可以檢視當前模式狀態是歸檔模式還是非歸檔模式.
當前資料庫沒有啟動歸檔
SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 191 Current log sequence 193
從上面的資訊可以知道歸檔目標為USE_DB_RECOVERY_FILE_DEST,這說歸檔日誌將會儲存到閃回區這裡之所以歸檔目錄為是因為當沒有設定其它歸檔目錄時log_archive_dest_10會隱式的使用USE_DB_RECOVERY_FILE_DEST來儲存歸檔重做日誌
SQL> show parameter log_archive_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string log_archive_dest_10 string log_archive_dest_2 string log_archive_dest_3 string log_archive_dest_4 string log_archive_dest_5 string log_archive_dest_6 string log_archive_dest_7 string log_archive_dest_8 string log_archive_dest_9 string log_archive_dest_state_1 string enable log_archive_dest_state_10 string enable log_archive_dest_state_2 string enable log_archive_dest_state_3 string enable log_archive_dest_state_4 string enable log_archive_dest_state_5 string enable log_archive_dest_state_6 string enable log_archive_dest_state_7 string enable log_archive_dest_state_8 string enable log_archive_dest_state_9 string enable
從上面的資訊可以看到當前資料庫沒有設定任何歸檔目錄,下面來設定歸檔目錄
SQL> alter system set log_archive_dest_1='location=/u02' scope=both; System altered.
再來檢視歸檔重做日誌儲存的目錄
SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination /u02 Oldest online log sequence 191 Current log sequence 193
可以看到現在資料庫顯示的歸檔日誌目錄為我們所指定的/u02
下面來啟用閃回
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount ORACLE instance started. Total System Global Area 327155712 bytes Fixed Size 1273516 bytes Variable Size 138412372 bytes Database Buffers 184549376 bytes Redo Buffers 2920448 bytes Database mounted. SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination /u02 Oldest online log sequence 191 Current log sequence 193 SQL> show parameter db_recovery_file NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u01/app/oracle/flash_recovery _area db_recovery_file_dest_size big integer 2G SQL> alter database force logging; Database altered. SQL> alter database flashback on; alter database flashback on * ERROR at line 1: ORA-38706: Cannot turn on FLASHBACK DATABASE logging. ORA-38707: Media recovery is not enabled.
現在雖然我們設定了db_recovery_file_dest與db_recovery_file_dest_size,強制資料庫記錄日誌,但資料庫沒有啟用歸檔是不能僱用閃回的,下面啟用歸檔。
SQL> alter database archivelog;
Database altered.
再次啟用閃回
SQL> alter database flashback on; Database altered.
當啟用閃回就不能使用log_archive_dest與log_archive_duplex_dest引數來指定歸檔日誌目錄。而是必須使用log_archive_dest_n
SQL> alter system set log_archive_dest='location=/u01' scope=both; alter system set log_archive_dest='location=/u01' scope=both * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST SQL> alter system set log_archive_duplex_dest='location=/u01' scope=both; alter system set log_archive_duplex_dest='location=/u01' scope=both * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-16018: cannot use LOG_ARCHIVE_DUPLEX_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST
從上面的錯誤資訊確實可以看到當啟用閃回後確實不能使用log_archive_dest與log_archive_duplex_dest引數來指定歸檔日誌目錄
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-1411500/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【oracle 】閃回與歸檔位置的理解Oracle
- Oracle歸檔引數設定問題Oracle
- 開閃回及閃迴歸檔
- Oracle歸檔模式、引數意義、設定Oracle模式
- Oracle的閃回恢復區和歸檔日誌多路徑設定Oracle
- Oracle閃回資料歸檔Oracle
- Oracle資料庫的閃回恢復區及多歸檔路徑的設定Oracle資料庫
- rac使用預設閃回區歸檔空間滿
- 閃回資料歸檔-- Flashback Data ArchiveHive
- 11g閃回資料歸檔
- Oracle歸檔模式與非歸檔模式設定Oracle模式
- 歸檔放在閃回區帶來的問題
- 【備份恢復】 閃回技術之閃迴歸檔
- 清除閃回資料歸檔區資料
- Oracle 11g 閃回資料歸檔Oracle
- 回滾段損壞後的引數設定
- 關於oracle閃回資料歸檔的總結Oracle
- 【Flashback】11g的閃回資料歸檔初探
- 10g關閉歸檔/啟用閃回恢復區歸檔
- [zt] Oracle 11g 閃回資料歸檔Oracle
- 歸檔相關引數
- MySQL的配置檔案的引數設定MySql
- Oracle RAC啟動歸檔時需要設定CLUSTER_DATABASE引數嗎?OracleDatabase
- 歸檔模式的設定模式
- RAC資料庫啟用歸檔和閃回的步驟資料庫
- 10g閃回區和歸檔目錄的關係
- 設定歸檔模式模式
- oracle 歸檔設定Oracle
- DM7閃回與閃回查詢
- ORACLE RAC 設定歸檔Oracle
- Oracle10g閃回恢復區詳解--開啟,設定閃回區Oracle
- oracle自動歸檔的設定Oracle
- Oracle 11g閃回資料歸檔新功能解析Oracle
- 手工指定CHANNEL與設定PARALLELISM引數的異同以及FILESPERSET引數的作用Parallel
- Oracle10g歸檔引數研究Oracle
- 11g新特性--Oracle 11g 閃回資料歸檔Oracle
- 測試DML 時產生歸檔日誌和閃回日誌的比
- Postgresql日誌歸檔設定SQL