ITPub博客

首页 > 数据库 > Oracle > Oracle11G新特性的研究之【自动内存管理】

Oracle11G新特性的研究之【自动内存管理】

Oracle 作者:hefei95 时间:2014-09-12 11:13:45 0 删除 编辑
让实例运行为自动内存管理模式下

SQL> show parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 860M
sga_target                           big integer 860M
SQL> show parameter pga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target                 big integer 286M
SQL> show parameter memory

NAME                                 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> alter system set memory_max_target=1000M 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
SLES-10-01:~ # mount -t tmpfs shmfs -o size=7g /dev/shm
SQL> startup
ORACLE instance started.

Total System Global Area 1368465408 bytes
Fixed Size                  1343304 bytes
Variable Size             654311608 bytes
Database Buffers          708837376 bytes
Redo Buffers                3973120 bytes
Database mounted.
Database opened.

SQL> alter system set sga_target=700M;

System altered.

SQL> alter system set pga_aggregate_target=300M;

System altered.

SQL> alter system set memory_target=1308M;

System altered.
//只要为SGA_TARGET和PGA_AGGREGATE_TARGET初始化参数指定明确的值,为缓冲区高速缓存或PGA或两者设置一个最小的值,而不是让它们使用默认值0,那么自动内存管理多数时候的表现都很好,数据库仍然会使用自动内存管理,但现在会使用你为任何内存组件设置的最小值。
根据以往经验,自动内存管理在大多数时候的表现都与所描述的一致,但是,由于在不同数据库中基于时间的工作负载有所差异,所能得到的好处可能会不同。这时候,最好是按照我们所理解的需求来设置最小值,而不是盲目地依赖于Oracle自动内存算法。
 
查看实例中当前内存的分配情况
SQL> select * from v$memory_target_advice order by memory_size;

MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR    VERSION
----------- ------------------ ------------ ------------------- ----------
        327                .25           16                   1          0
        654                 .5           16                   1          0
        981                .75           16                   1          0
      1308                  1           16                   1          0
       1635               1.25           16                   1          0
       1962                1.5           16                   1          0
       2289               1.75           16                   1          0
       2616                  2           16                   1          0

8 rows selected.
//MEMORY_SIZE_FACTOR为1的那一行,就是当前内存分配大小
ESTD_DB_TIME显示Oracle预计在特定MEMORY_TARGET的值下完成当前工作负载所需要的时间
(MEMORY_TARGET=sga_target+pga_aggregate_target)

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
我的QQ 1749160152
我的邮箱 hongzhuohui@kingsql.com
我的百科 http://baike.sogou.com/v82076725.htm?sp=SST洪卓辉
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

 http://baike.sogou.com/v82076725.htm?sp=SST洪卓辉
 http://baike.sogou.com/v82076725.htm?sp=SST洪卓辉

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26141402/viewspace-1268288/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-06-20

  • 博文量
    20
  • 访问量
    33939