Oracle10g内存结构之排序区和Java池的相关知识简介

之前我们介绍了:Oracle 10g内存结构之共享池的相关知识及使用简介,本文我们接着介绍一下剩余的部分,包括:程序全局区排序区Java池等的相关知识,接下来我们就开始介绍这部分内容。

成都创新互联公司专注于企业营销型网站建设、网站重做改版、东平网站定制设计、自适应品牌网站建设、H5建站电子商务商城网站建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为东平等各大城市提供网站开发制作服务。

程序全局区

程序全局区是包含单个用户或服务器数据和控制信息的内存区域。程序全局区是用户进程连接到oracle数据库并创建一个会话时,由oracle自动分配的。与sga不同,pga 并非共享区,主要用于用户在编程时存储变量和数组。该区域中 STACK SPACE 是用于存储用户会话的变量和数组的存储区域,USER SESSION DATA 是用户会话使用的附加区域。用户会话结束pga 释放。

排序区

Sort  Area 是为有排序请求的sal 语句提供内存空间,系统使用专用的内存区域进行数据排序,这部分空间就称为排序区,用户数据的排序可以分为两个一个是内存排序区,另外一个是磁盘临时段。系统优先使用内存排序区进行排序。如果内存不够,oracle自动使用磁盘临时段表空间进行排序。

要了解排序区的大小,可以查看 sort_area_size 方法如下:

参数文件:

 
 
 
  1. ….
  2. Compatible = 8.1.0
  3. Sort_area_size = 65536
  4. Sort_area_retained_size = 65536
  5. …..

方法二:

 
 
 
  1. SQL>select name,value from v$parameter where name like ‘%size’;

方法三:

 
 
 
  1. SQL> show parameter sort_area_size

如果要了解数据库中排序区的使用情况,确认在内存排序量与磁盘排序量,可以查询数据字典v$sysstat

SQL> select name,value from v$sysstat where name like ‘%sort%’;

大池

大池(large pool)用于数据库备份工具—恢复管理器(rman)

大池的参数由large_pool_size 确定。

查询该值的方法有三,这里介绍其中一个方法:

SQL> show parameter large_pool_size

Java 池

参数java_pool_size  大小应该不小于20M。

Oracle10g自动共享内存管理

在oracle 中 将参数STSTISTICS_LEVEL 设置为 TYPICAL(默认)或ALL,使用新参数SGA_TARGET 指出SGA内存分配总大小即可,不需要定义SHAR_POOL_SIZE DB_CACHE_SIZE 等参数,数据库服务器会自动根据需要动态分配。 注意如果没有sga_targe ,则自动共享内存管理功能被禁止,仍然可以设置每个参数。在设置了SGA_TARGET 后,其他参数默认设置为0。

自动恭喜内存管理时设置内存参数的最小值限制:如果数据库管理员了解某一个应用所需的内存大小,就可以为内存组件指定最小值。最小值可以用相应的参数进行设置,例如:

 
 
 
  1. SGA_TARGET= 256m
  2. SHARE_POOL_SIZE= 32M
  3. DB_CACHE_SIZE = 100M

即在自动分配时,共享池及数据缓冲区的值不得小于32m 和 100m ,其余的124m 内存将分配给其他组件。可以查询数据字典 v$sga_dynamic_components 了解各个组件的分配值。

当启动自动共享内存管理的功能后,对于自动设置的参数也可以手动设置,例如SHARE_POOL_SIZE 如果为sga 组件参数设置了比较小的值,则不会立即起作用,例如:如果设置参数SGA_TARGET = 512M ,SHARE_POOL_SIZE = 256M 而当前共享池为284M,如果dba 动态减少SHARE_POOL_SIZE的值,使之低于256M或更低的值时将不起作用。如果参数值超过当前组件值,则组件的值也随之增加,如果SHARE_POOL_SIZE的值为300M,则共享池增加到300M。

在自动管理内存时,当参数的取值增加时,则用于自动调整地额外内存就减少,反之亦然。

此外,一些sga参数必须由数据库管理员设置,系统将不进行自动调整。这些参数包括:

  •  LOG_BUFFER
  •  DB_KEEP_CACHE_SIZE
  •  DB_RECYCLE_CACHE_SIZE
  •  DB_nK_CACHE_SIZE
  •  STREAMS_POOL_SIZE

这些参数设置后将影响到其他参数的自动分配,(可用内存变化)。

手动内存管理转到自动内存管理

如果要从手动内存管理转到自动内存管理,只需要增加参数SGA_TARGET即可。首先,计算出SGA各个参数的取值,再加上16M(fixed SGA overhead),即可得到SGA总大小。然后从参数文件中将内存各个组件的值取消。例如:

  •  SHARE_POOL_SIZE = 256M
  •  DB_CACHE_SIZE = 512M
  •  LARGE_POOL_SIZE = 256M
  •  LOG_BUFFER  = 16M

 则SGA_TARGET = 256+512+256+16+16 =1056M,也可以查询数据字典得到:

 
 
 
  1. SQL> select ( ( select sum(value) from v$sga ) – (select current_size from v$ sga_dynamic_free_memory ) ) “sga_target” from dual;

又例如:如果一个手动管理的实例SGA_MAX_SIZE = 1200M 其中

 
 
 
  1. SHARE_POOL_SIZE = 200M
  2. DB_CACHE_SIZE = 500M
  3. LARGE_POOL_SIZE = 200M

查询结果如下:

 
 
 
  1. SQL> select sum(value) from v$sga  ;  结果为1200m
  2. SQL> select current_size from v$sga_dynamic_free_memory ;  

结果为208M。

则SGA_TARGET =1200 – 208 = 902M。

从参数文件取消SHARE_POOL_SIZE DB_CACHE_SIZE LARGE_POOL_SIZE

在自动内存管理方式下,如果数据库适用spfile ,那么数据库关闭后,系统激昂上一次数据库关闭时的状态记录下来,经过调整后的内存参数的各个组件的值将保存在参数文件中,所以如果使用自动内存管理,最好使用spfile。

关于Oracle 10g内存结构之排序区和Java池的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获。

本文名称:Oracle10g内存结构之排序区和Java池的相关知识简介
网址分享:http://www.mswzjz.com/qtweb/news30/206680.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联