修改sga_max_size大小后重启数据库报 ORA-00851

今天看到网上的一个评论,就做了一个实验:

step1: 修改 db_cache_size 的大小, 报如下错吴

           SQL>  alter system set db_cache_size=350M scope=both;

            

step2: 修改sga_max_size的大小

     SQL>  alter system set sga_max_size=850M scope=spfile;

    

step3: 关闭数据库    

    SQL> shutdown immediate;

step4:  启动数据库,错误来了:

SQL> startup

    提示 SGA_MAX_SIZE 的大小比 MEMORY_TARGET 大,所以启动不了

    在网上搜索可一下,觉的这个解释比较贴切:

memory_target是oracle11g用于自动内存管理的,它与memory_max_target是成对出现的,是11g内存管理上的新特 性,这一特性的出现使得pga+sga做为整体内存使用被一致的纳入自动管理范畴。简而言之memory_target就是整个实例所能使用的内存大小, 包括PGA和SGA的整体大小,在MEMORY_TARGET的内存大小之内,PGA和SGA所用的内存可以根据当前负载情况自动相互转换。 

如果当初始设定的MEMORY_TARGET的内存不够当前数据库使用的时候,Oracle11g还提供了另外一个初始化参数 MEMORY_MAX_TARGET,当原始设定的内存不够使用的时候,可以手工来动态 调节MEMORY_TARGET的大小,但是不允许超过MEMORY_MAX_TARGET的值。  

由此可见sga的尺寸是不能大于memory_target的。所以我们要调整memory_target和memory_max_target的值高于sga_max_size。


step5:解决SGA_MAX_SIZE 的大小比 MEMORY_TARGET 大导致数据无法启动的错误

由于数据库无法启动,只能调编辑参数文件:

SQL> create pfile='/tmp/pfile20150115.txt' from spfile;

[oracle@REDHAT6 tmp]$ vi/tmp/pfile20150115.txt 

将memory_target的值修改成1.2G(由于是本地虚拟机,所以比较小))

即:memory_target=1257889280

备份以前的参数文件

恢复参数文件:

SQL> create spfile from pfile='/tmp/pfile20150115.txt';

启动数据库:


OK,到此结束,数据库正常启动。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值