看了Oracle
g的閃回數據庫特性
書上說不能完成刪除一個表空間並用resetlogs恢復
其實這也就是說如果改變了數據庫的結構
是不能閃回的
只能閃回邏輯修改
但我還是做了一個實驗
我刪除了一個表空間
再用數據庫閃回
發現不能打開數據庫
打開數據庫的時候提示datafile
這個文件offline
如果resetlogs就會丟失這個文件
於是我就用RMAN進行恢復
也就是要恢復到一個以前的時間
用的是UNTIL TIME這個語法
但在RESTORE就出錯了
告訴不能恢復控制文件
在那個時間點確實沒有備份控制文件
但數據文件已經全部恢復了
其實就是控制文件所記錄的SCN與數據文件的SCN不一致
數據庫不能打開
也就是控制文件比數據文件新
我想到兩個辦法
一個是重建控制文件
用resetlogs選項
一個是再往前面恢復
恢復一個在這之前的控制文件
我RMAN的controlfile autoback為on
控制文件都有備份
我采取了第二種辦法
第一種
重建控制文件用resetlogs選項
新的控制文件的SCN是從數據文件中讀取
再recover database until cancel
第二種辦法還是一個跨resetlogs時間點恢復
因為昨天我做實驗曾今用resetlogs打開過數據庫
所以
我在恢復控制文件後
還RESET DATABASE to incarnation n
進行對應物的轉換
不然RMAN會報
RMAN
UNTIL TIME is before RESETLOGSS time
Cause
UNTIL TIME cannot be less than the database creation time or RESETLOGSS time
Action
Check the UNTIL TIME
If the database needs to be restored to an old incarnation
use the
RESET DATABASE TO INCARNATION command
最後
進行recover database 後
數據成功恢復
記錄下過程
以後好參考
我還是該把中間結果保存下來
哦
還有
RMAN的controlfile autoback不僅在備份的時候會自動備份控制文件
而且在數據庫結構改變時也會自動備份
這是有 SERVER PROCESS完成
具體看
The control file is also automatically backed up after database structural changes such as adding a new tablespace
altering the state of a tablespace or datafile (for example
bringing it online)
adding a new online redo log
renaming a file
adding a new redo thread
and so on
Losing this information would compromise your ability to recover the database
This backup is performed by the server process itself
rather than one of the RMAN channels
This type of autobackup
unlike autobackups that occur after a successful backup
is always created on disk
You can useCONFIGURECONTROLFILEAUTOBACKUPFORDEVICETYPEDISKto set the location for this disk based control file autobackup
Note that a failure of the automatic control file autobackup after a structural change never causes the associated structural change to fail
For example
if you add a datafile
and if the resulting control file autobackup fails
then the datafile addition is still successful
From:http://tw.wingwit.com/Article/program/Oracle/201311/17390.html