遇到ASM的兩個BUG
最近在ASM上遇到幾個BUG,這裡簡單記錄下來。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
BUG 1:V$ASM_DISK和V$ASM_DISKGROUP顯示的剩餘空間不一致。
--database 例項
SQL> select total_mb,free_mb from v$asm_diskgroup;
TOTAL_MB FREE_MB
---------- ----------
307201 100536
SQL> select total_mb,free_mb from v$asm_disk;
TOTAL_MB FREE_MB
---------- ----------
102399 0
204802 0
這個可能oracle認為不算bug,因為在asm例項查是沒有問題的:
--ASM 例項
SQL> select free_mb,total_mb from v$asm_diskgroup;
FREE_MB TOTAL_MB
---------- ----------
98419 307201
SQL> select free_mb,total_mb from v$asm_disk;
FREE_MB TOTAL_MB
---------- ----------
0 500
0 500
16905 102399
81514 204802
在這裡的查詢結果看,還是正確的。
oracle文件沒有明確說明在database例項查詢時結果是不一致的(很多asm檢視在資料庫例項是沒有結果的,但文件都有說明),因此這裡也把它歸結為BUG吧。
BUG 2:ORA-15041: diskgroup space exhausted
完整的報警資訊如下:
Fri Oct 19 23:52:00 2007
Errors in file /oracle/app/admin/pre/bdump/prerac1_arc1_3549.trc:
ORA-19504: failed to create file "+DATA/archivelog/1_84_634432026.dbf"
ORA-17502: ksfdcre:4 Failed to create file +DATA/archivelog/1_84_634432026.dbf
ORA-15041: diskgroup space exhausted
嘗試手工歸檔失敗:
SQL> alter system archive log current;
alter system archive log current
ORA-16038: log 4 sequence# 84 cannot be archived
ORA-19504: failed to create file ""
ORA-00312: online log 4 thread 1: '+DATA/onlinelog/redo1_4_1.log'
ORA-00312: online log 4 thread 1: '+DATA/onlinelog/redo1_4_2.log'
這個問題之前遇到過,但沒有深究,當時刪除了一些歸檔釋放部分空間後,重啟例項就在表面上解決問題了,但今天發現問題沒有這麼簡單,因為從查詢結果看,空間還是足夠的:
這是asmcmd的檢視結果:
ASMCMD> lsdg
State Type Rebal Unbal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name
MOUNTED EXTERN N N 512 4096 1048576 307201 100552 0 100552 0 DATA/
這是從檢視檢視的結果:
SQL> select total_mb,free_mb from v$asm_diskgroup;
TOTAL_MB FREE_MB
---------- ----------
307201 100536
從兩個查詢結果看都有100多G的空間空間,但是在歸檔500多M的日誌的時候仍然會包空間不足。
上metalink查了一下,發現這又是一個bug:DISKGROUP組內的disk使用不能自動均衡,導致其中一個磁碟空間爆滿,不能建立新檔案。
原因是ASM會嘗試把資料分佈在所有的磁碟中,如果其中一個disk滿了,即使其實的磁碟有足夠的空閒空間也不能建立新檔案了。
觸發這個BUG的條件有兩個:
1、diskgroup只有2塊磁碟
2、兩個磁碟的尺寸不一致。
很不幸,我的環境完全滿足這兩個條件。這個bug在11g會被修正,目前對於這個問題,oracle提供了一個解決方法:REBALANCE磁碟組。
要注意,重平衡磁碟組要把ASM磁碟組的資料重新分配空間,這個工作非常耗費資源,在正式環境不要輕易執行這個命令:
SQL> ALTER DISKGROUP DATA REBALANCE POWER 11;
Diskgroup altered.
其中11可以替換為1-11之間的任意整數,數值越大,重組越徹底,耗費時間就越長。
發出這個命令後,在ASM例項查詢v$asm_operation來看ASM重組的進度:
SQL> select * from v$asm_operation;
GROUP_NUMBER OPERATION STATE POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES
------------ ---------- -------- ---------- ---------- ---------- ---------- ---------- -----------
1 REBAL RUN 11 11 4395 36847 771 42
SQL> /
GROUP_NUMBER OPERATION STATE POWER ACTUAL SOFAR EST_WORK EST_RATE EST_MINUTES
------------ ---------- -------- ---------- ---------- ---------- ---------- ---------- -----------
1 REBAL RUN 11 11 8132 47805 790 50
REBAL是REBALANCE的所寫。
再檢視V$ASM_DISK的情況:
SQL> select free_mb,total_mb from v$asm_disk;
FREE_MB TOTAL_MB
---------- ----------
0 500
0 500
16905 102399
81514 204802
隔一段時間後再次查詢:
SQL> /
FREE_MB TOTAL_MB
---------- ----------
0 500
0 500
17308 102399
81111 204802
可見,ASM磁碟組中的磁碟的使用率正在變化。
此時在database例項中嘗試歸檔:
SQL> alter system archive log current;
System altered
可以成功歸檔。這個命令執行起來可能有點慢,因為ASM資料重組程式與歸檔程式在空間使用上衝突,ASM重組程式會阻塞歸檔程式,直到歸檔需要的空間重組完成。
至此,這個bug得到暫時解決。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63870/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [BUG反饋]兩個關於釋出文章的BUG
- React兩個bug踩坑React
- 【譯】Ringbahn的兩個記憶體Bug記憶體
- 分享2個近期遇到的MySQL資料庫的BUG案例MySql資料庫
- 使用imp/exp遇到兩個問題
- 記錄後臺遇到的兩個小問題
- 分析表時遇到BUG
- 「前端 BUG 錄」遇到BUG應該如何排查前端
- #兩年移動端踩坑,遇到的那些不得不說的bug及修復
- Oracle RAC ASM磁碟組擴容時遇到的VIP漂移OracleASM
- Go 1.13版本引入的bug,你遇到過這個坑麼?Go
- .net打獨立執行環境遇到無法trim遇到的bug
- hive-3.0.0 版本中遇到的bug 彙總Hive
- 在專案中遇到的一些bug
- Spring Boot 中的同一個 Bug,竟然把我坑了兩次!Spring Boot
- 遇到bug不要慌,都是小場面。
- 進擊的Bug---那些年我遇到的大坑3
- workman分散式部署遇到的bug以及修復方式分散式
- 點選label執行兩次的bug
- 遇到生產bug時,你會慌嘛?
- 一個奇怪的 Bug
- TestHome 的一個 Bug
- Snakeyaml的一個bugYAML
- oracle的一個bugOracle
- [BUG反饋]AdminController類的一個小bugController
- fdisk 更改分割槽容量遇到問題,還以為是oracle asm的問題OracleASM
- 上手 WebRTC DTLS 遇到很多 BUG?淺談 DTLS FragmentWebTLSFragment
- 使用CoordinatorLayout過程中遇到的兩個問題以及淺析CoordinatorLayout工作機制
- 近期使用10G時遇到的兩個問題:Memory Notification和ORA-3136
- [BUG反饋]當新增兩個,或兩個以上富文字時其中一個富文字框的內容無法正常儲存到資料庫資料庫
- 說說你遇到過最大的bug是什麼?怎麼解決的?
- 發現Mapstruct的一個bugStruct
- 一個排序引發的BUG排序
- 開發中遇到的bug-Cannot set property ‘__VUE_DEVTOOLS_UID__‘ of nullVuedevUINull
- 更新macOS Monterey後遇到的各種Bug問題及解決方法Mac
- [BUG反饋]許可權條目中缺少兩個公開方法的許可權設定
- 一個詭異的MySQL查詢超時問題,居然隱藏著存在了兩年的BUGMySql
- 開發中遇到的bug-Property or method “xxxx“ is not defined on the instance but referenced during render.