oracle数据库管理-IO异常导致bufer busy waits异常等待

1 故障现象

 rman进行全备份报错

channel ch00: starting piece 1 at 05-JAN-20
RMAN-03009: failure of backup command on ch01 channel at 01/05/2020 11:19:10
ORA-19501: read error on file "/orcl/oracle/oradata2/undotbs04.dbf", blockno 3541313 (blocksize=8192)
ORA-27063: number of bytes read/written is incorrect
IBM AIX RISC System/6000 Error: 5: There is an input or output error.
Additional information: -1
Additional information: 524288
channel ch01 disabled, job failed on it will be run on another channel

2 系统日志分析

使用errpt命令查看报错信息

oracle数据库管理-IO异常导致bufer busy waits异常等待_第1张图片

不同的表对象之间产生了TX-ROW lock contention等待,堵塞源头buffer busy waits等待??很诧异

3 解决思路:

SELECT sid,serial#,status,program,module FROM V$SESSION WHERE SID IN(SELECT DISTINCT BLOCKING_SESSION FROM V$SESSION WHERE BLOCKING_SESSION IS NOT NULL) AND EVENT ='SQL*Net message from client';

查询到存在对应的堵塞源头为一个SQL*Net message from client在执行insert的会话

alter system kill sessIOn 'sid,serial#' immediate;

发现报错信息已出现,就会有buffer busy waits和TX-row lock等待堆积,切热点块大量的出现。数据库会话突增。

进过EMC厂家分析,lun出现坏块,绝对排除读写报错的undo文件进行全备份。

1 configure exclude for tablespace undotbs01---可以放在全局,也可以创建到run块内。进行全备份,备份成功。

2 创建新的undotbs到新的文件系统,新的文件系统不包含坏块磁盘。

3 对undo进行切换,待原来的undo segment全部offline之后,将表空间undotbs01表空间offline,然后删除。

4 对数据库进行全备份。

4 原因总结

 

你可能感兴趣的:(ORACLE数据库故障处理分析,ORACLE数据库等待事件分析)