目录:

  • Oracle11g数据库内存管理
    • 一、Oracle数据库内存管理概念:
    • 二、内存管理方式的切换:
    • 三、修改实例SGA与PGA大小(ASMM)
      • 1、使用sqlplus命令在数据库中修改
        • (1)、查看memory_target与memory_max_target大小:
        • (2)、(如果值非零) 修改memory_target与memory_max_target大小:
        • (3)、修改SGA与PGA大小:
        • (4)、重启数据库:
        • (5)、验证SGA与PGA大小:
      • 2、通过修改pfile启动数据库在写入到spfile中
        • (1)、创建pfile文件:
        • (2)、编辑pfile文件:
        • (3)、通过pfile启动实例:
        • (4)、验证SGA与PGA大小:
        • (5)、通过pfile创建spfile:
        • (6)、重启数据库:

Oracle11g数据库内存管理

一、Oracle数据库内存管理概念:

内存管理涉及到根据数据库变化的需要为Oracle实例内存结构保持最佳大小,Oracle数据库根据与内存相关的初始化参数的设置来管理内存。
内存管理有三种基本方式:

AMM (自动内存管理)
Automatic memory management:

  • 指定实例内存的目标大小,数据库实例自动调整到目标内存大小,根据需要在SGA和实例PGA之间重新分配内存

ASMM (自动共享内存管理)
Automatic shared memory management:

  • 这种管理模式是部分自动化的,为SGA设置目标大小,然后可以选择为PGA设置聚合目标大小或单独管理PGA工作区

Manual memory management(手动内存管理)

  • 不是设置总内存大小,而是设置许多初始化参数来分别管理SGA和实例PGA的组件

如果使用数据库配置助手(DBCA)创建数据库并选择基本安装选项,则默认为AMM(自动内存管理)

二、内存管理方式的切换:

MEMORY_TARGET :
操作系统上 Oracle 所能使用的最大内存值(动态参数),是PAG 和SGA的总和。

1、AMM(自动内存管理)

memory_target=非0,如果初始化参数 LOCK_SGA = true ,则 AMM 是不可用的

2、ASMM (自动共享内存管理)

memory_target=0 and sga_target=非0

3、Manual memory management(手动内存管理)

memory_target=0 and sga_target=0,指定 share_pool_size 、db_cache_size 等 sga 参数

在设置memory_target与memory_max_target 需注意注意以下三点:

  • 若指定了memory_target而没有指定memory_max_target重启后,memory_max_targetmemory_target大小相等;
  • 若指定了memory_max_target而没有指定memory_target,重启后memory_target=0
  • 若设置 memory_max_target < memory_target 时,则重启后报错(ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET)。

使AMM失效memory_max_target 的值应该设置为空,而不是0,使用alter system reset memory_max_target,
(ORA-00843 ORA-00849 Trying to Change SGA_TARGET with MEMORY_MAX_TARGET=0 Being Active (Doc ID 1397761.1))
SQL> alter system reset memory_max_target;
SQL> alter system set memory_target=0;

三、修改实例SGA与PGA大小(ASMM)

1、使用sqlplus命令在数据库中修改

思路:首先通过spfile指定路径创建一个pfile作为备份,然后在数据库中进行内存参数调整操作,最后重启数据库。

在对数据库参数修改前创建pfile文件作为spfile备份

SQL> create pfile='/tmp/pfile20220706.ora' from spfile;File created.
(1)、查看memory_target与memory_max_target大小:
SQL> show parameter memoryNAME                                TYPE     VALUE
-------------------------------- ----------- ------------------------------
hi_shared_memory_address         integer     0
memory_max_target            big integer     0
memory_target                big integer     0
shared_memory_address            integer     0
SQL>
#根据输出的结果显示 memory_max_target=0 与 memory_target=0 说明目前已经是 ASMM 模式直接修改sga与pga大小即可
(2)、(如果值非零) 修改memory_target与memory_max_target大小:
#如果memory_max_target非0 与 memory_target非0,使用下面命令将值改为0
1、修改memory_max_target大小:
SQL> alter system set memory_max_target=0 scope=spfile;System altered.2、修改memory_target大小(memory_target<=memory_max_target):
SQL> alter system set memory_target=0 scope=spfile;System altered.
(3)、修改SGA与PGA大小:
1、修改sga大小:
SQL> alter system set sga_max_size=2560M scope=spfile;System altered.SQL> alter system set sga_target=2560M scope=spfile;System altered.2、修改pga大小:
SQL> alter system set pga_aggregate_target=650M scope=spfile;System altered.

因为将参数修改写在了spfile中,在数据库重启后参数生效

