Oracle内存管理(修改SGA与PGA)
目录:
- 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_target
和memory_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)相关推荐
- ORACLE 内存管理 之六 SGA Multiple Block Sizes,Large Pool
ORACLE DBA 内存管理 SGA Multiple Block Sizes,Large Pool Multiple Block Sizes 9i前只能设置一种blocksize,如果想改变只能重 ...
- Oracle体系结构之内存结构(SGA、PGA)
Oracle体系结构之内存结构(SGA.PGA) 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个 ...
- Oracle之内存结构(SGA、PGA)
像很多数据库如db2,mysql等等都是关系型数据库.但是他们也有区别,区别就在数据库的架构上面. 整个Oracle来讲就两个部分,一部分是实例(由两部分构成,一部分是里面的内存结构由sga和Pga构 ...
- oracle中修改sga和pga
1.修改sga大小: SQL> alter system set sga_max_size=2560M scope=spfile; System altered. SQL> alter s ...
- ORACLE 内存管理 之二 PGA v$pgastat
ORACLE 内存管理 PGA v$pgastat PGA 自动管理 需要设置两个基本点参数 : WORKAREA_SIZE_POLICY=AUTO,默认就是AUTO, PGA_AGGREGATE_T ...
- Oracle内存管理PGA详解
当用户进程连接到数据库并创建一个对应的会话时,Oracle服务进程会为这个用户专门设置一个PGA区,用来存储这个用户会话的相关内容.当这个用户会话终止时,系统会自动释放这个PGA区所占用的内存.这个P ...
- Oracle内存结构:SGA PGA UGA
oracle内存结构: SGA.PGA.UGA 内存结构是oracle数据库最重要的组成部分之一,在数据库中的操作或多或少都会依赖到内存,是影响数据库性能的重要因素Oracle数据库中包括3个基本的内 ...
- 个人笔记:ORACLE大页内存hugepage和SGA、PGA的经验,SGA并不是越大越好
背景:ORACLE 11.2,SGA 64G,PGA 8G,压测出现操作系统内存耗尽 WARNING: Heavy swapping observed on system in last 5 mins ...
- oracle内存管理模式amm,Oracle 11g自动内存管理(AMM)相关的初始化参数
Oracle对内存的管理越来越趋向智能化.自动化,从9i通过PGA_AGGREGATE_TARGET参数实现PGA的自动管理,10g通过Automatic Shared Memory Manageme ...
最新文章
- 干货 | 非常全面的谱聚类算法原理总结
- 8款审核AWS帐户安全性的免费工具,你值得拥有
- 英特尔发现Spectre和Meltdown 补丁对性能影响程度为0-21%
- 阿里平头哥首款AI芯片发布!46倍于英伟达P4,刷新全球推理性能最高纪录
- solaris与linux区别,solaris与linux命令的区别
- 【PAT乙级】1028 人口普查 (20 分)
- POJ2817 WordStack(状压DP)
- Android APP终极瘦身指南
- Tomcat server launch debug - OrderAnalytics
- canvas离屏技术与放大镜实现
- android.util.Base64 和 org.apache.commons.codec.binary.Base64
- java 防止js注入_在WebView中如何让JS与Java安全地互相调用
- list操作 rediscluster_redis3.0 cluster功能介绍
- java运行vbs_如何在Java中执行VBS脚本?
- 新书即将上市:《善用佳软:高效能人士的软件应用之道》
- 怎么计算机械需要的电机,步进电机力矩的怎么计算?
- P4643 [国家集训队]阿狸和桃子的游戏
- 加载java ie停止工作_IE报错“Internet Explorer 已停止工作”解决方案
- 天线学习笔记——串馈网络设计
- ENSP实验超详细步骤(内涵小实验一个)
热门文章
- c语言有哪些方向,c语言有哪些就业方向
- mysql索引优化cbo
- BHAR-事件研究法-示例数据Stata计算代码
- win11系统 打开Bitlocker加密的分区,输入密码后提示位置不可用“无法访问 参数错误”
- saleae logic 逻辑分析仪
- 智慧城市可视化管理系统
- 数学通道的应用(四)-发动机转速曲线
- Jasperreports6.4.1+Jaspersoft studio6.4.1进行报表开发实战教程-PDF中文显示
- Win10下配置IIS并调试PHP程序
- 一面、二面、三面有什么区别?