Sunday, April 7, 2024

Listener failed to start after Oracle Database out-of-place patching

 After applying patches on Oracle Database home with out-of-place patching. The listener cannot be started with error,

TNS-01201: Listener cannot find executable <ORACLE_HOME>/bin/oracle for SID <ORACLE_SID>

The crsctl start command shows,

[oracle@host01]$ crsctl start has -wait
CRS-4123: Starting Oracle High Availability Services-managed resources
CRS-6023: Starting Oracle Cluster Ready Services-managed resources
CRS-6017: Processing resource auto-start for servers: host01
CRS-2672: Attempting to start 'ora.LISTENER.lsnr' on 'host01'
CRS-2672: Attempting to start 'ora.evmd' on 'host01'
CRS-2674: Start of 'ora.LISTENER.lsnr' on 'host01' failed
CRS-2672: Attempting to start 'ora.LISTENER.lsnr' on 'host01'
CRS-2672: Attempting to start 'ora.cssd' on 'host01'
CRS-2672: Attempting to start 'ora.diskmon' on 'host01'
CRS-2676: Start of 'ora.diskmon' on 'host01' succeeded
CRS-2676: Start of 'ora.evmd' on 'host01' succeeded
CRS-2674: Start of 'ora.LISTENER.lsnr' on 'host01' failed
CRS-2676: Start of 'ora.cssd' on 'host01' succeeded
CRS-2672: Attempting to start 'ora.asm' on 'host01'
CRS-2676: Start of 'ora.asm' on 'host01' succeeded
===== Summary of resource auto-start failures follows =====
CRS-2807: Resource 'ora.LISTENER.lsnr' failed to start automatically.
CRS-6016: Resource auto-start has completed for server host01
CRS-6024: Completed start of Oracle Cluster Ready Services-managed resources
CRS-4123: Oracle High Availability Services has been started.

Manually start listener with lsnrctl,

[oracle@host01]$ lsnrctl start

LSNRCTL for IBM/AIX RISC System/6000: Version 19.0.0.0.0 - Production on 06-APR-2024 07:57:34

Copyright (c) 1991, 2023, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/19.0.0/grid_1/bin/tnslsnr: please wait...

TNSLSNR for IBM/AIX RISC System/6000: Version 19.0.0.0.0 - Production
System parameter file is /u01/app/oracle/product/19.0.0/grid_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/host01/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host01.corp.toronto.ca)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
TNS-01201: Listener cannot find executable /u01/app/oracle/product/19.0.0/dbhome_1/bin/oracle for SID ORCL

Listener failed to start. See the error message(s) above...

Same error messages in listener.log under $ORACLE_BASE/diag/tnslsnr/<hostname>/listener/trace,

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE
TNS-01201: Listener cannot find executable /u01/app/oracle/product/19.0.0/dbhome_1/bin/oracle for SID ORCL
No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=host01.corp.toronto.ca)(PORT=1521)))
No longer listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
2024-04-06T07:21:11.758687-04:00

Oracle Listener is looking for executable "oracle" from following home,

/u01/app/oracle/product/19.0.0/dbhome_1

It is old Oracle Database Home which is patched with out-of-place method. After patching, it is removed and replaced with new home,

/u01/app/oracle/product/19.0.0/dbhome_2

The Listener is still looking though old home because there is static registration in listener.ora.

The listener.ora under $ORACLE_HOME/network/admin includes,

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
      (SID_NAME = ORCL)
    )
  )

Solution:

Change ORACLE_HOME to new home in the listener.ora.

No comments: