19C数据库从内存恢复spfile
19.7的Oracle数据库,主库RAC,备库单节点+ASM,备库的MRP0进程正常,日志应用正常。
但是有天发现备库的spfile不在了。
发现的原因是备库的NBU备份,在NBU控制台没报错,但是从数据库里查询
select to_char(start_time,'yyyy-mm-dd hh24:mi:ss') ,to_char(end_time,'yyyy-mm-dd hh24:mi:ss'),input_bytes/1024/1024/1024,status,output_device_type,input_type,elapsed_seconds/60 from v$rman_backup_job_details order by start_time desc;
状态一列显示失败状态。
后来手动备份,从日志里发现了是spfile丢失,导致了不能备份。spfile丢失的原因无从考证了,因为spfile开始没放在ASM上,放在了操作系统磁盘上。
于是着手恢复spfile。原本方案是通过以前备份的pfile进行生成spfile的恢复。
后来经前辈指点,可以这样恢复:
可以通过内存参数生成spfile:
SQL> create spfile='+data' from memory;
ASMCMD> pwd
+data/DATA/PARAMETERFILE
ASMCMD> ls -l
Type Redund Striped Time Sys Name
PARAMETERFILE UNPROT COARSE DEC 02 15:00:00 Y spfile.327.1058108517
关闭日志应用,关闭数据库,重启数据库,重启日志应用,发现日志应用正常,spfile指向正常。