Oracle关于内存参数及大页设置的相关概念和设置之Limits概念和配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle关于内存参数及大页设置的相关概念和设置之Limits概念和配置相关的知识,希望对你有一定的参考价值。

参考技术A 最近,对Linux大页的调整,所以重温了一些Linux内存及SGA等相关概念、参数和配置,这里进行一下记录,省的总Google.

limits.conf文件实际是Linux PAM(插入式认证模块,Pluggable Authentication Modules)中 pam_limits.so 的配置文件,突破系统的默认限制,对系统访问资源有一定保护作用。 limits.conf 和sysctl.conf区别在於limits.conf是针对用户,而sysctl.conf是针对整个系统参数配置。

limits.conf是 pam_limits.so的 配置文件,然後/etc/pam.d/下的应用程序调用pam_***.so模块。譬如说,当用户访问服务器,服务程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目 录下选择一个对应的服务文件,然後根据服务文件的内容选择具体的PAM模块进行处理。

格式为:

-c 指定修改core文件的大小,1000指定了core文件大小。也可以对core文件的大小不做限制,如: ulimit -c unlimited

对於需要做许多套接字连接并使它们处於打开状态的应用程序而言,最好通过使用ulimit -n,或者通过设置nofile参数,为用户把文件描述符的数量设置得比默认值高一些

maxlogins - 此用户允许登录的最大数目
注意:要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so

详细说明:

username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。

type:有 soft,hard 和 -,

soft 指的是当前系统生效的设置值。

hard 表明系统中所能设定的最大值。

soft 的限制不能比har 限制高。

用 - 就表明同时设置了 soft 和 hard 的值。
resource:

示例,若机器上部署了ORACLE数据库,我们需要对oracle用户的资源做下调整,如下:

要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:

--查看当前系统配置文件ulimit的全局配置

ulimit -a

如果未进行具体设置的话,会使用默认配置,如下查看:

批注:当使用*号让全局用户生效的时候,生效的nproc的值大小是受文件/etc/security/limits.d/90-nproc.conf中nproc值大小制约的,而如果仅仅是针对某个用户,那麽就不受该文件nproc值大小的影响。

Linux系统 /etc/security/limits.conf 配置

参考自
https://yq.aliyun.com/articles/434415
https://www.itread01.com/content/1501938140.html

使用自动内存管理

本节提供有关Oracle数据库的自动内存管理功能的背景信息,并包含有关启用此功能的说明。涵盖以下主题:

  • 关于自动内存管理
  • 启用自动内存管理
  • 监视和调整自动内存管理

关于自动内存管理


管理实例内存的最简单方法是让Oracle数据库实例为您自动管理和调整它。为此(在大多数平台上),只设置一个目标内存大小初始化参数(MEMORY_TARGET)和一个最大内存大小初始化参数(MEMORY_MAX_TARGET)。实例使用的内存总量基于MEMORY_TARGET的值保持相对恒定,并且实例在系统全局区域(SGA)和实例程序全局区域(实例PGA)之间自动分配内存。随着内存需求的变化,实例动态地在SGA和实例PGA之间重新分配内存。

如果未启用自动内存管理,则必须手动调整SGA和实例PGA的大小。

因为MEMORY_TARGET初始化参数是动态的,所以您可以随时更改MEMORY_TARGET,而无需重新启动数据库。 MEMORY_MAX_TARGET(不是动态的)用作上限,因此您不会意外地将MEMORY_TARGET设置得太高,并且为了在将来希望增加实例内存总量的情况下为数据库实例留出足够的内存。由于某些SGA组件无法轻易缩小或必须保持最小大小,因此该实例也会阻止您将MEMORY_TARGET设置得太低。

如果使用数据库配置助手(DBCA)创建数据库并选择基本安装选项,则会启用自动内存管理。如果选择高级安装,则数据库配置助手(DBCA)使您能够选择自动内存管理。

如果LOCK_SGA初始化参数为TRUE,则不能启用自动内存管理。有关此参数的信息,请参阅Oracle数据库参考。 

 

支持自动内存管理的平台

 

启用自动内存管理


如果您在创建数据库时未启用自动内存管理(通过选择DBCA中的适当选项或通过为CREATE DATABASE SQL语句设置适当的初始化参数),可以稍后启用它。启用自动内存管理包括关闭和重新启动数据库。

启用自动内存管理

  1. 启动SQL * Plus并以SYSDBA身份连接到数据库。
  2. 计算MEMORY_TARGET的最小值如下:
    a、通过输入以下SQL * Plus命令来确定SGA_TARGET和PGA_AGGREGATE_TARGET的当前大小:
    SHOW PARAMETER TARGET

     SQL * Plus会在参数名称中显示所有初始化参数的值和字符串TARGET。

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ----------------
    archive_lag_target                   integer     0
    db_flashback_retention_target        integer     1440
    fast_start_io_target                 integer     0
    fast_start_mttr_target               integer     0
    memory_max_target                    big integer 0
    memory_target                        big integer 0
    parallel_servers_target              integer     16
    pga_aggregate_target                 big integer 90M
    sga_target                           big integer 272M

    b、运行以下查询以确定自数据库启动以来分配的最大实例PGA:

    select value from v$pgastat where name=maximum PGA allocated;

     

    c、计算步骤b的查询结果和PGA_AGGREGATE_TARGET之间的最大值。将SGA_TARGET添加到此值。

    memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)

