- 论坛徽章:
- 0
|
简单讲述一下全库恢复和恢复个别表空间或数据文件。如果想实现上述恢复,必要条件如下:
1、 当前控制文件完好。
2、 必须具备恢复需要的数据文件备份、增量备份和归档日志备份。
3、 如果任何一个数据文件没有备份,必须具备自从文件创建以来的在线REDO和归档REDO,这样RMAN可以重新创建数据文件,过程就是先创建空的数据文件,然后再应用归档REDO和在线REDO
恢复案例一:全库恢复
如果丢失了所有的数据文件,存在有效的当前控制文件和参数文件,必须进行全库恢复。
SQL> shutdown immediate
数据库已经关闭
已经卸载数据库
ORACLE 例程已经关闭
删除所有数据文件
SQL> startup
ORACLE 例程已经启动
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF'
SQL> startup mount
ORACLE 例程已经启动
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
数据库装载完毕
C:\Documents and Settings\Administrator>set oracle_sid=rome
C:\Documents and Settings\Administrator>rman target /
恢复管理器: Release 10.2.0.2.0 - Production on 星期二 1月 23 15:09:53 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库: ROME (DBID=252956976, 未打开)
RMAN> restore database;
启动 restore 于 23-1月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
正将数据文件00002恢复到F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF
通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM
E\BACKUPSET\2007_01_23\O1_MF_NNNDF_TAG20070123T150249_2VCDRVRW_.BKP
通道 ORA_DISK_1: 已恢复备份段 1段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\
ROME\BACKUPSET\2007_01_23\
O1_MF_NNNDF_TAG20070123T150249_2VCDRVRW_.BKP 标记 = TAG20070123T150249
通道 ORA_DISK_1: 恢复完成, 用时: 00:07:03
完成 restore 于 23-1月 -07
SQL> recover database;
完成介质恢复
SQL> alter database open;
数据库已更改
几点说明
1、
![]()
RMAN> RESTORE DATABASE CHECK READONLY;
对于存在只读表空间的情况,如果我们是在有效备份之前把表空间设置为只读的情况,RMAN会跳过只读表空间的恢复。
![]()
SQL> alter tablespace test read only;
![]()
![]()
表空间已更改
![]()
![]()
做全库备份
![]()
![]()
SQL> shutdown immediate
![]()
数据库已经关闭
![]()
已经卸载数据库
![]()
ORACLE 例程已经关闭
![]()
![]()
删除所有数据文件
![]()
![]()
SQL> startup mount
![]()
ORACLE 例程已经启动
![]()
![]()
Total System Global Area 167772160 bytes
![]()
Fixed Size 1288340 bytes
![]()
Variable Size 104859500 bytes
![]()
Database Buffers 54525952 bytes
![]()
Redo Buffers 7098368 bytes
![]()
数据库装载完毕
![]()
![]()
RMAN> restore database;
![]()
![]()
启动 restore 于 23-1月 -07
![]()
使用目标数据库控制文件替代恢复目录
![]()
分配的通道: ORA_DISK_1
![]()
通道 ORA_DISK_1: sid=155 devtype=DISK
![]()
![]()
未处理数据文件 5, 因为文件是只读的
![]()
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
![]()
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
![]()
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
![]()
正将数据文件00002恢复到F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
![]()
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
![]()
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
![]()
通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM
![]()
E\BACKUPSET\2007_01_23\O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP
![]()
通道 ORA_DISK_1: 已恢复备份段 1
![]()
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_23\
![]()
O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP 标记 = TAG20070123T154106
![]()
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:46
![]()
完成 restore 于 23-1月 -07
![]()
![]()
RMAN> restore database check readonly;
![]()
![]()
启动 restore 于 23-1月 -07
![]()
使用通道 ORA_DISK_1
![]()
![]()
正在略过数据文件 1; 已恢复到文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.
![]()
DBF
![]()
正在略过数据文件 2; 已恢复到文件 F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
![]()
正在略过数据文件 3; 已恢复到文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.
![]()
DBF
![]()
正在略过数据文件 4; 已恢复到文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.D
![]()
BF
![]()
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
![]()
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
![]()
正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF
![]()
通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM
![]()
E\BACKUPSET\2007_01_23\O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP
![]()
通道 ORA_DISK_1: 已恢复备份段 1
![]()
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_23\
![]()
O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP 标记 = TAG20070123T154106
![]()
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:03
![]()
完成 restore 于 23-1月 -07
![]()
2、
![]()
RMAN> RECOVER DATABASE DELETE ARCHIVELOG MAXSIZE 25MB;
在进行RESTORE操作的时候可以加上DELETE ARCHIVELOG参数来删除由于RESTORE操作产生的归档日志(已经应用到数据文件)以节约磁盘空间;MAXSIZE限制了产生的归档日志文件的最大值,如果恢复过程中产生的日志大于所设置的最大值,将会报错,只能重新设置更大的MAXSIZE值。
恢复案例二:恢复个别表空间或者数据文件
1、 确认数据库处于MOUNT或者OPEN状态。
2、 将表空进OFFLINE:ALTER TABLESPACE ... OFFLINE IMMEDIATE。
3、 恢复表空间或者数据文件。
![]()
SQL> alter tablespace test read write;
![]()
![]()
表空间已更改。
![]()
![]()
RMAN> sql 'alter tablespace test offline immediate';
![]()
![]()
sql 语句: alter tablespace test offline immediate
![]()
![]()
RMAN> restore tablespace "TEST";
![]()
![]()
启动 restore 于 23-1月 -07
![]()
使用通道 ORA_DISK_1
![]()
![]()
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
![]()
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
![]()
正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF
![]()
通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM
![]()
E\BACKUPSET\2007_01_23\O1_MF_NNNDF_TAG20070123T160914_2VCJOCY8_.BKP
![]()
通道 ORA_DISK_1: 已恢复备份段 1
![]()
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_23\
![]()
O1_MF_NNNDF_TAG20070123T160914_2VCJOCY8_.BKP 标记 = TAG20070123T160914
![]()
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:03
![]()
完成 restore 于 23-1月 -07
![]()
![]()
RMAN> recover tablespace "TEST";
![]()
![]()
启动 recover 于 23-1月 -07
![]()
使用通道 ORA_DISK_1
![]()
![]()
正在开始介质的恢复
![]()
介质恢复完成, 用时: 00:00:04
![]()
![]()
完成 recover 于 23-1月 -07
![]()
![]()
RMAN> sql 'alter tablespace test online';
![]()
![]()
sql 语句: alter tablespace test online
![]()
几个不同类型的文件恢复案例
恢复案例三:恢复控制文件
全部控制文件丢失,需要从备份的控制文件恢复。恢复了控制文件后必须要进行RECOVER恢复然后用RESETLOGS参数打开数据库,我们也可以把控制文件恢复到其他位置(不是在参数文件中给出的控制文件位置)。本例假定没有使用恢复目录,我们将在以后介绍带有恢复目的RMAN备份如何恢复控制文件。如果没有恢复目录,用RMAN只能在NOMOUNT状态从备份中进行控制文件的恢复。
从自动备份控制文件恢复:
![]()
RMAN> configure controlfile autobackup on;
旧的 RMAN 配置参数:
![]()
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
新的 RMAN 配置参数:
![]()
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数:
![]()
RMAN> show all;
RMAN 配置参数为:
![]()
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
![]()
CONFIGURE BACKUP OPTIMIZATION OFF; # default
![]()
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
![]()
CONFIGURE CONTROLFILE AUTOBACKUP ON;
![]()
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
![]()
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET 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 ENCRYPTION FOR DATABASE OFF; # default
![]()
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
![]()
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
![]()
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S
![]()
NCFROME.ORA'; # default
![]()
![]()
RMAN> backup database;
![]()
![]()
启动 backup 于 24-1月 -07
![]()
分配的通道: ORA_DISK_1
![]()
通道 ORA_DISK_1: sid=143 devtype=DISK
![]()
通道 ORA_DISK_1: 启动全部数据文件备份集
![]()
通道 ORA_DISK_1: 正在指定备份集中的数据文件
![]()
输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
![]()
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
![]()
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
![]()
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
![]()
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF
![]()
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
![]()
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
![]()
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1
![]()
_MF_NNNDF_TAG20070124T091006_2VFDHGYR_.BKP 标记=TAG20070124T091006 注释=NONE
![]()
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
![]()
完成 backup 于 24-1月 -07
![]()
![]()
启动 Control File and SPFILE Autobackup 于 24-1月 -07段
handle=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\AUTOBACKUP\2007_01_2
![]()
4\O1_MF_S_612695432_2VFDJ95V_.BKP comment=NONE
![]()
完成 Control File and SPFILE Autobackup 于 24-1月 -07
![]()
![]()
SQL> shutdown immediate
![]()
数据库已经关闭。
![]()
已经卸载数据库。
![]()
ORACLE 例程已经关闭。
![]()
![]()
删除所有的控制文件。
![]()
![]()
SQL> startup
![]()
ORACLE 例程已经启动。
![]()
![]()
Total System Global Area 167772160 bytes
![]()
Fixed Size 1288340 bytes
![]()
Variable Size 104859500 bytes
![]()
Database Buffers 54525952 bytes
![]()
Redo Buffers 7098368 bytes
![]()
ORA-00205: ?????????, ??????, ???????
![]()
![]()
SQL> shutdown immediate
![]()
ORA-01507: ??????
![]()
![]()
ORACLE 例程已经关闭。
![]()
![]()
SQL> startup nomount
![]()
ORACLE 例程已经启动。
![]()
![]()
Total System Global Area 167772160 bytes
![]()
Fixed Size 1288340 bytes
![]()
Variable Size 104859500 bytes
![]()
Database Buffers 54525952 bytes
![]()
Redo Buffers 7098368 bytes
![]()
![]()
RMAN> SET DBID 252956976;
![]()
正在执行命令: SET DBID
![]()
RMAN> restore controlfile from autobackup;
![]()
![]()
启动 restore 于 24-1月 -07
![]()
使用目标数据库控制文件替代恢复目录
![]()
分配的通道: ORA_DISK_1
![]()
通道 ORA_DISK_1: sid=155 devtype=DISK
![]()
![]()
恢复区域目标: d:\oracle\product\10.2.0\flash_recovery_area
![]()
用于搜索的数据库名 (或数据库的唯一名称): ROME
![]()
通道 ORA_DISK_1: 在恢复区域中找到自动备份
![]()
通道 ORA_DISK_1: 已找到的自动备份:
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\
![]()
ROME\AUTOBACKUP\2007_01_24\O1_MF_S_612695432_2VFDJ95V_.BKP
![]()
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
![]()
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\CONTROL01.CTL
![]()
输出文件名=F:\ORACLE\ORADATA\ROME\CONTROL02.CTL
![]()
输出文件名=E:\ORACLE\ORADATA\ROME\CONTROL03.CTL
![]()
完成 restore 于 24-1月 -07
![]()
![]()
RMAN> sql 'alter database mount';
![]()
![]()
sql 语句: alter database mount
![]()
释放的通道: ORA_DISK_1
![]()
![]()
RMAN> recover database;
![]()
![]()
启动 recover 于 24-1月 -07
![]()
启动 implicit crosscheck backup 于 24-1月 -07
![]()
分配的通道: ORA_DISK_1
![]()
通道 ORA_DISK_1: sid=155 devtype=DISK
![]()
已交叉检验的 21 对象
![]()
完成 implicit crosscheck backup 于 24-1月 -07
![]()
![]()
启动 implicit crosscheck copy 于 24-1月 -07
![]()
使用通道 ORA_DISK_1
![]()
已交叉检验的 1 对象
![]()
完成 implicit crosscheck copy 于 24-1月 -07
![]()
![]()
搜索恢复区域中的所有文件
![]()
正在编制文件目录...
![]()
目录编制完毕
![]()
![]()
已列入目录的文件的列表
![]()
=======================
![]()
文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\AUTOBACKUP\2007_01_24\
![]()
O1_MF_S_612714183_2VFYT8Y8_.BKP
![]()
![]()
使用通道 ORA_DISK_1
![]()
![]()
正在开始介质的恢复
![]()
![]()
存档日志线程 1 序列 1 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.L
![]()
OG 存在于磁盘上
![]()
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =
![]()
1
![]()
介质恢复完成, 用时: 00:00:03
![]()
完成 recover 于 24-1月 -07
![]()
![]()
RMAN> sql 'alter database open resetlogs';
![]()
![]()
sql 语句: alter database open resetlogs
![]()
从包含控制文件的全库备份恢复:
![]()
RMAN> configure controlfile autobackup off;
旧的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
已成功存储新的 RMAN 配置参数
RMAN> backup database;
启动 backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1
_MF_NNNDF_TAG20070124T152907_2VG2P400_.BKP 标记=TAG20070124T152907 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1
_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP 标记=TAG20070124T152907 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
完成 backup 于 24-1月 -07
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
删除所有控制文件。
SQL> startup nomount
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1288340 bytes
Variable Size 104859500 bytes
Database Buffers 54525952 bytes
Redo Buffers 7098368 bytes
C:\Documents and Settings\Administrator>rman target /
恢复管理器: Release 10.2.0.2.0 - Production on 星期三 1月 24 15:37:54 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: rome (未装载)
RMAN> RESTORE CONTROLFILE FROM 'D:\oracle\product\10.2.0\flash_recovery_area\ROM
E\BACKUPSET\2007_01_24\O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP';
启动 restore 于 24-1月 -07
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\CONTROL01.CTL
输出文件名=F:\ORACLE\ORADATA\ROME\CONTROL02.CTL
输出文件名=E:\ORACLE\ORADATA\ROME\CONTROL03.CTL
完成 restore 于 24-1月 -07
RMAN> sql 'alter database mount';
sql 语句: alter database mount
释放的通道: ORA_DISK_1
RMAN> recover database;
启动 recover 于 24-1月 -07
启动 implicit crosscheck backup 于 24-1月 -07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
已交叉检验的 24 对象
完成 implicit crosscheck backup 于 24-1月 -07
启动 implicit crosscheck copy 于 24-1月 -07
使用通道 ORA_DISK_1
已交叉检验的 1 对象
完成 implicit crosscheck copy 于 24-1月 -07
搜索恢复区域中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O
1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.L
OG 存在于磁盘上
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =
1
介质恢复完成, 用时: 00:00:02
完成 recover 于 24-1月 -07
RMAN> sql 'alter database open resetlogs';
sql 语句: alter database open resetlogs
我们可以利用dbms_backup_restore包来恢复控制文件。
![]()
RMAN> backup database;
![]()
![]()
启动 backup 于 24-1月 -07
![]()
分配的通道: ORA_DISK_1
![]()
通道 ORA_DISK_1: sid=143 devtype=DISK
![]()
通道 ORA_DISK_1: 启动全部数据文件备份集
![]()
通道 ORA_DISK_1: 正在指定备份集中的数据文件
![]()
输入数据文件 fno=00002 name=F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
![]()
输入数据文件 fno=00001 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
![]()
输入数据文件 fno=00003 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
![]()
输入数据文件 fno=00004 name=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
![]()
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\ROME\TEST.DBF
![]()
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
![]()
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
![]()
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1
![]()
_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP 标记=TAG20070124T120738 注释=NONE
![]()
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25
![]()
通道 ORA_DISK_1: 启动全部数据文件备份集
![]()
通道 ORA_DISK_1: 正在指定备份集中的数据文件
![]()
备份集中包括当前控制文件
![]()
在备份集中包含当前的 SPFILE
![]()
通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07
![]()
通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07
![]()
段句柄=D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O1
![]()
_MF_NCSNF_TAG20070124T120738_2VFPX6G5_.BKP 标记=TAG20070124T120738 注释=NONE
![]()
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03
![]()
完成 backup 于 24-1月 -07
![]()
![]()
SQL> shutdown immediate
![]()
数据库已经关闭。
![]()
已经卸载数据库。
![]()
ORACLE 例程已经关闭。
![]()
![]()
删除所有控制文件。
![]()
![]()
SQL> startup nomount
![]()
ORACLE 例程已经启动。
![]()
![]()
Total System Global Area 167772160 bytes
![]()
Fixed Size 1288340 bytes
![]()
Variable Size 104859500 bytes
![]()
Database Buffers 54525952 bytes
![]()
Redo Buffers 7098368 bytes
![]()
SQL> DECLARE
![]()
2 devtype varchar2(256);
![]()
3 done boolean;
![]()
4 BEGIN
![]()
5 devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'');
![]()
6 sys.dbms_backup_restore.restoreSetDatafile;
![]()
7 sys.dbms_backup_restore.restoreControlfileTo(cfname=>'D:\oracle\product\10.
![]()
2.0\oradata\rome\Control01.ctl');
![]()
8 sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:\oracle\pr
![]()
oduct\10.2.0\flash_recovery_area\ROME\BACKUPSET\2007_01_24\O1_MF_NCSNF_TAG200701
![]()
24T120738_2VFPX6G5_.BKP', params=>null);
![]()
9 sys.dbms_backup_restore.deviceDeallocate;
![]()
10 exception when others then
![]()
11 dbms_output.put_line(sqlerrm);
![]()
12 END;
![]()
13 /
![]()
![]()
PL/SQL 过程已成功完成。
![]()
![]()
RMAN> restore database;
![]()
![]()
启动 restore 于 24-1月 -07
![]()
启动 implicit crosscheck backup 于 24-1月 -07
![]()
使用目标数据库控制文件替代恢复目录
![]()
分配的通道: ORA_DISK_1
![]()
通道 ORA_DISK_1: sid=155 devtype=DISK
![]()
已交叉检验的 17 对象
![]()
完成 implicit crosscheck backup 于 24-1月 -07
![]()
![]()
启动 implicit crosscheck copy 于 24-1月 -07
![]()
使用通道 ORA_DISK_1
![]()
已交叉检验的 1 对象
![]()
完成 implicit crosscheck copy 于 24-1月 -07
![]()
![]()
搜索恢复区域中的所有文件
![]()
正在编制文件目录...
![]()
目录编制完毕
![]()
![]()
已列入目录的文件的列表
![]()
=======================
![]()
文件名: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\O
![]()
1_MF_NCSNF_TAG20070124T120738_2VFPX6G5_.BKP
![]()
![]()
使用通道 ORA_DISK_1
![]()
![]()
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
![]()
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
![]()
正将数据文件00001恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF
![]()
正将数据文件00002恢复到F:\ORACLE\ORADATA\ROME\UNDOTBS01.DBF
![]()
正将数据文件00003恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSAUX01.DBF
![]()
正将数据文件00004恢复到D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\USERS01.DBF
![]()
正将数据文件00005恢复到E:\ORACLE\ORADATA\ROME\TEST.DBF
![]()
通道 ORA_DISK_1: 正在读取备份段 D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROM
![]()
E\BACKUPSET\2007_01_24\O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP
![]()
通道 ORA_DISK_1: 已恢复备份段 1
![]()
段句柄 = D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\BACKUPSET\2007_01_24\
![]()
O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP 标记 = TAG20070124T120738
![]()
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:45
![]()
完成 restore 于 24-1月 -07
![]()
![]()
RMAN> recover database;
![]()
![]()
启动 recover 于 24-1月 -07
![]()
使用通道 ORA_DISK_1
![]()
![]()
正在开始介质的恢复
![]()
![]()
存档日志线程 1 序列 26 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.
![]()
LOG 存在于磁盘上
![]()
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\REDO02A.LOG 线程 =1 序列 =
![]()
26
![]()
介质恢复完成, 用时: 00:00:02
![]()
完成 recover 于 24-1月 -07
![]()
![]()
RMAN> sql 'alter database open resetlogs';
![]()
![]()
sql 语句: alter database open resetlogs
![]()
如果使用了Flash Recovery Area,RMAN自动执行CROSSCHECK检查控制文件中涉及到的备份文件和竞相拷贝(磁盘备份),如果是使用磁带备份RMAN不会自动进行CROSSCHECK检查,需要我们恢复完控制文件后执行下列检查操作:
![]()
RMAN> CROSSCHECK BACKUP DEVICE TYPE SBT;
如果我们的RMAN是带有恢复目录的话,则在恢复的时候不用进行SET DBID操作,直接执行如下命令即可:
![]()
RMAN> restore controlfile;
我们可以在数据库处于任何状态的情况下把控制文件恢复到参数文件中设置的控制文件以外的位置:
![]()
RMAN〉restore controlfile to ‘...’ from ‘...’;
恢复案例四:恢复参数文件
![]()
SQL> shutdown immediate
![]()
数据库已经关闭。
![]()
已经卸载数据库。
![]()
ORACLE 例程已经关闭。
![]()
![]()
删除参数文件。
![]()
![]()
数据库关闭状态丢失参数文件:
![]()
![]()
C:\Documents and Settings\Administrator>rman target /
![]()
![]()
恢复管理器: Release 10.2.0.2.0 - Production on 星期三 1月 24 16:16:25 2007
![]()
![]()
Copyright (c) 1982, 2005, Oracle. All rights reserved.
![]()
![]()
已连接到目标数据库 (未启动)
![]()
![]()
RMAN> set dbid 252956976
![]()
![]()
正在执行命令: SET DBID
![]()
![]()
RMAN> RESTORE SPFILE FROM 'D:\oracle\product\10.2.0\flash_recovery_area\ROME\BAC
![]()
KUPSET\2007_01_24\O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP';
![]()
![]()
启动 restore 于 24-1月 -07
![]()
使用通道 ORA_DISK_1
![]()
![]()
通道 ORA_DISK_1: 已找到的自动备份: D:\oracle\product\10.2.0\flash_recovery_area\
![]()
ROME\BACKUPSET\2007_01_24\O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP
![]()
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
![]()
完成 restore 于 24-1月 -07
![]()
数据库打开状态丢失参数文件:
![]()
SQL> alter system set sga_max_size=100M scope=spfile;
![]()
alter system set sga_max_size=100M scope=spfile
![]()
*
![]()
第 1 行出现错误:
![]()
ORA-01565: 标识文件 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SPFILEROME.ORA'
![]()
时出错
![]()
ORA-27041: 无法打开文件
![]()
OSD-04002: 无法打开文件
![]()
O/S-Error: (OS 2) 系统找不到指定的文件。
![]()
这是我们应该先关闭数据库,然后执行数据库关闭状态丢失参数文件的操作。
另外我们也可以从控制文件自动备份中恢复参数文件,操作过程类似从控制文件自动备份恢复控制文件的操作,这里就不再赘述。
恢复案例五:隐含参数_allow_resetlogs_corruption的使用
用RMAN做好备份后,删除所有归档日志文件和备份。
恢复自动备份的控制文件。
![]()
SQL> startup nomount
![]()
ORACLE 例程已经启动。
![]()
![]()
Total System Global Area 167772160 bytes
![]()
Fixed Size 1288340 bytes
![]()
Variable Size 104859500 bytes
![]()
Database Buffers 54525952 bytes
![]()
Redo Buffers 7098368 bytes
![]()
![]()
RMAN> set dbid 252956976
![]()
正在执行命令: SET DBID
![]()
![]()
RMAN> restore controlfile from autobackup;
![]()
![]()
启动 restore 于 31-1月 -07
![]()
使用目标数据库控制文件替代恢复目录
![]()
分配的通道: ORA_DISK_1
![]()
通道 ORA_DISK_1: sid=155 devtype=DISK
![]()
![]()
恢复区域目标: d:\oracle\product\10.2.0\flash_recovery_area
![]()
用于搜索的数据库名 (或数据库的唯一名称): ROME
![]()
通道 ORA_DISK_1: 在恢复区域中找到自动备份
![]()
通道 ORA_DISK_1: 已找到的自动备份: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\
![]()
ROME\AUTOBACKUP\2007_01_30\O1_MF_S_613239538_2VXZVMGN_.BKP
![]()
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
![]()
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\CONTROL01.CTL
![]()
输出文件名=F:\ORACLE\ORADATA\ROME\CONTROL02.CTL
![]()
输出文件名=E:\ORACLE\ORADATA\ROME\CONTROL03.CTL
![]()
完成 restore 于 31-1月 -07
![]()
![]()
RMAN> sql 'alter database mount';
![]()
![]()
sql 语句: alter database mount
![]()
释放的通道: ORA_DISK_1
![]()
![]()
RMAN> restore database;
![]()
![]()
SQL> recover database using backup controlfile;
![]()
ORA-00279: ?? 1151325 (? 01/30/2007 16:18:22 ??) ???? 1 ????
![]()
ORA-00289: ??:
![]()
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1_
![]()
![]()
1_%U_.ARC
![]()
ORA-00280: ?? 1151325 (???? 1) ??? #1 ?
![]()
![]()
![]()
![]()
指定日志: ...{RET>=suggested | filename | AUTO | CANCEL}
![]()
auto
![]()
ORA-00308: ????????
![]()
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1
![]()
![]()
_1_%U_.ARC'
![]()
ORA-27041: ??????
![]()
OSD-04002: ????????????
![]()
O/S-Error: (OS 2) ??????????????????????
![]()
![]()
![]()
ORA-00308: ????????
![]()
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1
![]()
![]()
_1_%U_.ARC'
![]()
ORA-27041: ??????
![]()
OSD-04002: ????????????
![]()
O/S-Error: (OS 2) ??????????????????????
![]()
![]()
SQL> alter database open resetlogs;
![]()
alter database open resetlogs
![]()
*
![]()
第 1 行出现错误:
![]()
ORA-01113: 文件 1 需要介质恢复
![]()
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ROME\SYSTEM01.DBF'
![]()
![]()
![]()
SQL> recover database using backup controlfile;
![]()
ORA-00279: 更改 1151325 (在 01/30/2007 16:18:22 生成) 对于线程 1 是必需的
![]()
ORA-00289: 建议:
![]()
D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1_
![]()
![]()
1_%U_.ARC
![]()
ORA-00280: 更改 1151325 (用于线程 1) 在序列 #1 中
![]()
![]()
![]()
![]()
指定日志: ...{RET>=suggested | filename | AUTO | CANCEL}
![]()
auto
![]()
ORA-00308: 无法打开归档日志
![]()
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1
![]()
![]()
_1_%U_.ARC'
![]()
ORA-27041: 无法打开文件
![]()
OSD-04002: 无法打开文件
![]()
O/S-Error: (OS 2) 系统找不到指定的文件。
![]()
![]()
![]()
ORA-00308: 无法打开归档日志
![]()
'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ROME\ARCHIVELOG\2007_01_30\O1_MF_1
![]()
![]()
_1_%U_.ARC'
![]()
ORA-27041: 无法打开文件
![]()
OSD-04002: 无法打开文件
![]()
O/S-Error: (OS 2) 系统找不到指定的文件。
![]()
![]()
SQL> create pfile='d:\rome.ora' from spfile;
![]()
![]()
文件已创建。
![]()
![]()
修改rome.ora加入 *._allow_resetlogs_corruption=TRUE
![]()
![]()
SQL> startup pfile='d:\rome.ora'
![]()
ORACLE 例程已经启动。
![]()
![]()
Total System Global Area 167772160 bytes
![]()
Fixed Size 1288340 bytes
![]()
Variable Size 104859500 bytes
![]()
Database Buffers 54525952 bytes
![]()
Redo Buffers 7098368 bytes
![]()
数据库装载完毕。
![]()
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
![]()
![]()
![]()
SQL> alter database open resetlogs;
![]()
![]()
数据库已更改。
![]()
![]()
SQL> show parameter _allow_
![]()
![]()
NAME TYPE VALUE
![]()
------------------------------------ ----------- ------------------------------
_allow_resetlogs_corruption boolean TRUE
![]()
列举几个恢复命令,这里就不再一并给出示例了。
![]()
RMAN> RECOVER DATABASE SKIP TABLESPACE users;
![]()
RMAN> RECOVER TABLESPACE users, tools;
![]()
RMAN> RECOVER DATAFILE '/newdisk/users01.dbf','/newdisk/tools01.dbf';
![]()
RMAN> RECOVER DATAFILE 4;
![]()
RMAN> RECOVER TABLESPACE users, tools DELETE ARCHIVELOG;
![]()
恢复表空间和数据文件到新位置:
![]()
![]()
RUN ...{
![]()
SET NEWNAME FOR DATAFILE 3 to 'new_location';
![]()
RESTORE DATAFILE 3;
![]()
SWITCH DATAFILE 3;
![]()
RECOVER DATAFILE 3;
![]()
}
![]()
如果没有指定新位置,将按照OMF命名规则创建新文件:
![]()
![]()
RUN ...{
![]()
SET NEWNAME FOR DATAFILE 3 to NEW;
![]()
RESTORE DATAFILE 3;
![]()
SWITCH DATAFILE 3;
![]()
RECOVER DATAFILE 3;
![]()
}
![]()
基于时间点和SCN的恢复我们将在RMAN高级应用讲述。
归档日志文件恢复这里也不举例子了,比较简单。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/71105/showart_1000522.html |
|