Converting an ACFS General Purpose filesystem to an Oracle Home filesystem

I recently came across a scenario whereby we had created our ACFS filesystems as General Purpose filesystems using asmca, but then discovered that we needed these filesytems to be available prior to the database starting up. We needed to re-register the ACFS filesystems as Oracle Home filesystems as doing so creates a service within CRS which canthen  be configured as a dependency for the cluster database service.

One option would have been to  remove and recreate them using asmca, but while this would be simpler, it is destructive and  we would have had to backup and resotre the data to the volumes.

Our solution was to re-register the filesystems and then create a dependency with the cluster database manually using srvctl and crsctl as follows:

1. Stop the cluster database (if running).

./srvctl stop database -d mydb1_a

2. As root, determine the volume name and deregister the ACFS filesystem.  Note that this only needs to be done from a single node.

/sbin/acfsutil registry -l

Device : /dev/asm/v_goldengate-310 : Mount Point : /oracle/goldengate :
Options : none : Nodes : all : Disk Group : DBADMIN : Volume : V_goldengate

3. Using the device names reported, deregister the filesystems from the ACFS registry as follows:

/sbin/acfsutil registry -d /dev/asm/v_goldengate-310

4. Re-add the filesystem to CRS as resources using the values from above:

./srvctl add filesystem -d /dev/asm/v_goldengate-310 -g DBADMIN \
-v V_goldengate -m /oracle/goldengate -u oracle

5. Start the filesystem

./srvctl start filesystem -d /dev/asm/v_goldengate-310

6. Make the filesystems a dependency of the database:

./srvctl modify database -d mydb1_a -j /oracle/goldengate

7. Restart the database (if desired):

./srvctl start database -d mydb1_a