磁盘阵列掉电 oracle数据库,掉电导致磁盘坏,非归档下的redo全部丢失,数据库打开的恢复失败...
1、環境
OS:sun solaris
Database version:8.1.7
數據文件存放路徑:/u01/oradata/bjtb/; /u02/oradata/bjtb/
數據庫為非歸檔
2、問題
raid5壞兩個盤,oracle的文件存放路徑/u01,/u02都掛不上
更換硬盤后,/u01可掛上,/u02仍然不可以
/u02中存放的文件有:8個普通的數據文件,全部的redo日志文件
3、處理過程
$sqlplus / as sysdba失敗
$sqlplus /nolog
Sql>conn / as sysdba成功
Sql>startup失敗,無法mount
Alert文件中顯示其中一個控制文件在/u02下
Vi$ORACLE_HOME/dbs/initbjtb.ora
刪掉/u02下的控制文件的路徑,僅保留另外兩個控制文件即可
Sql>shutdown immediate
Sql>startup可以mount,但是有數據文件在/u02上,因此無法打開數據庫
Sql>alter database backup controlfile to trace;
Udump下查看生成的trace文件,發現一半的數據文件都在/u02下,全部redo也在/u02下
還好這些都是普通的數據文件,offline后數據庫應該是可以起來的,只是會丟掉很多數據。嘗試恢復。
Sql>alter database open;
報數據文件3找不到
Sql>alter database datafile 3 offline drop;
根據提示,offline drop掉的數據文件有3,4,6,7,10,13,14,15
Sql>alter database open;
報redo日志找不到
Sql>alter database rename file ‘/u02/oradata/bjtb/redo01.log’ to ‘/u02/oradata/bjtb/redo01.log’;
報新文件’/u02/oradata/bjtb/redo01.log’找不到
嘗試在重建控制文件的腳本中修改此路徑,重建控制文件失敗。于是
$touch /u02/oradata/bjtb/redo01.log
$touch /u02/oradata/bjtb/redo02.log
$touch /u02/oradata/bjtb/redo03.log
Sql>alter database rename file ‘/u02/oradata/bjtb/redo01.log’ to ‘/u02/oradata/bjtb/redo01.log’;
Sql>alter database rename file ‘/u02/oradata/bjtb/redo01.log’ to ‘/u02/oradata/bjtb/redo02.log’;
Sql>alter database rename file ‘/u02/oradata/bjtb/redo01.log’ to ‘/u02/oradata/bjtb/redo03.log’;
成功
Sql>alter database open;
報錯:需要resetlogs或resetlogs
Sql>alter database open resetlogs;
報錯:需要介質恢復
Sql>recover database until cancel;
Cancel
需要更多恢復,文件system01.dbf錯
4、分析
因為故障的原因是掉電引起的,因此,導致了有些看起來是好的文件,它的checkpoint也不一致,如果日志信息還存在,那么還有可能通過日志中的記錄把文件的checkpoint一致,但是,我們的redo log全部丟失,而且數據庫還是在noarchivelog模式下,無法讓它的checkpoint一致,數據庫無法打開。只能通過備份恢復,而且還必須是完全備份。
5、建議
此次問題最大的原因在于同時有兩塊硬盤損壞,因此對于系統的硬件,也需要定期做檢查。
數據庫方面,建議最好將數據庫設置成歸檔模式,而且需要定期對數據庫備份、維護。
對于redo log,每個日志組最好有兩個成員,并且兩個成員分別放在不同的目錄下。目前我們的redo log的三個日志組,每個日志組都是一個成員。單一redo log的丟失或損壞故障很容易恢復,但是如果碰到像我們現在的情況:斷電故障,非歸檔,日志全部丟失。在這種情況下,如果不幸斷電時有文件的checkpoint不一致,那么就沒有辦法將其寫一致,只能靠備份恢復了。所以,redo log的安全性也很重要。
總結
以上是生活随笔為你收集整理的磁盘阵列掉电 oracle数据库,掉电导致磁盘坏,非归档下的redo全部丢失,数据库打开的恢复失败...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle12数据库安装步骤,ORAC
- 下一篇: oracle索引和同义词,关于Oracl