Working with Oracle ASM and KFOD

Oracle KFOD

The kfod is another one of those great little, hidden Oracle utilities which can be useful in troubleshooting ASM issues without connecting to an ASM instance.

If you have never used it and want to give it a try, you can find it in $GRID_HOME/bin/kfod

KDOF help

Use kfod -help to list all the options, in this blog post I will cover a couple of commands which I have found useful to check ASM redundancy and disk labels.

$ kfod -help
_asm_a/llow_only_raw_disks KFOD allow only raw devices [_asm_allow_only_raw_disks=(TRUE)/FALSE]
_asm_l/ibraries ASM Libraries[_asm_libraries=lib1,lib2,...]
_asms/id ASM Instance[_asmsid=sid]
_b/oot Running in pre-install env (boot=TRUE/FALSE)
_f/lexinfo Provide flexinfo      (_flexinfo=TRUE/FALSE)
_p/atch_lib Patchlib [_patch_lib=<asmclntsh_path>]
_u/ser OS Username
asm_/diskstring ASM Diskstring [asm_diskstring=discoverystring, discoverystring ...]
asmc/ompatibility Include diskgroup ASM compatibility [asmcompatibility=TRUE/(FALSE)]
ce/ll KFOD display OSS site/rack info [cell=TRUE/(FALSE)]
cli/ent_cluster client cluster name
clus_/version cluster version
clust/er KFOD cluster [cluster=TRUE/(FALSE)]
db_/unique_name db_unique_name for ASM instance[db_unique_name=dbname]
dbc/ompatibility Include diskgroup DB compatibility [dbcompatibility=TRUE/(FALSE)]
disk_/access Disk access method [disk_access=DIRECT/(INDIRECT)]
disks Disks to discover [disks=raw,asm,badsize,all]
ds/cvgroup Include group name [dscvgroup=TRUE/(FALSE)]
f/orce Force option to delete files (force=TRUE/FALSE)
g/roup Disks in diskgroup [group=diskgroup]
h/ostlist hostlist[hostlist=host1,host2,...]
l/abel KFOD display disk labels [label=TRUE/(FALSE)]
metadata_a/usize AU Size for Metadata Size Calculation
metadata_c/lients Client Count for Metadata Size Calculation
metadata_d/isks Disk Count for Metadata Size Calculation
metadata_n/odes Node Count for Metadata Size Calculation
metadata_r/edundancy Redundancy for Metadata Size Calculation
na/me Include disk name [name=TRUE/(FALSE)]
no/hdr KFOD header suppression [nohdr=TRUE/(FALSE)]
ol/r Import credentials to OLR [olr=TRUE/(FALSE)]
op KFOD options type [OP=DISKS/CANDIDATES/MISSING/GROUPS/INSTS/VERSION/PATCHES/PATCHLVL/CLIENTS/RM/RMVERS/DFLTDSTR/GPNPDSTR/METADATA/CREDCRECLUS/GETCLSTYPE/CREDEXPORT/GETASMGUID/CREDDELCLUS/CREDVERIFY/UPGRADEVERIFY/LSCC/CREDLIST/CELLCONFIG/SETDISKACCESSMODE/SETRIMACCESSMODE/ALL]
p/file ASM parameter file [pfile=parameterfile]
r/im_disk_access Rim disk access method [rim_disk_access=DIRECT/(INDIRECT)]
sh/allow Do shallow discovery and report disk cnt [shallow=TRUE/(FALSE)]
st/atus Include disk header status [status=TRUE/(FALSE)]
v/erbose KFOD verbose [verbose=none,errors,warnings,functions,all]
w/rap wrap file for credentials

Check Oracle ASM Home

$ kfod
-------------------------------------------------------------------
ORACLE_SID ORACLE_HOME                                                          
===================================================================
      +ASM /u01/app/19.0.0/grid

Identify ASM Disks Labels

We can use kfod to easily identify ASM Disk Names, Labels and ASM Filter Driver (AFD) labeled disks.

$ kfod op=DISKS label=TRUE disks=ALL name=TRUE
------------------------------------------------------------------------------------------------
Disk       Size Path                         DiskName    Site Failgroup Disk-Label   User  Group   
================================================================================================
1:    1048576 MB /dev/oracleasm/dg_oradata10 DATA_0000      #    #     #             oracle  dba     
2:    1048576 MB /dev/oracleasm/dg_oradata7  DATA_UDEV_0000 #    #     #             oracle  dba     
3:    1048576 MB /dev/oracleasm/dg_oradata8  DATA_UDEV_0001 #    #     #             oracle  dba     
4:    1048576 MB /dev/oracleasm/dg_oradata9  DATA_UDEV_0002 #    #     #             oracle  dba     
5:   10485760 MB /dev/oracleasm/dg_orafra    FRA1           #    #     FRA1          oracle  dba     
6:    1048576 MB /dev/oracleasm/dg_oraredo   CONTROL_REDO1  #    #     CONTROL_REDO1 oracle  dba     
7:    1048576 MB AFD:DATA_AFD1               DATA_AFD1      #    #     DATA_AFD1                  
8:    1048576 MB AFD:DATA_AFD2               DATA_AFD2      #    #     DATA_AFD2                  
9:    1048576 MB AFD:DATA_AFD3               DATA_AFD3      #    #     DATA_AFD3                  
10:   1048576 MB AFD:DATA_TP1                DATA_TP1       #    #     DATA_TP1                  
11:   1048576 MB AFD:DATA_TP2                DATA_TP2       #    #     DATA_TP2                  
12:   1048576 MB AFD:DATA_TP3                DATA_TP3       #    #     DATA_TP3  

Check DiskGroup Redundancy

Below I have used kfod to check my ASM DiskGroup Redundancy, as my ASM DiskGroups are using a Pure Storage FlashArray I have set them to external (EXTERN), offloading the data protection to the All-Flash-Storage Array.

$ kfod op=groups
-------------------------------------------------------------------
Group          Size          Free Redundancy Name           
===================================================================
   1:   10485760 MB   10415296 MB     EXTERN FRA            
   2:    3145728 MB    2097028 MB     EXTERN DATA_UDEV      
   3:    3145728 MB    3145612 MB     EXTERN DATA_TP        
   4:    3145728 MB    3145612 MB     EXTERN DATA_AFD       
   5:    1048576 MB     758128 MB     EXTERN DATA           
   6:    1048576 MB    1048488 MB     EXTERN CONTROL_REDO 

In the next Blog I will look at using kfed to manage ASM meta data.

2 comments

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s