Files
oracle/vg/exa_check.sql

357 lines
17 KiB
MySQL
Raw Normal View History

2026-03-12 21:23:47 +01:00
@@header
/*
*
* Author : Vishal Gupta
* Purpose : Display Exadata Errors
*
* Revision History:
* ===================
* Date Author Description
* --------- ------------ -----------------------------------------
* 20-Feb-13 Vishal Gupta Created
*
*/
PROMPT
PROMPT **************************************************
PROMPT * E X A D A T A C E L L S T A T U S
PROMPT **************************************************
COLUMN cell_path HEADING "CellPath" FORMAT a15
COLUMN cellname HEADING "CellName" FORMAT a18
COLUMN upTime HEADING "UpTime" FORMAT a15
COLUMN status HEADING "Status" FORMAT a7
COLUMN fanStatus HEADING "Fan|Status" FORMAT a6
COLUMN powerStatus HEADING "Power|Status" FORMAT a6
COLUMN temperatureReading HEADING "Temp|(C)" FORMAT a6
COLUMN temperatureStatus HEADING "Temp|Status" FORMAT a6
COLUMN locatorLEDStatus HEADING "Locator|LED" FORMAT a7
COLUMN offloadEfficiency HEADING "OffLoad|Efficiency" FORMAT 99999.99
COLUMN iormBoost HEADING "IORM|Boost" FORMAT 99999.99
SELECT *
FROM
(
SELECT MAX(DECODE(cc.conftype,'CELL',EXTRACTVALUE(XMLTYPE(confval),'/cli-output/cell/name') ,NULL)) cellname
--, cc.cellname cell_path
, LPAD(MAX(DECODE(cc.conftype,'CELL',EXTRACTVALUE(XMLTYPE(confval),'/cli-output/cell/upTime') ,NULL)),15) upTime
, MAX(DECODE(cc.conftype,'CELL',EXTRACTVALUE(XMLTYPE(confval),'/cli-output/cell/status') ,NULL)) status
, MAX(DECODE(cc.conftype,'CELL',EXTRACTVALUE(XMLTYPE(confval),'/cli-output/cell/fanStatus') ,NULL)) fanStatus
, MAX(DECODE(cc.conftype,'CELL',EXTRACTVALUE(XMLTYPE(confval),'/cli-output/cell/powerStatus') ,NULL)) powerStatus
, MAX(DECODE(cc.conftype,'CELL',EXTRACTVALUE(XMLTYPE(confval),'/cli-output/cell/temperatureStatus') ,NULL)) temperatureStatus
, MAX(DECODE(cc.conftype,'CELL',EXTRACTVALUE(XMLTYPE(confval),'/cli-output/cell/temperatureReading') ,NULL)) temperatureReading
, MAX(DECODE(cc.conftype,'CELL',EXTRACTVALUE(XMLTYPE(confval),'/cli-output/cell/locatorLEDStatus') ,NULL)) locatorLEDStatus
FROM v$cell_config cc
WHERE cc.conftype = 'CELL'
GROUP BY cc.cellname
)
WHERE ( status <> 'online'
OR fanStatus <> 'normal'
OR powerStatus <> 'normal'
OR temperatureStatus <> 'normal'
OR locatorLEDStatus <> 'off'
OR TO_NUMBER(temperatureReading) > 29
)
ORDER BY cellname
;
PROMPT
PROMPT ****************************************************
PROMPT * E X A D A T A P H Y S I C A L D I S K S
PROMPT ****************************************************
COLUMN cellname HEADING "CellName" FORMAT a10
COLUMN diskType HEADING "Disk|Type" FORMAT a10
COLUMN name HEADING "PhyDisk|Name" FORMAT a10
COLUMN status HEADING "Status" FORMAT a8
COLUMN physicalSize HEADING "Size|(GB)" FORMAT 999,999
COLUMN errMediaCount HEADING "Media|Error|Count" FORMAT 9999999
COLUMN errOtherCount HEADING "Other|Error|Count" FORMAT 9999999
COLUMN foreignState HEADING "Foreign|State" FORMAT a5
COLUMN physicalFirmware HEADING "Firm|Ware" FORMAT a6
COLUMN physicalInsertTime HEADING "InsertTime" FORMAT a10 TRUNC
COLUMN physicalInterface HEADING "Interface" FORMAT a10
COLUMN predfailStatus HEADING "Pred|Fail|Status" FORMAT a5
COLUMN poorPerfStatus HEADING "Poor|Perf|Status" FORMAT a5
COLUMN wtCachingStatus HEADING "Write|Through|Caching|Status" FORMAT a5
COLUMN peerFailStatus HEADING "Peer|Fail|Status" FORMAT a5
COLUMN criticalStatus HEADING "Critical|Status" FORMAT a5
COLUMN physicalDatedSerial HEADING "Physical|Dated|Serial" FORMAT a12
BREAK ON REPORT
COMPUTE SUM LABEL 'Total' OF physicalSize FORMAT 99,999,999,999 ON REPORT
SELECT clioutput.cellname
, pd.diskType
, pd.name
, pd.status
, pd.errMediaCount
, pd.errOtherCount
, pd.foreignState
, pd.predfailStatus
, pd.poorPerfStatus
, pd.wtCachingStatus
, pd.peerFailStatus
, pd.criticalStatus
, pd.physicalDatedSerial
FROM v$cell_config cc
, XMLTable('/cli-output' PASSING XMLTYPE(confval)
COLUMNS
cellname VARCHAR2(100) PATH 'context/@cell'
, physicaldisk XMLTYPE PATH 'physicaldisk'
) clioutput
, XMLTable('/physicaldisk' PASSING clioutput.physicaldisk
COLUMNS
NAME VARCHAR2(100) PATH 'name'
, deviceId VARCHAR2(100) PATH 'deviceId'
, diskType VARCHAR2(100) PATH 'diskType'
, devicePartition VARCHAR2(100) PATH 'devicePartition'
, enclosureDeviceId VARCHAR2(100) PATH 'enclosureDeviceId'
, errMediaCount INTEGER PATH 'errMediaCount'
, errOtherCount INTEGER PATH 'errOtherCount'
, foreignState VARCHAR2(100) PATH 'foreignState'
, luns VARCHAR2(100) PATH 'luns'
, makeModel VARCHAR2(100) PATH 'makeModel'
, physicalFirmware VARCHAR2(100) PATH 'physicalFirmware'
, physicalInsertTime VARCHAR2(100) PATH 'physicalInsertTime'
, physicalInterface VARCHAR2(100) PATH 'physicalInterface'
, physicalSerial VARCHAR2(100) PATH 'physicalSerial'
, physicalSize INTEGER PATH 'physicalSize'
, slotNumber VARCHAR2(100) PATH 'slotNumber'
, status VARCHAR2(100) PATH 'status'
, id VARCHAR2(100) PATH 'id'
, key_500 VARCHAR2(100) PATH 'key_500'
, predfailStatus VARCHAR2(100) PATH 'predfailStatus'
, poorPerfStatus VARCHAR2(100) PATH 'poorPerfStatus'
, wtCachingStatus VARCHAR2(100) PATH 'wtCachingStatus'
, peerFailStatus VARCHAR2(100) PATH 'peerFailStatus'
, criticalStatus VARCHAR2(100) PATH 'criticalStatus'
, physicalDatedSerial VARCHAR2(100) PATH 'physicalDatedSerial'
) pd
WHERE cc.conftype = 'PHYSICALDISKS'
AND ( pd.status <> 'normal'
OR pd.errMediaCount > 0
OR pd.errOtherCount > 0
OR pd.foreignState <> 'false'
OR pd.predfailStatus <> 'FALSE'
OR pd.poorPerfStatus <> 'FALSE'
OR pd.wtCachingStatus <> 'FALSE'
OR pd.peerFailStatus <> 'FALSE'
OR pd.criticalStatus <> 'FALSE'
)
ORDER BY clioutput.cellname
, pd.diskType
, pd.name
;
PROMPT
PROMPT **************************************************
PROMPT * E X A D A T A L U N S
PROMPT **************************************************
COLUMN cellname HEADING "CellName" FORMAT a10
COLUMN diskType HEADING "Disk|Type" FORMAT a10
COLUMN name HEADING "LUN|Name" FORMAT a5
COLUMN status HEADING "Status" FORMAT a8
COLUMN lunSize HEADING "Size|(GB)" FORMAT 999,999
COLUMN cellDisk HEADING "CellDisk|Name" FORMAT a15
COLUMN deviceName HEADING "deviceName" FORMAT a10
COLUMN id HEADING "id" FORMAT a10
COLUMN isSystemLun HEADING "isSystemLun" FORMAT a5
COLUMN lunAutoCreate HEADING "lunAutoCreate" FORMAT a6
COLUMN lunUID HEADING "lunUID" FORMAT a6
COLUMN physicalDrives HEADING "physicalDrives" FORMAT a10
COLUMN raidLevel HEADING "Raid|Level" FORMAT a6
COLUMN lunWriteCacheMode HEADING "lunWriteCacheMode" FORMAT a61
SELECT clioutput.cellname
, lun.diskType
, lun.name
, lun.status
, ROUND(lun.lunSize/power(1000,3)) lunSize
, lun.cellDisk
, lun.deviceName
, lun.id
, lun.isSystemLun
, lun.lunAutoCreate
, lun.lunUID
, lun.physicalDrives
, lun.raidLevel
, lun.lunWriteCacheMode
FROM v$cell_config cc
, XMLTable('/cli-output' PASSING XMLTYPE(confval)
COLUMNS
cellname VARCHAR2(100) PATH 'context/@cell'
, lun XMLTYPE PATH 'lun'
) clioutput
, XMLTable('/lun' PASSING clioutput.lun
COLUMNS
name VARCHAR2(100) PATH 'name'
, cellDisk VARCHAR2(100) PATH 'cellDisk'
, deviceName VARCHAR2(100) PATH 'deviceName'
, diskType VARCHAR2(100) PATH 'diskType'
, id VARCHAR2(100) PATH 'id'
, isSystemLun VARCHAR2(100) PATH 'isSystemLun'
, lunAutoCreate VARCHAR2(100) PATH 'lunAutoCreate'
, lunSize NUMBER PATH 'lunSize'
, lunUID VARCHAR2(100) PATH 'lunUID'
, physicalDrives VARCHAR2(100) PATH 'physicalDrives'
, raidLevel VARCHAR2(100) PATH 'raidLevel'
, lunWriteCacheMode VARCHAR2(100) PATH 'lunWriteCacheMode'
, status VARCHAR2(100) PATH 'status'
) lun
WHERE cc.conftype = 'LUNS'
AND ( lun.status <> 'normal'
OR (lun.diskType = 'HardDisk' AND lun.lunWriteCacheMode NOT LIKE '%WriteBack%')
)
ORDER BY clioutput.cellname
, lun.diskType
, lun.name
;
PROMPT
PROMPT ********************************************
PROMPT * E X A D A T A C E L L D I S K S
PROMPT ********************************************
COLUMN cellname HEADING "CellName" FORMAT a10
COLUMN cellDiskName HEADING "CellDiskName" FORMAT a16
COLUMN status HEADING "Status" FORMAT a11
COLUMN creationTime HEADING "CreationTime" FORMAT a25
COLUMN deviceName HEADING "Device|Name" FORMAT a10
COLUMN devicePartition HEADING "Device|Partition" FORMAT a10
COLUMN diskType HEADING "DiskType" FORMAT a10
COLUMN celdisksize HEADING "Size|(GB)" FORMAT 999,999
COLUMN freeSpace HEADING "Free|Space|(MB)" FORMAT 9,999,999
COLUMN id HEADING "id" FORMAT a40
COLUMN errorCount HEADING "Error|(#)" FORMAT 99999
COLUMN interleaving HEADING "Inter|Leaving" FORMAT a8
COLUMN lun HEADING "Lun" FORMAT a5
COLUMN physicalDisk HEADING "Physical|Disk" FORMAT a15
COLUMN raidLevel HEADING "Raid|Level" FORMAT a5
SELECT clioutput.cellname
, celldisk.diskType
, celldisk.name cellDiskName
, celldisk.status
, celldisk.creationTime
, celldisk.celdisksize/power(1024,3) celdisksize
, celldisk.freeSpace/power(1024,2) freeSpace
, celldisk.deviceName
, celldisk.devicePartition
, celldisk.errorCount errorCount
, celldisk.interleaving
, celldisk.lun
, celldisk.physicalDisk
, celldisk.raidLevel
FROM v$cell_config cc
, XMLTable('/cli-output' PASSING XMLTYPE(confval)
COLUMNS
cellname VARCHAR2(100) PATH 'context/@cell'
, celldisk XMLTYPE PATH 'celldisk'
) clioutput
, XMLTable('/celldisk' PASSING clioutput.celldisk
COLUMNS
NAME VARCHAR2(100) PATH 'name'
, creationTime VARCHAR2(100) PATH 'creationTime'
, deviceName VARCHAR2(100) PATH 'deviceName'
, devicePartition VARCHAR2(100) PATH 'devicePartition'
, diskType VARCHAR2(100) PATH 'diskType'
, errorCount NUMBER PATH 'errorCount'
, freeSpace NUMBER PATH 'freeSpace'
, interleaving VARCHAR2(100) PATH 'interleaving'
, lun VARCHAR2(100) PATH 'lun'
, physicalDisk VARCHAR2(100) PATH 'physicalDisk'
, celdisksize NUMBER PATH 'size'
, raidLevel VARCHAR2(100) PATH 'raidLevel'
, status VARCHAR2(100) PATH 'status'
) celldisk
WHERE cc.conftype = 'CELLDISKS'
AND ( status <> 'normal'
OR errorCount > 0
OR freeSpace > 0
)
ORDER BY cellname
, DiskType
, cellDiskName
;
PROMPT
PROMPT **************************************************
PROMPT * E X A D A T A G R I D D I S K S
PROMPT **************************************************
COLUMN cellname HEADING "CellName" FORMAT a10
COLUMN name HEADING "GridDiskName" FORMAT a25
COLUMN status HEADING "Status" FORMAT a11
COLUMN creationTime HEADING "Creation|Time" FORMAT a10 TRUNC
COLUMN diskType HEADING "DiskType" FORMAT a10
COLUMN asmDiskgroupName HEADING "ASM|Diskgroup|Name" FORMAT a10
COLUMN asmDiskName HEADING "asmDiskName" FORMAT a25
COLUMN asmDiskgroupName HEADING "asmDiskgroupName" FORMAT a10
COLUMN asmFailGroupName HEADING "asmFailGroupName" FORMAT a10
COLUMN availableTo HEADING "Available|To" FORMAT a10
COLUMN cachingPolicy HEADING "Caching|Policy" FORMAT a10
COLUMN offset HEADING "offset|(GB)" FORMAT 999,999
COLUMN griddisksize HEADING "Size|(GB)" FORMAT 999,999
COLUMN errorCount HEADING "Error|(#)" FORMAT 99999
SELECT clioutput.cellname
, griddisk.diskType
, griddisk.name
, griddisk.status
, griddisk.asmDiskgroupName
, griddisk.asmDiskName
, griddisk.asmFailGroupName
, griddisk.availableTo
, griddisk.cachingPolicy
, griddisk.creationTime
, griddisk.errorCount
, griddisk.offset/power(1024,3) offset
, griddisk.griddisksize/power(1024,3) griddisksize
FROM v$cell_config cc
, XMLTable('/cli-output' PASSING XMLTYPE(confval)
COLUMNS
cellname VARCHAR2(100) PATH 'context/@cell'
, griddisk XMLTYPE PATH 'griddisk'
) clioutput
, XMLTable('/griddisk' PASSING clioutput.griddisk
COLUMNS
name VARCHAR2(100) PATH 'name'
, asmDiskgroupName VARCHAR2(100) PATH 'asmDiskgroupName'
, asmDiskName VARCHAR2(100) PATH 'asmDiskName'
, asmFailGroupName VARCHAR2(100) PATH 'asmFailGroupName'
, availableTo VARCHAR2(100) PATH 'availableTo'
, cachingPolicy VARCHAR2(100) PATH 'cachingPolicy'
, creationTime VARCHAR2(100) PATH 'creationTime'
, diskType VARCHAR2(100) PATH 'diskType'
, errorCount NUMBER PATH 'errorCount'
, offset NUMBER PATH 'offset'
, griddisksize NUMBER PATH 'size'
, status VARCHAR2(100) PATH 'status'
) griddisk
WHERE cc.conftype = 'GRIDDISKS'
AND ( griddisk.status <> 'active'
)
ORDER BY clioutput.cellname
, griddisk.diskType
, offset
, griddisk.name
;
@@footer