今天在調節sga大小的時候遇到了一個報錯sql
SQL> alter system set sga_target=600 scope=both; alter system set sga_target=600 scope=both * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-00827: could not shrink sga_target to specified value
首先看一下數據庫相關配置數據庫
SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 600M sga_target big integer 600M SQL> show parameter memory NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ hi_shared_memory_address integer 0 memory_max_target big integer 0 memory_target big integer 0 shared_memory_address integer 0
很明顯能夠看出來這是一個asmm下的oracle,難道以前不能調節是由於動態或者靜態的關係,而後作了如下實驗oracle
SQL> alter system set sga_target=700 scope=spfile; System altered
結果發現果真是隻能夠在spfile中修改,重啓後生效,但是後來我繼續作實驗發現一個頗有趣的事情
ide
SQL> alter system set sga_target=400M scope=both; System altered.
這是爲何呢,爲何這個sga如今又能夠在both裏面能夠用了呢,查閱文檔發現一個原來10g以前是不能夠調節sga_target的大小的,可是以後出現了一個參數sga_max_size,這個參數讓sga_target能夠真正的本身調節,只要在sga_max_size如下,全部的sga_target是能夠靜態或者動態自動調節的。
spa