oracle中的SGA和PGA

一、SGA(system global area )

SGA可以认为是instance中的全局共享区,Instance是由SGA和processes(进程)组成。


官方文档中的解释:
     A system global area (SGA)(系统全局区) is a group of shared memory structures that contain
data and control information for one Oracle database instance(实例). If multiple users areconcurrently connected to the same instance, then the data in the instance's SGA is sharedamong the users. Consequently(因此), the SGA is sometimes called the shared global area(共享全局区).

     An SGA and Oracle processes constitute(构成) an Oracle instance. Oracle automaticallyallocates(分配) memory for an SGA when you start an instance, and the operating systemreclaims(收回) the memory when you shut down the instance. Each instance has its own SGA.

     The SGA is read/write. All users connected to a multiple-process database instance can readinformation contained within the instance's SGA, and several processes write to the SGA during execution of Oracle.

查看SGA:

    SQL>show parameter sga
    SQL>show sga
    SQL>select * From v$sga;

二、PGA(Process Global Area 或Private Global Area )

      PGA可以认为是为连接上数据库的用户开的一个私有内存区。PGA包含一个服务进程的数据和控制信息,在一个服务进程启动时创建

     1 查看PGA
        show parameter pga;

        

2 修改PGA
         alter system set pga_aggregate_target=90M scope=both;



 

其中:
    pga_aggregate_target是一个动态参数,可以在运行时修改,因此这里的scope设置为both,新的内存大小马上生效,并且还将修改保存在Oracle的启动文件里。

### Oracle 数据库中调整 SGA PGA 参数的方法及最佳实践 #### 方法概述 在 Oracle 数据库中,SGASystem Global Area) PGA(Program Global Area)是两个重要的内存结构。SGA 是共享内存区域,用于存储数据缓冲区、重做日志缓冲区其他全局资源;而 PGA 则是非共享内存区域,主要用于会话私有数据工作区分配。 为了优化性能并合理利用硬件资源,可以采用手动或自动方式来配置这些参数。推荐的方式是启用 **自动内存管理** 功能,通过设置 `MEMORY_TARGET` 参数简化内存管理动态调整[^1]。 如果需要更精细控制,则可以通过显式定义以下参数实现: - 对于 SGA 的最小值,可使用 `SGA_TARGET` 参数。 - 对于 PGA 的最小值,可通过 `PGA_AGGREGATE_TARGET` 参数进行设定。 此外,在某些情况下可能还需要进一步微调具体的 PGA 工作区参数,例如 `SORT_AREA_SIZE`, `HASH_AREA_SIZE`, 或者 `BITMAP_MERGE_AREA_SIZE` 等,这通常适用于未开启自动内存管理模式的情况[^2]。 对于 ORACLE 19c 版本及其后续版本而言,当遇到 PGA 使用率过高或者频繁触发警告时,应仔细检查当前的工作负载特性以及是否存在异常的大查询操作,并适当增加 `PGA_AGGREGATE_TARGET` 值以缓解压力[^3]。 #### 实现代码示例 以下是针对不同场景下调整 SGA PGA 参数的具体 SQL 示例命令: ```sql -- 启用自动内存管理模式 (推荐) ALTER SYSTEM SET MEMORY_MAX_TARGET = '8G' SCOPE=SPFILE; ALTER SYSTEM SET MEMORY_TARGET = '6G' SCOPE=SPFILE; -- 手动指定 SGA PGA 最小目标值 ALTER SYSTEM SET SGA_TARGET = '4G' SCOPE=SPFILE; ALTER SYSTEM SET PGA_AGGREGATE_TARGET = '2G' SCOPE=SPFILE; -- 如果关闭了自动内存管理功能,需单独调节各子组件大小 ALTER SYSTEM SET DB_CACHE_SIZE='2G' SCOPE=BOTH; -- 调整 Buffer Cache 大小 ALTER SYSTEM SET SHARED_POOL_SIZE='1G' SCOPE=BOTH; -- 修改 Shared Pool 容量 -- 微调特定 PGA Work Areas 参数(仅限非 AMM 场景) ALTER SESSION SET SORT_AREA_SIZE = 52428800; -- 单位字节,默认单位为 BYTES ``` 以上脚本中的数值仅为示意,请依据实际环境需求做出相应更改后再执行上述语句。 --- #### 注意事项 需要注意的是,任何关于内存参数的重大变更都应在测试环境中充分验证其效果之后再推广到生产系统上实施。另外还要考虑到操作系统层面可用物理 RAM 总量以及其他运行进程所占用的份额等因素综合考量最终决策。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值