LATEST TOPICS

Oracle Database 12c : Change in Listener Service Registration Architecture

Overview:

While doing troubleshooting with service registration to Listener, I have come across a new Oracle Database background process in 12c called LREG (Listener Registration Process).

Prior to Oracle Database 12c, PMON (Process Monitor) was responsible for registering  database services to the Listener. However, there is a change in architecture with respect to the service registration in Oracle Database Release 12c.

Oracle has introduced a new mandatory background process dedicated for “database service registration to the Listener” and named it after its sole purpose as LREG (Listener Registration Process).

Here is the official documentaion

The listener registration process (LREG) registers information about the database instance and dispatcher processes with the Oracle Net Listener (see“The Oracle Net Listener”). When an instance starts, LREG polls the listener to determine whether it is running. If the listener is running, then LREG passes it relevant parameters. If it is not running, then LREG periodically attempts to contact it.

 

Example:

Here is an example of the LREG background process that I have on my server

[oracle@labserver trace]$ ps -ef | grep lreg
oracle    5657     1  0 19:11 ?        00:00:01 asm_lreg_+ASM
oracle    7045     1  0 19:55 ?        00:00:01 ora_lreg_labpa

Each Database Instance (including ASM) has a LREG process to register the services with respective Listeners.

 

To trace the service registration to Listener, I have enabled tracing (by following the same old method used with PMON) as follows.

SQL:labpa > alter system set events='immediate trace name listener_registration level 3';

System altered.

SQL:labpa > alter system register;

System altered.

This would dump the service registration trace in the LREG trace file under the background dump destination as shown below.

SQL:labpa > show parameter background_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------------------
background_dump_dest                 string      /app/oracle/diag/rdbms/labpa/labpa/trace

[oracle@labserver trace]$ cd /app/oracle/diag/rdbms/labpa/labpa/trace
[oracle@labserver trace]$ ls -lrt *lreg*
-rw-r----- 1 oracle oinstall  175 Sep 19 23:44 labpa_lreg_7045.trm
-rw-r----- 1 oracle oinstall 4972 Sep 19 23:44 labpa_lreg_7045.trc

So, we have a new trace file “[instance_name]_lreg_[LREG_PID].trc” related to the new background process LREG.

 

The content of the file is similar to the one that we have from PMON prior to 12c .

[oracle@labserver trace]$ cat labpa_lreg_7045.trc
Trace file /app/oracle/diag/rdbms/labpa/labpa/trace/labpa_lreg_7045.trc
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
ORACLE_HOME = /app/oracle/product/12.1.0
System name:    Linux
Node name:      labserver.home.com
Release:        2.6.32-100.26.2.el5
Version:        #1 SMP Tue Jan 18 20:11:49 EST 2011
Machine:        x86_64
Instance name: labpa
Redo thread mounted by this instance: 1
Oracle process number: 18
Unix process pid: 7045, image: oracle@labserver.home.com (LREG)

*** 2014-09-19 22:52:43.653
*** SESSION ID:(9.1) 2014-09-19 22:52:43.654
*** CLIENT ID:() 2014-09-19 22:52:43.654
*** SERVICE NAME:(SYS$BACKGROUND) 2014-09-19 22:52:43.654
*** MODULE NAME:() 2014-09-19 22:52:43.654
*** ACTION NAME:() 2014-09-19 22:52:43.654

------------------------------
Start Registration Information
------------------------------

Last update: 430724497 (385 seconds ago)
Flag: 0x4, 0x0
State: succ=1, wait=0, fail=0

Non-CDB: root pdb 0 last pdb 0 open max pdb 0

Listeners:
  0 - (ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)) pdb 0
       state=1, err=0
       nse[0]=0, nse[1]=0, nte[0]=0, nte[1]=0, nte[2]=0
       ncre=0
       endp=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=labserver.home.com)(PORT=1521)))
         flg=0x80000000 nse=0

Instance: labpa
  flg=0x400, upd=0xa
  info=(INF=(HOST=labserver)(REGION=)(DB_NAME=)(VINST_NAME=))
  node load=7, max=10240
  inst load=0, max=472

Services:
  0 - labpa
       flg=0x4, upd=0x6, pdb=0
       goodnes=0, delta=1
  1 - labpaXDB
       flg=0x5, upd=0x6, pdb=0
       goodnes=0, delta=1

Handlers:
  0 - Dedicated
       flg=0x80002002, upd=0x2
       services=labpa
       hdlr load=49, max=299

Dispatcher Handlers:
  0 - D000(1)
       addr=(ADDRESS=(PROTOCOL=tcp)(HOST=labserver.home.com)(PORT=25637))
       inf=DISPATCHER
       flg=0x1004, upd=0x2
       services=labpaXDB
       hdlr load=0, max=1022

CMON Handlers:

CMON Handlers for Listener Networks:

Listen Endpoints:

----------------------------
End Registration Information
----------------------------

 

Conclusion:

Considering the type and amount of the tasks involved with PMON (like monitoring other background processes, performing process recovery when the process terminates abnormally, etc.) , it looks to be a promising move from Oracle. With the introduction of the LREG process, Oracle has offloaded the PMON process by segregating the service registration operations and assigning the registration tasks to the LREG background process.

This change would benefit specially in database environments where the database has a high number of Services and/or Listeners configured for it and PMON spends a considerable amount of time in service registration.

 

Reference:

Listener Registration Process (LREG)

 

 

2 Comments
  1. nassyambasha
%d bloggers like this:
Visit Us On LinkedinVisit Us On TwitterVisit Us On Google PlusCheck Our Feed