oracle学习之体系结构2

sga和pga

    sga就是system global area,主要包括共享池、数据缓冲区、日志缓冲区三类。pga(program global area)和sga一样,也是开辟出来的内存区。两者的区别就是pga私有,而sga共享。pga在用户登录时候直接绑定各类会话、权限等信息,而且当排序时候也是在这个区域中进行的,但是当排序尺寸超出pga区域范围,就会占用临时表空间的大小。

    sga保留了许多缓存信息,可以打打提高sql语句的运行速度,每一次sql语句执行都会在sga的share pool里面生成一条记录,当下一次执行同一条语句时候直接从share pool里面调用执行计划等,而且当查询结果在sga的数据缓冲区内的时候,可以直接避免磁盘读取(physical reads),大大提高效率。

    那么,知道了pga和sga的基本信息,那么如何查看相关信息呢?

    通过常规show parameter sga、show parameter pga命令可以分别查看sga和pga分配的大小。当然我们也可以通过show parameter shared_pool_size和show parameter db_cache_size来分别查看共享池和缓冲池分配大小。调整sga值大小,可以通过alter system set sga_target=1000m scope=spfile,这时候scope后面的参数也是有讲究的,当以pfile启动时候,修改sga_target只能用memory,而修改sga_max_size时候只能用spfile,这时候就必须用spfile启动了。

    而sga、pga具体大小设置,一般oltp应用为内存*0.8*0.8(sga)、内存*0.8*0.2(pga);olap应用为内存*0.8*0.5(sga)、内存*0.8*0.5(pga);或者oltp sga=系统内存*70%*80% pga=sga*(10%-20%),olap sga=系统内存*80%*60%,pga=sga*(45%-65%)。


附:scope=memory代之只更改当前,重启失效

    scope=spfile代之只更改以后,当前无效

    scope=both更改当前和以后

    缺省值:当以spfile启动时候为both,以pfile启动时候为memory

    修改log_buffer和sga_max_size时只能scope=spfile

     

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值