As we know, in Data Guard environment we use SRVCTL utility to define services to be active in specific database role. If we want to define some service to be active when the database is in primary role we only need to create the service with SRVCTL utility and set the -role parameter to PRIMARY. Then, when the database transitions to primary database the service will be started.
But, if we want to have active service when the database is in physical standby database role we need to make additional definitions on the primary database.
In order to have active service on standby physical database the service must be also defined on the primary database regardless of whether it will be active or not on the primary database.
Standby DB:
The service payroll couldn’t be started because redo definition for the service has not been propagated to the standby database (missing information). The service can be started on the physical standby database only after the redo generated by starting of the service has been applied on the physical standby database. For that purpose, first we have to create/define the service on primary database before trying to start the service on physical standby database.
Primary DB:
Now, we can try to start the service on the standby database.
Standby DB:
Note:
You can start services on physical standby only if the standby database is opened in READ-ONLY (Active Data Guard) mode.