sga_target
是动态参数,可以调整后马上生效的
但是前提是当前分配的 sga_max_size 下必须能够承载分配的内存量
这个参数的值只有 0 和非零两种选择,非零时时和 sga_max_size 大小保持一致的
所以如果要吧 sga_target 改成大于 sga_max_size 的值就必须按照静态参数的改法,重新启动实例
重启后默认的 sga_max_size 会自动调整到和 sga_target 一样大小的
---------------------
版本
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release10.1.0.2.0 - Prod
PL/SQL Release 10.1.0.2.0 - Production
CORE 10.1.0.2.0 Production
TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
NLSRTL Version 10.1.0.2.0 - Production
使用 spfile
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
spfile string F:\ORACLE\PRODUCT\10.1.0\DB_1\
调整前
SQL> set wrap off
SQL> set linesize 159
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 300M
sga_target big integer 0
调整为小于 sga_max_size 值
SQL> alter system set sga_target=200m;
System altered.
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 300M
sga_target big integer 300M
调整为大于 sga_max_size 值
SQL> alter system set sga_target=500m;
alter system set sga_target=500m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00823: Specified value of sga_target greater than sga_max_size
按照静态参数的方式调整
SQL> alter system set sga_target=500m scope=spfile;
System altered.
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 300M
sga_target big integer 300M
重启验证
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 789672 bytes
Variable Size 145486680 bytes
Database Buffers 377487360 bytes
Redo Buffers 524288 bytes
Database mounted.
Database opened.
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 500M
但是前提是当前分配的 sga_max_size 下必须能够承载分配的内存量
这个参数的值只有 0 和非零两种选择,非零时时和 sga_max_size 大小保持一致的
所以如果要吧 sga_target 改成大于 sga_max_size 的值就必须按照静态参数的改法,重新启动实例
重启后默认的 sga_max_size 会自动调整到和 sga_target 一样大小的
---------------------
版本
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release10.1.0.2.0 - Prod
PL/SQL Release 10.1.0.2.0 - Production
CORE 10.1.0.2.0 Production
TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
NLSRTL Version 10.1.0.2.0 - Production
使用 spfile
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
spfile string F:\ORACLE\PRODUCT\10.1.0\DB_1\
调整前
SQL> set wrap off
SQL> set linesize 159
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 300M
sga_target big integer 0
调整为小于 sga_max_size 值
SQL> alter system set sga_target=200m;
System altered.
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 300M
sga_target big integer 300M
调整为大于 sga_max_size 值
SQL> alter system set sga_target=500m;
alter system set sga_target=500m
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-00823: Specified value of sga_target greater than sga_max_size
按照静态参数的方式调整
SQL> alter system set sga_target=500m scope=spfile;
System altered.
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 300M
sga_target big integer 300M
重启验证
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 789672 bytes
Variable Size 145486680 bytes
Database Buffers 377487360 bytes
Redo Buffers 524288 bytes
Database mounted.
Database opened.
SQL> show parameter sga
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 500M
sga_target big integer 500M