(4)、重启数据库:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 2672361472 bytes
Fixed Size                  2256232 bytes
Variable Size             503317144 bytes
Database Buffers         2147483648 bytes
Redo Buffers               19304448 bytes
Database mounted.
Database opened.
SQL>
(5)、验证SGA与PGA大小:
SQL> show parameter sgaNAME                    TYPE    VALUE
------------------------------------ ----------- ------------------------------
lock_sga                 boolean     FALSE
pre_page_sga             boolean     FALSE
sga_max_size             big integer 2560M
sga_target               big integer 2560M
SQL> show parameter pgaNAME                   TYPE    VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target     big integer 200M
SQL>

2、通过修改pfile启动数据库在写入到spfile中

思路:首先通过spfile指定路径创建一个pfile,修改pfile中内存参数—>关闭数据库—>使用pfile启动数据库—>通过该pfile创建spfile—>重启数据库
首先:创建spfile备份

(1)、创建pfile文件:
#/tmp/pfile20220706.ora是通过当前spfile创建
SQL> create pfile='/tmp/pfile20220706.ora' from spfile;File created.SQL>
(2)、编辑pfile文件:
vi /tmp/pfile20220706.ora

若在/tmp/pfile20220706.ora文件中存在memory_max_target与memory_target参数,屏蔽或删除即可。

orcl.__db_cache_size=2046820352
orcl.__java_pool_size=16777216
orcl.__large_pool_size=33554432
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=654311424  #实例orcl 建议pga=(物理内存 x 80%) x 20%,由memory_target自动管理
orcl.__sga_target=2566914048           #实例orcl 建议sga=(物理内存 x 80%) x 80%,由memory_target自动管理
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=436207616
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
#*.memory_max_target=0                             #将memory_max_target屏蔽或删除
#*.memory_target=0                                 #将memory_target屏蔽或删除
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.O7_DICTIONARY_ACCESSIBILITY=FALSE
*.open_cursors=300
*.pga_aggregate_target=681574400                   #pga大小
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1655
*.sga_max_size=2684354560                          #sga_max_size大小
*.sga_target=2684354560                                #sga_target大小
*.undo_tablespace='UNDOTBS1'
(3)、通过pfile启动实例:

关闭数据库实例

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>

通过pfile启动数据库实例:

SQL> startup pfile='/tmp/pfile20220706.ora';
ORACLE instance started.Total System Global Area 2672361472 bytes
Fixed Size                  2256232 bytes
Variable Size            1073742488 bytes
Database Buffers         1577058304 bytes
Redo Buffers               19304448 bytes
Database mounted.
Database opened.
SQL>
(4)、验证SGA与PGA大小:
#查看pga大小:
SQL> show parameter pgaNAME                                 TYPE VALUE
------------------------------- ----------- ------------------------------
pga_aggregate_target            big integer 650M        #pga大小已经修改成功(原610M)#查看sga大小:
SQL> show parameter sgaNAME                                 TYPE VALUE
-------------------------------- ----------- -----------------------------
lock_sga                            boolean  FALSE
pre_page_sga                        boolean  FALSE
sga_max_size                    big integer 2560M       #sga大小已经修改成功(原2450M)
sga_target                      big integer 2560M       #sga大小已经修改成功(原2450M)SQL> show parameter memoryNAME                                  TYPE VALUE
------------------------------- ----------- ------------------------------
hi_shared_memory_address            integer 0
memory_max_target               big integer 0
memory_target                   big integer 0
shared_memory_address               integer 0
SQL>
(5)、通过pfile创建spfile:
SQL> create spfile from pfile='/tmp/pfile20220706.ora';File created.
(6)、重启数据库:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>#再次重启数据库(默认spfile启动)
SQL> startup
ORACLE instance started.Total System Global Area 2672361472 bytes
Fixed Size                  2256232 bytes
Variable Size            1073742488 bytes
Database Buffers         1577058304 bytes
Redo Buffers               19304448 bytes
Database mounted.
Database opened.
SQL>

sga与pga修改成功!

查询数据库sga和pga实际占用大小:

SELECT ROUND((a.SGA_MEM + b.PGA_MEM), 2) "TOTAL_MEMORY",ROUND(a.SGA_MEM, 2) sga,ROUND(b.PGA_MEM, 2)FROM (SELECT SUM(current_size) / 1024 / 1024 "SGA_MEM"FROM v$sga_dynamic_components,(SELECT SUM(pga_alloc_mem) / 1024 / 1024 "PGA_MEM"FROM v$process) aWHERE component IN ('shared pool','large pool','java pool','streams pool','DEFAULT buffer cache')) a,
(SELECT SUM(pga_alloc_mem) / 1024 / 1024 "PGA_MEM" FROM v$process) b;

