视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Oracle11g新参数memory_target
2020-11-09 11:54:49 责编:小采
文档


Oracle9i引入pga_aggregate_target,可以自动对PGA进行调整;Oracle10引入sga_target,可以自动对SGA进行调整。Oracle11g则对这两

Oracle9i引入pga_aggregate_target,可以自动对PGA进行调整;
Oracle10引入sga_target,可以自动对SGA进行调整。
Oracle11g则对这两部分进行综合,引入memory_target,可以自动调整所有的内存,这就是新引入的自动内存管理特性。

下面我们通过以下的几个命令来让大家清楚memory_target 的设置与PGA与SGA的关系:

SQL> alter system set memory_target=200m scope=spfile;
System altered.
SQL> alter system set sga_target=0 scope=spfile;
System altered.
SQL> alter system set pga_aggregate_target=0 scope=spfile;
System altered.

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

SQL> startup
ORACLE instance started.

Total System Global Area 209235968 bytes
Fixed Size 12920 bytes
Variable Size 150998552 bytes
Database Buffers 54525952 bytes
Redo Buffers 2412544 bytes
Database mounted.
Database opened.

设置memory_target参数后,实际上Oracle会自动设置并调整以下两个参数来分配SGA和PGA的内存,这和Oracle10g自动设置sga_target后分配db_cache_size和shared_pool_size的机制是一样的

SQL> select a.ksppinm name,b.ksppstvl value
2 from x$ksppi a,x$ksppcv b
3 where a.indx=b.indx
4 and (a.ksppinm like '%sga_target%'
5 or a.ksppinm like '%pga_aggregate_target%');

NAME VALUE
---------------------------------------- ------------------------------
sga_target 0
__sga_target 125829120
pga_aggregate_target 0
__pga_aggregate_target 79691776


下面我们了解一下ORA-00845的由来与解决方案:
如果memory_max_target/memory_target设置过大,可能导致instance无法启动,报ORA-00845错误
SQL> alter system set memory_max_target=300m scope=spfile;
System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system

这个错误有点误导,实际上这并不是说该平台版本上不支持AMM特性,,只是设置的memory_max_target超过了系统中设置的share memory(/dev/shm)而已。在Oracle11g for linux中似乎使用了一种新的机制来管理共享内存段,而不是传统的sys /dev/shm了。在alert.ora中可以找到更准确的错误描述

解决这个问题的办法之一是增加tmpfs文件系统的容量。

修改/etc/fstab中tmpfs对应的行,
将原来的 tmpfs /dev/shm tmpfs defaults 0 0
改成 tmpfs /dev/shm tmpfs defaults,size=1024M 0 0 ,这样tmpfs增大为1G
size参数也可以用G作单位:size=1G。
重新mount /dev/shm使之生效:
# mount -o remount /dev/shm

马上可以用"df -h"命令检查变化。

修改实例的MEMORY_TARGET参数。(这个在数据库关着的时候是行不能通的,用上面的那种比较彻底)
这个方法用alter system set memory_target=200M;

下载本文
显示全文
专题