Oracle 常用命令之二:ASM磁盘组扩容

问题描述

CRM系统出现异常无法访问,系统反馈如下告警错误:

java.sql.SQLException: ORA-00257: archiver error. Connect internal only, until freed.

问题分析

数据库归档日志空间400GB突然被写满,归档日志存放在ASM DataGroup磁盘组。
由于业务已经停滞必须要立刻恢复,归档日志突发增长只能稍后分析。现阶段必须要扩容满足继续保存日志。

问题解决

  • 存储增加磁盘sdm
  • ASM标签制作识别
  • 设置asm_diskstring参数
    在这里插入图片描述
  • 针对ASM磁盘组扩容
    在这里插入图片描述

补充信息

  • 查询归档产生时间与数量
select logtime,
count(*),
round(sum(blocks * block_size) / 1024 / 1024) mbsize
from (select trunc(first_time, 'dd') as logtime, a.BLOCKS, a.BLOCK_SIZE
from gv$archived_log a
where a.DEST_ID = 1
and a.FIRST_TIME > trunc(sysdate - 7))
group by logtime
order by logtime desc;
  • Logminer日志分析
PROMPT 
PROMPT +------------------------------------------------------------------------+
PROMPT | Author:Eric.zhong([email protected])                                |
PROMPT | Date:20160703                                                          |
PROMPT | Desc:Easy to analyze oracle log.                                       |
PROMPT +------------------------------------------------------------------------+

set lines 256
set pages 2000
col member format a50
col name format a50
col username for a10
col seg_owner for a10
col sql_redo for a70
col sql_undo for a70
col seg_name for a50
alter session set nls_date_format = "yyyy-mm-dd HH24:MI:SS";

PROMPT 
PROMPT +------------------------------------------------------------------------+
PROMPT | Select Analyze LogFile                                                 |
PROMPT +------------------------------------------------------------------------+

select a.group#,a.sequence#,a.members,a.archived,a.status,b.member from v$log a,v$logfile b where a.group#=b.group#;

select name,completion_time from v$archived_log where deleted='NO' and dest_id='1';

execute dbms_logmnr.add_logfile(logfilename=>'&REDOLOG' ,options=>dbms_logmnr.new);

execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog + dbms_logmnr.PRINT_PRETTY_SQL);

PROMPT 
PROMPT +------------------------------------------------------------------------+
PROMPT | Display Time Interval at Analyze LogFile                               |
PROMPT +------------------------------------------------------------------------+

SELECT FILENAME AS name, LOW_TIME, HIGH_TIME FROM V$LOGMNR_LOGS;

select seg_owner,operation,count(*) from v$logmnr_contents group by seg_owner,operation order by seg_owner;

SELECT * FROM (
	SELECT SEG_OWNER, SEG_NAME, OPERATION, COUNT(*) AS Hits 
	FROM V$LOGMNR_CONTENTS WHERE SEG_NAME NOT LIKE '%$' 
		GROUP BY SEG_OWNER, SEG_NAME, OPERATION 
		ORDER BY Hits DESC) TMP 
WHERE ROWNUM < 21;

PROMPT  Display Operation SQLTEXT
PROMPT select username,seg_owner,scn,to_char(timestamp,'yyyy-mm-dd hh24:mi:mm') time,sql_redo from v$logmnr_contents where seg_owner='SEGOWNER' and operation='OPER';



PROMPT 
PROMPT +------------------------------------------------------------------------+
PROMPT | End Command : execute dbms_logmnr.end_logmnr();                        |
PROMPT +------------------------------------------------------------------------+

猜你喜欢

转载自blog.csdn.net/weixin_38623994/article/details/108098105