How To Convert A General Purpose ACFS Filesystem To CRS Managed On Release 11.2./12.1

It is not uncommon for customers to configure an ACFS filesystem as an ACFS mount registry-based general-purpose filesystem and later to decide for various reasons that it should be what is referred to as a CRS managed single filesystem resource. In general, if a database is using files stored on an ACFS file system, such as database binaries (ie., ORACLE_HOME), traces, logs, auditing files, etc., then the file system must be mounted before the database is started. The way that is accomplished is by creating a dependency relationship between the database resources and the ACFS filesystem resource. In order to do that, the ACFS file system must be managed using an ACFS file system resource, not as an entry in the ACFS mount entry.

There is a one to many relationship between the ACFS mount registry and ACFS filesystems while CRS managed single filesystem resources are a one to one relationship, that is one CRS resource per filesystem. If you list the CRS resources the resource named ora.registry.acfs is associated with the ACFS mount registry and one or more general-purpose ACFS filesystems whereas resources named similar to ora.crsdata.crsdata_db1.acfs (ie., not ora.registry.acfs) would be CRS managed single filesystem resources and the number would vary depending upon how many of those are configured. A file system managed by an ACFS file system resource should not also be listed in the ACFS mount registry.

This post provides an example to convert an ACFS mount registry-based general-purpose filesystem to an ACFS file system resource CRS managed filesystem (11.2.0.X release only).

1. To determine if an ACFS filesytem is ACFS mount registry based it should be listed in the ACFS mount registry:

$ /sbin/acfsutil registry

2. Save this output for later reference when re-creating the new ACFS single filesystem resource below using srvctl add filesystem as you’ll want to use the same volume and device, etc.

3. To convert an ACFS mount registry-based file system, first delete it from the registry. You don’t need to unmount or stop it. You must be root or asmadmin to perform this operation. This operation will not remove or otherwise disturb the files that might already be stored on that filesystem:

# acfsutil registry -d {device | mount_point}

4. Then, create a new ACFS single filesystem resource using srvctl add filesystem. You must be root or asmadmin to perform this operation. You will need to specify options:

# srvctl add filesystem -d [device] -G [disk group] -v [volume] -m [path] -u [db user]

using the same device, diskgroup, volume and path as before for the registry-based ACFS filesystem saved above.

5. Next obtain the START_DEPENDENCIES and STOP_DEPENDENCIES for each database resource that will need to be dependent on the newly created ACFS single filesystem resource. Redirect the output to a file for later reference:

# crsctl stat res [db] -p | grep START_DEPENDENCIES
# crsctl stat res [db] -p | grep STOP_DEPENDENCIES

Sample output:

START_DEPENDENCIES=hard(ora.DATA05.dg,ora.FRA05.dg,ora.DATA99.dg) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,global:ora.gns) dispersion(type:ora.database.type) pullup(ora.DATA05.dg,ora.FRA05.dg,ora.DATA99.dg)

STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA05.dg,shutdown:ora.FRA05.dg,shutdown:ora.DATA99.dg)

6. Modify the database resources using srvctl to establish the new ACFS filesystem dependency attributes:

# srvctl modify database -d [db name we want to be dependent upon the acfs filesystem] -j [list of file system paths that are additionally used for this database]

Example:

# srvctl modify database -d db1 -j /acfs1, /acfs2

Once the new dependency attributes have been added to the database resources verify them using crsctl as above. The hard start and stop dependencies on the new ACSF filesystem should be present as in the examples below.


START_DEPENDENCIES='hard(ora.DATA05.dg,ora.FRA05.dg,ora.DATA99.dg, [new ACFS file system]) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,global:ora.gns) dispersion(type:ora.database.type) pullup(ora.DATA05.dg,ora.FRA05.dg,ora.DATA99.dg)

STOP_DEPENDENCIES='hard(intermediate:ora.asm,shutdown:ora.DATA05.dg,shutdown:ora.FRA05.dg,shutdown:ora.DATA99.dg, [new acfs file system res])