环境:win10 oracle 12.2.0.1单机
1.故障情况
2.查看告警日志
2020-11-17T20:27:09.226581+08:00
Completed: ALTER DATABASE MOUNT
2020-11-17T20:27:09.274187+08:00
ALTER DATABASE OPEN
2020-11-17T20:27:09.593865+08:00
Ping without log force is disabled:
instance mounted in exclusive mode.
Endian type of dictionary set to little
2020-11-17T20:27:09.724921+08:00
TT00: Gap Manager starting (PID:12528)
2020-11-17T20:27:09.966826+08:00
Errors in file D:\APP\XMC\VIRTUAL\diag\rdbms\xmc\xmc\trace\xmc_lgwr_2060.trc:
ORA-00313: ??????? 4 (???? 1) ???
ORA-00312: ???? 4 ?? 1: 'D:\1.LOG'
ORA-27041: ??????
OSD-04002: Ϟ·¨´ļ�-Error: (OS 2) ϵͳ֒²»µ½ָ¶¨µŎļ�020-11-17T20:27:09.973054+08:00
Errors in file D:\APP\XMC\VIRTUAL\diag\rdbms\xmc\xmc\trace\xmc_lgwr_2060.trc:
ORA-00313: ??????? 4 (???? 1) ???
ORA-00312: ???? 4 ?? 1: 'D:\1.LOG'
ORA-27041: ??????
OSD-04002: Ϟ·¨´ļ�-Error: (OS 2) ϵͳ֒²»µ½ָ¶¨µŎļ�020-11-17T20:27:09.989754+08:00
Errors in file D:\APP\XMC\VIRTUAL\diag\rdbms\xmc\xmc\trace\xmc_ora_15096.trc:
ORA-00313: 无法打开日志组 1 (用于线程 ) 的成员
ORA-00312: 联机日志 4 线程 1: 'D:\1.LOG'
2020-11-17T20:27:10.082878+08:00
USER (ospid: 15096): terminating the instance due to error 313
ERROR: Unable to normalize symbol name for the following short stack (at offset 125):
dbgeGetAsyncActivForED()+939<-dbkif_record_dde_actions()+421<-ksuitm_opt()+2482<-ksuitm()+14<-kcfopd()+10758<-adbdrv_options..0()+38247<-adbdrv()+161<-opiexe()+29912<-opiosq0()+6886<-kpooprx()+464<-kpoal8()+1173<-opiodr()+1378<-ttcpip()+1368<-opitsk()+2474<-opiino()+1265<-opiodr()+1378<-opidrv()+1833<-sou2o()+112<-opimai_real()+499<-opimai()+231<-OracleThreadStart()+745<-00007FF937D77C24<-00007FF938FECEA1
2020-11-17T20:27:10.212274+08:00
System state dump requested by (instance=1, osid=15096), summary=[abnormal instance termination].
System State dumped to trace file D:\APP\XMC\VIRTUAL\diag\rdbms\xmc\xmc\trace\xmc_diag_5220_20201117202710.trc
继续查看trc,搜索error
32: TMON ospid 6352 sid 4 ser 55667, waiting for 'rdbms ipc message'
33: USER ospid 15096 sid 128 ser 25658,
Cmd: ALTER DATABASE
34: TT01 ospid 14588 sid 251 ser 46152, waiting for 'Data Guard: Timer'
35: M000 ospid 10408 sid 374 ser 858,
36: M001 ospid 14208 sid 498 ser 26922, waiting for 'class slave wait' (DEAD)
System global information:
processes: base 0x00007FF94A4BE638, size 640
allocation: free sessions 0x00007FF94A7FB0E0, free calls 0x0000000000000000
control alloc errors: 1092 (process), 1092 (session), 1092 (call), 0 (transaction)
这里看出是控制文件出问题了
3.手动创建控制文件
由于之前没有备份,这里直接手动创建控制文件,如下:
CREATE CONTROLFILE REUSE SET DATABASE "XMC"
MAXLOGFILES 16
MAXDATAFILES 100
MAXINSTANCES 2
MAXLOGHISTORY 1
DATAFILE
'D:\app\xmc\virtual\oradata\xmc\SYSAUX01.DBF',
'D:\app\xmc\virtual\oradata\xmc\SYSTEM01.DBF',
'D:\app\xmc\virtual\oradata\xmc\UNDOTBS01.DBF',
'D:\app\xmc\virtual\oradata\xmc\USERS01.DBF'
LOGFILE
GROUP 1 'D:\app\xmc\virtual\oradata\xmc\REDO01.LOG' SIZE 50M,
GROUP 2 'D:\app\xmc\virtual\oradata\xmc\REDO02.LOG' SIZE 50M,
GROUP 3 'D:\app\xmc\virtual\oradata\xmc\REDO03.LOG' SIZE 50M RESETLOGS;
控制文件已创建。
这里将DATAFILE防止后面一直出错,到前面就没问题了
然后继续
RMAN> recover database;
从位于 17-11月-20 的 recover 开始
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=126 设备类型=DISK
正在开始介质的恢复
线程 1 序列 25 的归档日志已作为文件 D:\APP\XMC\VIRTUAL\ORADATA\XMC\REDO02.LOG 存在于磁盘上
归档日志文件名 = D:\APP\XMC\VIRTUAL\ORADATA\XMC\REDO02.LOG 线程 = 1 序列 = 25
介质恢复完成, 用时: 00:00:01
在 17-11月-20 完成了 recover
RMAN> alter database open resetlogs;
已处理语句
RMAN> select instance_name,status from gv$instance;
INSTANCE_NAME STATUS
---------------- ------------
xmc OPEN
至此,这个问题解决。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30654353/viewspace-2734846/,如需转载,请注明出处,否则将追究法律责任。