Raising the global file descriptor limit is not recommended as this could make 32 bit programs fail unless they have knowledge about how to use file descriptors > 255, see:
So it may be better to just call the oracle data base via a shell script that first does the needed
ulimit calls to set up the limits and then call the database.
Let me show a typical Solaris limit set that could be retrieved with the Bourne Shell (as in my example). Note that using
ksh93 is not helpful here as ksh93 includes information from other resources that are not settable. This is the default on Solaris:
LC_ALL=C ulimit -aSH
-t: time(seconds) unlimited:unlimited
-f: file(blocks) unlimited:unlimited
-d: data(kbytes) unlimited:unlimited
-s: stack(kbytes) 10240:unlimited
-c: coredump(blocks) unlimited:unlimited
-n: nofiles(descriptors) 256:65536
-v: memory(kbytes) unlimited:unlimited
As you see, all default values are higher than the required values except for the open file descriptors. I am not sure whether the stack hard limit should be reduced.
If you like to modify the values, write a shell script and enter this:
ulimit -nS 1024
This raises the soft file descriptor limit to 1024 and results in a new limit:
-n: nofiles(descriptors) 1024:65536
If you need to reduce the hard stack limit, also enter:
ulimit -sH 32768
This reduced the hard stack limit to 32 MB and results in:
-s: stack(kbytes) 10240:32768
After that, enter the command to start the oracle data base to the script and then run this script.