How to Register Listener in the Database ?
The
listener is a separate process that runs on the database server
computer. It receives incoming client connection requests and manages
the traffic of these requests to the database server. There are two
methods by which a listener comes to know of a database instance. In
Oracle terminology, this is referred as “Registering with the Listener” . The two methods are
1.) Static Instance Registration
2.) Dynamic Instance Registration or (
service registration)
Static Instance Listener :
This is the very basic method to
register listener .We can either add the entries in
$ORACLE_HOME\NETWORK\ADMIN\listener.ora file or by using the GUI i.e,
through Net Manager. The configuration inside the listener.ora file
looks like :
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = idea )
(ORACLE_HOME = C:\app\sonu\product\11.2.0\dbhome_1)
(SID_NAME = idea )
)
(SID_DESC =
(GLOBAL_DBNAME = Airtel)
(ORACLE_HOME = C:\app\sonu\product\11.2.0\dbhome_1)
(SID_NAME = Airtel
)
)
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
)
and when we check the registration , it shows the status of
UNKNOWN :
C:\>
lsnrctl
LSNRCTL for 32-bit Windows: Version 11.2.0.1.0 - Production on 05-OCT-2011 15:26:27
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL>
status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production
Start Date 28-Oct-2013 13:11:59
Uptime 3 days 1 hr. 27 min. 45 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\app\
sonu\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File c:\app\
sonu\diag\tnslsnr\tech-199\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
Services Summary...
Service "Airtel" has 1 instance(s).
Instance
"Airtel", status UNKNOWN, has 1 handler(s) for this service...
Service "
idea " has 1 instance(s).
Instance
"idea ", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL>
The status is unknown because there is
no mechanism to guarantee that the specified status even exists.Here
the listener assumes that instance will be there whenever there will be
any request. It donot have inforamtion about the status of the Current
Instance.
Now, we will check the Dynamic Instance Listener :
Dynamic Instance Registration :
This dynamic registration feature is called service registration. The registration is performed by the PMON process
an instance background process of each database instance that has
the necessary configuration in the database initialization parameter
file. Dynamic service registration does not require any configuration in
the listener.ora file.
Service registration offers the following benefits :
1.) Simplified configuration :
Service registration reduces the need for the SID_LIST_listener_name
parameter setting, which specifies information about the databases
served by the listener, in the listener.ora file.
Note : The SID_LIST_listener_name parameter is still required if we are using Oracle Enterprise Manager to manage the database.
2.) Connect-time failover : Because
the listener always knows the state of the instances, service
registration facilitates automatic failover of the client connect
request to a different instance if one instance is down.
In
a static configuration model, a listener would start a dedicated server
upon receiving a client request. The server would later find out that
the instance is not up, causing an "Oracle not available" error message.
3.) Connection load balancing : Service
registration enables the listener to forward client connect requests to
the least loaded instance and dispatcher or dedicated server. Service
registration balances the load across the service handlers and nodes.
To ensure service registration works properly, the initialization
parameter file should contain the following parameters:
SERVICE_NAMES for the database service name
INSTANCE_NAME for the instance name
For example:
SERVICE_NAMES=
idea .oracle
INSTANCE_NAME=
idea
Let's have a
Demo of Dynamic Listener.
The listener is quite capable of
running without a listner.ora file at all. It will simply start and run
with all default values.Here i have rename the listener.ora file and
stop and start the listener and find that listener supports no
services.Check the below:
LSNRCTL>
stop
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
The command completed successfully.
Now start the listener
LSNRCTL>
start
Starting tnslsnr: please wait...
TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production
Log messages written to c:\app\
sonu\diag\tnslsnr\tech-199\listener\alert\log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production
Start Date 05-Nov-2013 12:31:41
Uptime 0 days 0 hr. 0 min. 4 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File c:\app\
sonu\diag\tnslsnr\tech-199\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
The listener supports no services
The command completed successfully
Here, we find that listener donot support any services.Since it doesnot
found the listener.ora file ,and if we try to connect to the Instance
then it will throws the error i.e,
ORA-12514 :
C:\>
tnsping idea
TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 05-nov-2013 12:31:41
Copyright (c) 1997, 2010, Oracle. All rights reserved.
Used parameter files:
C:\app\
sonu\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =
(PROTOCOL = TCP)(HOST = 192.100.0.98)(PORT = 1521))) (CONNECT_DATA =
(SERVER = DEDICATED) (SERVICE_NAME =
idea )))
OK (
40 msec)
Now, we try to connect with Instance "
idea "
C:\>
sqlplus sys/xxxx@idea as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 5 16:23:45 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
Since the tnsping proves that our
tnsnames.ora resolution is correct, but it throws the error while
connecting to database because the listener doesnot knows anything about
the services "idea " . Let's start the instance and check again :
C:\>
set ORACLE_SID=idea
SQL>
startup
ORACLE instance started.
Total System Global Area 263639040 bytes
Fixed Size 1373964 bytes
Variable Size 222300404 bytes
Database Buffers 33554432 bytes
Redo Buffers 6410240 bytes
Database mounted.
Database opened.
Now check the listener status again :
LSNRCTL>
status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 11.2.0.1.0 - Production
Start Date 05-OCT-2011 16:21:30
Uptime 0 days 0 hr. 19 min. 21 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File c:\app\
sonu\diag\tnslsnr\tech-199\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
Services Summary...
Service "
idea .TECH-199" has 1 instance(s).
Instance
"idea ", status READY, has 1 handler(s) for this service...
Service "
idea XDB.TECH-199" has 1 instance(s).
Instance
"idea", status READY, has 1 handler(s) for this service...
Service "
idea _DGB.TECH-199" has 1 instance(s).
Instance
"idea ", status READY, has 1 handler(s) for this service...
The command completed successfully
Here we observe that once the instance is started , when we re-check the listener now knows of service “idea ”, with a status of READY
. This obviously did not come from listener.ora as the file is renamed.
Notice also that, unlike the static registration, this time the status
is READY. The listener knows the instance is ready because the instance
itself told the listener it was ready.
Now agian connecting to the Instance :
C:\>
sqlplus sys/xxxx@idea as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 4 18:14:28 2011
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
Here by default, the PMON process
registers service information with its local listener on the default
local address of TCP/IP, port 1521. As long as the listener
configuration is synchronized with the database configuration, PMON can
register service information with a nondefault local listener or a
remote listener on another node. During service registration PMON
provides listener with the following information:
- Name of the associated instance
- Current load and maximum load on instance
- Names of DB services provided by database.
- Information about dedicated servers and dispatchers (depends on database server mode i.e dedicated/shared server mode) .
PMON process wakes up at every
60 seconds and provide information to the listener. If any problem
arises and PMON process fails then it's not possible to register
information to listener periodically. In this case we can do 'Manual
service registration' using command:
SQL>
ALTER SYSTEM REGISTER;