Your Data Guard environment has two remote physical standby databases.
Client applications use the local naming method to connect to the primary database instance.
You want applications to automatically connect to the new primary database instance in case of a switchover or
a failover.
Which will fulfill this requirement?
A.
Create a database service on each standby database that is started automatically by a trigger, when the
database role is PRIMARY; modify the connection descriptors used by client applications to include all the
standby hosts and connect to the database instance using that service name.
B.
Create a database service on the primary database that is started automatically by a trigger, when the
database role is PRIMARY; modify the connection descriptors used by client applications to include all the
standby hosts and connect to the database instance using that service name.
C.
Set the INSTANCE_NAME parameter identically on all databases; modify the connection descriptor on
client applications to include all the standby hosts and connect to the database instance using that service
name.
D.
Set the DB_NAME and DB_UNIQUE_NAME identically on all databases; modify the connection descriptors
on client applications to include all the standby hosts and connect to the database instance using that
service name.
Explanation:
http://docs.oracle.com/cd/B19306_01/server.102/b14239/scenarios.htm#i1054744
Seems the answer is B not A.
Note that both the standby databases are Physical standby which means you cannot create the service on standby using DBMS_SERVICE. Also you cannot create a trigger on the standby even if it has real-time query enabled.
In this case, only way you can create the service is using DBMS_SERVICE on the Primary and will be propagated to Physical Standby. Same way Trigger must be created on the Primary and will be propagated to Standby. You are actually defining databases service for each standby from Primary.
So I believe B is correct.
If it says “Define a database service for each standby” instead of “Create a database service on each standby database” then A is correct.
A is possible in RAC using SRVCTL and call it thru broker. Here no mention of RAC or Broker…
Explanation:
http://www.oracle.com/technetwork/database/availability/client-failover-2280805.pdf
Local naming method uses tnsnames.ora
* Databases services are registered with the listener.
* Clients connect to the database services instead of database instances.
* Listeners use registration details to determine which instances support particular service.
* Listener then directs connections to correct instances.
The DBMS_SERVICE.CREATE_SERVICE will fail to execute on a physical standby database even if it is open read-only. The service must be created on the primary and be allowed to propagate to the physical standby. In addition, create a service for logical standby databases in your configuration.
Note: CREATE TRIGGER command needs to be run only on the primary database. It will be replicated to all standby databases.
True : B
B