《Administrator's Guide》之Managing Memory

来源:互联网 发布:天刀捏脸数据导入 编辑:程序博客网 时间:2024/05/16 18:08
Automatic Memory Management

1. 如果要启动Automatic Memory Management,如何确定MEMORY_TARGET的值呢?

    1> 在SQL*Plus下show parameter target,结果如下:

SQL> show parameter targetNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------archive_lag_target                   integer     0db_flashback_retention_target        integer     1440fast_start_io_target                 integer     0fast_start_mttr_target               integer     0memory_max_target                    big integer 0memory_target                        big integer 0parallel_servers_target              integer     256pga_aggregate_target                 big integer 4779Msga_target                           big integer 14368M

   2> 确定maximum PGA allocated的值

SQL> select value/1024/1024 from v$pgastat where name='maximum PGA allocated';VALUE/1024/1024---------------     4331.59961

    3> memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)

         在本例中,则memory_target至少为14368+4779=19147M

2. 如何优化Memory Target Size,SGA Target Size,PGA Target Size。

   可分别查询V$MEMORY_TARGET_ADVICE,V$SGA_TARGET_ADVICE,V$PGA_TARGET_ADVICE表,下面以V$SGA_TARGET_ADVICE为例。

SQL> select * from v$sga_target_advice order by sga_size;   SGA_SIZE SGA_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR ESTD_PHYSICAL_READS---------- --------------- ------------ ------------------- -------------------       290              .5       448176              1.6578             1636103       435             .75       339336              1.2552             1636103       580               1       270344                   1             1201780       725            1.25       239038               .8842              907584       870             1.5       211517               .7824              513881      1015            1.75       201866               .7467              513881      1160               2       200703               .7424              513881

    SGA_SIZE_FACTOR和ESTD_DB_TIME_FACTOR为1的行对应的是当前SGA的值,该本例中,当前SGA的SIZE为580M。可根据ESTD_DB_TIME和ESTD_PHYSICAL_READS的期望值来相应调整SGA的值。

3. 关于MEMORY_TARGET和MEMORY_MAX_TARGET的关系

MEMORY_TARGET是动态参数,可在数据库运行过程中动态修改,MEMORY_MAX_TARGET是静态参数,只有重启数据库才能生效。MEMORY_TARGET的值不能超过MEMORY_MAX_TARGET。设置MEMORY_MAX_TARGET有两个好处:一、防止意外将MEMORY_TARGET的设置得过高。二、为将来增大MEMORY_TARGET的值保留空间。

在pfile中,如果你忽略了MEMORY_MAX_TARGET的值,只设置了MEMORY_TARGET的值,则MEMORY_MAX_TARGET默认将设置为MEMORY_TARGET的值。如果只设置了MEMORY_MAX_TARGET的值,而没有设置MEMORY_TARGET的值,则MEMORY_TARGET默认为0。

4. 可通过v$memory_dynamic_components查看内存各组件的信息

SQL> select component,current_size,min_size,max_size,user_specified_size from v$memory_dynamic_components;COMPONENT                      CURRENT_SIZE   MIN_SIZE     MAX_SIZE USER_SPECIFIED_SIZE------------------------------ ------------ ----------   ---------- -------------------shared pool                        92274688   41943040     92274688                   0large pool                          8388608    8388608     71303168                   0java pool                           4194304    4194304      4194304                   0streams pool                              0          0            0                   0SGA Target                        205520896  205520896    205520896                   0DEFAULT buffer cache               92274688   37748736    100663296                   0KEEP buffer cache                         0         0             0                   0RECYCLE buffer cache                      0         0             0                   0DEFAULT 2K buffer cache                   0         0             0                   0DEFAULT 4K buffer cache                   0         0             0                   0DEFAULT 8K buffer cache                   0         0             0                   0COMPONENT                      CURRENT_SIZE   MIN_SIZE     MAX_SIZE  USER_SPECIFIED_SIZE------------------------------ ------------ ----------   ----------  -------------------DEFAULT 16K buffer cache                  0          0            0                   0DEFAULT 32K buffer cache                  0          0            0                   0Shared IO Pool                            0          0            0                   0PGA Target                        109051904  109051904    109051904                   0ASM Buffer Cache                          0          0            0                   016 rows selected.

5. 如何启动Automatic Memory Management,设置如下:

ALTER SYSTEM SET MEMORY_TARGET = nM;ALTER SYSTEM SET SGA_TARGET = 0;ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;

注意:如果SGA_TARGET和PGA_AGGREGATE_TARGET没有设置为0,则设置的值将是其最小值。

SGA

6. SGA各组件的分配以granule为单位,而granule的大小以SGA_MAX_SIZE为衡量标准,具体如下:

关于granule的大小,可通过以下语句进行查询

SQL> select * from v$sgainfo where name='Granule Size';NAME                                  BYTES RES-------------------------------- ---------- ---Granule Size                        4194304 No

