Single listener for multiple Oracle homes

oracle

I'm in the process of re-hosting two Oracle 12c databases on Unix. In the source environment, the databases were stacked — they shared the same Oracle home and used the same listener. The listener looked roughly like this:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = foo)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = DATABASE1)
      (ORACLE_HOME = /oracle)
    )
    (SID_DESC =
      (SID_NAME = DATABASE2)
      (ORACLE_HOME = /oracle)
    )

In the new environment, each of the databases has its own Oracle home. I have a listener running out of one of the oracle homes. It looks roughly like this (note the ORACLE_HOMEs):

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = newfoo)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = DATABASE1)
      (ORACLE_HOME = /oracle/DATABASE1)
    )
    (SID_DESC =
      (SID_NAME = DATABASE2)
      (ORACLE_HOME = /oracle/DATABASE2)
    )

I would like for each environment to have its own listener running, but that would mean one of the databases would need to change its port (we're not using virtual IPs so I can't have two databases on the same host using the same port).

(For the sake of argument, imagine that the client is running tons of legacy software and they can't easily change which ports they're pointed at. I realize asking them to simply modify their tnsnames is the easiest option, but let's set that aside for the moment.)

Question: Is it problematic to use a single listener for multiple Oracle homes? I get that it's a single point of failure, but is there also a performance hit? Something else I'm not thinking of?

Question: Is there some other way I can run a listener out of each of the new Oracle homes using the same port? Again, we're not using virtual IPs, so I'm stuck with new host "foonew" + port 1521.

Thank for any answers or guidance you can provide.

Best Answer

Question: Is it problematic to use a single listener for multiple Oracle homes?

No. There really is no valid reason to run multiple Listeners.

You just need to make sure each database "registers" with that one Listener.

I get that it's a single point of failure, but is there also a performance hit?

I'd be more concern with your single node databases being a "single point of failure" before I worry about the Listener as a "single point of failure".

Something else I'm not thinking of?

  • K.I.S.S.: Just use a single Listener.
  • The Listener does not have to be on the same server as the database
  • I believe you can use Oracle Grid to run a collection of Listeners.

Question: Is there some other way I can run a listener out of each of the new Oracle homes using the same port? Again, we're not using virtual IPs, so I'm stuck with new host "foonew" + port 1521.

No. This is an OS thing, not a Listener thing.

Related Question