今天收到一条报警短信,提示dg似乎出了点问题。信息的来源是从v$dataguard_status里面扫描得到的最新错误。
2015-09-15 22:06:19.0 Log Transport ServicesErrorError 12541 received logging on to the standby
2015-09-15 22:06:19.0 Log Transport ServicesErrorPING[ARC1]: Heartbeat failed to connect to standby 'stest11g'. Error is 12541.
看样子是心跳的检测失败了,看来主库和备库之间的网络可能出现了延迟之类的问题,在最大性能模式下,这个还是能够接受的,当时就没有在意。
等过了一会之后,自己想还是看看到底是怎么回事吧,毕竟别的库就没有保护这样的错误。
连接到备库之后,发现ssh连接是正常的,证明备库还是能够访问的,没有出现备库的宕机问题。
查看实例也存在,但是监听器给停掉了。自己也感觉挺奇怪,监听怎么会自动停掉呢。就手工启动,结果启动就报了下面的错误。
lsnrctl start listener
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 14-SEP-2015 23:27:38
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Starting /DATA/app/oracle/product/11.2.0.4/bin/tnslsnr: please wait...
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
Linux Error: 32: Broken pipe
对于这个问题还是有些陌生,启动监听失败,启动其它的监听也是同样的错误,这个时候还是来看看日志里面是怎么描述的吧。
结果切换到监听日志的路径下,使用ll命令就得到了下面的错误。
$ ll log
ls: reading directory log: Input/output error
total 0
ls: reading directory .: Input/output error
这个错误又陌生了,查看资料显示应该是文件系统出了问题。
怎么 验证呢,使用dmesg来做或者使用MegaCli都可以。
> dmesg|grep sd|less
sd 0:2:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_TIMEOUT
sd 0:2:0:0: [sda] CDB: Write(10): 2a 00 13 f4 21 38 00 00 08 00
Buffer I/O error on device sda8, logical block 33423143
lost page write due to I/O error on sda8
end_request: I/O error, dev sda, sector 331257944
Buffer I/O error on device sda8, logical block 32984587
lost page write due to I/O error on sda8
end_request: I/O error, dev sda, sector 303472624
end_request: I/O error, dev sda, sector 628396920
JBD2: Detected IO errors while flushing file data on sda8-8
Aborting journal on device sda8-8.
EXT4-fs error (device sda8) in add_dirent_to_buf: Journal has aborted
EXT4-fs error (device sda8): ext4_journal_start_sb: Detected aborted journal
EXT4-fs (sda8): Remounting filesystem read-only
EXT4-fs error (device sda8) in ext4_reserve_inode_write: Journal has aborted
EXT4-fs error (device sda8) in ext4_reserve_inode_write: Journal has aborted
EXT4-fs error (device sda8) in ext4_reserve_inode_write: Journal has aborted
EXT4-fs error (device sda8) in ext4_reserve_inode_write: Journal has aborted
看来确实是文件系统出了问题,根源还是磁盘损坏导致的IO错误。
这种错误还是比较让人无奈的,只能稍后尝试更换硬盘或者切换到别的环境了,不过所幸的是问题发生在备库。
通过这个案例可以看出,对于dg中的警告信息也不要掉以轻心,很可能一个不经意的ora错误其实已经在警示重大的问题,如果及时关注,就为我们保证数据的安全提供了最快的补救措施。
在CentOS 6.4下安装Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虚拟机中安装步骤
Debian 下 安装 Oracle 11g XE R2
Oracle Data Guard 重要配置参数
基于同一主机配置 Oracle 11g Data Guard
探索Oracle之11g DataGuard
Oracle Data Guard (RAC+DG) 归档删除策略及脚本
Oracle Data Guard 的角色转换
Oracle Data Guard的日志FAL gap问题
Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 处理方法
: