现象描述: oracle 10g rac数据库无法启动,经过多次服务器重新启动均失败。
告警信息: 1、启动crs时,两个节点的srv、inst和 数据库的db和db.cs无法启动,state为UNKNOWN;其余的服务可以正常启动;
[oracle@ctidb1 /]$ crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ora....SM1.asm application 0/5 0/0 ONLINE ONLINE ctidb1
ora....B1.lsnr application 0/5 0/0 ONLINE ONLINE ctidb1
ora.ctidb1.gsd application 0/5 0/0 ONLINE ONLINE ctidb1
ora.ctidb1.ons application 0/3 0/0 ONLINE ONLINE ctidb1
ora.ctidb1.vip application 0/0 0/0 ONLINE ONLINE ctidb1
ora....SM2.asm application 0/5 0/0 ONLINE ONLINE ctidb2
ora....B2.lsnr application 0/5 0/0 ONLINE ONLINE ctidb2
ora.ctidb2.gsd application 0/5 0/0 ONLINE ONLINE ctidb2
ora.ctidb2.ons application 0/3 0/0 ONLINE ONLINE ctidb2
ora.ctidb2.vip application 0/0 0/0 ONLINE ONLINE ctidb2
ora.uidb.db application 0/1 0/1 ONLINE OFFLINE
ora.uidb.db.cs application 0/1 0/1 ONLINE OFFLINE
ora....db1.srv application 0/1 0/0 ONLINE OFFLINE
ora....db2.srv application 0/1 0/0 ONLINE OFFLINE
ora....b1.inst application 0/5 0/0 ONLINE OFFLINE
ora....b2.inst application 0/5 0/0 ONLINE OFFLINE
2、数据库alert日志:
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: '+UIDB/uidb/onlinelog/group_1.257.667676421'
ORA-17503: ksfdopn: 2 未能打开文件 +UIDB/uidb/onlinelog/group_1.257.667676421
ORA-00020: 超出最大进程数 ()
ARC1: Failed to archive thread 1 sequence 63 (19504)
ARC1: Failed to archive thread 1 sequence 63 (19504)
原因分析: 发现启动crs时的异常情况,查看数据库alert日志:通过日志ARC1: Failed to archive thread 1 sequence 63 (19504)可以分析数据库归档可能存在问题。
处理过程: 1、检查归档空间:
由于现场的数据库建立在asm上,所以首先检查asm磁盘情况;
切换到asm实例上export ORACLE_SID=+ASM1;登录数据库查询空间select name, total_mb, free_mb, state from v$asm_diskgroup;经过查询FLASH_RECAVORY的空间只剩与43MB;经过查询定位出现场的问题是由于归档空间满造成的;
2、查询数据库节点的最大(SEQUENCE#)
select thread#, max(sequence#) from v$archived_log
group by thread#;
3、登录rman删除归档数据文件
delete archivelog until logseq=62 thread 1;
delete archivelog until logseq=38 thread 2;
4、由于磁盘空间不足且为方便数据库维护的方便,现场将数据库改为非归档模式
alter system set cluster_database = FALSE scope= spfile sid='*';
alter database noarchivelog;
alter system set cluster_database=TRUE scope=spfile sid='*';
修改数据为非归档模式还可以按照如下操作来做:
1,sqlplus "/as sysdba"
2,shutdown immediate;
3,startup mount;
4,alter database noarchivelog;
5,alter database open;
6,archive log list; ----确认是否修改为非归档模式
5、修改完成后,重新启动数据库,数据库启动正常,业务回复。