閃回資料庫測試之一 :關閉閃回的表空間是否可以開啟
用TEST表空間的EMP2表進行測試:
SQL>select table_name,tablespace_name from user_tables;
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
DEPT USERS
BONUS USERS
SALGRADE USERS
SYS_TEMP_FBT
EMP2 TEST
EMP USERS
已選擇6行。
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
458753
SQL> delete from scott.emp2 where rownum<20000;
已刪除19999行。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
863079
SQL> commit;
提交完成。
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
863085
SQL>
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
438754
SQL> insert into scott.emp2 select * from scott.emp;
已建立15行。
SQL> commit;
提交完成。
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> alter tablespace test flashback off;
表空間已更改。
關閉這個表空間的閃回功能,在資料庫閃回時不做閃回.
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> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL>
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 flashback_on from v$database;
FLASHBACK_ON
------------------
YES
SQL> flashback database to scn 863085;
flashback database to scn 863085
*
第 1 行出現錯誤:
ORA-38753: 無法閃回資料檔案 6; 沒有閃回日誌資料。
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF'
因為已經關閉了表空間的閃回功能,而不能對這個資料檔案進行閃回.
SQL> alter tablespace test offline;
alter tablespace test offline
*
第 1 行出現錯誤:
ORA-01109: 資料庫未開啟
SQL> alter database open;
資料庫已更改。
SQL> alter tablespace test offline;
表空間已更改。
SQL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> flashback database to scn 863085;
flashback database to scn 863085
*
第 1 行出現錯誤:
ORA-38795: 警告: FLASHBACK 成功但 OPEN RESETLOGS 將出現如下錯誤
ORA-01245: RESETLOGS 完成時離線檔案 6 將丟失
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF'
閃回資料庫已經完成,但資料庫開啟以後這個 datafile將丟失.
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> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01589: 要開啟資料庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
SQL> recover datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF';
ORA-00283: 恢復會話因錯誤而取消
ORA-38798: 無法執行部分資料庫恢復
ORA-38797: 在閃回資料庫後, 需要執行完全資料庫恢復
SQL> recover database;
完成介質恢復。
實際這步相當於取消了閃回資料庫的操作,是否可以讓一個datafile保持當前資料,而其他的datafile回到以前的呢?
SQL> alter database open;
資料庫已更改。
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> select count(*) from scott.emp2;
select count(*) from scott.emp2
*
第 1 行出現錯誤:
ORA-00376: 此時無法讀取檔案 6
ORA-01110: 資料檔案 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DEVDB\TEST.DBF'
SQL> alter tablespace test online;
表空間已更改。
SQL> select count(*) from scott.emp2;
COUNT(*)
----------
438769
可以看出,閃回以後,可以繼續做介質恢復以達到需要恢復的點,但是沒有辦法準確檢視資料,除非可以正常的read only,
如果我們不關閉那個datafile 的閃回是不是就可以看資料的狀態呢?
SQL> alter tablespace test flashback on;
alter tablespace test flashback on
*
第 1 行出現錯誤:
ORA-01126: 資料庫必須已裝載到此例項並且不在任何例項中開啟
SQL>
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> 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 users flashback off;
表空間已更改。
SQL> alter tablespace users flashback on;
alter tablespace users flashback on
*
第 1 行出現錯誤:
ORA-01126: 資料庫必須已裝載到此例項並且不在任何例項中開啟
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> 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 NO
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
7 TEST YES NO NO
已選擇7行。
SQL> alter database flashback off;
資料庫已更改。
這時刪除了之前所有的閃回日誌.
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 NO
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
7 TEST YES NO NO
已選擇7行。
SQL> alter database flashback on;
資料庫已更改。
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 NO
3 TEMP NO NO YES
6 EXAMPLE YES NO YES
7 TEST YES NO NO
已選擇7行。
SQL> alter tablespace test flashback on;
表空間已更改。
SQL> alter tablespace users flashback on;
表空間已更改。
SQL>
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>
SQL>
SQL> flashback database to scn 863085;
flashback database to scn 863085
*
第 1 行出現錯誤:
ORA-38753: 無法閃回資料檔案 4; 沒有閃回日誌資料。
ORA-01110: 資料檔案 4: '+DISK_GROUP1/devdb/datafile/users.259.651578003'
因為中間修改過閃回屬性,閃回日誌已經刪除,已經不能閃回到之前.
總結:從測試看,關閉閃回的表空間,在整個資料庫閃回以後,不能進行開啟,只能恢復整個資料庫才能開啟,那之前已經閃回的資料又恢復到當前.而且閃回之後,如果有資料檔案需要恢復,是不能read only的
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/175005/viewspace-246428/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 閃回(關於閃回資料庫)資料庫
- Oracle 閃回資料庫測試Oracle資料庫
- 開啟或關閉oracle資料庫的閃回功能步驟Oracle資料庫
- Oracle資料庫閃回區空間不足Oracle資料庫
- 開啟資料庫的閃回功能:資料庫
- Backup And Recovery User's Guide-使用閃回資料庫-開啟閃回資料庫GUIIDE資料庫
- [Flashback]開啟資料庫閃回資料庫功能資料庫
- Oracle閃回技術之閃回資料庫Oracle資料庫
- 閃回資料庫資料庫
- 資料庫的閃回資料庫
- 閃回表、閃回查詢
- 【備份恢復】閃回資料庫(三)基於時間戳閃回資料庫資料庫時間戳
- 【備份恢復】閃回資料庫(一)閃回資料庫的管理資料庫
- 閃回資料庫測試之二 :通過read only檢視閃回的結果資料庫
- Oracle資料庫閃回Oracle資料庫
- Oracle閃回資料庫Oracle資料庫
- (f)--閃回恢復區---實踐2---閃回表(閃回DML部分資料會用到閃回查詢)
- 閃回技術二:閃回表
- 閃回資料庫的事情資料庫
- Oracle閃回技術 為Oracle閃回配置資料庫Oracle資料庫
- Oracle 閃回技術 概覽 資料庫閃回功能Oracle資料庫
- 閃回(關於閃回查詢)
- 啟用Flashback Database閃回資料庫功能(閃回區滿解決辦法 )Database資料庫
- 基於時間戳閃回資料庫時間戳資料庫
- FlashBack總結之閃回資料庫與閃回刪除資料庫
- 基本閃回查詢和閃回表
- 【備份恢復】閃回資料庫(五)RMAN 命令列閃回資料庫資料庫命令列
- 【備份恢復】閃回資料庫(二) 基於 SCN 閃回資料庫資料庫
- Flashback Database 閃回資料庫Database資料庫
- 監視閃回資料庫資料庫
- 實驗-閃回資料庫資料庫
- 閃回查詢之閃回表查詢
- 利用flashback閃回表和資料
- oralce恢復誤刪除的表中的資料(閃回、閃回查詢)
- 【Flashback】啟用Flashback Database閃回資料庫功能Database資料庫
- 資料庫基於版本的閃回資料庫
- 詳解oracle資料庫閃回Oracle資料庫
- 基於SCN閃回資料庫資料庫