在自动备份中恢复控制文件
前提:配置控制文件自动备份,备份数据库
要是没有使用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;
然后打开即可,这个是在控制文件的自动备份中恢复的。