轉:Oracle基於TSM恢復實驗(模擬spfile、controlfile、datafile丟失)

lenx2000發表於2010-04-16
出處:

所有實驗都是在沒有catalog和沒有磁帶庫的情況下做的。
做的是filepool的儲存!
   
實驗一
步驟:
1.我在rman中沒有設定controlfile autobackup 時做了一次。
run
{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';
sql 'alter system switch logfile';
sql 'alter system switch logfile';
sql 'alter system switch logfile';
backup database ;
backup archivelog all delete input;
release channel t1;
}
2.並在資料庫中操作後shutdown,再刪除datafile,並把資料啟動到mount狀態
   run{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
restore database;
recover database;
release channel t1;
}
這樣完全恢復成功,資料也在我操作後的。

實驗二
步驟:
1.基於TSM做了一次rman的full backup(注:沒開自動backup控制檔案,db_name=orcl)
2.我在表中做了些控制後,並修改controlfile autobackup 為ON)
3.接著做了個基於TSM的做了個rman的零級備份
4.下面我就模擬故障把所有檔案刪除了(除pfile和spfile沒有刪除)
現在我把資料庫啟到nomount狀態
執行
run{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
restore  controlfile from autobackup;
release channel t1;
}
RMAN-06172: 沒有找到自動備份或指定的控制程式碼不是有效副本或片段
好像在恢復controlfile前要做
set DBID=*********  (可在這樣的情況下怎麼查DBID 啊!? )


實驗三
步驟
1.在資料orcl所有檔案都刪除後,無法恢復的情況下。我切換到資料庫orcltest上.
2.設定orcltest資料為archivelog歸檔狀態
3.並在沒有catalog的情況下備份controlfile
c:\rman target/
rman>run{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
backup current controlfile;
release channel t1;
}
4.再把資料shutdown immediate,並僅刪除3個controlfile。
rman>startup nomount
ramn>set dbid=2425530295
rman>run{
allocate channel t1 device type 'sbt' parms
'ENV=(TDPO_OPTFILE=C:\Program Files\Tivoli\TSM\AgentOBA\tdpo.opt)';
restore  controlfile from autobackup;
release channel t1;
}
RMAN-06172: 沒有找到自動備份或指定的控制程式碼不是有效副本或片段
分析:剛剛我在資料庫orcltest中透過rman備份了control,可為什麼就恢復不了控制檔案!?
TSM-Server端的伺服器連線、裝置類、儲存池、策略域、節點都是正確的,且空間也是夠了的。
以上是我的步驟,還得請教
第二個試驗,我做過。光有DBID還不行,在RMAN的恢復指令碼中,還需要:
set controlfile autobackup format for device type sbt_type to '%F';
然後:
restore controlfile from autobackup;

因為RMAN備份資訊是存在控制檔案裡的,你的控制檔案給刪了,就算有DBID又如何?
所以需要指定控制檔案存放的位置,呵呵。

第三個試驗我就看不懂了。
為什麼要用另一個資料庫呢?
先隨便找個PFILE,啟動到nomount狀態,然後重複第二步,把控制檔案恢復出來,並把SPFILE檔案恢復出來,不就OK了?


還有,查詢DBID,如果你的控制檔案是用預設格式備份的話,應該是C-123456789-***的,那麼123456789就是DBID了。
如果你說,我的控制檔案全備到TSM裡面了,在磁帶裡,那麼,進入TSM命令列,執行Q CONT TAPENAME,就可以找到控制檔案的名字了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11134849/viewspace-659880/,如需轉載,請註明出處,否則將追究法律責任。

相關文章