閃回資料庫測試之二 :通過read only檢視閃回的結果
SQL*Plus: Release 10.2.0.4.0 - Production on 星期二 4月 22 10:14:27 2008
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> conn / as sysdba
已連線。
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 UNDOTBS1 YES NO YES
2 SYSAUX YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
7 TEST YES NO YES
已選擇7行。
SQL> select table_name,tablespace_name from dba_tables where table_name in ('EMP','EMP2');
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
EMP2 TEST
EMP USERS
SQL> alter tablespace test flashback off;
表空間已更改。
SQL> select count(*) from scott.emp;
COUNT(*)
----------
15
SQL> delete from scott.emp where job='DBA';
已刪除 1 行。
SQL> commit;
提交完成。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
867262
刪除1行之前的SCN號,這個時候EMP表有14行,EMP2沒有改變.
SQL> insert into scott.emp values(9900,'Matt','AUDIT',null,sysdate,8000,null,40);
已建立 1 行。
SQL> insert into scott.emp values(7899,'Gay','SA',null,sysdate-20,7000,null,30);
已建立 1 行。
SQL> commit;
提交完成。
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
438769
SQL> delete from scott.emp2 where rownum<28770;
已刪除28769行。
SQL> commit;
提交完成。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
867588
變化之後的SCN,這個時候EMP和EMP2都發生了變化,這個時候我們要閃回資料庫到之前那個SCN,也就是EMP表有14行,
但是又希望EMP2表能保持現在的資料.
SQL>
SQL> alter tablespace test offline;
表空間已更改。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> flashback database to scn 867262;
flashback database to scn 867262
*
第 1 行出現錯誤:
ORA-38795: 警告: FLASHBACK 成功但 OPEN RESETLOGS 將出現如下錯誤
ORA-01245: RESETLOGS 完成時離線檔案 6 將丟失
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF'
這時alert_devdb.log的內容:
Database mounted in Exclusive Mode
Completed: ALTER DATABASE MOUNT
Tue Apr 22 10:31:27 2008
flashback database to scn 867262
Tue Apr 22 10:31:28 2008
Flashback Restore Start
Flashback Restore Complete
Flashback Media Recovery Start
Tue Apr 22 10:31:31 2008
Recovery of Online Redo Log: Thread 1 Group 1 Seq 31 Reading mem 0
Mem# 0: +DISK_GROUP1/devdb/onlinelog/group_1.258.651578121
Mem# 1: +DISK_GROUP2/devdb/onlinelog/group_1.317.651578125
Tue Apr 22 10:31:33 2008
Incomplete Recovery applied until change 867266
Flashback Media Recovery Complete
SQL> alter database open read only;
alter database open read only
*
第 1 行出現錯誤:
ORA-16004: 備份資料庫需要恢復
ORA-01245: RESETLOGS 完成時離線檔案 6 將丟失
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF'
SQL> select file#,name,status,checkpoint_change#,last_change# from v$datafile;
FILE# NAME STATUS CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------------------------------------------------ ------- ------------------ ------------
1 +DISK_GROUP1/devdb/datafile/system.273.651578001 SYSTEM 867266
2 +DISK_GROUP1/devdb/datafile/undotbs1.268.651578003 RECOVER 867266
3 +DISK_GROUP1/devdb/datafile/sysaux.278.651578001 RECOVER 867266
4 +DISK_GROUP1/devdb/datafile/users.259.651578003 RECOVER 867266
5 +DISK_GROUP1/devdb/datafile/example.290.651578169 RECOVER 867266
6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF OFFLINE 867140
已選擇6行。
SQL> select file#,status,recover,CHECKPOINT_CHANGE# from v$datafile_header;
FILE# STATUS REC CHECKPOINT_CHANGE#
---------- ------- --- ------------------
1 ONLINE 867266
2 ONLINE 867266
3 ONLINE 867266
4 ONLINE 867266
5 ONLINE 867266
6 OFFLINE 867663
已選擇6行。
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出現錯誤:
ORA-01245: RESETLOGS 完成時離線檔案 6 將丟失
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF'
SQL> alter database open noresetlogs;
alter database open noresetlogs
*
第 1 行出現錯誤:
ORA-01610: 使用 BACKUP CONTROLFILE 選項的恢復必須已完成
SQL> recover datafile 6;
ORA-00283: 恢復會話因錯誤而取消
ORA-38798: 無法執行部分資料庫恢復
ORA-38797: 在閃回資料庫後, 需要執行完全資料庫恢復
SQL> recover database;
完成介質恢復。
SQL> select file#,name,status,checkpoint_change#,last_change# from v$datafile;
FILE# NAME STATUS CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------------------------------------------------ ------- ------------------ ------------
1 +DISK_GROUP1/devdb/datafile/system.273.651578001 SYSTEM 868012 868012
2 +DISK_GROUP1/devdb/datafile/undotbs1.268.651578003 ONLINE 868012 868012
3 +DISK_GROUP1/devdb/datafile/sysaux.278.651578001 ONLINE 868012 868012
4 +DISK_GROUP1/devdb/datafile/users.259.651578003 ONLINE 868012 868012
5 +DISK_GROUP1/devdb/datafile/example.290.651578169 ONLINE 868012 868012
6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF OFFLINE 867663
已選擇6行。
SQL> select file#,status,recover,CHECKPOINT_CHANGE# from v$datafile_header;
FILE# STATUS REC CHECKPOINT_CHANGE#
---------- ------- --- ------------------
1 ONLINE 868012
2 ONLINE 868012
3 ONLINE 868012
4 ONLINE 868012
5 ONLINE 868012
6 OFFLINE 867663
已選擇6行。
SQL>
SQL> alter database open;
資料庫已更改。
SQL> alter tablespace test online;
表空間已更改。
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
410000
EMP2表還是最新的結果.
SQL> select count(*) from scott.emp;
COUNT(*)
----------
16
SQL> select * from scott.emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
7788 SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
7876 ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10
9900 Matt AUDIT 2008-04-22 10:25:13 8000 40
7899 Gay SA 2008-04-02 10:25:50 7000 30
已選擇16行。
SQL>
emp表也是最新的結果,被恢復回來了.
SQL> alter tablespace test flashback on;
alter tablespace test flashback on
*
第 1 行出現錯誤:
ORA-01126: 資料庫必須已裝載到此例項並且不在任何例項中開啟
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1298184 bytes
Variable Size 209715448 bytes
Database Buffers 398458880 bytes
Redo Buffers 2895872 bytes
資料庫裝載完畢。
SQL> select * from v$tablespace;
TS# NAME INC BIG FLA ENC
---------- ------------------------------------------------------------ --- --- --- ---
0 SYSTEM YES NO YES
1 UNDOTBS1 YES NO YES
2 SYSAUX YES NO YES
4 USERS YES NO YES
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
7 TEST YES NO NO
已選擇7行。
SQL> alter tablespace test flashback on;
表空間已更改。
SQL>
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
410000
SQL> delete from scott.emp2 where rownum<20000;
已刪除19999行。
SQL> commit;
提交完成。
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
390001
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
868763
SQL> select * from v$flashback_database_log;
OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
-------------------- ------------------- ---------------- -------------- ------------------------
866025 2008-04-01 21:37:25 1440 24576000 0
SQL> select * from v$flashback_database_stat;
BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE
------------------- ------------------- -------------- ---------- ---------- ------------------------
2008-04-22 10:59:36 2008-04-22 11:03:31 557056 49152 66560 0
SQL>select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
--------------- ----------- ---------- ----------------- ---------------
+DISK_GROUP2 4294967296 635437056 44040192 13
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1298184 bytes
Variable Size 209715448 bytes
Database Buffers 398458880 bytes
Redo Buffers 2895872 bytes
資料庫裝載完畢。
SQL> flashback database to timestamp to_timestamp('2008-04-22 11:00:00','yyyy-mm-dd hh24:mi:ss')
2 ;
flashback database to timestamp to_timestamp('2008-04-22 11:00:00','yyyy-mm-dd hh24:mi:ss')
*
第 1 行出現錯誤:
ORA-38753: 無法閃回資料檔案 6; 沒有閃回日誌資料。
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF'
SQL> alter system archive log current;
系統已更改。
SQL> delete from scott.emp2 where rownum<20001;
已刪除20000行。
SQL> commit;
提交完成。
SQL> l
1* commit
SQL> delete from scott.emp2 where rownum<20001;
已刪除20000行。
SQL> commit;
提交完成。
SQL>
SQL> delete from scott.emp2 where rownum<20001;
已刪除20000行。
SQL>
SQL> commit;
提交完成。
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
330001
SQL>
SQL>
SQL>
SQL> commit;
提交完成。
SQL> alter system checkpoint;
系統已更改。
SQL> flashback database to timestamp to_timestamp('2008-04-22 11:15:00','yyyy-mm-dd hh24:mi:ss');
閃回完成。
SQL> alter database open read only;
資料庫已更改。
SQL>
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
390001
可以通過READ ONLY來看閃回到哪裡.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/175005/viewspace-246483/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 閃回資料庫測試Oracle資料庫
- 閃回(關於閃回資料庫)資料庫
- 監視閃回資料庫資料庫
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- Oracle閃回技術之閃回資料庫Oracle資料庫
- 閃回資料庫資料庫
- 資料庫的閃回資料庫
- 巧用閃回資料庫來檢視歷史資料資料庫
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- 閃回資料庫測試之一 :關閉閃回的表空間是否可以開啟資料庫
- Oracle資料庫閃回Oracle資料庫
- Oracle閃回資料庫Oracle資料庫
- 閃回資料庫的事情資料庫
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- Flashback Database 閃回資料庫Database資料庫
- 實驗-閃回資料庫資料庫
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫視窗GUIIDE資料庫
- 【備份恢復】閃回資料庫(三)基於時間戳閃回資料庫資料庫時間戳
- Backup And Recovery User's Guide-使用閃回資料庫-開啟閃回資料庫GUIIDE資料庫
- (f)--閃回恢復區---實踐2---閃回表(閃回DML部分資料會用到閃回查詢)
- 資料庫基於版本的閃回資料庫
- 開啟資料庫的閃回功能:資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 基於SCN閃回資料庫資料庫
- 【備份恢復】閃回資料庫(四)基於可靠還原點閃回資料庫資料庫
- 閃回表、閃回查詢
- 閃回資料庫時間視窗(flashback database window)資料庫Database
- Oracle 9i閃回測試。Oracle
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-閃回資料庫GUIIDE資料庫
- Backup And Recovery User's Guide-使用閃回資料庫來回退資料庫-監控閃回資料庫GUIIDE資料庫
- Oracle資料庫的閃回恢復區Oracle資料庫
- dg_閃回資料庫實驗資料庫
- 還原點和閃回資料庫資料庫
- Oracle 11g 閃回資料庫Oracle資料庫
- flashback query閃回資料