zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    HTML 笔记
    JavaScript 学习笔记
    对近期的一些总结
    【 Java 】手速手速~
    【 Java 】 简易交通灯
    【 Art 】小心心~
    scala 标识符案例
    scala 基础类型
    scala 类、字段、方法
    scala 列表
  • 原文地址:https://www.cnblogs.com/kaishirenshi/p/7615769.html
Copyright © 2011-2022 走看看