今天在调节sga大小的时候遇到了一个报错
sql>altersystemsetsga_target=600scope=both; altersystemsetsga_target=600scope=both * ERRORatline1: ORA-02097:parametercannotbemodifiedbecausespecifiedvalueisinvalid ORA-00827:couldnotshrinksga_targettospecifiedvalue
首先看一下数据库相关配置
sql>showparametersga NAMETYPEVALUE ----------------------------------------------------------------------------- lock_sgabooleanFALSE pre_page_sgabooleanFALSE sga_max_sizebiginteger600M sga_targetbiginteger600M sql>showparametermemory NAMETYPEVALUE ----------------------------------------------------------------------------- hi_shared_memory_addressinteger0 memory_max_targetbiginteger0 memory_targetbiginteger0 shared_memory_addressinteger0
很明显可以看出来这是一个asmm下的oracle,难道之前不能调节是因为动态或者静态的关系,然后做了以下实验
sql>altersystemsetsga_target=700scope=spfile; Systemaltered
结果发现果然是只可以在spfile中修改,重启后生效,可是后来我继续做实验发现一个很有趣的事情
sql>altersystemsetsga_target=400Mscope=both; Systemaltered.
这是为什么呢,为什么这个sga现在又可以在both里面可以用了呢,查阅文档发现一个原来10g之前是不可以调节sga_target的大小的,但是之后出现了一个参数sga_max_size,这个参数让sga_target可以真正的自己调节,只要在sga_max_size以下,所有的sga_target是可以静态或者动态自动调节的。
原文链接:https://www.f2er.com/oracle/212096.html