今天,发现SAP系统的oracle数据库宕掉了。报错ORA-10873,经过查证解决该问题。记录一下,备忘。
一、问题
Oracle版本为12.1.0.2.0,在启动服务器后启动数据库startup,报错ORA-10873。
二、查证
到SAP Support Portal上搜索 ORA 10873,收到一个note2501445 - error ORA-10873, ORA-01110 during starting up oracle
上面的描述与该问题症状一致,建议转到note4162 - Missing "end backup"中的Problem 2.
原因是
Reason and Prerequisites
- Forgotten or missing "end backup" after manual ONLINE DB backup or after a backup tool (for example, BRBACKUP) has crashed or
- DB crash or "shutdown abort" during an ONLINE backup after "alter tablespace <tspname> begin backup"
造成这一问题有2种可能:
- 手动在线备份数据库时忘记或缺失了"end backup";
- 在数据库在线备份的时候,数据库崩溃或被强行关闭了;
显然我们没有手动操作,应该是在备份脚本运行的时候数据库崩溃了。那么按照解决方案搞一下。
三、解决问题
关闭数据库,忽略报错。打开数据库到mount状态,并检查一下。
shutdown immediate;
startup mount;
select instance_name, status from v$instance;
select name, open_mode from v$database;
检查一下是哪几个数据文件还在backup mode状态。虽然报错是数据文件1,但是很可能有几个数据文件在这个状态而报错只报第一个数据文件。果然,v$backup视图里面有3个数据文件是ACTIVE的。那么,我们也就没有必要一个一个来处理了,直接改一下数据库的状态吧。
select * from v$backup;
解决问题的关键步骤就是这行命令,把数据库从backup的mode里解救出来。
alter database end backup;
再检查一下没有数据文件在备份的状态了,打开数据库,问题解决