The views expressed on this blog are my own and do not necessarily reflect the views of Oracle

January 6, 2012

ASM file number 6


The alias directory - ASM file number 6 - provides a hierarchical  naming system for all the files in a disk group.

A system file name is created for every file and it is based on the file type, database instance and type-specific information such as tablespace name. User alias may also be created if a full path name was given when the file was created.

Alias Directory entries include the following fields:
  • Alias or directory name
  • Alias incarnation number
  • File number
  • File incarnation number
  • Parent directory
  • System flag
The ASM alias information is externalised via V$ASM_ALIAS view.

Using the alias

The following SQL statement is taken from Oracle Press book Automatic Storage Management, Under-the-Hood & Practical Deployment Guide, by Nitin Vengurlekar, Murali Vallath and Rich Long. It demonstrates how to use V$ASM_ALIAS view to generates a list of all database files managed by ASM.

The output is organised in what appears as the list of directories, followed by the list of files with their full path names. I say what appears as the list of directories as ASM does not really keep the files in a hierarchical directory style structure. The output is just formatted so that the list of files is presented in a familiar, operating system like style.

The SQL assumes that the files were created using the ASM file name conventions. In particular, it assumes that the given database name is present in the alias name (the FULL_PATH column). The FULL_PATH variable in the query refers to the alias name. The DIR column indicates if this is a 'directory' and SYS column indicates whether the alias was created by the system.

col full_path format a64
col dir format a3
col sys format a3
set pagesize 1000
set linesize 200

SQL> SELECT full_path, dir, sys
FROM (
SELECT CONCAT ('+'|| gname, sys_connect_by_path (aname,'/')) full_path, dir, sys FROM ( SELECT g.name gname, a.parent_index pindex, a.name aname, a.reference_index rindex, a.alias_directory dir, a.system_created sys FROM v$asm_alias a, v$asm_diskgroup g WHERE a.group_number = g.group_number) START WITH (mod(pindex, power(2, 24))) = 0 CONNECT BY PRIOR rindex = pindex ORDER BY dir desc, full_path asc)
WHERE full_path LIKE upper('%/br%');

FULL_PATH                                                        DIR SYS
---------------------------------------------------------------- --- ---
+DATA/BR                                                         Y   Y
+DATA/BR/CONTROLFILE                                             Y   Y
+DATA/BR/DATAFILE                                                Y   Y
+DATA/BR/ONLINELOG                                               Y   Y
+DATA/BR/PARAMETERFILE                                           Y   Y
+DATA/BR/TEMPFILE                                                Y   Y
+RECO/BR                                                         Y   Y
+RECO/BR/DATAFILE                                                Y   Y
+DATA/BR/CONTROLFILE/Current.260.769030435                       N   Y
+DATA/BR/CONTROLFILE/Current.261.769030431                       N   Y
+DATA/BR/DATAFILE/EXAMPLE.269.769030517                          N   Y
+DATA/BR/DATAFILE/NOT_IMPORTANT.273.771795255                    N   Y
+DATA/BR/DATAFILE/SYSAUX.257.769030245                           N   Y
+DATA/BR/DATAFILE/SYSTEM.256.769030243                           N   Y
+DATA/BR/DATAFILE/TRIPLE_C.272.771794469                         N   Y
+DATA/BR/DATAFILE/TRIPLE_M.271.771793293                         N   Y
+DATA/BR/DATAFILE/UNDOTBS1.258.769030245                         N   Y
+DATA/BR/DATAFILE/USERS.259.769030245                            N   Y
+DATA/BR/ONLINELOG/group_1.262.769030439                         N   Y
+DATA/BR/ONLINELOG/group_1.263.769030445                         N   Y
+DATA/BR/ONLINELOG/group_2.264.769030453                         N   Y
+DATA/BR/ONLINELOG/group_2.265.769030461                         N   Y
+DATA/BR/ONLINELOG/group_3.266.769030471                         N   Y
+DATA/BR/ONLINELOG/group_3.267.769030479                         N   Y
+DATA/BR/PARAMETERFILE/spfile.270.769030977                      N   Y
+DATA/BR/TEMPFILE/TEMP.268.769030503                             N   Y
+DATA/BR/spfileBR.ora                                            N   N
+RECO/BR/DATAFILE/T1.256.771771469                               N   Y

28 rows selected.

Conclusion

Alias directory keeps track of all aliases in an ASM disk group. That information can then be accessed via V$ASM_ALIAS view to present file names in a user friendly format.

2 comments:

  1. Thanks a lot for this query, it helped me a lot.

    Regards
    Edgar Rangel

    ReplyDelete
    Replies
    1. Thank you for taking the time to say few nice words. Credit of course goes to authors of Automatic Storage Management, Under-the-Hood & Practical Deployment Guide book.
      Cheers,
      Bane

      Delete