DBA工作備忘錄-陣列損壞解決方案

來源:互聯網
上載者:User
解決
問題描述:
下午現場人員說產品庫意外中止,緊接著說可能是陣列損壞,因為燈都不亮了。
於是緊急撥號到遠程,檢查資料庫,5分鐘以後,資料庫重新啟動成功。
問題其實非常簡單,但是後來看alertlog,發現從陣列失效一直到給我打電話,中間有將近1個小時的時間,這段時間裡面,因為現場人員不知道問題所在,所以反覆切換cluster,試圖讓資料庫能夠啟動成功,汗!

問題解釋:
產品庫中控制檔案總共三份,分別儲存在/global/oracle, /global/backup1, /global/backup2
下。重作日誌和歸檔日誌各兩份,分別儲存在/global/backup1, /global/backup2
下。
/global/oracle, /global/backup1, /global/backup2是三個獨立的陣列。
由於控制檔案對於oracle必須保持一致,所以三份控制檔案中的任何一份無法讀取
,資料庫都會關閉。而重作日誌和歸檔日誌,只要有一份可以正常讀寫,那麼資料
庫還可以繼續正常運行。
所以,如果任何一個陣列失效,那麼由於控制檔案的問題,資料庫都會意外中止。

解決流程:
1。資料庫意外中止

2。檢查$ORACLE_HOME/admin/dpshdb/bdump/alert_dpshdb.log檔案,確認意外中
止的原因,比如今天的內容是:
Tue Oct 26 16:36:40 2004
Errors in file /export/oracle/product/817/admin/dpshdb/bdump/dpshdb_ckpt_16541.trc:
ORA-00206: error in writing (block 3, # blocks 1) of controlfile
ORA-00202: controlfile: '/global/backup1/oradata/dpshdb/control02.ctl'
ORA-27063: skgfospo: number of bytes read/written is incorrect
SVR4 Error: 6: No such device or address
Additional information: -1
Additional information: 8192
Tue Oct 26 16:36:40 2004
Errors in file /export/oracle/product/817/admin/dpshdb/bdump/dpshdb_lgwr_16539.trc:
ORA-00345: redo log write error block 38713 count 2
ORA-00312: online log 1 thread 1: '/global/backup1/oradata/dpshdb/redo1b.log'
ORA-27063: skgfospo: number of bytes read/written is incorrect
SVR4 Error: 5: I/O error
Additional information: -1
Additional information: 1024
第一部分是指出control02.ctl控制檔案無法讀取,第二部分是指出redo1b.log重
作日誌無法讀取。
然後資料庫自動關閉,如下顯示,是16:36:43發生的,也就是在16:36:40首次發現
陣列失效的3秒以後(我們知道CKPT的timeout值是3秒):
Tue Oct 26 16:36:43 2004
Errors in file /export/oracle/product/817/admin/dpshdb/udump/dpshdb_ora_10206.trc:
ORA-00221: 寫入控制檔案出錯
Instance terminated by CKPT, pid = 16541
從這些log中我們可以知道/global/backup1陣列失效了。

3。修改初始化參數檔案$ORACLE_HOME/dbs/initdpshdb.ora,忽略失效的控制檔案
和失效的歸檔路徑
原內容:
control_files = ("/global/oracle/oradata/dpshdb/control01.ctl",
"/global/backup1/oradata/dpshdb/control02.ctl",
"/global/backup2/oradata/dpshdb/control03.ctl")
log_archive_dest_1 = "location=/global/backup1/oradata/dpshdb/arch"
修改後的內容:
control_files = ("/global/oracle/oradata/dpshdb/control01.ctl",
"/global/backup2/oradata/dpshdb/control03.ctl")
#log_archive_dest_1 = "location=/global/backup1/oradata/dpshdb/arch"

4。啟動資料庫,此時資料庫已經可以正常使用了。

5。為了保證重作記錄檔始終保持2份,所以在資料庫啟動以後,我們需要刪除掉
原來失效的檔案,添加新的重作記錄檔。這部分操作可以在資料庫啟動以後再作
,但是最好不要有大量的更新操作,是為了防止重作日誌切換過快,導致刪除重作
日誌的操作失敗。
alter database drop logfile member
'/global/backup1/oradata/dpshdb/redo1b.log';
alter database add logfile member
'/global/oracle/oradata/dpshdb/redo1c.log' to group 1;
alter database drop logfile member
'/global/backup1/oradata/dpshdb/redo2b.log';
alter database add logfile member
'/global/oracle/oradata/dpshdb/redo2c.log' to group 2;
alter database drop logfile member
'/global/backup1/oradata/dpshdb/redo3b.log';
alter database add logfile member
'/global/oracle/oradata/dpshdb/redo3c.log' to group 3;
alter database drop logfile member
'/global/backup1/oradata/dpshdb/redo4b.log';
alter database add logfile member
'/global/oracle/oradata/dpshdb/redo4c.log' to group 4;
在執行alter database drop logfile member之前要檢查v$log視圖,確認該檔案
所屬的重作日誌組的status欄位不是current,不是active,而是inactive。否則
刪除會報錯,如果刪除報錯,那麼運行兩次如下語句:
alter system swtich logfile;
然後再重新執行刪除舊日誌和添加新日誌的操作。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.