让实例运行为自动内存管理模式下
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
我的百科 洪卓辉
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
洪卓辉
洪卓辉