ORA-00824: cannot set SGA_TARGET or MEMORY_TARGET due to existing internal settings
ORA-00842: DB_BLOCK_BUFFERS cannot be set with SGA_TARGET or MEMORY_TARGET

因为我在做实验的时候为了尝试早期版本的ORACLE的SGA手动设置,我尝试修改了 DB_BLOCK_BUFFERS的参数值,重启数据库后就产生了上述两种报错。

报错的内容很明显是 DB_BLOCK_BUFFERS参数设置于SGA_TARGET或MEMORY_TARGET参数设置是冲突的。

做这个实验时最好对spfile进行备份,当然不备份也还是有办法解决的:

SQL> show parameter sga_target;
NAME              TYPE        VALUE
----------------- ----------- ----------
sga_target        big integer 0
SQL> show parameter memory_target;
NAME              TYPE        VALUE
----------------- ----------- -----------
memory_target     big integer 6400M

我看到这里以后,置零两个参数值。

SQL> alter system set sga_target=0 scope=both;
System altered.
SQL> alter system set memory_target=0 scope=both;
System altered.
SQL> alter system set db_block_buffers=249856 scope=spfile;
System altered.

当我修改了db_block_buffers参数值后发现就出现上面的错误。因为这个参数时在9i前在使用的,到9i之后就被弃用了。如果做了这设置就与当前的参数产生冲突,导致错误的发送。