儲存壞道造成資料庫hang住
一、現象描述:
在測試環境HP-UX 11.2平臺上oracle 10.2.0.4,突然資料庫hang住,使用SQLPLUS登入,登入介面hang住,沒有顯示任何出錯資訊,無法訪問bdump下目錄,使得不能讀取alert.log日誌檔案。
二、分析:
1、最先懷疑是作業系統問題,機器重啟後,問題依然存在
2、檢視系統日誌,出現如下錯誤
vmunix: SCSI: Write error -- dev: b 31 0x1b6300, errno: 126, resid: 8192
3、使用exportvg和importvg後發現,原先的用於資料庫資料檔案的邏輯卷全部變成了lvol??的卷組名。
4、初步診斷是EMC DMX800儲存盤出問題,反饋廠家檢查,發現同一個RAID5磁碟組中的兩個磁碟出現了壞道。
5、需要對資料庫重新進行遷移到新的磁碟。
三、資料庫遷移
1、mount 檔案系統(包含udump等目錄)出現如下錯誤
$ mount /dev/xxxxx/lvol1 /home/xxxx
system error "UX:vxfs mount: ERROR: V-3-21268: /dev/xxxxx/lvol1 is
corrupted. needs checking"
2、修復該檔案系統
$fsck -F vxfs -o full, nolog /dev/xxxxxx/lvol1
$mount /dev/xxxxx/lvol1 /home/xxxx
3、因為lv的卷名已發生了變化,需要通過strings命令檢視lv資訊,確認邏輯卷是否可讀,並定位該邏輯卷名可能屬於的資料庫表空間
4、先恢復控制檔案,匯出控制檔案資訊,讀取控制檔案中資料檔案資訊
SQL>alter database backup controlfile to trace
5、將每個資料檔案中的邏輯卷硬dd命令拷貝到新的磁碟中所建立的lv
dd if=/dev/xxxx/rlvolxx f=/dev/xxx/rnewxxlv bs=4k
6、dd完成後,重新按照控制檔案中資料檔案所指定的目錄進行ln -s命令操作
7、重新開啟資料庫成功
四、其他
在檢視alert.log檔案中發現資料庫損壞前出現如下錯誤:
ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1,
osid 7789'
該問題解決可參看metelink 779552.1
從文件中知道與 Bug 7692631和Bug 7914003相關,解決辦法如下:
1、If you want to avoid the kill of the blocker (background or
non-background process) you can set
_kill_controlfile_enqueue_blocker=false.
2、In order to prevent a background blocker from being killed, you can
set the following init.ora parameter to 1 (default is 3).
_kill_enqueue_blocker=1
在測試環境HP-UX 11.2平臺上oracle 10.2.0.4,突然資料庫hang住,使用SQLPLUS登入,登入介面hang住,沒有顯示任何出錯資訊,無法訪問bdump下目錄,使得不能讀取alert.log日誌檔案。
二、分析:
1、最先懷疑是作業系統問題,機器重啟後,問題依然存在
2、檢視系統日誌,出現如下錯誤
vmunix: SCSI: Write error -- dev: b 31 0x1b6300, errno: 126, resid: 8192
3、使用exportvg和importvg後發現,原先的用於資料庫資料檔案的邏輯卷全部變成了lvol??的卷組名。
4、初步診斷是EMC DMX800儲存盤出問題,反饋廠家檢查,發現同一個RAID5磁碟組中的兩個磁碟出現了壞道。
5、需要對資料庫重新進行遷移到新的磁碟。
三、資料庫遷移
1、mount 檔案系統(包含udump等目錄)出現如下錯誤
$ mount /dev/xxxxx/lvol1 /home/xxxx
system error "UX:vxfs mount: ERROR: V-3-21268: /dev/xxxxx/lvol1 is
corrupted. needs checking"
2、修復該檔案系統
$fsck -F vxfs -o full, nolog /dev/xxxxxx/lvol1
$mount /dev/xxxxx/lvol1 /home/xxxx
3、因為lv的卷名已發生了變化,需要通過strings命令檢視lv資訊,確認邏輯卷是否可讀,並定位該邏輯卷名可能屬於的資料庫表空間
4、先恢復控制檔案,匯出控制檔案資訊,讀取控制檔案中資料檔案資訊
SQL>alter database backup controlfile to trace
5、將每個資料檔案中的邏輯卷硬dd命令拷貝到新的磁碟中所建立的lv
dd if=/dev/xxxx/rlvolxx f=/dev/xxx/rnewxxlv bs=4k
6、dd完成後,重新按照控制檔案中資料檔案所指定的目錄進行ln -s命令操作
7、重新開啟資料庫成功
四、其他
在檢視alert.log檔案中發現資料庫損壞前出現如下錯誤:
ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1,
osid 7789'
該問題解決可參看metelink 779552.1
從文件中知道與 Bug 7692631和Bug 7914003相關,解決辦法如下:
1、If you want to avoid the kill of the blocker (background or
non-background process) you can set
_kill_controlfile_enqueue_blocker=false.
2、In order to prevent a background blocker from being killed, you can
set the following init.ora parameter to 1 (default is 3).
_kill_enqueue_blocker=1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/354732/viewspace-621579/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 19.3資料庫impdp匯入view時hang住Oracle資料庫View
- 19c資料庫impdp匯入view時hang住資料庫View
- DELL EqualLogic PS6100儲存硬碟壞道資料恢復硬碟資料恢復
- 【伺服器資料恢復】IBM儲存伺服器硬碟壞道離線、oracle資料庫損壞的資料恢復伺服器資料恢復IBM硬碟Oracle資料庫
- 【YashanDB知識庫】yac修改引數後關閉資料庫hang住資料庫
- sqlplus -prelim和oradebug捕獲資料庫hang住的詳細資訊SQL資料庫
- file-max設定過小導致oracle資料庫hang住Oracle資料庫
- 【伺服器資料恢復】EqualLogic儲存磁碟出現壞道的資料恢復案例伺服器資料恢復
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- 【儲存資料恢復】IBM DS5300儲存由於硬碟壞道導致RAID5崩潰的資料恢復案例資料恢復IBM硬碟AI
- 【資料庫】資料庫儲存過程(一)資料庫儲存過程
- gitlab資料庫儲存位置Gitlab資料庫
- 資料庫儲存過程資料庫儲存過程
- 【儲存資料恢復】IBM儲存檔案NTFS系統損壞的資料恢復案例資料恢復IBM
- 報表資料分庫儲存
- MySQL資料庫操作、儲存引擎MySql資料庫儲存引擎
- MySql資料庫——儲存過程MySql資料庫儲存過程
- 明解資料庫------資料庫儲存演變史資料庫
- MySQL 更改資料庫資料儲存目錄MySql資料庫
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- oracle資料庫損壞的恢復過程-基於IBM伺服器儲存Oracle資料庫IBM伺服器
- greenDAO資料庫之修改儲存地址資料庫
- MySQL資料庫儲存引擎簡介MySql資料庫儲存引擎
- 《資料儲存》之《分庫,分表》
- 資料儲存--檔案儲存
- java+pgsql實現儲存圖片到資料庫,以及讀取資料庫儲存的圖片JavaSQL資料庫
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- 資料庫沒有完美的儲存引擎資料庫儲存引擎
- 實現報表資料分庫儲存
- 資料庫內部儲存結構探索資料庫
- Sqlserver資料庫儲存路徑的修改SQLServer資料庫
- 資料庫表設計之儲存引擎資料庫儲存引擎
- Ubuntu 上更改 MySQL 資料庫資料儲存目錄UbuntuMySql資料庫
- #第9篇分享:python資料儲存-MySQL資料庫PythonMySql資料庫
- 誤刪除儲存SqlServer資料庫資料恢復SQLServer資料庫資料恢復
- 資料庫mysql儲存是什麼?可以存什麼?資料庫MySql
- 大咖說|網易數帆論道 PolarDB 資料庫開源 & 儲存生態資料庫
- 資料儲存(1):從資料儲存看人類文明-資料儲存器發展歷程
- sql server資料庫如何儲存陣列,int[]float[]double[]陣列儲存到資料庫方法SQLServer資料庫陣列