The Oracle (tm) Users' Co-Operative FAQ

I am getting a database startup error about being unable to start "with new and and old " values for parameters. (9.0.1)


Author's name: Jonathan Lewis

Author's Email: Jonathan@jlcomp.demon.co.uk

Date written: 18th July 2002

Oracle version(s): 9.0.1

I am getting error while restarting the database after changing the parameter db_block_buffers in SPFILE<SID>.ora file.
The error was "could not start the database with old and new parameter". What could be the reason.

Back to index of questions


Errors come with error numbers - if you are on a UNIX machine you can always try the oerr call to get more details about the error message, including (sometimes) a cause and action. For example, of the program returns error ORA-00381, you can try

$ oerr ora 381
00381, 00000, "cannot use both new and old parameters for buffer cache size specification"
// *Cause:  User specified one or more of { db_cache_size ,
//          db_recycle_cache_size, db_keep_cache_size,
//          db_nk_cache_size (where n is one of 2,4,8,16,32) }
//          AND one or more of { db_block_buffers , buffer_pool_keep ,
//          buffer_pool_recycle }. This is illegal.
// *Action: Use EITHER the old (pre-Oracle_8.2) parameters OR the new
//          ones. Don't specify both. If old size parameters are specified in
//          the parameter file, you may want to replace them with new parameters
//          since the new parameters can be modified dynamically and allow
//          you to configure additional caches for additional block sizes.

Note, the necessary file ($ORACLE_HOME/rdbms/mesg/oraus - or local language equivalent) does not exist on NT boxes, but you could try raiding your nearest friendly unix box for the file, and just search it for the error number.

I assume that you have used SQL*Plus to issue a command like:

	alter system set db_block_buffers=4000 scope=spfile

In this case, your spfile now has two lines like:

	*.db_block_buffers=4000
	*.db_cache_size=16777216 

This is what the complaint is about. You need to fix the spfile, expect you can't until you've started the database, and you can't start the database until you've fixed the spfile. Rename the spfile to something else so that it doesn't get accessed by accident from now on.

To fix this problem: if you have a pfile (init{SID}.ora file) that is reasonably up to date, use

	startup pfile={fully qualified name of pfile}
	create spfile from pfile;

You now have a file spfile{SID}.ora sitting in the default location ($ORACLE_HOME/dbs for Unix), so copy it, and start issuing commands to patch it up for all the paramters that are currently not what you want.

Second option - spfiles are 'binary' files, which in this case means that have some extra junk in them, but you can read most of the text. Copy the spfile, and edit it to extract the text (string -a is a useful command under Unix). Use the resulting file as the pfile in option 1.


Further reading: N/A


Back to top

Back to index of questions