標籤:one max ssi family 模式 修改 10g ram 為我
修改oracle資料庫SGA和PGA大小
SGA的大小:一般實體記憶體20%用作作業系統保留,其他80%用於資料庫。
SGA普通資料庫可以分配40%-60%之間,PGA可以分配20%-40%之間。
1、以system的身份登入
並查看SGA資訊:
SQL>show parameter sga;
查看PGA資訊:
SQL>show parameter pga;
2、修改sga_target
SQL>alter system set sga_target=436M;
3、修改sga_max_size
SQL> alter system set sga_max_size=436M scope=spfile;
www.2cto.com
4、重啟資料庫使其生效:
SQL>shutdown immediate;
注意,重啟前一定先完成上述兩部操作,且sga_target不得大於sga_max_size,一般保持兩者相等。否則可能導致資料庫無法啟動。
SQL>startup
5、查看SGA是否生效:
SQL>show parameter sga
NAME TYPE VALUE
------------------------------------ ----------- -----
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 436M
sga_target big integer 436M
6,查詢PGA大小
SQL> show parameter workarea
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 90M
pga_aggregate_target預設特別小隻90M
當然太小了,因為我們當前使用的是非生產環境,90M無所謂,因為我們沒有什麼串連,到底需要滿足多少串連到底該設多大呢
一般是實體記憶體的80%*20%是16%,一般生產裡面都是16G的空間,16G*16% = 2.56G 接近3G給pga
_pga_max_size參數:是每一個會話能夠分配的最大空間的數量,這個值不是固定的
SQL>select ksppinm "Name", ksppstvl/1024/1024 ||‘M‘ "Value", ksppdesc "Desc" from x$ksppi x, x$ksppcv y where x.indx = y.indx and ksppinm =‘_pga_max_size‘;
結果
Name Value Desc
------------- ------ --------------------------------------------------
_pga_max_size 200M Maximum size of the PGA memory for one process
從結果看這個參數是200M(預設值),也就是對每個session來講最大隻能分200M,對當前來講每個session最多在pga空間只能分200M
7,修改PGA的自動管理方式和大小
SQL> alter system set workarea_size_policy=auto scope=both;
SQL> alter system set pga_aggregate_target=3072m scope=both;
修改後重啟資料庫。
線上oracle資料庫建議記憶體修改方式:
1),系統總記憶體:64G
2),目前資料庫使用記憶體:
sga:2G
pga:90M
3),建議調整後的大小:
sga:30G
pga:10G
4),查看具體參數:
SQL> show parameter sga; --------------查看sga的地區大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 2G
sga_target big integer 2G
SQL> show parameter pga; --------------查看pga的預設區域大小
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 90M
SQL> show parameter workarea; ----------查看oracle記憶體地區的工作方式(確保是在自動的模式下)
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
workarea_size_policy string AUTO
5),修改參數:
SQL> alter system set sga_max_size=30720M scope=spfile; ---------------先修改最大pga的大小
SQL> shutdown immediate;----------- 重啟,使得以上的修改生效
SQL> startup
SQL> alter system set sga_target=30720M; --------- 接著修改sga的大小(該大小不能超過以上設定的最大的pga的大小。否則報錯)
SQL> alter system set pga_aggregate_target=10240M scope=both;
SQL> shutdown immediate;----------- 重啟,使得以上的修改生效
SQL> startup
6),查看修改後的效果
SQL> show parameter sga;
SQL> show parameter pga;
oracle中增加pga和sga