ASM REBLANCE引起的DG備庫停止同步問題ORA-16055
Automatic Storage Management(ASM) 是Oracle資料庫10g中推出的一個非常出色的新特性,它以平臺無關的方式提供了檔案系統、邏輯卷管理器以及軟體RAID等服務。其原理有點兒類似於Linux系統裡面LVM 邏輯卷, ASM Diskgroup 類似於Volume Group,由多個ASM disk構成(對應於LVM中的是 Physical Volume),而最終我們在ASM Diskgroup裡面建立的檔案則就相當於LV。ASM可以條帶化和映象磁碟,從而實現了在資料庫被載入的情況下新增或移除磁碟以及自動平衡 I/O 以刪除“熱點”,相比於傳統的檔案系統管理方式在IO效能上有較大的提高。
在介紹前我們先來說一個案例,某客戶資料庫採用了RAC + DG(主庫和備庫都使用了ASM管理方式),一次客戶反映資料庫表空間滿了,需要增加資料檔案來擴充套件,以為很簡單的一個問題,結果...加完一個8G資料檔案後 ,前臺應用可以正常繼續了,但是發現alert日誌有大量歸檔的報錯
ORA-16055: FAL request rejected
ARCH: FAL archive failed. Archiver continuing ,更奇怪的是找不到提示中的詳細跟蹤檔案,再次檢查發現原來是主庫傳遞迴檔到備庫的時候報錯了。此時檢查備庫同時發現mrp程式已經停止,以為是歸檔把asm磁碟組空間佔滿了,但是lsdg發現還剩餘100G空間(總共700多G) ,嘗試手工啟動mrp恢復程式,日誌又提示一個編號為183的資料檔案不存在(該檔案在生產庫上對應 +ASM_DATA/orcl/datafile/test10.dbf),所以無法應用歸檔,嘗試手工建立該檔案。
SQL> alter database create datafile '/oracle/app/product/db1205/dbs/UNNAMED00183' as '+ASM_DATA/orcl/datafile/ts_emr10.dbf'; alter database create datafile '/oracle/app/product/db1205/dbs/UNNAMED00183' as '+ASM_DATA/orcl/datafile/test10.dbf'
ERROR at line 1: ORA-01119: error in creating database file '+ASM_DATA/orcl/datafile/ts_emr10.dbf' ORA-17502: ksfdcre:4 Failed to create file +ASM_DATA/orcl/datafile/test10.dbf ORA-15041: diskgroup space exhausted |
前面檢查過磁碟組還有100G的剩餘容量,而這裡提示磁碟組空間耗盡,兩者之間肯定有一個是誤報,而該誤報的原因就是下面要講的ASM的reblance操作。
在詳細說明本節內容的情況下,需要普及一些小的知識點,當我們向ASM磁碟組中加入磁碟的時候,ASM會自動將磁碟組中每塊磁碟上取出部分AU(AU是最小空間分配單元,預設是1M,每個AU預設由8個128K條帶空間組成), 寫入新加入的磁碟,使所有磁碟含有資料大致相同,當我們從磁碟組中刪除磁碟時,同樣被刪除磁碟中的AU會被平均分配到其他磁碟,這個過程就叫 再平衡(rebalance)。reblance的過程是自動進行的,我們可以設定asm_power_limit引數值來調整平衡的速度。
注:當發生新增/刪除磁碟組中磁碟的操作時,ASM能夠自動平衡。對於普通的刪除操作(無force選項),被刪除的磁碟在該上資料被有效處理前並不會立刻釋放,同樣,新增磁碟時,在重分配工作完成前,該盤也不會承擔I/O負載的工作。
ASM_POWER_LIMIT :指定磁碟rebalance的程度,有0-11個級別,預設值為1,級別越高,rebalance的操作就會越快被完成(當然這也意味著reblance操作將佔用更多的資源,對資料庫的效能衝擊也越大),指定級別較低的話,雖然rebalance操作會耗時更久,但對當前系統的IO及負載影響會更少,所以該操作需要根據實際情況慎重選擇。另外,這個引數指定的只是一個預設值,在操作過程中,即可以隨便動態修改,也可以在語句級命令列時指定power,
如: ALTER DISKGROUP <group_name> REBALANCE POWER 5
ASM
磁碟的相關檢視
v$asm_disk[_stat] --
檢視磁碟及其狀態資訊
v$asm_diskgroup[_stat] --
檢視磁碟組及其狀態資訊
v$asm_operation --
檢視當前磁碟的操作資訊
v$asm_client --
檢視當前連線的客戶端例項資訊
v$asm_file --
檢視
asm
檔案的相關資訊
v$asm_template --
檢視
asm
檔案樣本的相關資訊
v$asm_alias --
檢視
asm
檔案的別名資訊
先查詢一下當前ASM磁碟的狀態
SQL> select path,total_mb,free_mb from v$asm_disk_stat; PATH TOTAL_MB FREE_MB ------------------------------ ---------- ---------- /dev/vg00/rasm_disk1 153600 20529 /dev/vg00/rasm_disk2 153600 20527 /dev/vg00/rasm_disk3 153600 20532 /dev/vg00/rasm_disk4 153600 20529 /dev/vg00/rasm_disk5 128 0 # 這個 lv 已經完全用光 /dev/vg00/rasm_disk6 102400 13830 |
從這裡可以看出,這6個ASM disk都是在OS裡面建立的lv,且/dev/vg00/rasm_disk5這個ASM disk已經完全用完,該盤只有128MB的總容量,應該屬於誤操作加入的磁碟,由於這個磁碟沒有剩餘空間,而建立資料檔案ASM又需要將資料打散到這6個ASM disk上,這就導致了明明磁碟組還有剩餘空間,而建立資料檔案卻提示磁碟組空間耗盡。
在上述的客戶案例中,因為問題出在DG備庫上,所以決定修改asm_power_limit引數後重啟ASM例項來完成reblance操作。如下
SQL> alter system set asm_power_limit=5 scope=spfile;; System altered. SQL> shutdown immediate
ASM diskgroups dismounted
SQL> startup
SQL> select * from v$asm_operation;
SQL> / no rows selected 檢查發現沒有進行 reblance 操作,繼續調整,使用最大值進行 SQL 〉 alter diskgroup ASM_DATA rebalance power 11 wait; Diskgroup altered. |
再次查詢v$asm_operation終於看到在rebalance了,按提示估計30分鐘就完了,這個提示只是預估值,實際情況一般要比這個長 ,比如我這裡大概2個多小時後才完成,此時/dev/vg00/rasm_disk5 的free_mb變為15,隱約覺得這個值還是太小,決定先再次嘗試重建183號資料檔案,10分鐘後提示完成,接著開啟mrp程式,因為該伺服器物理磁碟效能不佳,應用歸檔比較慢,2小時候,再次出現ORA-15041: diskgroup space exhausted錯誤,查詢顯示/dev/vg00/rasm_disk5這個asm磁碟再次用光,看來這個lv太小導致拖reblance操作的後腿 ,此時為了保險關掉備庫資料庫例項,然後刪除這個asm磁碟。
SQL> alter diskgroup asm_data drop disk ASM_DATA_0004
Diskgroup altered.
SQL> select path,total_mb,free_mb from v$asm_disk_stat;
PATH TOTAL_MB FREE_MB ------------------------------ ---------- ---------- /dev/vg00/rasm_disk1 153600 20556 /dev/vg00/rasm_disk2 153600 20556 /dev/vg00/rasm_disk3 153600 20558 /dev/vg00/rasm_disk4 153600 20555 /dev/vg00/rasm_disk6 102400 13704
|
經歷了4個小時自動rebalance, 128MB的磁碟被順利刪除,可以看到此時剩餘的5個asm磁碟使用率較為平均,此時再次開啟mrp恢復程式,直至追平生產庫的歸檔。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23732248/viewspace-2887203/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20221130]最佳化備庫dg遇到的問題2.txt
- DG備庫未啟動SCN 新特性引起ORA-600 2252
- dg主庫建立檔案備庫未同步解決方法
- Oracle-DG最大保護模式下,dg備庫出現問題對主庫有什麼影響?Oracle模式
- ORACLE DG之備庫角色Oracle
- [20221128]dg資料庫最佳化問題.txt資料庫
- RAC+DG(asm單例項)ASM單例
- 【DG】備庫RMAN還原方式搭建DG(不使用duplicate命令)
- 記憶體洩漏引起的 資料庫效能問題記憶體資料庫
- 由分號引起的問題
- Oracle 12C TDE問題引發DG不同步案例分析Oracle
- 【DG】Data Guard主備庫Failove切換AI
- 【DG】Data Guard主備庫Switchover切換
- ORACLE DG從庫 Rman備份恢復Oracle
- iOS 靜態庫-因為CPU架構引起的小問題iOS架構
- 【ASM】ASM啟動無法找到spfile問題原因ASM
- Oracle資料庫由dataguard備庫引起的log file sync等待Oracle資料庫
- 11g dg 備庫搭建多種方式
- DG主備日誌缺失,資料無法同步修復
- Oracle 12c的DG自動同步密碼檔案--ASM 新特性:共享密碼檔案Oracle密碼ASM
- 一個RESOURCE MANAGER引起的問題分析
- 故障分析 | show processlist 引起的效能問題
- DG備庫手動管理 新增資料檔案
- innodb 庫的備份注意點(由phpmyadmin引起的解決方案)PHP
- mybatisplus 配置引起的生產問題 no bean ‘sqlSessionFactory‘MyBatisBeanSQLSession
- [轉帖]一個NAT問題引起的思考
- 一次跨域問題引起的思考跨域
- linux sed 命令引起的^M問題解決Linux
- 多執行緒引起的效能問題分析執行緒
- Oracle資料庫備份、災備的23個常見問題Oracle資料庫
- Oracle DG備庫手動管理新增資料檔案Oracle
- 案例:DG主庫未設定force logging導致備庫壞塊
- 關於forEach同步非同步的問題非同步
- 一次inmemory丟失引起的問題分析
- 測試CMS同步問題測試CMS同步問題
- fdisk 更改分割槽容量遇到問題,還以為是oracle asm的問題OracleASM
- 解決ASM無法啟動問題ASM
- oracle RAC+DG 擴容ASM和表空間(Linux)OracleASMLinux