rman restore:在备份中恢复丢失的文件

在自动备份中恢复控制文件

前提:配置控制文件自动备份,备份数据库

要是没有使用recovery catalog,你必须在自动备份中恢复控制文件。将数据库启动到nomount状态,设置DBID,然后使用restore controlfile from autobackup命令

下面模拟控制文件丢失的情况

SQL> startup
ORACLE 例程已经启动。

Total System Global Area 1216348160 bytes
Fixed Size                  1250428 bytes
Variable Size             721423236 bytes
Database Buffers          486539264 bytes
Redo Buffers                7135232 bytes
ORA-00205: ?????????, ??????, ???????

RMAN>set dbid 1383706449

RMAN> RUN {
2>     SET CONTROLFILE AUTOBACKUP FORMAT
3>           FOR DEVICE TYPE DISK TO '%F';
4>     RESTORE CONTROLFILE FROM AUTOBACKUP;
5>     }

正在执行命令: SET CONTROLFILE AUTOBACKUP FORMAT

启动 restore 于 03-10月-14
使用通道 ORA_DISK_1

通道 ORA_DISK_1: 寻找以下日期的自动备份: 20141003
通道 ORA_DISK_1: 已找到的自动备份: c-1383706449-20141003-00
通道 ORA_DISK_1: 从自动备份复原控制文件已完成
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
输出文件名=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
完成 restore 于 03-10月-14

在上面的命令中SET CONTROLFILE AUTOBACKUP FORMAT  FOR DEVICE TYPE DISK TO '%F';这个应该是结合了通道确定了控制文件的位置。

RMAN> recover database;

启动 recover 于 03-10月-14
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
未处理数据文件 5, 因为文件是只读的
未处理数据文件 6, 因为文件是只读的

正在开始介质的恢复

存档日志线程 1 序列 65 已作为文件 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.L
OG 存在于磁盘上
存档日志文件名 =D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG 线程 =1 序列 =6
5
介质恢复完成, 用时: 00:00:02
完成 recover 于 03-10月-14

RMAN> sql 'alter database open resetlogs';

sql 语句: alter database open resetlogs


在recovery catalog中恢复数据库比较简单

% rman TARGET rman/rman CATALOG catdb/catdb
RMAN> RESTORE CONTROLFILE;

在知道的位置上恢复控制文件

可以在一个已经知道控制文件拷贝的位置来恢复控制文件

RMAN> RESTORE CONTROLFILE from 'filename';

恢复控制文件到一个新的位置

 RESTORE CONTROLFILE TO 'filename' [FROM AUTOBACKUP]:


在备份中恢复数据文件到一个新的位置

下面是将users表空间恢复到一个新的位置

RUN
{
  SQL 'ALTER TABLESPACE users OFFLINE IMMEDIATE';
  # specify the new location for each datafile
  SET NEWNAME FOR DATAFILE 'D:\oracle\product\10.2.0\oradata\orcl\users01.dbf' TO  'D:\oracle\product\10.2.0\rmanbak\users01.dbf';
  RESTORE TABLESPACE users;
  SWITCH DATAFILE ALL;   # update control file with new filenames
  RECOVER TABLESPACE users;
}
'ALTER TABLESPACE users ONLINE';

SQL> select file_name,tablespace_name from dba_data_files where tablespace_name=
'USERS';

FILE_NAME
--------------------------------------------------------------------------------

TABLESPACE_NAME
------------------------------
D:\ORACLE\PRODUCT\10.2.0\RMANBAK\USERS01.DBF
USERS


在备份中恢复参数文件

将D:\oracle\product\10.2.0\db_1\database目录下的spfileORCL.ora文件删除,再启动就报错了

SQL> startup
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file 'D:\oracle\product\10.2.0\db_1/dbs/spfileor
cl.ora'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????

set dbid 1383706449

RESTORE SPFILE FROM AUTOBACKUP;

然后打开即可,这个是在控制文件的自动备份中恢复的。




你可能感兴趣的:(rman restore:在备份中恢复丢失的文件)