Skip to Main Content

Breadcrumb

Question and Answer

Tom Kyte

Thanks for the question.

Asked: December 11, 2014 - 2:15 pm UTC

Last updated: August 31, 2015 - 2:34 pm UTC

Version: 11.2.0.4/12.1.0.2

Viewed 10K+ times! This question is

You Asked

Tom,
Looking at 12c documentation, it seems that there are a whole lot more background processes in 12c as compared to 11g.If I perform a one-to-one upgrade from 11g to 12c, do I need to increase resources on the server (like memory/CPU) or allocate more memory to 12c database or increase PROCESSES parameter?

Thanks...

and Tom said...

There are very few new mandatory processes, it is doubtful you would have to touch processes in most cases (the vast majority of your processes are dedicated servers, adding a handful of backgrounds is not going to affect that much) - same with memory.

In fact, if you take advantage of multitenant, you'll have potentially orders of magnitude LESS processes and significantly less memory for your footprint.

Rating

  (3 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

A reader, December 11, 2014 - 9:02 pm UTC

Multitenant requires additional licenses which we are not in a position to invest in right now. It will happen further down the road. At that stage, we will convert from non-CDB/PDB to CDB/PDB.

With multitenancy, I am still confused about less memory statement. If I have say 5 databases. Each database has a memory_target of say 4GB. If I plug all 5 databases into a container database, I would still need memory_target of 4GB for each database. So how do I save memory?

Thanks...
Tom Kyte
December 12, 2014 - 10:24 am UTC

If you have 5 databases, you have a minimum of 100 - if not 200 processes for the backgrounds and at least 150 if not more dedicated servers for your connection pools (assuming the app server uses a connection pool of 30 for each database - which is low as most people in middle ware land seem to like to create hundreds of connections for some unknown, illogical reason)

So you have ~350 processes with PGAs sitting out there (a few meg each)

Go multitenant. You have ~30 backgrounds, depending on how you configure it. If you have say 16 cores, you might set up a DRCP pool (that can be used by all PDB's) of 32 or 64. You'll have under 100 processes now. That much less PGA being used.

Also, the sum of the SGA's doesn't have to be your memory target, there are many redundant structures that won't be redundant anymore since you have a single SGA as well.

So no, you wouldn't need a memory target of 4gb for each database. You'll have less dedicated servers, far fewer backgrounds

A reader, December 12, 2014 - 4:05 pm UTC

Still confused. The databases have MEMORY_TARGET of 20GB+ each. Most of the memory goes towards buffer cache and PGA workarea. In the grand scheme of things, the memory taken up by redundant SGA structures and backgrounds would be small percentage of total memory required. The number of background processes would be drastically reduced, I agree but sizable impact on overall memory, I still do not understand.

Thanks...
Tom Kyte
December 17, 2014 - 6:29 pm UTC

I tried to do some math above...

You have 5 databases with 5 instances:

100-200 backgrounds

AT LEAST 150 dedicated servers (but we know there will be more - because middle tier people thing 30 connections is nothing, 300 is low, 3,000 is OK). So, lets just say 150 dedicated servers plus 200 backgrounds

350 processes each with PGA.


Now you have 5 databases with 1 instance:

say 40 backgrounds

you configure a database resident connection pool sized on the number of cores you have - say on an 8 core machine you might have between 1 and 80 processes in this pool. 80 at most. So say 80.

You have 120 processes - 1/3 the PGA.



and the sum of the SGA's would not be the size of the new SGA - there are redundancies.


As you go up in the number of databases - the numbers get even better. You are fixed at 120 processes with multitenant - regardless of how many databases you desire to open. With instance per database - every database you add adds a ton more processes. That not only consumes memory but kills the OS. OS takes more memory managing more processes.

restrict pdb memory usage

Michael, February 02, 2015 - 10:16 am UTC

short one:

is it possible to restrict PDB memory usage by setting memory parameters (memory_max_target) at PDB level?

thanks,
michael