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).