Rarely discussed 12c New Features Part 3 – Oracle Net Listener Registration

In Oracle Database 12c there were some minor Oracle Net Services features. This blog post covers some of the changes. In the next part I’ll review some of Dead Connection Detection changes as well as some of the smaller new features.

This change is neither sexy nor fun, but as an devoted RAC dev guy, I find these little changes (evolutions) amusing ๐Ÿ™‚

In prior releases the service registration was performed by PMON and is now performed by a dedicated process called LREG (listener registration). The LREG process (ora_lreg_), is a critical database background process . Since this is critical background process, if it dies, it will cause an Oracle instance crash.

LREG now assumes all of PMON’s instance/service registration responsibilities; e.g., instance registration, such as: service_update, service_register, LBA payload, etc.

As with PMON in pre-12c versions, LREG (during registration) process provides the listener with information about the following:
* Names of the database services provided by the database
* Name of the database instance associated with the services and its current and maximum load
* Service handlers (dispatchers and dedicated servers) available for the instance, including their type, protocol addresses, and current and maximum load (for LBA)

If the listener is not running when an instance starts, the LREG process cannot register the service information. LREG attempts to connect to the listener periodically on default port TCP/IP 1521 if no local_listener is set and it may take up to 60 seconds before LREG registers with the listener after it has been started. To initiate service registration immediately after the listener is started, use the SQL statement ALTER SYSTEM REGISTER.

LREG can be traced using the same methods as with PMON:

Enabling an Oracle Net server side sqlnet tracing will invoke a trace for LREG on instance startup. The old PMON trace command now traces LREG:
alter system set events = ‘10257 trace name context forever, level 5’;

Listener registration information can also be dumped into the ora_lreg trace file: alter system set events = ‘immediate trace name listener_registration level 3’;