最近处理了一起windows server 2012服务器oracle12c数据库新增实例,导致旧实例无法正常对外提供服务.
1、trace日志报错内容
控制文件无法打开报错提示:
Errors in file D:\APP\ADMINISTRATOR\VIRTUAL\diag\rdbms\crm\crm\trace\crm_m000_6260.trc:
ORA-00210: 无法打开指定的控制文件
ORA-00202: 控制文件: ''D:\APP\ADMINISTRATOR\VIRTUAL\ORADATA\CRM\CONTROL01.CTL''
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 5) 拒绝访问。
数据表空间文件无法打开报错提示:
Errors in file D:\APP\ADMINISTRATOR\VIRTUAL\diag\rdbms\crm\crm\trace\crm_smon_2928.trc:
ORA-01116: 打开数据库文件 8 时出错
ORA-01110: 数据文件 8: 'D:\APP\ADMINISTRATOR\VIRTUAL\ORADATA\CRM\CRM_DATA01.DBF'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 5) 拒绝访问。
2、故障发生的过程
因新增项目,需要添加数据库用户,但同事没有选择直接在原有实例上新增数据表空间与用户,也未选择使用dbca创建,而是使用dbms界面化操作新增实例,在新增实例过程有两个错误提示(具体错误未提供),在选择忽略之后,新建的orcl实例正常提供服务,但旧实例crm无法正常提供服务,报错如上所示。
3、处理过程
1)尝试使用init.ora来恢复旧实例,但该配置文件旧实例的信息已经被抹除
2)使用数据泵定时备份在新服务器上恢复,但会丢失一天的数据
3)其他恢复方式,这里不展开描述
4、恢复方法
1)、经排查发现任务管理器的服务进程中,crm运行的实例用户是oracle,但在报错日志中提到的CRM_DATA01.DBF与CONTROL01.CTL文件右键的【属性–安全–组或用户名列表】中已经没有该用户组,即操作新增实例时,oracle用户组已经被不明原因删除,怀疑在新增实例报错时,该用户被手动清理。
2)、控制面板新增该用户组,杀死crm实例运行的相关进程,重新启动crm实例,测试正常。重启业务服务,经测试应用业务恢复正常。