I got ” CRS-2632: There are no more servers to try to place resource ‘ora.gns’ on that would satisfy its placement policy ” error in Oracle database.
CRS-2632: There are no more servers to try to place resource ‘ora.gns’ on that would satisfy its placement policy
Details of error are as follows.
$ srvctl start service -d standby_db -s standby_service PRCD-1084 : Failed to start service standby_service PRCR-1079 : Failed to start resource standby_service CRS-5017: The resource action "standby_service start" encountered the following error: CRS-2632: There are no more servers to try to place resource 'ora.gns' on that would satisfy its placement policy ORA-16000: database open for read-only access ORA-06512: at "SYS.DBMS_SERVICE", line 433 ORA-06512: at "SYS.DBMS_SERVICE", line 304 ORA-06512: at line 1eri Verified that the service is for the standby. Verified that the database is in the standby role.
There are no more servers to try to place resource ‘ora.gns’ on that would satisfy its placement policy
This CRS-2632 error is related with the service which was configured on the standby side with a different attribute
First, PRIMARY where the service is currently running:
$ srvctl config service -d primary -s primary_service TAF failover delay: 0 Connection Load Balancing Goal: SHORT Runtime Load Balancing Goal: SERVICE_TIME <<== HERE
On the Standby side
$ srvctl config service -d standby_db -s standby_service TAF failover delay: 0 Connection Load Balancing Goal: SHORT Runtime Load Balancing Goal: THROUGHPUT <<== HERE TAF policy specification: NONE
To solve this error, Modify Runtime Load Balancing Goal from THROUGHPUT to SERVICE_TIME on the standby like a primary_service via srvctl modify service command
$ srvctl modify service -db standby_db -service standby_service -rlbgoal SERVICE_TIME
Second case is as follows.
srvctl start service -s SERVICENAME-d DATABASENAME
PRCD-1133 : failed to start services SERVICENAME for database DATABASENAME PRCR-1095 : Failed to start resources using filter ((NAME == ora.DATABASENAME.SERVICENAME.svc) AND (TYPE == ora.service.type)) CRS-2674: Start of 'ora.DATABASENAME.SERVICENAME.svc' on 'NODENAME' failed CRS-2632: There are no more servers to try to place resource 'ora.DATABASENAME.SERVICENAME.svc' on that would satisfy its placement policy CRS-2674: Start of 'ora.DATABASENAME.SERVICENAME.svc' on 'NODENAME' failed
Due to logon trigger “TEST.TEST_LOGON_TRIGGER” active on this database, service startup failed.
Example:
CREATE OR REPLACE TRIGGER SCHEMA_LOGIN AFTER LOGON ON DATABASE WHEN ( USER = 'TEST' ) BEGIN execute immediate 'alter session set events ''10046 trace name context forever, level 12'''; EXCEPTION WHEN OTHERS THEN NULL; END; /
To solve this error, Remove the logon trigger and retry the service startup.
Grant “ADMINISTER DATABASE TRIGGER” permission to schema to disable trigger.
SQL>grant ADMINISTER DATABASE TRIGGER to TEST; SQL>alter trigger TEST.TEST_LOGON_TRIGGER disable;
Rerun the srvctl to start the failed service.
$ORACLE_HOME/bin/srvctl start service -s <SERVICENAME> -d <DBNAME>
If you see the ” db_recovery_file_dest_size is 100% used and has 0 remaining bytes available. ” error, then you should increase db_recovery_file_dest_size value as follows.
SQL> alter system set db_recovery_file_dest_size=200G scope=both sid='*';
Do you want to learn Oracle Database for Beginners, then read the following articles.
Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )