If you use ASM on a regular basis, you may find that knowledge of the internals can be very useful for advanced troubleshooting and in general to acquire familiarity with the technology. In particular this is even more relevant when using ASM capabilities for data redundancy/mirroring (i.e. when deploying disk groups with normal or high redundancy).
I have first started investigating this topic when deploying 10g RAC databases in 2005. From time to time I review this research, typically as new versions of Oracle come out. I have recently gone through my research material on ASM when preparing a presentation for Enkitec E4 2014. Here are three links to documents that I have authored on the subject and recently updated:
- ASM Metadata and Internals: this includes details on how to read the file extent pointer and data allocation tables (X$KFFXP and X$KFDAT), some pointers on ASM hidden files and on the undocumented package DBMS_DISKGROUP.
- ASM Support and Diagnostic Utilities: examples on how to use the ASM diagnostic utilities amdu and kfed
- My presentation at Enkitec E4 2014.
Two additional great sources of information on ASM internals are:
- http://asmsupportguy.blogspot.com by Bane Radulovic
- Oracle Automatic Storage Management, Oracle Press Nov 2007, N. Vengurlekar, M. Vallath, R.Long. (This book does not cover the changes appeared in the most recent versions of Oracle).