虚拟化容器,大数据,DBA,中间件,监控。

Active Session History (ASH) performed an emergency flush

11 07月
作者:admin|分类:DBA运维
Active Session History (ASH) performed an emergency flush


告警日志信息
Tue Sep 15 14:29:27 2015
Active Session History (ASH) performed an emergency flush. This may mean that ASH is undersized. If emergency flushes are a recurring issue, you may consider increasing ASH size by setting the value of _ASH_SIZE to a sufficiently large value. Currently, ASH size is 67108864 bytes. Both ASH size and the total number of emergency flushes since instance startup can be monitored by running the following query:
select total_size,awr_flush_emergency_count from v$ash_info;


执行告警日志中查询语句
SYS@hkprdbuat> select total_size/1024/1024 MB,awr_flush_emergency_count from v$ash_info;

MB AWR_FLUSH_EMERGENCY_COUNT
---------- -------------------------
64   3


查询当前大小
select x.ksppinm name,y.ksppstvl value,y.ksppstdf isdefault,decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,
      decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj
from sys.x$ksppi x,sys.x$ksppcv y
where x.inst_id = userenv('Instance') and
     y.inst_id = userenv('Instance') and
     x.indx = y.indx and
     x.ksppinm ='_ash_size'
order by translate(x.ksppinm, ' _', ' ');

NAME   VALUE      ISDEFAULT  ISMOD    ISADJ
---------- ---------- ---------- ---------- ----------
_ash_size  1048618    TRUE FALSE    FALSE


修改大小为100M
alter system set "_ash_size"=100M;


再次查询
select x.ksppinm name,y.ksppstvl value,y.ksppstdf isdefault,decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,
      decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj
from sys.x$ksppi x,sys.x$ksppcv y
where x.inst_id = userenv('Instance') and
     y.inst_id = userenv('Instance') and
     x.indx = y.indx and
     x.ksppinm ='_ash_size'
order by translate(x.ksppinm, ' _', ' ');

NAME   VALUE      ISDEFAULT  ISMOD    ISADJ
---------- ---------- ---------- ---------- ----------
_ash_size  104857600  TRUE SYSTEM_MOD FALSE



告警日志信息
Tue Sep 15 15:03:25 2015

ALTER SYSTEM SET _ash_size='100M' SCOPE=BOTH;








This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.

APPLIES TO:

Oracle Database - Enterprise Edition - Version 11.1.0.6 and later
Information in this document applies to any platform.

SYMPTOMS

Periodically see the following message in the alert log.

Active Session History (ASH) performed an emergency flush. This may mean that ASH is undersized. If emergency flushes are a recurring issue, you may consider increasing ASH size by setting the value of _ASH_SIZE to a sufficiently large value. Currently, ASH size is <some value> bytes. Both ASH size and the total number of emergency flushes since instance startup can be monitored by running the following query: select total_size,awr_flush_emergency_count from v$ash_info;

CAUSE

Typically some activity on system causes more active sessions, therefore filling the ASH buffers faster than usual causing this message to be displayed. It is not a problem per se, just indicates the buffers might need to be increased to support peak activity on the database.

SOLUTION

The current ASH size is displayed in the message in the alert log, or can be found using the following SQL statement.

select total_size from v$ash_info;

Then increase the value for _ash_size by some value, like 50% more than what is currently allocated.  For example if total_size = 16MB, then an increase of 50% more would be (16MB + (16MB * 50%)) = 24MB. 

sqlplus / as sysdba
alter system set "_ash_size"=25165824;

You can verify the change using the following select:

select total_size from v$ash_info;
 
 
 
示例:
 
      生产环境告警日志:

   Active Session History (ASH) performed an emergency flush. This may mean that ASH is undersized. If emergency flushes are a recurring issue, you may consider increasing ASH size by setting the value of     _ASH_SIZE to a sufficiently large value. Currently, ASH size is 16777216 bytes. Both ASH size and the total number of emergency flushes since instance startup can be monitored by running the following query:
select total_size,awr_flush_emergency_count from v$ash_info;

 
查询及处理: 
 
SQL> select total_size/1024/1024,awr_flush_emergency_count from v$ash_info;

TOTAL_SIZE/1024/1024  AWR_FLUSH_EMERGENCY_COUNT
--------------------                   -------------------------
        16                                                1

SQL> alter system set _ash_size"=25165824;

System altered.

 

SQL> select total_size/1024/1024,awr_flush_emergency_count from v$ash_info;

TOTAL_SIZE/1024/1024 AWR_FLUSH_EMERGENCY_COUNT
--------------------              -------------------------
           24                                     2

 
浏览1809 评论0
返回
目录
返回
首页
设置Linux可以查看历史命令的执行时间与保存命令行数 Install GFS2 in CentOS 6.5