RE: Oracle Heap memory usage by listener

  • From: "Mark W. Farnham" <mwf@xxxxxxxx>
  • To: <fuzzy.graybeard@xxxxxxxxx>, "'Dimensional DBA'" <dimensional.dba@xxxxxxxxxxx>, <oracle-l@xxxxxxxxxxxxx>
  • Date: Fri, 12 Feb 2016 10:38:32 -0500

Yes. Aside from use of the oxymoron "Best practice" I completely agree with
both of you and I do not see a conflict between your additional information.

 

Very old school pre-service you had to have a separate listener to control
squat. Now you should have a purpose in mind to allocate a specific listener
and there is a rich set of what you can control with services and with
listeners.

 

If you have hit a resource limit allocating more listeners, a valid solution
route is considering whether you really need all those listeners. Another is
adding resource.

 

My world view is a bit warped since the nature of my practice leads me to
work on systems that mostly have a very small number of databases (often 1)
where the horsepower of the system is being stressed by that single
database. So 80 listeners seems like a plethora to me.

 

mwf

 

 

From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx]
On Behalf Of Hans Forbrich
Sent: Friday, February 12, 2016 9:52 AM
To: Dimensional DBA; mwf@xxxxxxxx; oracle-l@xxxxxxxxxxxxx
Subject: Re: Oracle Heap memory usage by listener

 

Of course there are *many* legitimate reasons for having multiple listeners.


However, in this case, a one-to-one relationship between listener and
instance sounds suspiciously like a habit more than a reason.  

My experience is that DBA habits tend to be less that best practices no over
time and versions.  If it truly is best practice, Oracle tends to add it to
their code.

In my consulting practice before rejoining Oracle, I encountered several
customer situations where there was such a 1-1 relationship because the
senior DBA had simply set up policies and procedures in Oracle 7 days and
everyone simply followed those practices without question.    It was
definitely time for a review of those P&Ps.

/Hans

On 11/02/2016 7:14 AM, Dimensional DBA wrote:

Besides the application separation you mention  and being able to shutdown
listeners to affect only specific databases you can also have multiple
listeners per database and perform the same operation on only a specific set
of applications batch versus users, internal versus web facing, etc.

 

There are also connection limit/firewalling parameters that are listener
specific only that you may need to use and you want that same possibility of
separation for applications batch versus users, internal versus web facing,
etc.

http://www.oracle.com/technetwork/database/enterprise-edition/oraclenetservi
ces-connectionratelim-133050.pdf

 

By using separate listeners you can also associate specific OS level
monitoring details to the database/app they belong to for capacity planning.

 

 

 

Matthew Parker

Chief Technologist

Dimensional DBA

425-891-7934 (cell)

D&B 047931344

CAGE 7J5S7

Dimensional.dba@xxxxxxxxxxx

 <http://www.linkedin.com/pub/matthew-parker/6/51b/944/> View Matthew
Parker's profile on LinkedIn

www.dimensionaldba.com

 

 

From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx]
On Behalf Of Mark W. Farnham
Sent: Thursday, February 11, 2016 5:37 AM
To: fuzzy.graybeard@xxxxxxxxx; oracle-l@xxxxxxxxxxxxx
Subject: RE: Oracle Heap memory usage by listener

 

I don't know about them and with the service model this concern is answered,
but the original reason MOSES and VLDB recommended a listener for each
instance on a machine was so that remote attempts to connect to a given
instance could be pre-empted with the minimum overhead by shutting off a
given listener. Since each instance had its own listener, no inconvenience
was experienced by users of any other instance. I believe the service model
was introduced (at least in part) to address this concern.

 

Furthermore, in the multi-threaded server model from before the thread, that
too could be controlled distinctly for each instance more easily.

 

Machines of the day did not contemplate such large numbers of instances
running on a single machine. The useful limit there was easily less than 2
dozen and probably was closer to 10.

 

mwf

 

PS: I think it is a hyperbolic to claim the listener model was replaced in 8
and more fair to report the service model was introduced in 8 and certainly
is very stable now. (If you're playing with toys it doesn't much matter
which you use. Production should be in service model by now, and I'm all
ears for any exception to that line of thinking.)

 

From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx]
On Behalf Of Hans Forbrich
Sent: Wednesday, February 10, 2016 10:43 PM
To: oracle-l@xxxxxxxxxxxxx
Subject: Re: Oracle Heap memory usage by listener

 

Just curious:  That SID-listener model was used with Oracle 7 and was
replaced by the Service model with Oracle 8.  Aside from increased
administration at the db, os and network levels (poking more holes into the
firewall) what benefit to they see to having a listener for each instance?

/Hans

On 10/02/2016 8:26 PM, Balwanth Bobilli wrote:

Oracle version : 12.1.0.2.0

Microsoft Windows server 2012

RAM: 1TB (680GB free memory while getting this error)

 

One of our customer wants to run 80 SIDS and 80 listeners (each listener for
each database).. After all listeners are running, we are seeing TNS-12531:
TNS: cannot allocate memory. From Doc ID
1384337.1(https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=42
2793106930444
<https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=42279310693
0444&id=1384337.1&_afrWindowMode=0&_adf.ctrl-state=qi0lglvuc_210>
&id=1384337.1&_afrWindowMode=0&_adf.ctrl-state=qi0lglvuc_210)

We got to know that changing third argument of
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\SubSystems\: will help us,  Increasing this third value and check
whether TNS error disappears. There is no optimum value, it depends from one
system to another.

 

However we are planning to increase it, I see that there is no optimum value
for setting and maximum value is 8192.  

 

Current value is 

C:\Windows\system32\csrss.exe ObjectDirectory=\Windows
SharedSection=1024,20480,2048 Windows=On SubSystemType=Windows
ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16

 

We are planning to change it to 4096 Before proceeding further we want to
know

 

1)      how SharedSection is used for non-interactive processes running as
Local System? If we keep it 4096 will that impact the performance?

2)      Any tools to monitor heap memory usage (sysads here tried installing
dheapmon and livekd, which is unable to do so on windows sever 2012)

3)      Is there any other solution to work around on this?

Note: No traffic from application, just few connections. 

Shared server configuration

 

 

 

Other related posts: