Oracle閃回技術之閃回資料庫
OCA/OCP認證考試指南 580頁
Oracle閃回技術包括
1.閃回資料庫
2.閃回查詢、事務和表
3.閃回刪除
4.閃回資料歸檔
閃回資料庫
可以將資料庫回退到過去的某一時刻,效果等同於不完整恢復.他將丟失在閃回點之後的所有資料,因為他必須使用resetlogs開啟資料庫.
它可以恢復一些邏輯錯誤,比如update語句忘記了where過濾條件,導致整個表的資料被修改.
閃回資料庫不能撤銷物理損壞,而只能恢復使用者錯誤造成的邏輯錯誤.
啟用閃回資料庫,修改的塊的映象會不時的從資料庫緩衝區複製到SGA內的閃回緩衝區,由恢復寫入器(Recovery Writer,RVWR)將閃回緩衝區寫入磁碟和閃回日誌.閃回日誌記錄的是完整塊映象的日誌.
閃回資料庫從效能考慮,並不會將所有塊的變化寫入閃回日誌.
假設有一個資料塊A,每十分鐘改變一次.那麼從10點到11點,改變了6次,但是很可能只有兩次變更寫入了閃回日誌.
假設資料塊A,10:00和10:30的變更寫入了閃回日誌,而現在需要將資料庫閃回至10:15.
閃回資料庫首先會找到塊A在10:00變更的完整映象,然後應用redolog,將資料塊A的變更推到10:15.
這個恢復的方式雖然和RMAN不完整恢復相似,但是閃回資料庫更加方便和快捷.
假設有一個凌晨4點的RMAN備份,如果在上午11點發生了使用者錯誤,使用RMAN不完整恢復,恢復到10:30.這實際上是將資料庫所有的塊(凌晨4點的版本)應用redolog向前推進至10:30
而閃回資料庫則不同,閃回日誌只記錄發生變化的塊.按照上面的例子,只需要在閃回日誌中找到10:30之前的最近一個資料塊的版本,應用redolog即可.所以閃回資料庫相對於RMAN不完全恢復有如下的優點
1.只恢復有變化的資料塊(RMAN需要恢復所有的資料塊)
2.從最近的一個資料塊版本恢復(按照上面的例子,閃回資料庫很可能從10:20的一個資料塊開始恢復,而RMAN不完全恢復統統是從凌晨4點的資料塊開始恢復)
配置閃回資料庫
1.開啟歸檔模式,並確認閃回區
開啟歸檔模式的命令如下:
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
2.設定閃回保留目標時間
由db_flashback_retention_target引數控制,單位為分鐘,預設是1440(一天)
設定為兩天
alter system set db_flashback_retention_target=2880 scope=both;
3.重啟資料庫,啟用閃回日誌記錄
shutdown immediate;
startup mount;
alter database flashback on;
alter database open;
4.確認開啟了閃回日誌
select flashback_on from v$database;
有兩個檢視可以檢視閃回的資訊
set linesize 300;
select * from v$flashback_database_log;
select * from v$flashback_database_stat;
閃回緩衝區大小不受DBA控制,但是可以檢視
select * from v$sgastat where name='flashback generation buff';
使用閃回資料庫恢復
1.建立實驗表
建立時間在22:14左右
2.模擬失誤的使用者操作.
使用者錯誤的truncate了表
3.執行閃回資料庫
SQL> shutdown abort;
SQL> startup mount;
然後閃回資料庫到發生事故的時間點左右.
flashback database to timestamp
to_timestamp('2015-01-19 22:13:00','yyyy-mm-dd HH24:mi:ss');
然後以只讀方式開啟資料庫,確認資料
SQL> alter database open read only;
當然,此時實驗表尚未建立
SQL> select table_name from user_tables;
no rows selected
繼續前推
shutdown abort;
startup mount;
recover database until time '2015-01-19 22:15:00';
alter database open read only;
可以看到資料已經回來了
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T
SQL> select count(*) from t;
COUNT(*)
----------
999
SQL>
這時候,就可以以resetlogs開啟資料庫,閃回資料庫完成
shutdown abort;
startup mount;
alter database open resetlogs;
這裡需要注意兩點
1.一旦確認了恢復的時間點,並以resetlogs方式開啟資料庫,則該時間點之後的資料統統丟失.不能恢復了
2.閃回資料庫需要歸檔日誌,也就是說閃回目標保留時間(db_flashback_retention_target)要小於等於歸檔日誌保留時間.
否則,歸檔日誌因為備份策略的原因被刪除,則不能保證閃回資料庫的效果.
Oracle閃回技術包括
1.閃回資料庫
2.閃回查詢、事務和表
3.閃回刪除
4.閃回資料歸檔
閃回資料庫
可以將資料庫回退到過去的某一時刻,效果等同於不完整恢復.他將丟失在閃回點之後的所有資料,因為他必須使用resetlogs開啟資料庫.
它可以恢復一些邏輯錯誤,比如update語句忘記了where過濾條件,導致整個表的資料被修改.
閃回資料庫不能撤銷物理損壞,而只能恢復使用者錯誤造成的邏輯錯誤.
啟用閃回資料庫,修改的塊的映象會不時的從資料庫緩衝區複製到SGA內的閃回緩衝區,由恢復寫入器(Recovery Writer,RVWR)將閃回緩衝區寫入磁碟和閃回日誌.閃回日誌記錄的是完整塊映象的日誌.
閃回資料庫從效能考慮,並不會將所有塊的變化寫入閃回日誌.
假設有一個資料塊A,每十分鐘改變一次.那麼從10點到11點,改變了6次,但是很可能只有兩次變更寫入了閃回日誌.
假設資料塊A,10:00和10:30的變更寫入了閃回日誌,而現在需要將資料庫閃回至10:15.
閃回資料庫首先會找到塊A在10:00變更的完整映象,然後應用redolog,將資料塊A的變更推到10:15.
這個恢復的方式雖然和RMAN不完整恢復相似,但是閃回資料庫更加方便和快捷.
假設有一個凌晨4點的RMAN備份,如果在上午11點發生了使用者錯誤,使用RMAN不完整恢復,恢復到10:30.這實際上是將資料庫所有的塊(凌晨4點的版本)應用redolog向前推進至10:30
而閃回資料庫則不同,閃回日誌只記錄發生變化的塊.按照上面的例子,只需要在閃回日誌中找到10:30之前的最近一個資料塊的版本,應用redolog即可.所以閃回資料庫相對於RMAN不完全恢復有如下的優點
1.只恢復有變化的資料塊(RMAN需要恢復所有的資料塊)
2.從最近的一個資料塊版本恢復(按照上面的例子,閃回資料庫很可能從10:20的一個資料塊開始恢復,而RMAN不完全恢復統統是從凌晨4點的資料塊開始恢復)
配置閃回資料庫
1.開啟歸檔模式,並確認閃回區
開啟歸檔模式的命令如下:
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
2.設定閃回保留目標時間
由db_flashback_retention_target引數控制,單位為分鐘,預設是1440(一天)
設定為兩天
alter system set db_flashback_retention_target=2880 scope=both;
3.重啟資料庫,啟用閃回日誌記錄
shutdown immediate;
startup mount;
alter database flashback on;
alter database open;
4.確認開啟了閃回日誌
select flashback_on from v$database;
有兩個檢視可以檢視閃回的資訊
set linesize 300;
select * from v$flashback_database_log;
select * from v$flashback_database_stat;
閃回緩衝區大小不受DBA控制,但是可以檢視
select * from v$sgastat where name='flashback generation buff';
使用閃回資料庫恢復
1.建立實驗表
建立時間在22:14左右
2.模擬失誤的使用者操作.
使用者錯誤的truncate了表
3.執行閃回資料庫
SQL> shutdown abort;
SQL> startup mount;
然後閃回資料庫到發生事故的時間點左右.
flashback database to timestamp
to_timestamp('2015-01-19 22:13:00','yyyy-mm-dd HH24:mi:ss');
然後以只讀方式開啟資料庫,確認資料
SQL> alter database open read only;
當然,此時實驗表尚未建立
SQL> select table_name from user_tables;
no rows selected
繼續前推
shutdown abort;
startup mount;
recover database until time '2015-01-19 22:15:00';
alter database open read only;
可以看到資料已經回來了
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
T
SQL> select count(*) from t;
COUNT(*)
----------
999
SQL>
這時候,就可以以resetlogs開啟資料庫,閃回資料庫完成
shutdown abort;
startup mount;
alter database open resetlogs;
這裡需要注意兩點
1.一旦確認了恢復的時間點,並以resetlogs方式開啟資料庫,則該時間點之後的資料統統丟失.不能恢復了
2.閃回資料庫需要歸檔日誌,也就是說閃回目標保留時間(db_flashback_retention_target)要小於等於歸檔日誌保留時間.
否則,歸檔日誌因為備份策略的原因被刪除,則不能保證閃回資料庫的效果.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1407405/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- Oracle資料庫閃回Oracle資料庫
- Oracle閃回資料庫Oracle資料庫
- 閃回(關於閃回資料庫)資料庫
- 閃回技術二:閃回表
- 閃回技術一:閃回查詢
- Oracle 11G 閃回技術 使用Oracle閃回查詢Oracle
- 【備份恢復】 閃回技術之閃回刪除
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- 閃回技術查詢資料
- 閃回資料庫資料庫
- oracle 閃回技術簡介Oracle
- Oracle 11G 閃回技術 使用閃回版本查詢Oracle
- 【備份恢復】閃回技術之閃回版本查詢
- Oracle 閃回資料庫測試Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 閃回表技術
- Flashback閃回技術
- 資料庫的閃回資料庫
- Oracle閃回技術--Flashback Version QueryOracle
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- Oracle 11G 閃回技術 閃回版本查詢和閃回事務查詢Oracle
- Oracle 11g 閃回資料庫Oracle資料庫
- Oracle 之 閃回操作Oracle
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- 閃回刪除技術:
- 閃回資料庫的事情資料庫
- Flashback Database 閃回資料庫Database資料庫
- 監視閃回資料庫資料庫
- 實驗-閃回資料庫資料庫
- Oracle閃回資料歸檔Oracle
- Oracle -- 閃回恢復區---實踐1---閃回庫Oracle
- oracle閃回Oracle
- oracle 閃回Oracle
- 【備份恢復】 閃回技術之閃迴歸檔
- Oracle資料庫閃回區空間不足Oracle資料庫