Oracle資料庫10g中使用閃回資料庫操作
使用FLASHBACK DATABASE可以恢複資料庫到先前的某個時間點或者某個SCN號。
在Oracle10g以前的版本中,要實現資料庫恢複到過去某個時間點或者SCN號,只能夠
通過資料庫的不完全恢複實現。從Oracle 10g開始,可以使用FLASHBACK DATABASE
實現。
使用FLASHBACK DATABASE要比執行資料庫系統的不完全恢複要快的多,
但是需要對資料庫做以下的配置:
1、資料庫必須運行在歸檔模式下
2、必須啟用資料庫的閃回功能
3、必須配置初始化參數DB_FLASHBACK_RETENTION_TARGET
閃回操作的文法
FLASHBACK [STANDBY | DATABASE] [資料庫名稱]
to SCN SCN號 | TIMESTAMP 時間運算式 | restore point 復原點
配置閃回資料庫選項
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
SQL> alter database flashback on;
資料庫已更改。
SQL> alter system set db_flashback_retention_target=3600;
系統已更改。
SQL> alter database open;
資料庫已更改。
SQL> drop table scott.emp;
表已刪除。
SQL> select to_char(oldest_flashback_time,'yyyy-mm-dd:hh24:mi:ss')
2 from v$flashback_database_log;
TO_CHAR(OLDEST_FLAS
-------------------
2008-01-02:13:20:59
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('2008-01-02:13:20:59',
2 '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 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已選擇14行。
閃回到某個系統更改號(SCN)
SQL> truncate table scott.emp;
表被截斷。
SQL> select * from scott.emp;
未選定行
SQL> truncate table scott.emp;
表被截斷。
SQL> truncate table scott.emp;
表被截斷。
SQL> select oldest_flashback_scn from v$flashback_database_log;
OLDEST_FLASHBACK_SCN
--------------------
737192
SQL> select oldest_flashback_scn from v$flashback_database_log;
OLDEST_FLASHBACK_SCN
--------------------
737192
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 737192;
閃回完成。
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 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 23-5月 -87 1100 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10
已選擇14行。