关于ISSYS_MODIFIABLE影响修改:

当修改参数时,可以指定范围,是修改到spfile,还是内存中.还是全部修改.

alter system set parameter name=parameter value scope=both|memery|spfile


ISSYS_MODIFIABLE   IMMEDIATE 修改后立即生效

                  FALSE     修改后重启后生效

                  DEFERRED  会话重连后生效

ORACLE:scope=both|memery|spfile_第1张图片

当修改的参数ISSYS_MODIFIABLE=FALSE时,必须要scope=spfile,否则报错,如下:

ORACLE:scope=both|memery|spfile_第2张图片


关于粒度大小影响修改:

1.把启动用的spfile:spfileorclsp.ora改为名spfileorclsp.ora.bak
2.alter system set db_cache_size=23M scope=spfile

 ( alter system set service_names='*******'  #默认设置scope=both)
     报错:文件不存在.(Oracle并不对spfile锁定,在运行的过程中,可以任意改名)
     可以理解,因为spfile不存在,报错.
3.alter system set db_cache_size=24M scope=both
  没有报错,按理来说,both表示即修改到spfile,还有memery中,既然是有修改到spfile,则应该也报错才对?重新启动,发现db_cache_size还是原来的23M,不是24M
4.把spfile的文件名原改回来.记录了时间,发现alter system set db_cache_size=23M scope=both时,并没有对spfile进行读写,因为此文件的修改日期没有改变.
5.再试一次:alter system set db_cache_size=15M  scope=both,终于变了spfile的修改日期
总结:当范围是scope=both时,会修改到memery中,但是不一定会修改到spfile中,是否修改与粒度有关,假如我的机器中的一个粒度大小为4M,则在4M范围内改变时,真正的值是不变的.也就是也只有修改量的幅度大于4M时,才会去修改到spfile.
提示:scope=both是默认选项,也就是alter system set db_cache_size=24M scope=both与alter system set db_cache_size=24M的结果是一样的.