Oracle SRVCTL: Management Policy vs CRSCTL: AUTO_START (in Oracle Restart)

In Oracle Restart, there are two confusing commands for setting up restart behavior: SRVCTL and CRSCTL.

SRVCTL Command

srvctl add/modify database -y {AUTOMATIC | MANUAL}

Management policy for the database. If the management policy is set to AUTOMATIC (the default), the database is automatically restored to its previous running condition (started or stopped) upon restart of the database host computer. If the management policy is set to MANUAL, the database is never automatically restarted upon restart of the database host computer. A MANUAL setting does not prevent Oracle Restart from monitoring the database while it is running and restarting it if a failure occurs.

The following link lists SRVCTL options:
https://docs.oracle.com/cd/E11882_01/server.112/e25494/restart.htm#BABHHAHI

CRSCTL Command

crsctl modify resource ora.pdb.db -attr AUTO_START=restore -unsupported

(The -unsupported syntax is needed for Oracle 12c.)

AUTO_START Indicates whether Oracle Clusterware automatically starts a resource after a cluster server restart.

Valid AUTO_START values are:

  • always: Restarts the resource when the server restarts, regardless of the state of the resource when the server stopped.
  • restore: Restores the resource to the same state that it was in when the server stopped. Oracle Clusterware attempts to restart the resource if the value of TARGET was ONLINE before the server stopped.
  • never: Oracle Clusterware never restarts the resource, regardless of the state of the resource when the server stopped.

Source: https://docs.oracle.com/cd/E11882_01/rac.112/e41959/resatt.htm#CHDFFEHJ

SRVCTL parameter for database: Management policy = AUTOMATIC is equivalent to CRSCTL parameter for resource: AUTO_START=restore

So, what happens when the database management policy is configured as AUTOMATIC, and the resource of the database parameter AUTO_START is configured as always?

Because the cluster is the first in the chain of commands, it overrides the database, and the cluster will restore its last state. For example: If we shut down the database and then reboot the operating system, the database will not automatically start.