關於ISSYS_MODIFIABLE影響修改:
當修改參數時,可以指定範圍,是修改到spfile,還是內存中.還是全部修改.
alter system set parameter name=parameter value scope=both|memery|spfile
ISSYS_MODIFIABLE IMMEDIATE 修改後立即生效
FALSE 修改後重啓後生效
DEFERRED 會話重連後生效
當修改的參數ISSYS_MODIFIABLE=FALSE時,必須要scope=spfile,否則報錯,如下:
關於粒度大小影響修改:
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的結果是一樣的.