`

Oracle 内存参数设置

 
阅读更多

Oracle 在9i版本之前,需要对内存参数手动设置,由于系统的负载是动态变化的,很难设置一个合适的值。

在Oracle9i版本之后,有了自动内存管理的功能,大大方便了DBA的工作。只要对PGA,SGA,Log_buffer 三个参数值设置好,Oralce会根据系统的负载动态平衡各个参数的设置。

如何设置PGA的参数:

在Oracle EM 内存参数页面,可以查看Oracle 对于PGA的建议,这是Oracle对当前时间以来系统的负载预估出来相应的PGA及对当前系统的性能的提高比例。

也可以通过查询下面的表

SELECT PGA_TARGET_FOR_ESTIMATE / 1024 / 1024,
       PGA_TARGET_FACTOR,
       BYTES_PROCESSED, --TOTAL BYTES PROCESSED BY ALL THE WORK AREAS CONSIDERED BY THIS ADVICE (IN BYTES)
       ESTD_EXTRA_BYTES_RW, --  ESTIMATED NUMBER OF EXTRA BYTES WHICH WOULD BE READ OR WRITTEN IF PGA_AGGREGATE_TARGET WAS SET TO THE VALUE OF THE PGA_TARGET_FOR_ESTIMATE COLUMN.
       ESTD_PGA_CACHE_HIT_PERCENTAGE, --预计CACHE数据的命中率,计算公式 BYTES_PROCESSED / (BYTES_PROCESSED + ESTD_EXTRA_BYTES_RW)
       ESTD_OVERALLOC_COUNT --若非0,则意味着PGA不够大,不能够去处理工作区域的工作量
  FROM V$PGA_TARGET_ADVICE
 ORDER BY PGA_TARGET_FOR_ESTIMATE

-------------------------------------------------------------------------------------------------------------------------

设置SGA:

在Oracle EM 内存参数页面,可以查看Oracle 对于SGA的建议,这是Oracle对当前时间以来系统的负载预估出来的相应的PGA及对当前系统的性能的提高比例。

也可以通过查询下面的表

SELECT SGA_SIZE, --SGA的大小
       SGA_SIZE_FACTOR, --以当前sga为比重,每个sga size的比例
       ESTD_DB_TIME, --所有session活动时间的总和,内存越大,相对处理的时间就越短
       ROUND(100 * ((1 - A.ESTD_DB_TIME_FACTOR) / 1), 2), --针对当前的SGA改善的百分比
       ESTD_PHYSICAL_READS --预计物理读
  FROM V$SGA_TARGET_ADVICE A
 ORDER BY SGA_SIZE;
-----------------------------------------------------------------------------------------------------------------------

设置log buffer

一般情况下不用设置这个值,默认值即可,oracle的LGWR会频繁的把此缓存的内容写入磁盘。

------------------------------------------------------------------------------------------------------------------------

SGA 的结构:

1.DATA BUFFER CACHE --数据缓存,读取数据须先把磁盘的数据写入此块区域(*)
--SHOW PARAMETER DB_CACHE_SIZE
2.SHARED POOL--共享池
  A.LIBRARY CACHE --解析过的SQL存放的区域
     A1.解析SQL
     A2.解析PLSQL
  B.DICTIONARY CACHE --数据字典的缓存区域,提高解析SQL的性能
--SHOW PARAMETER SHARED_POOL_SIZE
3.LOG BUFFER--日志缓存,后由LGWR进程写入磁盘(*)
--SHOW PARAMETER LOG_BUFFER
4.JAVA POOL
--SHOW PARAMETER JAVA_POOL
5.LARGE POOL --RMAN或者共享连接模式会用到
6.STREAM POOL --9.2以后的流复制会用到

 

其中对ORALCE 影响比较大的三个部分
1.DB CACHE SIZE
2.SHARE POOL
3.LOG BUFFER 

 

SELECT * FROM V$SGA_DYNAMIC_COMPONENTS--SGA的五个参数可以通过这个视图查看

------------------------------------------------------------------------------------------------------------------------------

以下内容来至于Oracle 编程艺术的摘抄:

PGA的设置
WORKAREA_SIZE_POLICY:这个参数可以设置为MANUAL或AUTO,如果是MANUAL,会使用排序区和散列区大小参数来控制分配的内存量;
如果是AUTO,分配的内存量会根据数据库中的当前工作负载而变化。默认值是AUTO,这也是推荐的设置
假设WORKAREA_SIZE_POLICY设置为AUTO,PGA_AGGREGATE_TARGET有一个非0值,就会使用这种新引入的自动PGA内存管理


1.PGA_AGGREGATE_TARGET是一个上限目标,而不是启动数据库时预分配的内存大小。可以把PGA_AGGREGATE_TARGET设置为一个超大的值(远远大于服务器上实际可用的物理内存量),
你会看到,并不会因此分配很大的内存

2.串行(非并行查询)会话会使用PGA_AGGREGATE_TARGET中的很少一部分,大约5%或者更少。所以,如果把PGA_AGGREGATE_TARGET设置为100 MB,可能每个工作区(例如,排序或散列工作区)只会使用大约不到5 MB。
你的会话中可能为多个查询分配有多个工作区,或者一个查询中就有多个排序/散列操作,但是不论怎样,每个工作区只会用PGA_AGGREGATE_TARGET中不到5%的内存。

3.随着服务器上工作负载的增加(可能有更多的并发查询和更多的并发用户),分配给各个工作区的PGA内存量会减少。数据库会努力保证所有PGA分配的总和不超过PGA_AGGREGATE_TARGET设置的阈值。这就像有一位DBA整天坐在控制台前,
不断地根据数据库中完成的工作量来设置SORT_AREA_SIZE和HASH_AREA_SIZE参数。稍后会通过一个测试来观察这种行为。

4.一个并行查询最多可以使用PGA_AGGREGATE_TARGET的30%,每个并行进程会在这30%中得到自己的那一份。也就是说,每个并行进程能使用的内存量大约是0.3*PGA_ AGGREGATE_TARGET / (并行进程数)


Oracle建议使用自动管理pga,当不想使用自动自动模式,可以使用alter session 命令,充分利用所有可用的资源。

---------------------------------------------------------------------------------------------------------
SGA 内存管理
要使用自动SGA内存管理,参数STATISTICS_LEVEL必须设置为TYPICAL或ALL。如果不支持统计集合,数据库就没有必要的历史信息来确定大小。

采用自动SGA内存管理时,确定自动调整组件大小的主要参数是SGA_TARGET,这个参数可以在数据库启动并运行时动态调整,
最大可以达到SGA_MAX_SIZE参数设置的值(默认等于SGA_TARGET,所以如果想增加SGA_TARGET,就必须在启动数据库实例之前先把SGA_MAX_SIZE设置得大一些)。

 

 

分享到:
评论

相关推荐

    Oracle 19c参数设置最佳实践 .xlsx

    oracle 19c数据库参数优化最佳实践

    Oracle数据库参数设置技术手册

    Oracle数据库参数设置技术手册的主要内容包括 Oracle内存结构概述、常用参数说明、数据库参数设置技术等。 数据库参数设置技术手册的目的是为了帮助数据库管理员更好地管理 Oracle数据库,提高数据库性能,避免...

    ORACLE数据库参数设置技术手册

    Oracle内存结构包括SGA(System Global Area)和PGA(Program Global Area),它们是数据库运行时存储数据和控制信息的关键区域。了解这些内存组件的工作原理和大小设置对整体性能至关重要。 4.1 BUFFER_POOL_KEEP...

    oracle学习(内存参数设置)

    Oracle 学习(内存参数设置) oracle学习(内存参数设置)是指在Oracle数据库中设置内存参数来优化数据库性能的过程。Oracle数据库的内存结构主要由SGA(System Global Area)和PGA(Private Global Area)组成。...

    oracle内存分配与调整

    #### 二、Oracle内存参数设置与调整策略 ##### 1. SGA参数设置 - **shared_pool_size**:控制共享池的大小,用于存储SQL语句、PL/SQL代码等,合理的设置可以减少重解析次数,提升数据库性能。 - **db_cache_size**...

    Oracle内存参数调优技术详解

    Oracle 内存参数调优技术详解 Oracle 内存参数调优技术是指在 Oracle 实例中调整内存参数以提高数据库性能的技术。 Oracle 实例由内存结构和进程结构两部分组成。内存结构包括 SGA(系统全局区)和 PGA(程序全局区...

    linux下oracle参数设置

    ### Linux 下 Oracle 参数设置详解 #### 一、引言 在 Oracle 数据库的部署过程中,合理的操作系统内核参数设置对于确保数据库性能至关重要。虽然 Oracle 官方提供了不同平台下的数据库安装指南,其中包含了一些系统...

    Oracle 内存配置

    #### 五、Oracle内存参数设置 对于Oracle 10g R2版本来说,常见的内存相关参数包括但不限于: - **SGA_TARGET**:指定SGA的目标大小。 - **PGA_AGGREGATE_TARGET**:指定PGA的目标大小。 - **DB_CACHE_SIZE**:...

    减少Oracle内存占用

    ### 减少Oracle内存占用 在Windows XP环境下运行Oracle 10g时,可能会遇到数据库占用内存过高的问题。这不仅会影响系统的稳定性,还可能导致其他应用程序因可用内存不足而受到影响。本文将详细介绍如何通过合理设置...

    oracle数据库参数设置技术手册[借鉴].pdf

    Oracle数据库参数设置技术手册是IT领域中针对Oracle数据库性能优化的重要参考文档,尤其对软件开发人员来说,理解和正确设置这些参数对于提升系统性能、确保数据安全以及优化资源利用至关重要。以下将详细介绍部分...

    ORACLE内存参数调整.pptx

    1. **查看ORACLE内存参数**: 通过Oracle企业管理器(EM)可以查看和分析当前的内存配置。EM提供了一个图形界面,允许管理员监控和调整内存组件,如共享池、缓冲区高速缓存、大池和PGA。 2. **主要内存参数**: -...

    oracle参数设置.doc

    方案一描述了一个适用于32位服务器的Oracle内存配置方法: 1. 创建pfile(初始化参数文件):通过`CREATE PFILE FROM SPFILE`命令生成pfile,或者复制现有的spfile并重命名为pfile,以方便编辑。 2. 修改pfile内容...

    Oracle内存分配与调整--大牛冯春培的一篇文章

    - **内存参数的设置**:合理设置SGA的各个组成部分的大小是非常关键的。例如,调整`db_cache_size`、`shared_pool_size`等参数可以显著提升性能。 - **内存自动管理**:自Oracle 10g起引入了自动SGA管理特性...

    Oracle数据库内存参数调优.pdf

    2. Oracle数据库内存参数设置 Oracle数据库的内存参数可以通过ALTER SYSTEM命令来设置。常见的内存参数包括: ①DB_CACHE_SIZE:设置数据库缓冲区的大小。 ②LOG_BUFFER:设置日志缓冲区的大小。 ③SHARED_POOL_...

    Oracle数据库内存参数调优技术的个人总结.txt

    在IT领域,尤其是在数据库管理与优化方面,Oracle数据库内存参数的调整是一项至关重要的技能。本文将根据提供的文件信息,深入探讨“Oracle数据库内存参数调优技术的个人总结”中的核心知识点,包括理解Oracle数据库...

    调整oracle内存及调整表空间大小方法

    ### 调整Oracle内存及调整表空间大小的方法 #### Oracle内存管理 Oracle数据库的内存管理对于确保数据库高效运行至关重要。内存配置不当可能导致性能下降甚至系统崩溃。在默认情况下,Oracle会根据系统的总内存自动...

    Oracle内存结构全面分析

    因此,合理配置内存参数以避免内存争用和过度交换是数据库管理员的重要任务。 总之,Oracle内存结构的全面分析涵盖了SGA、PGA和UGA的各个组成部分,以及如何通过参数调整和管理策略优化内存使用,以实现最佳的...

    oracle内存全面分析

    Oracle从10g版本开始引入自动内存管理,允许DBA通过设置SGA_TARGET和PGA_AGGREGATE_TARGET参数,让Oracle自动调整SGA和PGA的大小,简化内存管理。 2. Memory Advisor Oracle的Memory Advisor提供内存调优建议,...

Global site tag (gtag.js) - Google Analytics