ORA-00842: DB_BLOCK_BUFFERS cannot be set with SGA_TARGET or MEMORY_TARGET ORACLE 报错 故障修复 远程处理

文档解释

ORA-00842: DB_BLOCK_BUFFERS cannot be set with SGA_TARGET or MEMORY_TARGET

Cause: DB_BLOCK_BUFFERS was incompatible with SGA_TARGET and MEMORY_TARGET.

Action: Remove the incompatible parameter setting.

ORA-00842错误表明您正在尝试在 MEMORY_TARGET 或 SGA_TARGET 配置参数的环境中,将 DB_BLOCK_BUFFERS 设置到不合法的值 (注意: MEMORY_TARGET 和 SGA_TARGET 是 Oracle 11g 之后出现的新参数)。

官方解释

当一个受 MEMORY_TARGET 或 SGA_TARGET 参数控制的数据库实例初始化或重新启动时,Oracle会尝试基于提供的值来检查 DB_BLOCK_BUFFERS 参数。如果 DB_BLOCK_BUFFERS 被设置成不合法的值,就会出现ORA-00842错误。

在此情况下,您需要更改 DB_BLOCK_BUFFERS 参数值,从而将其与 MEMORY_TARGET 和 SGA_TARGET 相符,才能正确实例化 Oracle 数据库。

常见案例

– 您对 Oracle 数据库实例进行重新初始化时,出现ORA-00842错误

– 您尝试数据库实例启动时,报出ORA-00842错误

正常处理方法及步骤

1.首先确认您是否正在运行 MEMORY_TARGET 或 SGA_TARGET 参数:

SELECT name,value

FROM v$parameter

WHERE name IN (‘MEMORY_TARGET’,’SGA_TARGET’);

2.从输出结果中,检查哪一个参数正在使用,并根据下列对应情况调整 DB_BLOCK_BUFFERS 值:

a.如果 MEMORY_TARGET 被指定,请将 DB_BLOCK_BUFFERS 设定成 0 (零)

b.如果 SGA_TARGET 被指定,请将 DB_BLOCK_BUFFERS 的值设定为 “(大内存池总大小-非大内存池总大小)/ 数据库块

3.如果你在生产环境中,最好以 SPFILE 方式保存数据库参数值

ALTER SYSTEM SET DB_BLOCK_BUFFERS= SCOPE=SPFILE;

4.重新启动数据库,使参数配置生效

SHUTDOWN IMMEDIATE;

STARTUP;


数据运维技术 » ORA-00842: DB_BLOCK_BUFFERS cannot be set with SGA_TARGET or MEMORY_TARGET ORACLE 报错 故障修复 远程处理