首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

生產庫 ASM 磁碟組空間耗盡 (ORA-15041) 緊急處理與根因解決實戰

     編輯:DB2 教學

生產庫 ASM 磁碟組空間耗盡 (ORA-15041) 緊急處理與根因解決實戰

記錄一次生產環境 ASM DATA 磁碟組剩餘空間僅 238 MB,導致表空間擴容失敗 ORA-15041: DISKGROUP "DATA" space exhausted 的完整處理過程:從緊急騰空、階段性回饋,到發現未使用儲存裝置並永久擴容。

一、問題發現與初步診斷

巡檢發現照片業務表空間已滿,擴容報錯 ORA-15041。查詢 ASM 磁碟組狀態:

SQL> select group_number, name, total_mb, free_mb from v$ASM_DISKGROUP;
GROUP_NUMBER NAME   TOTAL_MB FREE_MB
------------ ----   -------- -------
1            ARCH   860159   405817
2            CRS    30717    29791
3            DATA   1638394  238      <-- 極度不足

DATA 磁碟組僅剩 238 MB(約 1.6 TB 中),兩顆 DATA 磁碟各剩 112/126 MB。

二、緊急騰空:縮減低使用率表空間

  1. 查詢表空間使用率,發現 UNDO、TEMP 及數個 GB 級表空間僅存幾 MB 資料。
  2. 依序執行 ALTER DATABASE TEMPFILE '...' RESIZE 1024M; 等縮減指令。
  3. 騰出空間後完成照片表空間擴容,業務恢復正常。

臨時方案風險:UNDO/TEMP 縮減可能影響長交易與大排序,屬權宜之計。

三、階段性回饋與後續建議

  • 已建立 10 GB 自動擴展照片表空間 photo_info47.dbf。
  • 建議:
    (1) 向儲存端申請擴容;
    (2) 暫不建議將表空間放入 ARCH 磁碟組(歸檔爆增風險)。

四、根因解決:發現並納管未使用儲存裝置

1. 確認作業系統層面有閒置裝置

[root@gzxkdb1 ~]# fdisk -l
Disk /dev/emcpoweree: 2147.4 GB, 2147483648000 bytes
... doesn't contain a valid partition table  <-- 未分區、未使用

2. 分區建立 4 個主分區(3×500GB + 剩餘)

[root@gzxkdb1 ~]# fdisk /dev/emcpoweree
Command (m for help): n → p → 1 → +500G
Command (m for help): n → p → 2 → +500G
Command (m for help): n → p → 3 → +500G
Command (m for help): n → p → 4 → (剩餘)
Command (m for help): w

3. 建立 ASM 磁碟並掃描

[root@gzxkdb1 ~]# service oracleasm createdisk DATA3 /dev/emcpoweree1
[root@gzxkdb1 ~]# service oracleasm createdisk DATA4 /dev/emcpoweree2
[root@gzxkdb1 ~]# service oracleasm createdisk DATA5 /dev/emcpoweree3
[root@gzxkdb1 ~]# service oracleasm createdisk DATA6 /dev/emcpoweree4
# 節點 2 執行 scandisks 同步磁碟清單

4. 以 SYSASM 身分線上加入磁碟組並 Rebalance

SQL> alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA3' rebalance power 10;
SQL> alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA4' rebalance power 10;
SQL> alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA5' rebalance power 10;
SQL> alter diskgroup DATA add disk '/dev/oracleasm/disks/DATA6' rebalance power 10;

監控 v$asm_operation,待 SOFAR = EST_WORK 且查無記錄表示 Rebalance 完成。

五、擴容成果驗證

ASMCMD> lsdg
State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Name
MOUNTED EXTERN N ... 1638394 49590 ... DATA/    <-- 縮減後
MOUNTED EXTERN Y ... 3686390 2097561 ... DATA/    <-- 加入 4 顆磁碟後,近 2 TB 可用

DATA 磁碟組總容量從 1.6 TB 擴充至 3.6 TB,可用空間從 < 1 GB 飆升至 2.1 TB,滿足長期業務增長。

六、關鍵經驗總結

  1. 分層處理:緊急縮減買時間 → 根因擴容解決本質。
  2. 跨層排查:資料庫層看不出 OS 層有閒置裝置,需 fdisk -l、lsblk、儲存陣列管理介面三方核對。
  3. ASM 線上擴容零停機:ADD DISK ... REBALANCE POWER 線上重平衡,業務無感知。
  4. Rebalance Power 設定:10 為較激進,生產高峰期建議 3-5,維護窗可調高。
  5. 文件化與演練:將擴容 SOP 納入運維手冊,定期演練。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved