解決ORA-15036:disk is truncated錯誤
問題出現的版本:
10.2.0.1-11.2.0.1,在任何平臺都有可能出現。
問題描述:
這種錯誤會在單節點或者是RAC環境下出現。
在你準備mount ASM diskgruop(DG1)時,報以下錯誤:
ORA-15032: not all alterations performed
ORA-15036: disk 'ORCL:DATA10' is truncated
ORA-15036: disk 'ORCL:DATA09' is truncated
最近的操作:
在磁碟組DG1的ASM內新增了兩塊硬碟,ORCL:DATA09和ORCL:DATA10,並且在OS級別進行了resize。
原因分析:
系統管理員或者儲存管理員分配了兩塊65530MB大小的空間,提供給ASM使用,ASM管理員或者DBA根據提供的兩塊空間透過ASMLIB建立了DATA09和DATA10,並且將新建的disk加入到了DG1磁碟組內,但是後來系統管理員或者是儲存管理員又將先前的分配的大小由65530M降到了61530M,但是這次操作沒有通知ASM/DBA管理員,所以在ASM上也沒有進行ALTER DISKGROUP RESIZE DISK操作,在後來的時間內,想要將ASM磁碟進行掛載,先前的錯誤就發生了,並且ASM磁碟也不能掛載。
[@more@]解決方案:
1、首先驗證一下ASM的磁碟大小是否僅僅是和實際的磁碟大小不一致,可以使用ASM的工具KFED和OS工具fdisk:
1.1受影響的磁碟(ORCL:DATA09,ORCL:DATA10)屬於ASMLIB的磁碟:
$ ls -l /dev/oracleasm/disks
brw-rw---- 1 oracle dba 8, 2 Mar 14 11:25 DATA01
...
brw-rw---- 1 oracle dba 8, 161 Mar 14 11:25 DATA09
brw-rw---- 1 oracle dba 8, 177 Mar 14 11:25 DATA10
1.2檢查ASM disk的頭資訊:
$ kfed read /dev/oracleasm/disks/DATA09kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
kfdhdb.driver.provstr: ORCLDISKDATA09 ; 0x000: length=14
kfdhdb.dsknum: 4 ; 0x024: 0x0004
kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER
kfdhdb.dskname: DATA09 ; 0x028: length=6
kfdhdb.grpname: DG1 ; 0x048: length=3
kfdhdb.fgname: DATA09 ; 0x068: length=6
kfdhdb.capname: ; 0x088: length=0
kfdhdb.crestmp.hi: 32934511 ; 0x0a8: HOUR=0xf DAYS=0x13 MNTH=0x2 YEAR=0x7da
kfdhdb.crestmp.lo: 1158806528 ; 0x0ac: USEC=0x0 MSEC=0x7f SECS=0x11 MINS=0x11
kfdhdb.mntstmp.hi: 32934511 ; 0x0b0: HOUR=0xf DAYS=0x13 MNTH=0x2 YEAR=0x7da
kfdhdb.mntstmp.lo: 1158852608 ; 0x0b4: USEC=0x0 MSEC=0xac SECS=0x11 MINS=0x11
kfdhdb.secsize: 512 ; 0x0b8: 0x0200
kfdhdb.blksize: 4096 ; 0x0ba: 0x1000
kfdhdb.ausize: 1048576 ; 0x0bc: 0x00100000
...
以上資訊看起來時完整沒問題的,繼續檢視DATA10的。。。。
1.3 在ASM DISK的頭資訊中檢視磁碟的大小:
$ kfed read /dev/oracleasm/disks/DATA09 | egrep "dskname|dsksize"
kfdhdb.dskname: DATA09 ; 0x028: length=6
kfdhdb.dsksize: 65530 ; 0x0c4: 0x0000fffa
$ kfed read /dev/oracleasm/disks/DATA10 | egrep "dskname|dsksize"
kfdhdb.dskname: DATA10 ; 0x028: length=6
kfdhdb.dsksize: 65530 ; 0x0c4: 0x0000fffa
可以發現頭資訊中儲存的大小事65530M
1.4檢視和LUN有關聯的disk大小:
# ls -l /dev/sd* | egrep "8, 161|8, 177"
brw-rw---- 1 root disk 8, 161 Mar 14 11:25 sdk1
brw-rw---- 1 root disk 8, 177 Mar 14 11:25 sdl1
1.5在OS級別檢視磁碟的大小:
# fdisk -l /dev/sdk
Disk /dev/sdk: 68.7 GB, 68719476736 bytes
255 heads, 63 sectors/track, 8354 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdk1 1 7844 63006898+ 83 Linux
# fdisk -l /dev/sdl
Disk /dev/sdl: 68.7 GB, 68719476736 bytes
255 heads, 63 sectors/track, 8354 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdl1 1 7844 63006898+ 83 Linux
以上的資訊顯示磁碟的大小僅為61530M(/dev/sdk1 and /dev/sdl1)
2、使用KFED工具來修正ASM頭資訊中的錯誤磁碟大小:
2.1讀取ASM disk頭資訊並儲存在檔案內
$ kfed read /dev/oracleasm/disks/DATA09 > /tmp/DATA09_header.kfed
2.2 使用文字編輯器編輯/tmp/DATA09_header.kfed,編輯一下資訊:
kfdhdb.dsksize: 65530 ; 0x0c4: 0x0000fffa
to
kfdhdb.dsksize: 61530 ; 0x0c4: 0x0000f05a
儲存修改
對DATA10執行同樣的操作。
$ kfed read /dev/oracleasm/disks/DATA09 > /tmp/DATA10_header.kfed
編輯:
kfdhdb.dsksize: 65530 ; 0x0c4: 0x0000fffa
to
kfdhdb.dsksize: 61530 ; 0x0c4: 0x0000f05a
2.3更新ASM DISK的頭資訊:
$ kfed merge /dev/oracleasm/disks/DATA09 text=/tmp/DATA09_header.kfed
$ kfed merge /dev/oracleasm/disks/DATA10 text=/tmp/DATA10_header.kfed
3、重新掛載ASM的磁碟組並且更新ASM資訊
3.1以正確的許可權登入ASM例項:
$ sqlplus / as sysdba (或者 'sqlplus / as sysasm' 11.1版本中)
3.2重置磁碟的大小:
SQL> alter diskgroup DG1 resize disk DATA09 size 61530 M;
SQL> alter diskgroup DG1 resize disk DATA10 size 61530 M;
3.3重新解除安裝並掛載磁碟組以驗證問題是否得到解決
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10130206/viewspace-1041376/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 執行SQL發生錯誤!錯誤:disk I/O errorSQLError
- Ocelot錯誤解決
- 解決 Python UnicodeEncodeError 錯誤PythonUnicodeError
- dbfread報錯ValueError錯誤解決方法Error
- PBOOTCMS網站程式提示“執行SQL發生錯誤!錯誤:DISK I/O ERROR”boot網站SQLError
- PbootCMS 404 錯誤解決方法boot
- Linux下錯誤解決方案Linux
- latex 錯誤以及解決方案
- HTTP 錯誤 500.19- Internal Server Error 錯誤解決方法HTTPServerError
- steam磁碟寫入錯誤怎麼解決 steam磁碟寫入錯誤解決方法大全
- undefined reference to錯誤的解決方法Undefined
- Cocopods的升級錯誤解決
- ORA-12005 錯誤的解決
- SAXParseException的錯誤解決之二Exception
- ORA-28000錯誤解決方案
- dedecms提示500錯誤解決方法
- PHP curl error 60 錯誤解決PHPError
- linux解決“XXX is not in the sudoers file”錯誤Linux
- 解決java.lang.NoSuchMethodError錯誤JavaError
- HTTP代理錯誤怎麼解決?HTTP
- TCP網路除錯助手提示錯誤:“1035:未知錯誤” 解決方案TCP除錯
- 解決MySQL server has gone away錯誤的解決方案MySqlServerGo
- Go:錯誤 could not launch process: EOF 解決Go
- 畢設之錯誤解決辦法
- 解決 ngrok 的 Domain 錯誤問題AI
- 錯誤解決:Attempting to use uninitialized value VariableZed
- Ubuntu Cannot allocate memory 錯誤解決方案Ubuntu
- Qt報Multiple definition錯誤的解決QT
- Excel匯入null錯誤解決方式ExcelNull
- 代理508限制錯誤怎麼解決?
- Hadoop常見錯誤及解決方案Hadoop
- Idea編譯錯誤解決辦法Idea編譯
- 錯誤720寬頻連線解決辦法 寬頻連線錯誤程式碼720怎麼解決
- 請問PBOOTCMS網站程式提示“執行SQL發生錯誤!錯誤:DISK I/O ERROR”怎麼辦boot網站SQLError
- 解決ubuntu系統“XXX is not in the sudoers file”錯誤Ubuntu
- ubuntu下import matplotlib錯誤解決辦法UbuntuImport
- HTTP 錯誤 500.21 - Internal Server Error 解決方案HTTPServerError
- SyntaxError: EOL while scanning string literal錯誤解決ErrorWhile
- 解決 eslint 的 Parsing error: Unexpected token 錯誤EsLintError