【聽海日誌】之Oracle 10g閃回資料庫
當 Oracle 資料庫中發生了邏輯損壞時,如果您需要快速容易地恢復資料,就必須使用閃回技術。與發生人為錯誤的情況一樣,很難標識受錯誤事務處理影響的物件和行。使用閃回技術時,可診斷出錯誤是如何引入到資料庫中的,然後可修復損壞的資料。您可以檢視導致特定行修改的事務處理,檢視某個時間段內指定行的整個版本集,或者只檢視過去特定時間顯示的資料。幻燈片表中顯示了閃回技術的典型用法。
閃回資料庫使用閃回日誌執行閃回。閃回刪除使用回收站。其它所有功能都使用還原資料。並不是所有閃回功能都會修改資料庫。有些功能只是一些用來查詢資料其它版本的方法。這些工具用來檢視問題並幫助進行恢復。根據閃回查詢結果,可執行下列其中一項操作:
確定執行哪種型別的資料庫修改閃回操作來修復問題。
將這些查詢結果集反饋到 INSERT、UPDATE 或 DELETE 語句以便於修復錯誤資料。
二、閃回資料庫概要使用閃回資料庫時,透過還原自先前某個時間點以來發生的所有更改,可快速將資料庫恢復到較早的時間點。這個操作速度很快,因為不需要還原備份。使用這個功能可撤消導致邏輯資料損壞的更改。如果資料庫發生介質丟失或物理損壞,則必須使用傳統恢復方法。
三、閃回資料庫減少還原時間閃回資料庫比使用還原檔案和重做日誌檔案的傳統時間點恢復的速度要更快。隨著資料庫規模的增加,透過還原所有資料檔案來執行傳統的時間點恢復所需的時間長度變得不太現實。使用閃回資料庫時,因為不需要還原資料檔案,所以恢復資料庫的時間與需要回退的更改數目(而不是資料庫大小)成比例。
閃回資料庫是透過使用一類被稱為閃回資料庫日誌的日誌檔案來實施的。Oracle 資料庫會定期將資料塊的“前像”記錄在閃回資料庫日誌中。為了快速將資料檔案更改回退到捕獲閃回日誌的時間(就在所需目標時間之前),可以重用塊影像。然後,應用重做日誌檔案中的更改來填充間隔。在快速恢復區中會自動建立和管理閃回資料庫日誌。
四、閃回資料庫注意事項在不能使用閃回資料庫功能的情況下,必須使用不完全恢復操作將資料庫返回到特定時間。閃回資料庫操作完成後,可在只讀模式下開啟資料庫,驗證是否使用了正確的目標時間或系統更改號 (SCN)。如果沒有,可以再次閃回資料庫,或者透過執行恢復操作來前滾資料庫。因此,要撤消閃回資料庫操作,必須向前恢復資料庫。
注:閃回保留目標並不能絕對保證閃回可用。如果快速恢復區中必需存在的檔案需要佔用空間,可能會自動刪除閃回日誌。
五、閃回資料庫限制不能使用閃回資料庫恢復自閃回目標時間以來已刪除的資料檔案。刪除的資料檔案會新增到控制檔案中且標記為離線,但是不會閃回。閃回資料庫不能閃回自閃回目標時間以來已收縮的資料檔案。這種資料檔案必須先離線,才能執行閃回操作。
六、閃回資料庫實施使用FLASHBACK DATABASE可以恢復資料庫到先前的某個時間點或者某個SCN號。在Oracle10g以前的版本中,要實現資料庫恢復到過去某個時間點或者SCN號,只能夠透過資料庫的不完全恢復實現。從Oracle 10g開始,可以使用FLASHBACK DATABASE實現。使用FLASHBACK DATABASE要比執行資料庫系統的不完全恢復要快的多,但是需要對資料庫做以下的配置:
1、資料庫必須執行在歸檔模式下。
2、必須啟用資料庫的閃回功能。
3、必須配置初始化引數DB_FLASHBACK_RETENTION_TARGET。
注:db_flashback_retention_target引數是設定閃回資料的最長儲存時間,單位是分鐘;預設值是1440(60*24),即1天。
6.1 閃回操作的語法FLASHBACK [STANDBY | DATABASE] [資料庫名稱] to SCN SCN號 | TIMESTAMP 時間表示式 | restore point 恢復點
6.2 配置閃回資料庫選項SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount;
ORACLE 例程已經啟動。
Total System Global Area 289406976 bytes
Fixed Size 1248600 bytes
Variable Size 92275368 bytes
Database Buffers 192937984 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
SQL> select name,log_mode,open_mode,flashback_on from v$database;
NAME LOG_MODE OPEN_MODE FLASHBACK_ON
--------- ------------ ---------- ------------------
MYORACLE ARCHIVELOG MOUNTED NO
當前閃回資料庫的開關沒有開啟,需要設定開啟閃回開關。設定FLASHBACK_ON必須將資料庫載入到MOUNT狀態進行。
SQL> alter database flashback on;
資料庫已更改。
SQL> alter system set db_flashback_retention_target=3600;
系統已更改。
SQL> alter database open;
資料庫已更改。
6.3 閃回到某個時間點SQL> select to_char(oldest_flashback_time,'yyyy-mm-dd hh24:mi:ss')
from v$flashback_database_log;
TO_CHAR(OLDEST_FLAS
-------------------
2011-07-12 10:20:59
SQL> drop table scott.emp;
表已刪除
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount;
ORACLE 例程已經啟動。
Total System Global Area 289406976 bytes
Fixed Size 1248600 bytes
Variable Size 92275368 bytes
Database Buffers 192937984 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
SQL> flashback database to timestamp to_date('2011-07-12 10:20:59','yyyy-mm-dd hh24:mi:ss');
閃回完成。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250
……………………
已選擇14行。
6.4 閃回到某個系統更改號(SCN)SQL> select oldest_flashback_scn from v$flashback_database_log;
OLDEST_FLASHBACK_SCN
--------------------
846734
SQL> truncate table scott.emp;
表被截斷。
SQL> select * from scott.emp;
未選定行
SQL> shutdown immediate;
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount;
ORACLE 例程已經啟動。
Total System Global Area 289406976 bytes
Fixed Size 1248600 bytes
Variable Size 96469672 bytes
Database Buffers 188743680 bytes
Redo Buffers 2945024 bytes
資料庫裝載完畢。
SQL> flashback database to scn 846734;
閃回完成。
SQL> alter database open resetlogs;
資料庫已更改。
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250
………………
已選擇14行。
七、Oracle資料庫回收站Oracle也有回收站,如果不小心drop掉了哪張表,或誤刪了記錄,可以透過回收站閃回。首先檢視回收站中有哪些物件被刪除:
SQL> select * from recyclebin t;
主要欄位有object_name、original_name、createtime、droptime,original_name就是你刪除物件之前在oracle裡面的名稱,根據droptime我們可以找到當時你刪除的版本的object_name,然後根據object_name就可以進行閃回。
SQL> flashback table "BIN$SxyIpbUaSlGWt9j/dEZEhw==$0" to before drop rename to gis_link;
注:object_name一定要用雙引號括起來,而不是單引號。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/751371/viewspace-734988/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【聽海日誌】之ORACLE 10G AWR安裝使用Oracle 10g
- 【聽海日誌】之SCN與OracleOracle
- 【聽海日誌】之Oracle SQL*LOADEROracleSQL
- 【聽海日誌】之ORACLE恢復案例Oracle
- Oracle閃回技術之閃回資料庫Oracle資料庫
- Oracle資料庫閃回Oracle資料庫
- Oracle閃回資料庫Oracle資料庫
- 【聽海日誌】之ORACLE遞迴查詢學習Oracle遞迴
- 【聽海日誌】之DATAGUARD新增redo log
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- Oracle 閃回資料庫測試Oracle資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 閃回(關於閃回資料庫)資料庫
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- Oracle 11g 閃回資料庫Oracle資料庫
- 閃回資料庫資料庫
- 【聽海日誌】之ORA-01455故障排查
- 清理資料庫監聽日誌最好方法資料庫
- Oracle資料庫閃回區空間不足Oracle資料庫
- ORACLE資料庫閃回步驟詳解Oracle資料庫
- Oracle資料庫的閃回恢復區Oracle資料庫
- 資料庫的閃回資料庫
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- 閃回資料庫之後匯入資料實驗資料庫
- Oracle 12c 新特性之 PDB 級別閃回資料庫Oracle資料庫
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- oracle資料庫mmnl日誌很大Oracle資料庫
- 閃回資料庫的事情資料庫
- Flashback Database 閃回資料庫Database資料庫
- 監視閃回資料庫資料庫
- 實驗-閃回資料庫資料庫
- Oracle閃回資料歸檔Oracle
- oracle 資料庫lsnrctl監聽的日誌路徑和trace檔案Oracle資料庫
- Oracle 之 閃回操作Oracle
- Oracle資料庫的閃回查詢功能簡介Oracle資料庫
- ORACLE 10G中閃回彙總Oracle 10g