1. 首页
  2. oracle存储过程实例详解(Oracle内存管理方式)

oracle存储过程实例详解(Oracle内存管理方式)

简介:关于oracle存储过程实例详解(Oracle内存管理方式)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于技术大全及相关资讯,可以多多关注茶馆百科网。

Oracle内存管理可以分为两大类,自动和手动。手动内存管理可分为自动共享内存管理、手动共享内存管理、自动PGA内存管理和手动PGA内存管理。本文简要概述了不同的内存管理选项以及如何启用它们。

在工作中,我发现很多客户的数据库设置都是通过运维操作的。特别是,大部分内存调整是由操作和维护完成的。但是,运维人员不知道如何设置数据库内存,甚至不知道这些参数是用来做什么的。对于大多数运维人员来说,只要有百度,他们就敢改变参数。所以很多时候运维设置的参数实际上对系统的运行有很大的调整余地。

您将了解Oracle的内存管理方法以及如何启用它们,还将了解如何分配内存。

自动内存管理

“Automatic memory Management”为“AutomaticMemory Management”。Oracle自动管理SGA和PGA。如果我们想要启用自动内存管理,我们所需要做的就是设置MEMORY_TARGET和MEMORY_MAX_TARGET。

MEMORY_TARGET用于设置Oracle将尝试稳定内存的目标内存大小。如果修改MEMORY_TARGET,则不需要重新启动数据库。

MEMORY_MAX_TARGET用于设置允许的最大内存大小,Oracle使用该值来限制最大内存使用量。如果修改此参数,需要重新启动数据库。

在修改上述两个值时,请注意MEMORY_MAX_TARGET必须大于或等于MEMORY_TARGET。

使用实例调整内存。

ALTER SYSTEM SETMEMORY_MAX_TARGET=1000M SCOPE=SPFILE;

ALTER SYSTEM SET MEMORY_TARGET=1000MSCOPE=SPFILE;

按上述顺序:

SCOPE为修改范围。有三个值:SPFILE、BOTH和MEMORY

SPFILE:修改服务器参数文件中的数据。

MEMORY:修改内存中的数据。对于重启数据库后才生效的参数,此值不存在

BOTH:同时修改服务器参数文件和内存中的数据。

什么时候使用自动内存管理

当SGA+PGA的总内存小于等于4GB时,Oracle官方推荐进行内存自动管理。如果您的SGA+PGA大于4G,并且使用内存自动管理,则建议设置“SGA_TARGET”和“PGA_AGGREGATE_TARGET”的值。那么这些值就是SGA和PGA的最小值。这个设置主要是为了避免过度的内存抖动。

0

SGA_TARGET用于设置共享内存目标大小。Oracle试图为共享内存维护这个目标值。如果修改此参数,则不需要重新启动数据库。

SGA_MAX_SIZE用于设置允许的最大共享内存大小。Oracle使用此参数来限制最大共享内存大小。如果更改此参数,则需要重新启动数据库。

注意,在修改上述两个值时,SGA_MAX_SIZE必须大于或等于SGA_TARGET。

使用实例调整内存。

ALTER SYSTEM SET SGA_TARGET=1000M SCOPE=SPFILE;

ALTER SYSTEM SET SGA_MAX_SIZE=1000MSCOPE=SPFILE;

ALTER SYSTEM SETMEMORY_MAX_TARGET=0 SCOPE=SPFILE;

ALTER SYSTEM SET MEMORY_TARGET=0SCOPE=SPFILE;

按上述顺序:

SCOPE为修改范围。有三个值:SPFILE、BOTH和MEMORY

SPFILE:修改服务器参数文件中的数据。

MEMORY:修改内存中的数据。对于重启数据库后才生效的参数,此值不存在

BOTH:同时修改服务器参数文件和内存中的数据。

何时使用自动共享内存管理

建议SGA+PGA总容量大于4GB,并支持自动共享内存管理。如果启用了自动共享内存管理,Oracle将自动调整SGA组件的大小,而无需干预。但是,如果我们知道每个组件在高峰时段使用了多少这些值,那么我们也可以为这些组件设置指定的值,这些值将作为组件的最小值。这避免了在高峰时段不必要的内存调整

自动共享内存管理

手动共享内存管理手动共享内存管理如果需要手动管理共享内存,必须先关闭内存自动管理和共享内存自动管理。因此MEMORY_TARGET和SGA_TARGET都必须设置为0。其他组件的值也需要手工设置

DB_CACHE_SIZE:用于缓存数据的缓冲区cache。大缓存将减少对磁盘的读写次数。因此,缓冲区缓存的大小将对性能产生重大影响。

SHARED_POOL_SIZE:存储多种类型数据的共享池,如解析SQL、PL/SQL代码、数据字典、查询结果集缓存等。因此,在多用户环境中,大型共享池对提高性能也非常有帮助。

LARGE_POOL_SIZE:大池是可选组件。一般用于备份进程、并行执行等。

JAVA_POOL_SIZE:从其中分配JAVA代码所需的内存的JAVA池。

STREAMS_POOL_SIZE:流池,存储缓冲队列消息的内存池。

什么时候使用手动共享内存管理

不建议手动管理共享内存。首先,您需要很好地理解内存参数。其次,您必须很好地理解系统每个阶段的内存使用情况。而且由于每个组件使用的内存量在不同时间可能会有很大差异,这大大增加了管理成本。因此,不建议手动管理共享内存。

手动共享内存管理

自动PGA内存管理自动PGA内存管理当使用自动PGA内存管理时,Oracle会自动管理以PGA为例的内存量。我们可以通过将初始化参数PGA_AGGREGATE_TARGET设置为非零值来开启自动PGA内存管理。Oracle试图确保分配给所有数据库服务器进程和后台进程的PGA内存总量不超过这个目标,但在实际使用时可能会超过这个设置。当我们使用自动PGA内存管理时,会自动调整SQL工作空间的大小,并且忽略所有*_AREA_SIZE初始化参数

建议使用PGA内存自动管理

自动PGA内存管理

Manual PGA Memory Management Manual PGA Memory Management当内存自动管理关闭,且“PGA_AGGREGATE_TARGET”设置为0时,启用手动PGA内存管理。当使用手动PGA内存管理时,这意味着您需要手动设置*_AREA_SIZE初始化参数。

不建议手动管理PGA内存

手动PGA内存管理

内存自动管理或共享内存自动管理+ PGA内存自动管理。在分配内存时,通常的做法是分配机器总内存的50%到75%。例如,如果机器内存为128 GB,则SGA+PGA将分配64 GB到96 GB。重要的是要注意,50%到75%是一般值,而不是绝对值。如果机器只有4 gb的内存,那么50%的分配是必要的,但是如果机器有512 gb的内存,75%的分配仍然会为只使用数据库的机器留下大量未使用的内存。

SGA需要多大的规模?PGA到底需要多大的规模?一般情况下,可以先确定PGA的大小,然后再将剩余的内存分配给SGA。如果您的系统有很多并发访问,那么PGA分配需要更高,如果您的系统有非常少的并发访问。那么几百兆的PGA就足够了。任何剩余的内存都可以分配给SGA。

本文主要介绍了关于oracle存储过程实例详解(Oracle内存管理方式)的相关养殖或种植技术,栏目还介绍了该行业生产经营方式及经营管理,关注发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解技术怎么管理的要点,是您致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/1579953.html