至此结束,有什么问题欢迎留言,谢谢。

Oracle内存管理(修改SGA与PGA)相关推荐

  1. ORACLE 内存管理 之六 SGA Multiple Block Sizes,Large Pool

    ORACLE DBA 内存管理 SGA Multiple Block Sizes,Large Pool Multiple Block Sizes 9i前只能设置一种blocksize,如果想改变只能重 ...

  2. Oracle体系结构之内存结构(SGA、PGA)

    Oracle体系结构之内存结构(SGA.PGA) 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个 ...

  3. Oracle之内存结构(SGA、PGA)

    像很多数据库如db2,mysql等等都是关系型数据库.但是他们也有区别,区别就在数据库的架构上面. 整个Oracle来讲就两个部分,一部分是实例(由两部分构成,一部分是里面的内存结构由sga和Pga构 ...

  4. oracle中修改sga和pga

    1.修改sga大小: SQL> alter system set sga_max_size=2560M scope=spfile; System altered. SQL> alter s ...

  5. ORACLE 内存管理 之二 PGA v$pgastat

    ORACLE 内存管理 PGA v$pgastat PGA 自动管理 需要设置两个基本点参数 : WORKAREA_SIZE_POLICY=AUTO,默认就是AUTO, PGA_AGGREGATE_T ...

  6. Oracle内存管理PGA详解

    当用户进程连接到数据库并创建一个对应的会话时,Oracle服务进程会为这个用户专门设置一个PGA区,用来存储这个用户会话的相关内容.当这个用户会话终止时,系统会自动释放这个PGA区所占用的内存.这个P ...

  7. Oracle内存结构:SGA PGA UGA

    oracle内存结构: SGA.PGA.UGA 内存结构是oracle数据库最重要的组成部分之一,在数据库中的操作或多或少都会依赖到内存,是影响数据库性能的重要因素Oracle数据库中包括3个基本的内 ...

  8. 个人笔记:ORACLE大页内存hugepage和SGA、PGA的经验,SGA并不是越大越好

    背景:ORACLE 11.2,SGA 64G,PGA 8G,压测出现操作系统内存耗尽 WARNING: Heavy swapping observed on system in last 5 mins ...

  9. oracle内存管理模式amm,Oracle 11g自动内存管理(AMM)相关的初始化参数

    Oracle对内存的管理越来越趋向智能化.自动化,从9i通过PGA_AGGREGATE_TARGET参数实现PGA的自动管理,10g通过Automatic Shared Memory Manageme ...

最新文章

  1. 干货 | 非常全面的谱聚类算法原理总结
  2. 8款审核AWS帐户安全性的免费工具,你值得拥有
  3. 英特尔发现Spectre和Meltdown 补丁对性能影响程度为0-21%
  4. 阿里平头哥首款AI芯片发布!46倍于英伟达P4,刷新全球推理性能最高纪录
  5. solaris与linux区别,solaris与linux命令的区别
  6. 【PAT乙级】1028 人口普查 (20 分)
  7. POJ2817 WordStack(状压DP)
  8. Android APP终极瘦身指南
  9. Tomcat server launch debug - OrderAnalytics
  10. canvas离屏技术与放大镜实现
  11. android.util.Base64 和 org.apache.commons.codec.binary.Base64
  12. java 防止js注入_在WebView中如何让JS与Java安全地互相调用
  13. list操作 rediscluster_redis3.0 cluster功能介绍
  14. java运行vbs_如何在Java中执行VBS脚本?
  15. 新书即将上市:《善用佳软:高效能人士的软件应用之道》
  16. 怎么计算机械需要的电机,步进电机力矩的怎么计算?
  17. P4643 [国家集训队]阿狸和桃子的游戏
  18. 加载java ie停止工作_IE报错“Internet Explorer 已停止工作”解决方案
  19. 天线学习笔记——串馈网络设计
  20. ENSP实验超详细步骤(内涵小实验一个)

热门文章

  1. c语言有哪些方向,c语言有哪些就业方向
  2. mysql索引优化cbo
  3. BHAR-事件研究法-示例数据Stata计算代码
  4. win11系统 打开Bitlocker加密的分区,输入密码后提示位置不可用“无法访问 参数错误”
  5. saleae logic 逻辑分析仪
  6. 智慧城市可视化管理系统
  7. 数学通道的应用(四)-发动机转速曲线
  8. Jasperreports6.4.1+Jaspersoft studio6.4.1进行报表开发实战教程-PDF中文显示
  9. Win10下配置IIS并调试PHP程序
  10. 一面、二面、三面有什么区别?