ASM Queries

select group_number DG#, name, state, type, round(total_mb/1024) TOT_GB, round(free_mb/1024) Free_GB ,ROUND((1- (free_mb / total_mb))*100, 2) pct_used from v$asm_diskgroup;

col path for a40

select group_number,disk_number,header_status,name,substr(path,1,20) "path" ,round(total_mb/1024) TOT_GB,round(free_mb/1024) Free_GB,state,mode_status,mount_status from v$asm_disk;

select name,redundancy,failgroup,path from v$asm_disk where group_number=2;

select instance_name,db_name,status from v$asm_client;

select group_number,file_number,bytes,space,type,redundancy,striped from v$asm_file;

break on group_number skip 1

select group_number,name,redundancy,failgroup,path from v$asm_disk group by group_number,name,redundancy,failgroup,path order by group_number;

select group_number,disk_number
name,redundancy,failgroup,path,header_status,state,mode_status,mount_status
 from v$asm_disk group by group_number,disk_number,name,redundancy,failgroup,path,header_status,state,mode_status,mount_status
 order by group_number;



select * from (
SELECT
    CONCAT('+' || db_files.disk_group_name, SYS_CONNECT_BY_PATH(db_files.alias_name, '/')) full_path
  , db_files.bytes
  , db_files.space
  , NVL(db_files.type, '<DIRECTORY>')  type
  --, db_files.creation_date
  , db_files.disk_group_name
  , LPAD(db_files.system_created, 4) system_created
FROM
    ( SELECT
 g.name               disk_group_name
, a.parent_index       pindex
, a.name       alias_name
, a.reference_index    rindex
, a.system_created     system_created
, f.bytes      bytes
, f.space      space
, f.type       type
, TO_CHAR(f.creation_date, 'DD-MON-YYYY HH24:MI:SS')  creation_date
      FROM
  v$asm_file f RIGHT OUTER JOIN v$asm_alias     a USING (group_number, file_number)
   JOIN v$asm_diskgroup g USING (group_number)
    ) db_files
WHERE db_files.type IS NOT NULL
START WITH (MOD(db_files.pindex, POWER(2, 24))) = 0
    CONNECT BY PRIOR db_files.rindex = db_files.pindex ) x
where x.type = '&ftype'
and x.full_path like '%&dbname%';

With oracleasm , find which disk is mapped to which device 


Method 1 :

$ oracleasm listdisks
ASMDISK01
ASMDISK02
ASMDISK03
ASMDISK04
ASMDISK05

$ oracleasm querydisk -d ASMDISK01
Disk "ASMDISK01"  Is a valid ASM disk On device[8,17]

$ ls -l /dev/* | grep 8, | grep 17
brw-rw----  1 root disk  8,  17 Apr 16 15:27

ASMDISK01 is mapped to /dev/sdb1


Method 2 :


ls -ls /dev/oracleasm/disks/ASMDISK*

0 brw-rw—- 1 grid asmadmin 8, 17 Apr 12 18:43 /dev/oracleasm/disks/ASMDISK01
0 brw-rw—- 1 grid asmadmin 8, 18 Apr 12 18:43 /dev/oracleasm/disks/ASMDISK02

# cat /proc/partitions

and check device major with 8, and minor 17


Method 3 :

for i in `ls -l /dev/oracleasm/disks | grep oracle | awk '{print $NF","substr($5,1,length($5)-1)","$6}'`
do
        ASM_DEVICE_NAME=`echo $i|awk '{print $1}' FS=","`
        MAJOR_NUMBER=`echo $i|awk '{print $2}' FS=","`
        MINOR_NUMBER=`echo $i|awk '{print $3}' FS=","`
        HOST_DEVICE=`ls -l /dev/ | grep " "${MAJOR_NUMBER}", *"${MINOR_NUMBER}" " | awk '{print $NF}'`
        echo $HOSTNAME"|"$ASM_DEVICE_NAME"|/dev/"$HOST_DEVICE

done