2026-03-12 20:23:15
This commit is contained in:
80
tpt/exadata/cellpd.sql
Normal file
80
tpt/exadata/cellpd.sql
Normal file
@@ -0,0 +1,80 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
--
|
||||
-- File name: cellpd.sql (v1.0)
|
||||
--
|
||||
-- Purpose: Report physical disk summary from V$CELL_CONFIG
|
||||
--
|
||||
-- Author: Tanel Poder (tanel@tanelpoder.com)
|
||||
--
|
||||
-- Copyright: (c) http://blog.tanelpoder.com - All rights reserved.
|
||||
--
|
||||
-- Disclaimer: This script is provided "as is", no warranties nor guarantees are
|
||||
-- made. Use at your own risk :)
|
||||
--
|
||||
-- Usage: @cellpd.sql
|
||||
--
|
||||
------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
COL cv_cellname HEAD CELLNAME FOR A20
|
||||
COL cv_cellversion HEAD CELLSRV_VERSION FOR A20
|
||||
COL cv_flashcachemode HEAD FLASH_CACHE_MODE FOR A20
|
||||
|
||||
PROMPT Show Exadata cell versions from V$CELL_CONFIG....
|
||||
|
||||
SELECT
|
||||
disktype
|
||||
, cv_cellname
|
||||
, status
|
||||
, ROUND(SUM(physicalsize/1024/1024/1024)) total_gb
|
||||
, ROUND(AVG(physicalsize/1024/1024/1024)) avg_gb
|
||||
, COUNT(*) num_disks
|
||||
, SUM(CASE WHEN predfailStatus = 'TRUE' THEN 1 END) predfail
|
||||
, SUM(CASE WHEN poorPerfStatus = 'TRUE' THEN 1 END) poorperf
|
||||
, SUM(CASE WHEN wtCachingStatus = 'TRUE' THEN 1 END) wtcacheprob
|
||||
, SUM(CASE WHEN peerFailStatus = 'TRUE' THEN 1 END) peerfail
|
||||
, SUM(CASE WHEN criticalStatus = 'TRUE' THEN 1 END) critical
|
||||
FROM (
|
||||
SELECT /*+ NO_MERGE */
|
||||
c.cellname cv_cellname
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/name/text()') AS VARCHAR2(20)) diskname
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/diskType/text()') AS VARCHAR2(20)) diskType
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/luns/text()') AS VARCHAR2(20)) luns
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/makeModel/text()') AS VARCHAR2(50)) makeModel
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/physicalFirmware/text()') AS VARCHAR2(20)) physicalFirmware
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/physicalInsertTime/text()') AS VARCHAR2(30)) physicalInsertTime
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/physicalSerial/text()') AS VARCHAR2(20)) physicalSerial
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/physicalSize/text()') AS VARCHAR2(20)) physicalSize
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/slotNumber/text()') AS VARCHAR2(30)) slotNumber
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/status/text()') AS VARCHAR2(20)) status
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/id/text()') AS VARCHAR2(20)) id
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/key_500/text()') AS VARCHAR2(20)) key_500
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/predfailStatus/text()') AS VARCHAR2(20)) predfailStatus
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/poorPerfStatus/text()') AS VARCHAR2(20)) poorPerfStatus
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/wtCachingStatus/text()') AS VARCHAR2(20)) wtCachingStatus
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/peerFailStatus/text()') AS VARCHAR2(20)) peerFailStatus
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/criticalStatus/text()') AS VARCHAR2(20)) criticalStatus
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/errCmdTimeoutCount/text()') AS VARCHAR2(20)) errCmdTimeoutCount
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/errHardReadCount/text()') AS VARCHAR2(20)) errHardReadCount
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/errHardWriteCount/text()') AS VARCHAR2(20)) errHardWriteCount
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/errMediaCount/text()') AS VARCHAR2(20)) errMediaCount
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/errOtherCount/text()') AS VARCHAR2(20)) errOtherCount
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/errSeekCount/text()') AS VARCHAR2(20)) errSeekCount
|
||||
, CAST(EXTRACTVALUE(VALUE(v), '/physicaldisk/sectorRemapCount/text()') AS VARCHAR2(20)) sectorRemapCount
|
||||
FROM
|
||||
v$cell_config c
|
||||
, TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE(c.confval), '/cli-output/physicaldisk'))) v -- gv$ isn't needed, all cells should be visible in all instances
|
||||
WHERE
|
||||
c.conftype = 'PHYSICALDISKS'
|
||||
)
|
||||
GROUP BY
|
||||
cv_cellname
|
||||
, disktype
|
||||
, status
|
||||
ORDER BY
|
||||
disktype
|
||||
, cv_cellname
|
||||
/
|
||||
|
||||
Reference in New Issue
Block a user