Yes, batch processes that connect to the database, use the connection pretty much 100% of the time and disconnect should get a dedicated server (they are in fact going to make use of that resource heavily, they won't "share" nicely).
End user processes (clients) that connect to the database, use the connection for brief periods with long periods of inactivity (as you might see in any application with end user interaction -- its called "think time") can use MTS nicely. They "share" the resource.
Now, as for the MEMORY.... Thats interesting. First -- I am saying only that BATCH PROCESSES get a dedicated server (not that EVERYONE gets one). I would envision on a system like this you have 1,000 "humans" connected and many 10 batch processes (i mean -- how many batches do you run typically -- not thousands, but rather 10's). So, we are talking about have a very few dedicated servers, some shared servers and 1,000s of users.
Also interesting is the belief that MTS will DRAMATICALLY reduce the memory consumption. It may reduce it -- but in my experience *not dramatically*. There are two pieces of memory to consider
o UGA - the user global area
o PGA - process global area
In MTS, the UGA is moved from the PGA (where it resides in a dedicated server environment) into the SGA. You configure the LARGE_POOL to be big enough to hold all of your UGA's (and this is considerable in size). The sum of the sizes of the UGA's do not GO DOWN at all in MTS and in fact, you must ensure you have sized the large pool large enough at startup time in order to support the number of concurrent sessions! The UGA is *not* shareable memory -- its your session state.
Now, that leaves the PGA. We'll have less PGA's this is true. How much memory this saves depends on many factors. For example, sort_area_size is setting that affects the size of a PGA. When we sort, we'll allocate UPTO sort_area_size bytes of memory in the PGA to sort. As soon as we are done sorting -- the data is moved into the uga (sort_area_retained_size), and we'll release that PGA memory and use it for other things. So, if you have only 10 people sort at the same time (the premise behind using MTS is you have lots of users, only a certain % of which are concurrently active at the same time so you can use a shared server) having 10 shared servers will consume just about the same amount of memory.
What MTS buys you mainly is LESS processes/threads on the system, less context switching going on, less for the os to manage. The memory savings are there, but they are not as big as people seem to make them be out to be. Its mostly in the reduced NUMBER OF PROCESSES that the OS has to manage.
So, I would stand by this answer:
o batch = dedicated server
o online = shared server, if and when the OS has run out of resources.
See
</code>
http://asktom.oracle.com/pls/ask/z?p_url=http%3A%2F%2Fwww.wrox.com%2FACON11.asp%3FISBN%3D186100690x&p_cat=BEG_ORACLE&p_company=10 <code>
for a link that should work (appears wrox had some session information in the other url and that session "expired") . I updated the home page as well.