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

让实例运行为自动内存管理模式下

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

我的百科 洪卓辉

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

洪卓辉

洪卓辉