文档解释
ORA-00851: SGA_MAX_SIZE string cannot be set to more than MEMORY_TARGET string.
Cause: SGA_MAX_SIZE value was more than MEMORY_TARGET value.
Action: Set SGA_MAX_SIZE to be less than MEMORY_TARGET.
ORA-00851错误是指SGA_MAX_SIZE(System Global Area最大大小)字符串不能设置大于MEMORY_TARGET(内存目标)字符串。
官方解释
ORA-00851被返回,当您尝试通过修改SGA_MAX_SIZE系统参数设置SGA的最大大小时。SGA_MAX_SIZE的大小不能超过MEMORY_TARGET参数设置的内存目标,而MEMORY_TARGET就定义了Oracle实例可以使用的内存。
常见案例
假设你已经通过修改一些系统参数来设置MEMORY_TARGET参数为1000兆字节(即YG),然后你试图修改SGA_MAX_SIZE参数到800兆字节(800MB),然后ORA-00851可能会出现,因为SGA_MAX_SIZE不得超过MEMORY_TARGET(1000MB)的大小。
正常处理方法及步骤
这是一个非常常见的ORA-00851错误,处理该错误的正常方法是:
1、使用ALTER SYSTEM命令重新设置MEMORY_TARGET:
ALTER SYSTEM SET MEMORY_TARGET=800M SCOPE=SPFILE;
2、重新启动数据库服务器。
3、使用ALTER SYSTEM命令修改SGA_MAX_SIZE以反映新的MEMORY_TARGET参数:
ALTER SYSTEM SET SGA_MAX_SIZE=800M SCOPE=SPFILE;
4、重新启动数据库服务器。
如果你想要确保SQL>操作正常,你可以重新连接到数据库来测试。如果一切顺利,你可以继续使用数据库,否则你可能需要检查参数配置是否正确。