Environment: SunOS 5.8 Generic_108528-24 sun4u sparc SUNW,Ultra-Enterprise-10000 Oracle 9.20
You will get this message when one of two conditions is met, either your server is not configured properly for the large number of datafiles in your database, or you have defined MAXDATAFILES to be a number larger than your server is configured for. Too see how many files your server is configured for, issue the following:
oracle_ora9i% ulimit -a time(seconds) unlimited file(blocks) unlimited data(kbytes) unlimited stack(kbytes) 8192 coredump(blocks) unlimited nofiles(descriptors) 256 vmemory(kbytes) unlimited
Notice the "nofiles" line. This is the number of file descriptors your system is configured for. To see the MAXDATAFILES parameter, dump your control file to trace and look at the resulting trace file in USER_DUMP_DEST.
If you decide to decrease MAXDATAFILES, then you'll have to recreate your control file with a lower number. You'll want this number to be higher than your number of database datafiles though. Personally, I'd rather do the next option than recreate my control file.
If you decide to reconfigure your kernel, you will have to modify the
values for rlim_fd_max (the hard limit) and/or rlim_fd_cur (the soft
limit) in /etc/system and reboot your server. Make sure you work with
your sys admin on this procedure.
This was first published in February 2004