oracle中增加pga和sga


修改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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM