2016年4月27日 星期三

[ORACLE][RMAN] 普通資料庫(非系統用的資料庫)災難復原

資料庫環境確認:
Instance啟動時:
1. 若一般資料庫datafile遺失,datafile headers毀損,startup只能啟動到mount

Instance執行中時:
1. 若一般資料庫datafile headers毀損時發生checkpoint,則該毀損的datafile會被標示為offline,但Instance不會有問題,而且重啟Instance時也不會有問題,但有問題的datafile依然是offline。
2. 若一般資料庫壞的不是datafile headers而是其他地方或是整個data毀損或被刪除,該datafile並不會被標示為offline,但重啟Instance時只能啟動到mount,不過還是可以透過alter database datafile <壞掉的檔案> offline;,再將Instance Open。

P.S.:此篇復原前提為參數檔(init),控制檔(controlfile),archivelog,redo log,關鍵資料庫(SYSTEM及UNDO)皆正常的情形下。

復原流程及完整指令:(以下範例為假設datafile 6毀損)
> 非datafile headers毀損,且資料庫為關閉的狀態
1. 將資料庫啟動到Mount
    startup mount;
2. 將有問題的datafile offline
    alter database datafile 6 offline;
3. 開啟資料庫
    alter database open;
4. 使用RMAN執行restore或是switch命令還原有問題的datafile
    restore datafile 6;
5. 使用RMAN執行recover,透過archivelog及redolog復原datafile
    recover datafile 6;
6. 將有問題的datafile online
    alter database datafile 6 online;

指令
1. 在RMAN
RUN{
startup mount;
sql 'alter database datafile 6 offline';
alter database open;
restore datafile 6;
recover datafile 6;
sql 'alter database datafile 6 online';
}

> 非datafile headers毀損,且資料庫為開啟的狀態
1. 將有問題的datafile offline
    alter database datafile 6 offline;
2. 使用RMAN執行restore或是switch命令還原有問題的datafile
    restore datafile 6;
3. 使用RMAN執行recover database,透過archivelog及redolog復原datafile
    recover datafile 6;
4. 將有問題的datafile online
    alter database datafile 6 online;


指令:
1. 在RMAN
RUN{
sql 'alter database datafile 6 offline';
restore datafile 6;
recover datafile 6;
sql 'alter database datafile 6 online';
}


>datafile headers毀損,且資料庫為開啟的狀態
1. 透過系統指令將毀損的datafile從作業系統刪除
    rm /oradata/test.dbf
2. 將有問題的datafile offline
    alter database datafile 6 offline;
3. 使用RMAN執行restore或是switch命令還原有問題的datafile
    restore datafile 6;
4. 使用RMAN執行recover database,透過archivelog及redolog復原datafile
    recover datafile 6;
5. 將有問題的datafile online
    alter database datafile 6 online;


指令:
1. 在作業系統
    rm /oradata/test.dbf
2. 在RMAN
RUN{
sql 'alter database datafile 6 offline';
restore datafile 6;
recover datafile 6;
sql 'alter database datafile 6 online';
}

>datafile headers毀損,且資料庫為關閉的狀態
1. 透過系統指令將毀損的datafile從作業系統刪除
    rm /oradata/test.dbf
2. 將資料庫啟動到Mount
    startup mount;
3. 將有問題的datafile offline
    alter database datafile 6 offline;
4. 開啟資料庫
    alter database open;
5. 使用RMAN執行restore或是switch命令還原有問題的datafile
    restore datafile 6;
6. 使用RMAN執行recover database,透過archivelog及redolog復原datafile
    recover datafile 6;
7. 將有問題的datafile online
    alter database datafile 6 online;

指令:
1. 在作業系統
    rm /oradata/test.dbf
2. 在RMAN
RUN{
startup mount;
sql 'alter database datafile 6 offline';
alter database open;
restore datafile 6;
recover datafile 6;
sql 'alter database datafile 6 online';
}

沒有留言:

張貼留言