Oracle数据库查看与修改内存配置的方法

 更新时间:2023年11月21日 16:01:43   作者:GottdesKrieges  
在使用Oracle时我们需要关注数据库的内存使用情况,以确保其正确高效地运行,下面这篇文章主要给大家介绍了关于Oracle数据库查看与修改内存配置的相关资料,需要的朋友可以参考下

Oracle内存管理模式

Oracle数据库的内存管理模式从自动管理化程度由高到低依次可以分为:

  • 自动内存管理:完全由Oracle自动管理内存分配。DBA只需设置MEMORY_TARGET(以及可选初始化参数MEMORY_MAX_TARGET),Oracle就会在SGA和PGA之间自动分配内存。
  • 自动共享内存管理:DBA只需设置SGA_TARGETPGA_AGGREGATE_TARGET两个初始化参数。Oracle会分别在SGA和PGA中自动分配各组件的内存。
  • 手动内存管理:由DBA为SGA和PGA中的所有组件逐一手动分配内存。

在自动共享内存管理模式下,还可以手动为SGA中的某些重要组件指定最小的内存分配值,例如Shared Pool和Buffer Cache。

查看Oracle内存分配

检查各内存参数的TARGET配置:

SQL> show parameter target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_max_target                    big integer 0
memory_target                        big integer 0
pga_aggregate_target                 big integer 1561M
sga_target                           big integer 4688M

其中,memory_targetmemory_max_target都为0,并且sga_targetpga_aggregate_target不为0,表示当前数据库使用的是自动共享内存管理模式。

检查SGA和PGA相关参数的配置:

SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 4688M
sga_min_size                         big integer 0
sga_target                           big integer 4688M

SQL> show parameter pga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit                  big integer 3122M
pga_aggregate_target                 big integer 1561M

查看SGA中各组件的内存使用情况:

SQL> select * from v$sgainfo;

NAME                                  BYTES RESIZEABLE     CON_ID
-------------------------------- ---------- ---------- ----------
Fixed SGA Size                      8906552 No                  0
Redo Buffers                        7868416 No                  0
Buffer Cache Size                3992977408 Yes                 0
In-Memory Area Size                       0 No                  0
Shared Pool Size                  872415232 Yes                 0
Large Pool Size                    33554432 Yes                 0
Java Pool Size                            0 Yes                 0
Streams Pool Size                         0 Yes                 0
Shared IO Pool Size               134217728 Yes                 0
Data Transfer Cache Size                  0 Yes                 0
Granule Size                       16777216 No                  0

NAME                                  BYTES RESIZEABLE     CON_ID
-------------------------------- ---------- ---------- ----------
Maximum SGA Size                 4915722040 No                  0
Startup overhead in Shared Pool   405891224 No                  0
Free SGA Memory Available                 0                     0

14 rows selected.

其中,Buffer Cache SizeShared Pool Size是需要重点关注的内容。

修改Oracle内存分配

如果我们升级了服务器物理内存配置,就需要对Oracle的内存参数进行修改。

在自动共享内存管理模式下,一般按照如下原则配置内存:

  • SGA_TARGET一般配置为物理内存的30%到70%之间;
  • PGA_AGGREGATE_TARGET一般配置为物理内存的5%到25%之间;
  • SGA_TARGETPGA_AGGREGATE_TARGET之和不要超过物理内存的80%;
  • Buffer Cache Size一般配置为SGA_TARGET的 20% 左右;
  • Shared Pool Size一般配置为SGA_TARGET的 10% 左右。

修改数据库内存配置:

--备份参数文件
create pfile='/home/oracle/pfile.ora' from spfile;

--禁用自动内存管理
alter system set memory_target=0M scope=spfile;

--设置SGA_TARGET
alter system set sga_max_size=9G scope=spfile;
alter system set sga_target=9G scope=spfile;

--设置Buffer cache、共享池、Java池的最小值
alter system set db_cache_size=2G scope=spfile;
alter system set shared_pool_size=1G scope=spfile;
alter system set java_pool_size=128m scope=spfile;

--设置PGA_AGGREGATE_TARGET
alter system set pga_aggregate_target=1G scope=spfile;

