Tips:
-- memory_max_target是静态参数,是memory_target的上限,修改需要重启库
SQL> alter system set memory_max_target = 3G scope=spfile;
SQL> shutdown immediate
SQL> startup
-- 配置AMM,memory_target值
SQL> alter system set memory_target = 2G;
-- 为更好的发挥AMM调整作用,设置下面参数为零值
SQL> alter system set sga_target = 0;
SQL> alter system set pga_aggregate_target = 0;
EM主页:服务器(Server) -> 数据库配置(Database Configuration) -> 内存指导(Memory Advisors)
SQL> select * from v$memory_target_advice order by memory_size;
MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR VERSION
----------- ------------------ ------------ ------------------- ----------
768 .25 402 1 1
1536 .5 402 1 1
2304 .75 402 1 1
3072 1 402 1 1
3840 1.25 402 1 1
4608 1.5 402 1 1
5376 1.75 402 1 1
6144 2 402 1 1
8 rows selected.
-- 从手动内存管理切换到ASMM
alter system set sga_target = 1G;
-- 为更好的发挥ASMM作用,设置下面参数为零值
SQL> alter system set shared_pool_size = 0;
SQL> alter system set db_cache_size = 0;
SQL> alter system set java_pool_size = 0;
SQL> alter system set large_pool_size = 0;
SQL> alter system set streams_pool_size = 0;
-- 从AMM切换到ASMM,会根据当前SGA内存使用情况自动设置SGA_TARGET
alter system set memory_target = 0;
--下面命令使得所有初始化参数被设置为当前自动调整的值,禁用ASMM
alter system set sga_target = 0;
ASMM只可以自动调整4.1中设置为零值的5个参数大小,而剩下的需要手工调整
-- DB_KEEP_CACHE_SIZE
-- DB_RECYCLE_CACHE_SIZE
-- DB_nK_CACHE_SIZE
-- LOG_BUFFER
手工设置这些参数值,会从SGA_TRAGET指定的内存中减去这些内存量。
PGA_AGGREGATE_TARGET的值可以由AMM推出来,也可以明确设置。
--PGA设置起点
Oracle单实例可用内存设置为占机器物理内存的80%
OLTP(在线事务处理):PGA占可用内存的20%
DSS(查询使用大量内存):PGA占可用内存的50%~70%
--查询pga相关动态视图
select * from v$pgastat;
select PGA_USED_MEM, PGA_ALLOC_MEM, PGA_FREEABLE_MEM, PGA_MAX_MEM from v$process;
更多PGA相关可参考:《相克军_Oracle体系_随堂笔记007-PGA》