
点击“蓝字”关注我们
Oracle内存管理(修改SGA与PGA)
一、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)。
三、修改实例sga与pga大小
原理:登录数据库—>将memory_target与memory_max_target大小置为0—>修改sga、pga大小—>通过spfile指定路径创建一个pfile—>修改pfile中sga_target等参数—>使用pfile启动数据库—>通过该pfile创建spfile—>关闭数据库—>最后正常启动数据库即可
首先:创建spfile备份
SQL> create pfile='/u01/app/oracle/admin/orcl/pfile/pfile1.ora' from spfile;File created.SQL>
1、查看memory_target与memory_max_target大小:
SQL> show parameter memoryNAME TYPE VALUE-------------------------------- ----------- ------------------------------hi_shared_memory_address integer 0memory_max_target big integer 0memory_target big integer 0shared_memory_address integer 0SQL>#根据输出的结果显示 memory_max_target=0 与 memory_target=0 说明目前已经是 ASMM 模式直接修改sga与pga大小即可
2、(如果值非零) 修改memory_target与memory_max_target大小:
#如果memory_max_target非0 与 memory_target非0,使用下面命令将值改为01、修改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.
4、通过spfile创建pfile并关闭数据库:
#创建路径为:/u01/app/oracle/admin/orcl/pfile/#创建的pfile文件名为:pfile.oraSQL> create pfile='/u01/app/oracle/admin/orcl/pfile/pfile.ora' from spfile;File created.SQL>#关闭数据库:SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL>
5、操作系统中编辑pfile文件:
#若在/u01/app/oracle/admin/orcl/pfile/pfile.ora文件中存在memory_max_target与memory_target参数,屏蔽或删除即可。vi u01/app/oracle/admin/orcl/pfile/pfile.oraorcl.__db_cache_size=2046820352orcl.__java_pool_size=16777216orcl.__large_pool_size=33554432orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environmentorcl.__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=0orcl.__shared_pool_size=436207616orcl.__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大小(alter system修改)*.processes=1500*.remote_login_passwordfile='EXCLUSIVE'*.sessions=1655*.sga_max_size=2684354560 #sga_max_size大小(alter system修改)*.sga_target=2684354560 #sga_target大小(alter system修改)*.undo_tablespace='UNDOTBS1'
6、通过pfile启动实例:
#通过pfile启动数据库实例:SQL> startup pfile='/u01/app/oracle/admin/orcl/pfile/pfile.ora';ORACLE instance started.Total System Global Area 2672361472 bytesFixed Size 2256232 bytesVariable Size 1073742488 bytesDatabase Buffers 1577058304 bytesRedo Buffers 19304448 bytesDatabase mounted.Database opened.SQL>
7、查询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 FALSEpre_page_sga boolean FALSEsga_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 0memory_max_target big integer 0memory_target big integer 0shared_memory_address integer 0SQL>
8、通过pfile创建spfile并关闭数据库:
SQL> create spfile from pfile='/u01/app/oracle/admin/orcl/pfile/pfile.ora';File created.SQL>#关闭数据库SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL>
9、使用startup启动数据库(默认使用spfile)
SQL> startupORACLE instance started.Total System Global Area 2672361472 bytesFixed Size 2256232 bytesVariable Size 1073742488 bytesDatabase Buffers 1577058304 bytesRedo Buffers 19304448 bytesDatabase mounted.Database opened.#查看查询验证pgaSQL> show parameter pgaNAME TYPE VALUE-------------------------------- ----------- ------------------------------pga_aggregate_target big integer 650M #与修改结果一致#查看查询验证sgaSQL> show parameter sgaNAME TYPE VALUE-------------------------------- ----------- ------------------------------lock_sga boolean FALSEpre_page_sga boolean FALSEsga_max_size big integer 2560M #与修改结果一致sga_target big integer 2560M #与修改结果一致SQL> show parameter memoryNAME TYPE VALUE-------------------------------- ----------- ------------------------------hi_shared_memory_address integer 0memory_max_target big integer 0memory_target big integer 0shared_memory_address integer 0SQL>
sga与pga修改成功!
至此结束,有什么问题欢迎留言,谢谢。
推荐阅读

greenplum使用gpcopy数据传输方案
10-13 特稿

多台机器之间一键化互信
10-13 特稿


点击“阅读原文”




