RMAN全备情况下,所有文件丢失 spfile ctl datafile 归档 redo
恢复思路:文件都缺失所以无法开库,甚至不能在sqlplus下进行nomount
所以利用rman的备份集中备份的spfile启动到rman里的nomount下
删除所有的数据文件 控制文件和redo 以及 spfile
[oracle@ORA-RAC1 dbs]$ ls
arch1_1_1067272870.dbf arch1_3_1067355744.dbf hc_prod.dat lkPROD snapcf_prod.f
arch1_2_1067272870.dbf arch1_4_1067355744.dbf init.ora orapwprod spfileprod.ora
[oracle@ORA-RAC1 dbs]$ mv spfileprod.ora spfileprod.ora.bak
[oracle@ORA-RAC1 dbs]$ cd /u01/oradata/prod/
[oracle@ORA-RAC1 prod]$ ls
archive control01.ctl fda01.dbf redo02.log system01.dbf test01.dbf
arch.tbs control02.ctl flash_recovery_area redo03.log tbsttt.dbf undotbs01.dbf
backup example01.dbf redo01.log sysaux01.dbf temp01.dbf users01.dbf
[oracle@ORA-RAC1 prod]$ rm -f *.dbf
[oracle@ORA-RAC1 prod]$ ls
archive arch.tbs backup control01.ctl control02.ctl flash_recovery_area redo01.log redo02.log redo03.log
[oracle@ORA-RAC1 prod]$ rm -f *.ctl
[oracle@ORA-RAC1 prod]$ rm -f *.redo
[oracle@ORA-RAC1 prod]$ rm -f *.log
[oracle@ORA-RAC1 prod]$ ls
archive arch.tbs backup flash_recovery_area
[oracle@ORA-RAC1 prod]$ ll
总用量 10260
drwxr-xr-x 2 oracle oinstall 4096 4月 19 09:34 archive
-rw-r----- 1 oracle oinstall 10493952 4月 19 09:37 arch.tbs
drwxr-xr-x 2 oracle oinstall 4096 4月 19 09:37 backup
drwxr-xr-x 3 oracle oinstall 4096 3月 19 22:13 flash_recovery_area
[oracle@ORA-RAC1 prod]$ rm -f arch.tbs
数据库端刷新一下缓存切归档
此时数据库就连不上了,挂了,spfile都没有了所以无法启动到nomount
SYS@ prod>alter system flush buffer_cache;
系统已更改。
SYS@ prod>/
系统已更改。
SYS@ prod>/
SYS@ prod>alter system switch logfile;
alter system switch logfile
*
第 1 行出现错误:
ORA-03113: 通信通道的文件结尾 进程 ID:
2923
会话 ID: 1 序列号: 5
SYS@ prod>/
ERROR:
ORA-03114: 未连接到 ORACLE
SYS@ prod>
SYS@ prod>exit
从 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开
[oracle@ORA-RAC1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on 星期一 4月 19 09:45:48 2021
Copyright (c) 1982, 2013, Oracle. All rights reserved.
已连接到空闲例程。
SYS@ prod>startup
ORA-01078: failure in processing system parameters
LRM-00109: ������������������������ '/u01/oracle/dbs/initprod.ora'
SYS@ prod>
由于我有RMAN备份,所以可以利用rman进行恢复,启动到nomount下
[oracle@ORA-RAC1 ~]$ rman target /
恢复管理器: Release 11.2.0.4.0 - Production on 星期一 4月 19 09:48:15 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库 (未启动)
RMAN> startup nomount
启动失败: ORA-01078: failure in processing system parameters
LRM-00109: ������������������������ '/u01/oracle/dbs/initprod.ora'
在没有参数文件的情况下启动 Oracle 实例以检索 spfile
Oracle 实例已启动
系统全局区域总计 1068937216 字节
Fixed Size 2260088 字节
Variable Size 281019272 字节
Database Buffers 780140544 字节
Redo Buffers 5517312 字节
RMAN>
此时list backup是无法获取到任何信息的
RMAN> list backup;
使用目标数据库控制文件替代恢复目录
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: list 命令 (在 04/19/2021 09:54:36 上) 失败
ORA-01507: 未装载数据库
RMAN>
手动去找rman的备份集,利用备份集恢复spfile
[oracle@ORA-RAC1 prod]$ cd backup
[oracle@ORA-RAC1 backup]$ ll
总用量 1421676
-rw-r----- 1 oracle oinstall 1445765120 4月 19 09:37 2021041994.bak
-rw-r----- 1 oracle oinstall 10027008 4月 19 09:37 2021041995.bak
[oracle@ORA-RAC1 backup]$
利用备份集恢复spfile
RMAN> restore spfile from '/u01/oradata/prod/backup/2021041995.bak';
启动 restore 于 2021-04-19 09:56:54
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=19 设备类型=DISK
通道 ORA_DISK_1: 正在从 AUTOBACKUP /u01/oradata/prod/backup/2021041995.bak 还原 spfile
通道 ORA_DISK_1: 从 AUTOBACKUP 还原 SPFILE 已完成
完成 restore 于 2021-04-19 09:56:55
数据库端 启动到nomount下
SYS@ prod>startup force nomount;
ORACLE 例程已经启动。
Total System Global Area 768294912 bytes
Fixed Size 2257192 bytes
Variable Size 465571544 bytes
Database Buffers 297795584 bytes
Redo Buffers 2670592 bytes
SYS@ prod>show parameter spfile
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
spfile string /u01/oracle/dbs/spfileprod.ora
SYS@ prod>select status from v$instance;
STATUS
------------------------------------
STARTED
SYS@ prod>
已经到nomount了可以加载spfile了
下一步就是需要恢复控制文件,来代开数据库到mount下
这里我忘记重新连接一次rman(如果是磁盘损坏需要更换路径的情况先不做考虑)
RMAN> restore controlfile from '/u01/oradata/prod/backup/2021041995.bak';
启动 restore 于 2021-04-19 10:03:49
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00601: fatal error in recovery manager
RMAN-03004: 执行命令期间出现严重错误
RMAN-04020: 目标数据库名称 "DUMMY" 与通道名不匹配: "PROD"
RMAN-03002: restore 命令 (在 04/19/2021 10:03:49 上) 失败
ORA-03135: 连接失去联系
进程 ID: 3396
会话 ID: 1 序列号: 5
[oracle@ORA-RAC1 ~]$ rman target /
恢复管理器: Release 11.2.0.4.0 - Production on 星期一 4月 19 10:03:55 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: PROD (未装载)
RMAN> restore controlfile from '/u01/oradata/prod/backup/2021041995.bak';
启动 restore 于 2021-04-19 10:04:12
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=20 设备类型=DISK
通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=/u01/oradata/prod/control01.ctl
输出文件名=/u01/oradata/prod/control02.ctl
完成 restore 于 2021-04-19 10:04:13
RMAN>
在数据库端启动数据库到mount
SYS@ prod>alter database mount;
数据库已更改。
SYS@ prod>select status from v$instance;
STATUS
------------------------------------
MOUNTED
SYS@ prod>
已经启动到mount状态,能看到DBID,并且能看到list backup
RMAN> exit
恢复管理器完成。
[oracle@ORA-RAC1 ~]$ rman target /
恢复管理器: Release 11.2.0.4.0 - Production on 星期一 4月 19 10:09:37 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
已连接到目标数据库: PROD (DBID=478852841, 未打开)
RMAN> list backup;
使用目标数据库控制文件替代恢复目录
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ -------------------
90 Full 1.35G DISK 00:00:04 2021-04-19 09:37:51
BP 关键字: 90 状态: AVAILABLE 已压缩: NO 标记: TAG20210419T093747
段名:/u01/oradata/prod/backup/2021041994.bak
备份集 90 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ------------------- ----
1 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/system01.dbf
2 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/sysaux01.dbf
3 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/undotbs01.dbf
4 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/users01.dbf
5 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/example01.dbf
6 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/tbsttt.dbf
7 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/test01.dbf
8 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/fda01.dbf
9 Full 2905019 2021-04-19 09:37:47 /u01/oradata/prod/arch.tbs
RMAN>
直接restore数据库
RMAN> restore database;
启动 restore 于 2021-04-19 10:11:48
启动 implicit crosscheck backup 于 2021-04-19 10:11:48
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=18 设备类型=DISK
已交叉检验的 1 对象
完成 implicit crosscheck backup 于 2021-04-19 10:11:48
启动 implicit crosscheck copy 于 2021-04-19 10:11:48
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 2021-04-19 10:11:48
搜索恢复区中的所有文件
正在编制文件目录...
没有为文件编制目录
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始还原数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_DISK_1: 将数据文件 00001 还原到 /u01/oradata/prod/system01.dbf
通道 ORA_DISK_1: 将数据文件 00002 还原到 /u01/oradata/prod/sysaux01.dbf
通道 ORA_DISK_1: 将数据文件 00003 还原到 /u01/oradata/prod/undotbs01.dbf
通道 ORA_DISK_1: 将数据文件 00004 还原到 /u01/oradata/prod/users01.dbf
通道 ORA_DISK_1: 将数据文件 00005 还原到 /u01/oradata/prod/example01.dbf
通道 ORA_DISK_1: 将数据文件 00006 还原到 /u01/oradata/prod/tbsttt.dbf
通道 ORA_DISK_1: 将数据文件 00007 还原到 /u01/oradata/prod/test01.dbf
通道 ORA_DISK_1: 将数据文件 00008 还原到 /u01/oradata/prod/fda01.dbf
通道 ORA_DISK_1: 将数据文件 00009 还原到 /u01/oradata/prod/arch.tbs
通道 ORA_DISK_1: 正在读取备份片段 /u01/oradata/prod/backup/2021041994.bak
通道 ORA_DISK_1: 段句柄 = /u01/oradata/prod/backup/2021041994.bak 标记 = TAG20210419T093747
通道 ORA_DISK_1: 已还原备份片段 1
通道 ORA_DISK_1: 还原完成, 用时: 00:00:07
完成 restore 于 2021-04-19 10:11:55
RMAN>
RMAN> recover database
2> ;
启动 recover 于 2021-04-19 10:15:00
使用通道 ORA_DISK_1
正在开始介质的恢复
无法找到归档日志
归档日志线程=1 序列=106
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: recover 命令 (在 04/19/2021 10:15:00 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 106 的归档日志以及起始 SCN 2905019
RMAN>
SYS@ prod>alter database open resetlogs;
数据库已更改。
SYS@ prod>
SYS@ prod>select status from v$instance;
STATUS
------------------------------------
OPEN
SYS@ prod
SYS@ prod>select file#,TABLESPACE_NAME,CHECKPOINT_CHANGE# from v$datafile_header;
FILE# TABLESPACE_NAME CHECKPOINT_CHANGE#
---------- ------------------------------------------------------------------------------------------ ------------------
1 SYSTEM 2905023
2 SYSAUX 2905023
3 UNDOTBS1 2905023
4 USERS 2905023
5 EXAMPLE 2905023
6 TBSTTT 2905023
7 TEST01 2905023
8 FDA 2905023
9 ARCHIVE_TBS 2905023
已选择9行。
SYS@ prod>col MEMBER for a30;
SYS@ prod>select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_RECOVE
---------- --------------------- --------------------- ------------------------------ ---------
3 ONLINE /u01/oradata/prod/redo03.log NO
2 ONLINE /u01/oradata/prod/redo02.log NO
1 ONLINE /u01/oradata/prod/redo01.log NO
SYS@ prod>
Jrojyun
2021-04-19