例如,如果SGA_TARGET是272M并且PGA_AGGREGATE_TARGET是90M,如上所示,并且如果分配的最大PGA被确定为120M,则MEMORY_TARGET应该至少为392M(272M + 120M)。

 

  3、选择您要使用的MEMORY_TARGET的值

    这可以是您在步骤2中计算出的最小值,或者如果有足够的物理内存可用,则可以选择使用较大的值。

  4、对于MEMORY_MAX_TARGET初始化参数,决定在可预见的将来您想要分配给数据库的最大内存量。也就是说,确定SGA和实例PGA大小之和的最大值。该数字可能大于或等于您在上一步中选择的MEMORY_TARGET值。

  5、执行以下操作之一:

    如果使用服务器参数文件启动Oracle数据库实例(如果使用数据库配置助手(DBCA)创建数据库时为缺省值),请输入以下命令:

ALTER SYSTEM SET MEMORY_MAX_TARGET = nM SCOPE = SPFILE;

 

    其中n是您在步骤4中计算的值。

    SCOPE = SPFILE子句仅在服务器参数文件中设置该值,而不是针对正在运行的实例。您必须包含此SCOPE子句,因为MEMORY_MAX_TARGET不是动态初始化参数。

    如果您使用文本初始化参数文件启动实例,请手动编辑文件以使其包含以下语句:

memory_max_target = nM
memory_target = mM

 

    其中n是您在步骤4中确定的值,m是您在步骤3中确定的值。

在文本初始化参数文件中,如果省略MEMORY_MAX_TARGET的行并包含MEMORY_TARGET的值,则数据库会自动将MEMORY_MAX_TARGET设置为MEMORY_TARGET的值。如果省略MEMORY_TARGET的行并包含MEMORY_MAX_TARGET的值,则MEMORY_TARGET参数默认为零。启动后,您可以动态地将MEMORY_TARGET更改为非零值,前提是它不超过MEMORY_MAX_TARGET的值。

  6、关闭并重新启动数据库。

  7、如果您使用服务器参数文件启动Oracle数据库实例,请输入以下命令:

ALTER SYSTEM SET MEMORY_TARGET = nM;
ALTER SYSTEM SET SGA_TARGET = 0;
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;

 

  其中n是您在步骤3中确定的值。

前面的步骤指示您将SGA_TARGET和PGA_AGGREGATE_TARGET设置为零,以便SGA和实例PGA的大小根据需要上下调整,不受限制。您可以省略将这些参数值设置为零的语句,并将其中一个或两个值都设置为正数。在这种情况下,这些值将作为SGA或实例PGA大小的最小值。

监视和调整自动内存管理


动态性能视图V $ MEMORY_DYNAMIC_COMPONENTS显示所有动态调优的内存组件的当前大小,包括SGA和实例PGA的总大小。

 

视图V $ MEMORY_TARGET_ADVICE为MEMORY_TARGET初始化参数提供调整建议。

 1 SQL>  select * from v$memory_target_advice order by memory_size;
 2  
 3 MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR    VERSION
 4 ----------- ------------------ ------------ ------------------- ----------
 5         180                 .5          458               1.344          0
 6         270                .75          367              1.0761          0
 7         360                  1          341                   1          0
 8         450               1.25          335               .9817          0
 9         540                1.5          335               .9817          0
10         630               1.75          335               .9817          0
11         720                  2          335               .9817          0

 

MEMORY_SIZE_FACTOR为1的行显示由MEMORY_TARGET初始化参数设置的当前内存大小以及完成当前工作负载所需的DB时间量。在之前和之后的行中,结果显示了几种可选的MEMORY_TARGET大小。对于每个备选大小,如果将MEMORY_TARGET参数更改为备用大小,数据库将显示大小因子(当前大小的倍数)以及完成当前工作负载的估计DB时间。请注意,对于小于当前MEMORY_TARGET大小的总内存大小,估计的DB时间会增加。还要注意,在这个例子中,通过增加总内存大小超过450MB没有什么可以获得的。但是,如果尚未运行完整的工作负载,则这种情况可能会发生变化。

Enterprise Manager提供了一个易于使用的图形内存顾问程序,可帮助您为MEMORY_TARGET选择最佳大小。有关详细信息,请参阅Oracle Database 2 Day DBA

 

参考资料


https://docs.oracle.com/cd/E11882_01/server.112/e25494/memory.htm#ADMIN11199

以上是关于Oracle关于内存参数及大页设置的相关概念和设置之Limits概念和配置的主要内容,如果未能解决你的问题,请参考以下文章

LINUX下为ORACLE数据库设置大页--hugepage

请教 关于SAP 系统内存设置

oracle之 关闭透明大页

Linux 大页内存 Huge Pages 虚拟内存

关于内存管理

CENTOS 7(LINUX 7) 关于禁用透明大页的实验#干货盘点#