注意:SGA给各组件分配空间,都是granule的整数倍,譬如,如果你的granule size是4M,你将DB_CACHE_SIZE的值设置为10M,则SGA实际为DB_CACHE_SIZE分配的内存空间是12M。

7. 关于SGA_MAX_SIZE

SGA_MAX_SIZE是静态参数,具体说明和默认值如下所示:

8. ASMM

Automatic shared memory management通过设置SGA_TARGET的值来启动。在SGA各组件中,有些组件可通过ASMM自动分配内存,有些组件必须显性指定值。具体如下:

Automatically Sized SGA Components and Corresponding Parameters

以下参数SGA可自动调节,如果启动了ASMM,如下值必须设置为0,倘若不是0,则表示其最小值

Manually Sized SGA Components that Use SGA_TARGET Space--以下参数只能手动配置内存

9. 在实际应用中,SGA应该全部放在内存中,如果有一部分放在虚拟内存中,因为分页问题,则整个数据库的性能将受到显著影响。

10. 如果要启动ASMM,如何确定SGA_TARGET的值?

SELECT (   (SELECT SUM(value) FROM V$SGA) -   (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)   ) "SGA_TARGET"FROM DUAL;

11. Buffer Cache

Buffer cache的大小影响数据库的性能,较大的buffer cache虽然能减少物理读和写的次数,但由于它占用了大量的内存,可能会导致分页和交换。

Oracle支持不同大小的block size,在创建表空间时,如果指定了非标准的block size,则必须设置相应的DB_nK_CACHE_SIZE的值。注意,system表空间使用的是标准块,标准块的大小可通过如下语句查看:

SQL> show parameter db_block_sizeNAME                                 TYPE        VALUE------------------------------------ ----------- ------------------------------db_block_size                        integer     8192

Oracle支持5种不同大小的block size,相应的cache值,可通过以下参数设置:

DB_2K_CACHE_SIZEDB_4K_CACHE_SIZEDB_8K_CACHE_SIZEDB_16K_CACHE_SIZEDB_32K_CACHE_SIZE

注意:DB_nK_CACHE_SIZE不能用于设定标准块的cache值,标准块的cache size是由db_cache_size决定的。在本例中,标准块的大小是8k,所以设置DB_8K_CACHE_SIZE的值将报以下错误:

SQL> alter system set db_8k_cache_size=10m;alter system set db_8k_cache_size=10m*ERROR at line 1:ORA-32017: failure in updating SPFILEORA-00380: cannot specify db_8k_cache_size since 8K is the standard block size

32k的block size只在64位操作系统中有效。

12. Buffer Pools

buffer cache包含三种池:KEEP池、RECYCLE池、DEFAULT池。其中KEEP池是将对象的数据永久保存在内存中,RECYCLE池是一旦数据不需要,就从内存中剔除。DEFAULT池是默认的。KEEP池和RECYCLE池的大小分别根据DB_KEEP_CACHE_SIZE和DB_RECYCLE_CACHE_SIZE两个参数来设置。这三种池只支持标准块,对于非标准块,只支持DEFAULT池。

13. 如果要手动管理PGA,需要显性设定以下值。

SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE, CREATE_BITMAP_AREA_SIZE。

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝小鸡底下淹了怎么办 4岁宝宝拉稀水怎么办 2岁半宝宝对眼怎么办 孩子在幼儿园中午不睡觉怎么办 20天婴儿拉稀水怎么办 3个月婴儿拉水怎么办 两岁宝宝拉水怎么办 1岁半宝宝拉水怎么办 5周孩子小鸡长脂肪粒怎么办 小孩丁丁长歪了怎么办 2个月的婴儿咳嗽怎么办 2个月的宝宝干咳怎么办 2月宝宝感冒咳嗽怎么办 产妇肚子上长小疙瘩很痒怎么办 泰迪生下小狗不吃奶怎么办? 刚生的狗不吃奶怎么办 刚出生的小牛不吃奶怎么办 吃奶的狗崽拉稀怎么办 新生儿吃奶老是呛到怎么办 刚生小狗不吃奶怎么办 刚出生的小羊不吃奶怎么办 羔羊走路不稳不吃奶怎么办 新生儿喝奶老是呛到怎么办 宝宝吃母乳呛到怎么办 宝宝一直睡觉不吃奶怎么办 3个月婴儿不吃奶怎么办 新生婴儿晚上不睡觉怎么办 宝宝肚子胀不吃奶怎么办 宝宝25天不睡觉怎么办 50天婴儿不吃奶怎么办 儿子关在房间玩电脑怎么办? 宽带拨号上网账号密码忘了怎么办 双眼皮割的太宽怎么办 营业执照异常名录移除注销怎么办 工商局注册后骚扰电话怎么办 单位工作失误医保断交7年怎么办 大门对大门怎么办?巧用天官赐福 委托书公司名称打错了怎么办 招行ubank不对账怎么办 信贷公司利息高不合理怎么办 衣服上的logo掉怎么办