复案例——丢失spfile的恢复
1.1. 丢失spfile的恢复
大前提:已经配置了数据库控制文件的自动备份,并且已经有可靠的备份:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
正在启动全部恢复目录的 resync
完成全部 resync
RMAN>
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO D:\RMANTEST\%F;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO D:\RMANTEST\%F;
已成功存储新的 RMAN 配置参数
正在启动全部恢复目录的 resync
完成全部 resync
RMAN>
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO D:\RMANTEST\%F;
CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO D:\ORACLE92\DATABASE NCFTEST1.ORA; # default
RMAN>
RMAN> run{
2> backup database
3> tag full_db_20041007
4> format d:\rmantest\full_dbtest_yyyymmdd%_u%.bak
5> include current controlfile;
6> backup archivelog all
7> tag arch_bak
8> format d:\rmantest\arch_yyyymmdd%_u%.bak
9> delete input;}
启动 backup 于 07-10月-04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
输入数据文件 fno=00001 name=D:\ORACLE92\TEST1 YSTEM01.DBF
输入数据文件 fno=00002 name=D:\ORACLE92\TEST1\UNDOTBS01.DBF
输入数据文件 fno=00006 name=D:\ORACLE92\TEST1\RMAN01.DBF
输入数据文件 fno=00003 name=D:\ORACLE92\TEST1\INDX01.DBF
输入数据文件 fno=00005 name=D:\ORACLE92\TEST1\USERS01.DBF
输入数据文件 fno=00004 name=D:\ORACLE92\TEST1\TOOLS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 07-10月-04
通道 ORA_DISK_1: 已完成段 1 于 07-10月-04
段 handle=D:\RMANTEST\FULL_DBTEST_YYYYMMDD%_U%.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:06
完成 backup 于 07-10月-04
启动 backup 于 07-10月-04
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =15 记录 ID=20 时间戳=538928248
通道 ORA_DISK_1: 正在启动段 1 于 07-10月-04
通道 ORA_DISK_1: 已完成段 1 于 07-10月-04
段 handle=D:\RMANTEST\ARCH_YYYYMMDD%_U%.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =D:\ORACLE92\ADMIN\TEST1\ARCH\ARC00015.001 记录 ID=20 时间戳 =538928248
完成 backup 于 07-10月-04
启动 Control File and SPFILE Autobackup 于 07-10月-04
段 handle=D:\RMANTEST\C-910599446-20041007-00 comment=NONE
完成 Control File and SPFILE Autobackup 于 07-10月-04
RMAN>
1.1.1. 将当前spfile挪到其他位置来模拟spfile丢失
RMAN> host;
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\>move D:\oracle92\database PFILETEST1.ORA D:\oracle92\database\bak PFILETEST1.ORA
C:\>dir D:\oracle92\database PFILETEST1.ORA
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:\oracle92\database 的目录
找不到文件
C:\>dir D:\oracle92\database\bak PFILETEST1.ORA
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:\oracle92\database\bak 的目录
2004-10-04 14:06 2,560 SPFILETEST1.ORA
1 个文件 2,560 字节
0 个目录 10,708,807,680 可用字节
C:\>exit
主机命令完成
RMAN>
1.1.2. 设置ORACLE_SID
C:\>set ORACLE_SID=TEST1
C:\>ECHO ORACLE_SID
ORACLE_SID
C:\>
1.1.3. 登陆RMAN
C:\>rman
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
RMAN> connect target lunar/lunar@test1
已连接到目标数据库 (未启动)
RMAN> connect catalog rman/rman@rman
连接到恢复目录数据库
RMAN>
1.1.4. 在RMAN中设置DBID
使RMAN知道需要查找哪一个数据库的spfile
(必须在数据关闭的情况下设置DBID)
RMAN> set DBID=910599446
正在执行命令: SET DBID
RMAN>
1.1.5. 将数据库启动到nomount状态
RMAN> startup nomount;
启动失败: ORA-01078: failure in processing system parameters
LRM-00109: N^7(4r?*2NJ}ND<~ D:\ORACLE92\DATABASE\INITTEST1.ORA
正在尝试在没有参数文件的情况下启动 Oracle 例程...
Oracle 例程已启动
系统全局区域总计 97589952 字节
Fixed Size 453312 字节
Variable Size 46137344 字节
Database Buffers 50331648 字节
Redo Buffers 667648 字节
RMAN>
1.1.6. 从自动备份中还原参数文件
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO D:\RMANTEST\%F;
CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
RMAN> restore spfile from autobackup;
启动 restore 于 07-10月-04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=9 devtype=DISK
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20041007
通道 ORA_DISK_1: 已找到的自动备份: D:\RMANTEST\c-910599446-20041007-00
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 07-10月-04
RMAN> host;
恢复管理器完成。
C:\>dir D:\oracle92\database PFILETEST1.ORA
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:\oracle92\database 的目录
2004-10-07 14:31 2,560 SPFILETEST1.ORA
1 个文件 2,560 字节
0 个目录 10,528,374,784 可用字节
C:\> exit
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: TEST1(未安装)
连接到恢复目录数据库
RMAN>
1.1.7. 用Shutdown immediate关闭数据库
RMAN> shutdown immediate;
Oracle 例程已关闭
RMAN>
1.1.8. 重新启动数据库
RMAN> set DBID=910599446
正在执行命令: SET DBID
RMAN> startup
已连接到目标数据库 (未启动)
Oracle 例程已启动
数据库已加载
数据库已打开
系统全局区域总计 101784276 字节
Fixed Size 453332 字节
Variable Size 75497472 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节
RMAN>
1.1. 丢失spfile的恢复
大前提:已经配置了数据库控制文件的自动备份,并且已经有可靠的备份:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数
正在启动全部恢复目录的 resync
完成全部 resync
RMAN>
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO D:\RMANTEST\%F;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO D:\RMANTEST\%F;
已成功存储新的 RMAN 配置参数
正在启动全部恢复目录的 resync
完成全部 resync
RMAN>
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO D:\RMANTEST\%F;
CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO D:\ORACLE92\DATABASE NCFTEST1.ORA; # default
RMAN>
RMAN> run{
2> backup database
3> tag full_db_20041007
4> format d:\rmantest\full_dbtest_yyyymmdd%_u%.bak
5> include current controlfile;
6> backup archivelog all
7> tag arch_bak
8> format d:\rmantest\arch_yyyymmdd%_u%.bak
9> delete input;}
启动 backup 于 07-10月-04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
输入数据文件 fno=00001 name=D:\ORACLE92\TEST1 YSTEM01.DBF
输入数据文件 fno=00002 name=D:\ORACLE92\TEST1\UNDOTBS01.DBF
输入数据文件 fno=00006 name=D:\ORACLE92\TEST1\RMAN01.DBF
输入数据文件 fno=00003 name=D:\ORACLE92\TEST1\INDX01.DBF
输入数据文件 fno=00005 name=D:\ORACLE92\TEST1\USERS01.DBF
输入数据文件 fno=00004 name=D:\ORACLE92\TEST1\TOOLS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 07-10月-04
通道 ORA_DISK_1: 已完成段 1 于 07-10月-04
段 handle=D:\RMANTEST\FULL_DBTEST_YYYYMMDD%_U%.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:06
完成 backup 于 07-10月-04
启动 backup 于 07-10月-04
当前日志已存档
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在启动存档日志备份集
通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =15 记录 ID=20 时间戳=538928248
通道 ORA_DISK_1: 正在启动段 1 于 07-10月-04
通道 ORA_DISK_1: 已完成段 1 于 07-10月-04
段 handle=D:\RMANTEST\ARCH_YYYYMMDD%_U%.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
通道 ORA_DISK_1: 正在删除存档日志
存档日志文件名 =D:\ORACLE92\ADMIN\TEST1\ARCH\ARC00015.001 记录 ID=20 时间戳 =538928248
完成 backup 于 07-10月-04
启动 Control File and SPFILE Autobackup 于 07-10月-04
段 handle=D:\RMANTEST\C-910599446-20041007-00 comment=NONE
完成 Control File and SPFILE Autobackup 于 07-10月-04
RMAN>
1.1.1. 将当前spfile挪到其他位置来模拟spfile丢失
RMAN> host;
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\>move D:\oracle92\database PFILETEST1.ORA D:\oracle92\database\bak PFILETEST1.ORA
C:\>dir D:\oracle92\database PFILETEST1.ORA
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:\oracle92\database 的目录
找不到文件
C:\>dir D:\oracle92\database\bak PFILETEST1.ORA
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:\oracle92\database\bak 的目录
2004-10-04 14:06 2,560 SPFILETEST1.ORA
1 个文件 2,560 字节
0 个目录 10,708,807,680 可用字节
C:\>exit
主机命令完成
RMAN>
1.1.2. 设置ORACLE_SID
C:\>set ORACLE_SID=TEST1
C:\>ECHO ORACLE_SID
ORACLE_SID
C:\>
1.1.3. 登陆RMAN
C:\>rman
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
RMAN> connect target lunar/lunar@test1
已连接到目标数据库 (未启动)
RMAN> connect catalog rman/rman@rman
连接到恢复目录数据库
RMAN>
1.1.4. 在RMAN中设置DBID
使RMAN知道需要查找哪一个数据库的spfile
(必须在数据关闭的情况下设置DBID)
RMAN> set DBID=910599446
正在执行命令: SET DBID
RMAN>
1.1.5. 将数据库启动到nomount状态
RMAN> startup nomount;
启动失败: ORA-01078: failure in processing system parameters
LRM-00109: N^7(4r?*2NJ}ND<~ D:\ORACLE92\DATABASE\INITTEST1.ORA
正在尝试在没有参数文件的情况下启动 Oracle 例程...
Oracle 例程已启动
系统全局区域总计 97589952 字节
Fixed Size 453312 字节
Variable Size 46137344 字节
Database Buffers 50331648 字节
Redo Buffers 667648 字节
RMAN>
1.1.6. 从自动备份中还原参数文件
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO D:\RMANTEST\%F;
CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
RMAN> restore spfile from autobackup;
启动 restore 于 07-10月-04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=9 devtype=DISK
通道 ORA_DISK_1: 寻找以下日期的自动备份: 20041007
通道 ORA_DISK_1: 已找到的自动备份: D:\RMANTEST\c-910599446-20041007-00
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 07-10月-04
RMAN> host;
恢复管理器完成。
C:\>dir D:\oracle92\database PFILETEST1.ORA
驱动器 D 中的卷没有标签。
卷的序列号是 644D-03D9
D:\oracle92\database 的目录
2004-10-07 14:31 2,560 SPFILETEST1.ORA
1 个文件 2,560 字节
0 个目录 10,528,374,784 可用字节
C:\> exit
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
连接到目标数据库: TEST1(未安装)
连接到恢复目录数据库
RMAN>
1.1.7. 用Shutdown immediate关闭数据库
RMAN> shutdown immediate;
Oracle 例程已关闭
RMAN>
1.1.8. 重新启动数据库
RMAN> set DBID=910599446
正在执行命令: SET DBID
RMAN> startup
已连接到目标数据库 (未启动)
Oracle 例程已启动
数据库已加载
数据库已打开
系统全局区域总计 101784276 字节
Fixed Size 453332 字节
Variable Size 75497472 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节
RMAN>