[分享]oracle之SGA/PGA简介_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2692 | 回复: 1   主题: [分享]oracle之SGA/PGA简介        下一篇 
arlen1990
注册用户
等级:上士
经验:276
发帖:7
精华:0
注册:2015-1-27
状态:离线
发送短消息息给arlen1990 加好友    发送短消息息给arlen1990 发消息
发表于: IP:您无权察看 2015-1-28 15:52:59 | [全部帖] [楼主帖] 楼主

oracle之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)    操作        顶端 
yaoxia.wu
注册用户
等级:中校
经验:2318
发帖:53
精华:1
注册:1970-1-1
状态:离线
发送短消息息给yaoxia.wu 加好友    发送短消息息给yaoxia.wu 发消息
发表于: IP:您无权察看 2015-1-30 21:57:27 | [全部帖] [楼主帖] 2  楼

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

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



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论