Wednesday, August 1, 2012


RAC Conversion Fails with Error - Default Listener is not configured



During one of the RAC conversion process from single to multi-instance configuration, we hit the error Default Listener is not configured, even though the listener exists but will custom name.


[oracle@apps_rac01 ~]$ rconfig ConvertToRAC_AdminManaged.xml 

<?xml version="1.0" ?>

<RConfig version="1.1" >

<ConvertToRAC>

    <Convert>

      <Response>

        <Result code="1" >
          Got Exception
        </Result>
       <ErrorDetails>
  oracle.sysman.assistants.rconfig.engine.InvalidConfigurationException: oracle.sysman.assistants.rconfig.engine.InvalidConfigurationException: Default Listener is not configured in Grid Infrastructure Home.
Operation Failed. Refer logs at /u01/app/oracle/cfgtoollogs/rconfig/rconfig_07_31_12_09_27_28.log for more details.
   </ErrorDetails>
      </Response>
    </Convert>
  </ConvertToRAC></RConfig>

The issue was that my listener was running from RAC ORACLE_HOME. The default listener has to running from GRID Home. 
-- First Removed the existing listener
[oracle@apps_rac01 bin]$ cd /u02/app/oracle/prodcut/11.2.0/db_1/bin/
[oracle@apps_rac01 bin]$ ./srvctl  config listener
Name: LISTENER_VISR12
Network: 1, Owner: oracle
Home: /u02/app/oracle/prodcut/11.2.0/db_1
End points: TCP:1521
[oracle@apps_rac01 bin]$ srvctl  stop listener
[oracle@apps_rac01 bin]$ srvctl remove listener -l listener_visr12
[oracle@apps_rac01 bin]$ cd -
/u02/app/11.2.0/grid/bin
-- Create new listener from Grid Home
[oracle@apps_rac01 bin]$ ./srvctl  add  listener -l listener_visr12 -o /u02/app/11.2.0/grid -p 1521
[oracle@apps_rac01 bin]$ ./srvctl  config listener
Name: LISTENER_VISR12
Network: 1, Owner: oracle
Home: <CRS Home>
End points: TCP:1521
-- On Node 2 
[oracle@apps_rac01 bin]$ ssh apps_rac02
Last login: Tue Jul 31 02:54:28 2012 from apps_rac01.localdomain
[oracle@apps_rac02 ~]$ cd /u02/app/11.2.0/grid/bin/
[oracle@apps_rac02 bin]$ ./srvctl  config listener
Name: LISTENER_VISR12
Network: 1, Owner: oracle
Home: <CRS Home>
End points: TCP:1521

-- However after creating listener it still failed. After googling a bit, I found workaround as follows.
Note - 
As per MOS - Tools such as rconfig, dbua, dbca impose additional restrictions on the choice of listener. The listener must be the default listener i.e. with name "LISTENER", and it must run from the Grid Infrastructure home. 
[oracle@apps_rac01 bin]$ pwd
/u02/app/11.2.0/grid/bin
[oracle@apps_rac01 bin]$ ./srvctl remove listener -l listener_visr12
Connection to apps_rac02 closed.

-- Remove the listener with custom name 
[oracle@apps_rac01 bin]$ . oraenv
ORACLE_SID = [oracle] ? +ASM1
The Oracle base for ORACLE_HOME=/u02/app/11.2.0/grid is /u01/app/oracle

-- Start the NETCA from grid home create the listener with default name "LISTENER"
[oracle@apps_rac01 bin]$ netca
Oracle Net Services Configuration:
Oracle Net Configuration Assistant is launched from Grid Infrastructure home. Ne
twork configuration will be clusterwide.
Configuring Listener:LISTENER
apps_rac01...
apps_rac02...
Listener configuration complete.
Oracle Net Listener Startup:
    Listener started successfully.
Oracle Net Services configuration successful. The exit code is 0
[oracle@apps_rac01 bin]$ ./srvctl  status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): apps_rac01,apps_rac02


This time around RCONFIG went ahead happily.
[oracle@apps_rac01 ~]$ rconfig ConvertToRAC_AdminManaged.xml 
<?xml version="1.0" ?>
<RConfig version="1.1" >
<ConvertToRAC>
    <Convert>
      <Response>
        <Result code="0" >
          Operation Succeeded
        </Result>
      </Response>
      <ReturnValue type="object">
There is no return value for this step     </ReturnValue>
    </Convert>
  </ConvertToRAC></RConfig>