然后重启数据库即可生效。

SQL> show parameter sga_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_target                           big integer 9G

SQL> show parameter pga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit                  big integer 3000M
pga_aggregate_target                 big integer 1G

SQL> show parameter db_cache_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_cache_size                        big integer 2G

SQL> show parameter shared_pool_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
shared_pool_size                     big integer 1G

SQL> show parameter java_pool_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
java_pool_size                       big integer 128M

需要注意的是,服务器物理内存变化通常还涉及内核参数kernel.shmallkernel.shmmax的调优。如果数据库使用了大页,还需要调优操作系统的大页配置。

# 查看是否开启大页
SQL> show parameter use_large_pages

# 查看操作系统大页配置
cat /proc/meminfo | grep HugePage
cat /proc/meminfo | grep Hugepagesize

总结 

到此这篇关于Oracle数据库查看与修改内存配置的文章就介绍到这了,更多相关Oracle查看修改内存配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Windows系统下Oracle 11g完全卸载教程(推荐!)

    Windows系统下Oracle 11g完全卸载教程(推荐!)

    安装软件是首要,虽然不是特别重要,但是错误的安装也是相当费劲和抓狂的,所以这篇文章主要给大家介绍了关于Windows系统下Oracle 11g完全卸载的相关资料,文中通过图文介绍的非常详细,要的朋友可以参考下
    2024-06-06
  • Oracle存储过程基本语法介绍

    Oracle存储过程基本语法介绍

    Oracle存储过程基本语法介绍,有需求的朋友可以参考下
    2012-11-11
  • 如何使用Navicat Premium连接Oracle数据库

    如何使用Navicat Premium连接Oracle数据库

    这篇文章主要介绍了如何使用Navicat Premium连接Oracle数据库,需要的朋友可以参考下
    2023-01-01
  • Oracle 10g DG 数据文件迁移的实现

    Oracle 10g DG 数据文件迁移的实现

    我们常常需要对数据进行迁移,这篇文章主要介绍了Oracle 10g DG 数据文件迁移的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Oracle中的触发器(trigger)用法及解读

    Oracle中的触发器(trigger)用法及解读

    文章主要介绍了数据库触发器的概念、语法、注意事项以及基本要点,并提供了创建基于值的触发器的示例,触发器是在特定数据操作时自动执行的PL/SQL语句序列,主要用于保证数据一致性和完整性
    2026-05-05
  • Oracle 解决ORA-00257 Archiver error 报错问题解决

    Oracle 解决ORA-00257 Archiver error 报错问题解决

    订单投资交易环境进行 impdb 数据泵恢复数据,执行到一半,报错终止,归档策略保留时间较长,或归档频率过高,导致数据库挂载盘符空间不足,本文给大家分享Oracle 解决ORA-00257 Archiver error 报错问题解决,感兴趣的朋友一起看看吧
    2023-12-12
  • CentOS 6.4下安装Oracle 11gR2详细步骤(多图)

    CentOS 6.4下安装Oracle 11gR2详细步骤(多图)

    这篇文章主要介绍了
    2013-11-11
  • 常见数据库系统比较  Oracle数据库

    常见数据库系统比较 Oracle数据库

    常见数据库系统比较 Oracle数据库...
    2007-03-03
  • Oracle实现透明数据加密的代码示例

    Oracle实现透明数据加密的代码示例

    透明数据加密(TDE)是一种用于保护数据库中静态数据的加密技术,TDE通过自动加密数据库文件和日志文件,确保数据在磁盘上是加密的,从而防止未经授权的访问,以下以 Microsoft SQL Server 为例,实现 TDE 的步骤和代码示例,需要的朋友可以参考下
    2024-09-09
  • Oracle rac环境的数据库导入操作步骤

    Oracle rac环境的数据库导入操作步骤

    Oracle RAC是一种基于共享存储和共享数据库的集群解决方案,可以将多个 Oracle 数据库实例连接成一个逻辑上的单一数据库,提供高可用性、灵活性和可伸缩性,本文给大家介绍Oracle rac环境的数据库导入操作,感兴趣的朋友一起看看吧
    2023-06-06

最新评论