11g 设置memory_target参数

设置memory_target参数,通过 v$memory_target_advice分析数据库最佳内存大小  2013-02-

Memory_target1.oracle 11g中的一个内存调整参数,11g对自动化管理内存方面又继续加强了,原来10g中可以对SGA进行自动管理与分配,11g即可以自动管理SGA,又可以自动管理PGA,对这两部分进行综合管理,自动调整所有内存区的大小。11g中默认为0

现在把这几个参数语法列举一下,这是静态参数需要重启数据库生效

alter system set memory_max_target= 1000m scope=spfile;
alter system set  memory_target= 1000m scope=spfile;
alter system set sga_max_size=600m scope=spfile;
alter system set pga_aggregate_target=400m scope=spfile;

2. memory_max_target 是设定 Oracle 能占物理内存多大空间,一个是 Oracle SGA 区最大能占多大内存空间+PGA区多大空间,memory_max_targetmemory_target上限值,如果只设置了memory_max_target没有设置memory_target,则Oracle认为memory_target=0不使用内存自动管理。

3.如果只设置memory_target,没有设置memory_max_target,则Oracle自动将memory_max_target设置为memory_target

4.如果同时设置这两个值,则memory_target的上限值为memory_max_target

这是我的数据库上的参数值

LEO1@LEO1> show parameter memory_max_target

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

memory_max_target                    big integer 652M

LEO1@LEO1> show parameter memory_target

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

memory_target                        big integer 652M

5. 10g  sga_max_size 是动态分配 Shared Pool Size,database buffer cache,large pool,java poolredo log buffer 大小的,根据 Oracle 运行状态来重新分配 SGA 各内存区大小。 PGA  10g 中需要单独设定(即手工管理)。

实验

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

1memory_target设置为非0

Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET  ,大小等于memory_max_size 一致。

sga_targetpga_aggregate_target都设置了大小,则这两个参数将做为最小起始值

sga_target  设置大小, pga_aggregate_target  没有设置大小  

           那么 pga_aggregate_target 初始化值 =memory_target-sga_target

sga_target  没有设置大小, pga_aggregate_target  设置大小  

           那么 sga_target 初始化值 =memory_target-pga_aggregate_target

sga_target   pga_aggregate_target都没有设置大小 Oracle 11g 将根据数据库运行状态自动分配大小。 但在数据库启动时会有一个固定比例来分配:

         sga_target =memory_target *60%     pga_aggregate_target=memory_target *40%

2memory_target没有设置或等于011g中默认为0

11g中默认为0则初始状态下取消了 memory_target 的作用,完全和10g在内存管理上一致,完全向下兼容。

   (也有三种情况来对 SGA  PGA 的大小进行分配)

SGA_TARGET 设置值,则自动调节 SGA 中的 shared pool,buffer cache,redo log buffer,java pool,larger pool内存区,PGA 则依赖 pga_aggregate_target 的大小单独设置。 sga pga不能自动增长和自动缩小。

SGA_target PGA_AGGREGATE_TARGET  都没有设置,SGA 中的各内存区大小都要明确设定,不能自动调整各内存区大小。PGA 不能自动增长和收缩。

memory_max_target设置而memory_target =0  这种情况和10g 一样不使用内存自动管理

LEO1@LEO1> show parameter target

NAME                           TYPE        VALUE

------------------------------------ ----------- ------------------------------

archive_lag_target                  integer     0

db_flashback_retention_target        integer     1440

fast_start_io_target                 integer     0

fast_start_mttr_target               integer     0

memory_max_target                big integer  652M

memory_target                    big integer  652M

parallel_servers_target              integer     8

pga_aggregate_target               big integer  0

sga_target                        big integer  0

现在我们看到sga_targetpga_aggregate_target的值都是0,由oracle自动调整大小,memory_targetmemory_max_target的大小是652M

LEO1@LEO1> select * from v$memory_target_advice;    分析数据库最佳内存大小

MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR    VERSION

----------- ------------------ ------------ ------------------- ----------

        489                .75         5522              1.0002          0

        652                  1         5521                   1         0

        815               1.25         5518               .9994          0

        978                1.5         5517               .9993          0

       1141               1.75         5517               .9992          0

       1304                  2         5517               .9992          0

MEMORY_SIZEoracle建议的内存大小

MEMORY_SIZE_FACTOR:内存基线因子,0.25, 0.5, 0.75, 1, 1.5, 1.75, and 2

ESTD_DB_TIMEFor current memory size (MEMORY_SIZE_FACTOR = 1), the amount of database time required to complete the current workload. For a proposed memory size, the estimated amount of database time that would be required if the MEMORY_TARGET parameter were changed to the proposed size.(官方文档解释)

当内存基线因子为1时,完成当前数据库工作量所需要的所有数据库时间(即所有用户消耗的数据库时间),这是一个建议值,它会根据memory_target参数的改变而改变

ESTD_DB_TIME_FACTORFor a proposed memory size, ratio of estimated database time to current database time(官方文档解释)

消耗数据库时间的比例因子

VERSIONVersion number of this recommendation (this snapshot of the V$MEMORY_TARGET_ADVICE view

v$memory_target_advice这个视图快照的版本号

1.memory_target=489M时,ESTD_DB_TIME=5522

2.memory_target=652M时,ESTD_DB_TIME=5521    当前值

3.memory_target=815M时,ESTD_DB_TIME=5518

4.memory_target=978M时,ESTD_DB_TIME=5517

5.memory_target=1141M时,ESTD_DB_TIME=5517

6.memory_target=1304M时,ESTD_DB_TIME=5517

从如上的系统资源消耗情况来看,memory_target=489M是之前652M的四分之三,但ESTD_DB_TIME才增加了1性价比非常高,我们可以把memory_target=修改成489M,节约我们的内存资源

LEO1@LEO1> alter system set memory_max_target=489m scope=spfile;

System altered.

LEO1@LEO1> alter system set memory_target=489m scope=spfile;

System altered.

LEO1@LEO1> show parameter target

NAME                           TYPE        VALUE

------------------------------------ ----------- ------------------------------

archive_lag_target                  integer     0

db_flashback_retention_target        integer     1440

fast_start_io_target                 integer     0

fast_start_mttr_target               integer     0

memory_max_target                big integer  652M

memory_target                    big integer  652M

parallel_servers_target              integer     8

pga_aggregate_target               big integer  0

sga_target                        big integer  0

现在只是修改了spfile参数文件的内容,需要重启数据库才生效

LEO1@LEO1> shutdown immediate   

ORA-01031: insufficient privileges       权限不足

LEO1@LEO1> conn / as sysdba         切换sys用户

Connected.

SYS@LEO1> shutdown immediate       关闭实例

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@LEO1> startup

ORACLE instance started.

Total System Global Area  513585152 bytes

Fixed Size                  2214856 bytes

Variable Size             314573880 bytes

Database Buffers          188743680 bytes

Redo Buffers                8052736 bytes

Database mounted.

Database opened.

SYS@LEO1> show parameter target

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

archive_lag_target                  integer     0

db_flashback_retention_target        integer     1440

fast_start_io_target                 integer     0

fast_start_mttr_target               integer     0

memory_max_target                big integer  492M      oracle做了一点点修正

memory_target                    big integer  492M      

parallel_servers_target              integer     8

pga_aggregate_target               big integer  0

sga_target                        big integer  0

小结:我们可以根据v$memory_target_advice视图来合理的调整memory_target的内存值,提高资源利用率。


你可能感兴趣的:(oracle-杂文)