由于服务器的硬件估计出了点问题(后来硬件服务商确认了确实有问题)
导致数据库从某个时刻开始,总是莫名其妙的出错,大都是与磁盘I/O错误之类相关的问题;
比如归档日志出错,解决问题后仍然莫名其妙的无法写入归档,导致数据库时好时坏;
在某个深夜,服务器终于宕掉了,半夜2赶过去开搞.
重启服务器时发现P550的IBM机子怎么都没法启动,reset的小孔插了半天也没反应,机器启动就报C100209的错误,网上查说是主板故障,吓死人了;
最后折腾了近一个小时,插拔电源让服务器掉电一会终于启动成功了.
系统:AIX
数据库:oracle10R2 RAC
1.开机后首先启动rac的集群服务挂载磁盘
在两个节点执行命令 : smit clstart 然后选择第一项,启动; --- 此处需要root用户执行;
查看磁盘挂载情况:lspv
2.启动crs服务器
crs_start -all 刚开机的时候一直启动失败,可是折腾了数据库一会后,再来启动就成功了,估计是刚开机很多磁盘还未挂载完成吧;
crs_stat -t 启动成功后来查看,发现都online了,心里的大石头终于放下了,因为在服务器宕机之前,有个节点监听总是自己掉,而且归档还总报错;
3.启动数据库
starup -- 直接报错,数据文件错误,仔细看最后还有一行系统错误提示 AIX IBM 6000 error错误:权限不足.....
然后查看了报错的数据文件所在目录,我是存在/dev/下的,一查吓一跳,权限都没有了.不知道怎么搞的.
chown -R oracle:oinstall /dev/r* 赋权限给oracle;
再次starup 提示有一个172号数据文件错误.
然后去查看该数据文件,发现目录下根本没有这个数据文件了.....真是太奇怪了,居然多出了一个和报错的数据文件名字差不多但是多了一个下划线的文件
但是直接改名后恢复也恢复不了;
4.脱机数据文件,先启动数据库
startup mount
alter database datafile 172 offline;
alter database open; 终于启动成功;
5.用rman恢复(理论上应该这样,但是我这里失败了)
rman target /
list backup; 查看备份的文件
restore datafile 172;
recover datafile 172; 会要求找归档日志,直接输入auto;
正常情况下这里应该就OK的,可是在服务器宕机之前,归档日志就总有问题,导致最终这里恢复失败;
如果恢复成功 alter database datafile 172 online;
6.对于172号错误数据文件自己的解决方案
还好我的172号文件对应的表空间下只有两张表,但是数据量都是亿级的,通过检查发现坏掉的数据文件是历史数据,可以不要了,还好还好.
expdp 导出表的数据,都是分区表,导的时候就能看到哪个分区的数据是有问题的,还好都是历史数据.
最后将查询的时候会报数据文件错误的表drop了,直接查询看不出来,用max直接报172号文件错误;
重建分区表,impdp数据.
大功告成,虽然不算一次成功的恢复,但是还好硬件故障也保住了数据库,万幸!!!
PS:归档真的太重要了,有错一定要立马解决!!!