恢复表空间和数据文件
执行表空间或数据文件级的恢复时,数据库既可以是mount状态,也可以是open状态.从表空间和数据文件的自身特点来说,两者恢复也类似,只不过数据文件相对来说粒度更细.
恢复表空间
表空间必须为offline状态:
rman>sql 'alter tablespace users offline immediate';
rman>restore tablespace users;
rman>recover tablespace users;
rman>sql 'alter tablespace users online';
如果一次恢复多个表空间,只需要在执行restore/recover时同时指定多个表空间名称即可,用逗号,分隔,但将表空间offline/online得一个一个改.
恢复数据文件
恢复表空间实际上就是恢复其对应的数据文件(一个表空间可能对应多个数据文件)
rman>sql 'alter database datafile 10 offline';
or
sql>alter database datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf' offline;
在执行restore/recover操作指定数据文件时,指定数据文件的序号和指定数据文件的详细路径,都可以.
rman>restore datafile 10;
rman>restore datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf';
rman>recover datafile 10;
rman>recover datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf';
rman>sql 'alter databsase datafile 10 online';
or
sql>alter database datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf' online;
这是简单的恢复,数据文件会被恢复到默认的位置.如果磁盘坏了,那就得指定新的数据文件路径了,同样要将数据文件改为offline状态.
rman>run {
set newname for datafile 10 to 'D:\NEWPATH\users01.dbf';
restore datafile 10;
switch datafile 10;
recover datafile 10;
}
select * from v$datafile
恢复归档日志文件
恢复归档文件也是用restore命令,如果只是为了在恢复数据文件后应用归档文件,那并不需要手动对归档文件进行恢复,rman会在recover的时候自动对适当的归档进行恢复.
单独恢复归档文件一般是创建了Data Guard环境,Standby端丢失了部分归档文件,必须从Primary端重新获取,或者用LogMiner对之前的归档进行分析等.
恢复归档日志文件也非常灵活,rman的recover命令中提供了多种限定条件,可以精确指定恢复哪些备份的归档文件,例如:恢复归档序号为20到30的归档文件:
rman>restore archivelog sequence between 20 and 30;
默认情况下rman将归档文件恢复到初始化参数log_archive_dest_1指定的路径下,如果想将恢复出来的归档存储到其他路径下,使用:
rman>run {
set archivelog destination to 'D:\oracle\bobbackup\arclog';
restore archivelog sequence between 35 and 50;
}
这样,恢复出来的sequenct序号为35~50的归档文件就被存储到新目录D:\oracle\bobbackup\arclog下.同一个run块允许同时出现多个set archivelog命令,将归档恢复到不同的目录:
rman>run {
set archivelog destination to 'D:\oracle\bobbackup\arclog1';
restore archivelog sequence between 15 and 20;
set archivelog destination to 'D:\oracle\bobbackup\arclog2';
restore archivelog sequence between 21 and 30;
set archivelog destination to 'D:\oracle\bobbackup\arclog3';
restore archivelog sequence between 31 and 40;
}
恢复控制文件and初始化参数spfile文件
1.从自动备份中恢复
没了控制文件,你只能nomount状态,启动db之前必须先set命令设置DBID:
rman>set dbid=13834161
如何获得目标数据库的DBID?
要获得目标数据库的DBID,多种查询,比如创建自动备份时,文件名中会包含DBID;或查看之前声称的rman备份日志,当使用rman登录目标数据库会首先输出目标数据库的DBID; 或者连接到目标数据库之后,查询v$database视图.
select dbid from v$database
启动数据库到nomount状态:
rman>startup nomount;
从自动备份中恢复控制文件,恢复默认路径:
rman>restore controlfile from autobackup;
执行上述语句后,备份集中的控制文件被恢复到初始化参数control_files指定的路径下
恢复到指定路径下:
rman>restore controlfile to 'D:\newpath\control01.ctl' from autobackup;
执行上述语句可将控制文件恢复到指定路径下并可命名为control01.ctl,数据库open时也可以执行,但路径要与当前数据库控制文件路径不同.
如果你执行备份操作前,修改过自动备份的默认路径,那么此时执行上述命令会提示你找不到备份文件,需重新设置一下自动备份路径,或手动复制自动备份的控制文件到当前默认路径下,默认是在$ORACLE_HOME/database,如果是linux/unix那就是在$ORACLE_HOME/dbs目录.
在nocatalog模式下修改控制文件的自动备份保存路径时,不要使用configure,因为configure进行的配置为永久配置,要用set命令配置控制文件自动备份的路径.
例如,使用set命令设置控制文件自动备份的路径:
rman>set controlfile autobackup format for device type disk to 'D:\oracle\backup\%F';
然后执行restore命令,从自动备份中恢复控制文件即可:
rman>restore controlfile from autobackup;
2.从备份集中恢复
10g开始restore直接提供了from backup字句,可直接从指定备份片段中恢复控制文件.
先set设置DBID:
rman>set dbid=13834161
rman>startup nomount;
执行restore指定控制文件所在备份片段的路径:
rman>restore controlfile from 'D:\oraclebackup\BOB_30_%P_C-13834161-20131230-10';
!使用备份的控制文件进行恢复后,必须recover database,并以open resetlogs方式打开数据库.
rman>
rman>
执行表空间或数据文件级的恢复时,数据库既可以是mount状态,也可以是open状态.从表空间和数据文件的自身特点来说,两者恢复也类似,只不过数据文件相对来说粒度更细.
恢复表空间
表空间必须为offline状态:
rman>sql 'alter tablespace users offline immediate';
rman>restore tablespace users;
rman>recover tablespace users;
rman>sql 'alter tablespace users online';
如果一次恢复多个表空间,只需要在执行restore/recover时同时指定多个表空间名称即可,用逗号,分隔,但将表空间offline/online得一个一个改.
恢复数据文件
恢复表空间实际上就是恢复其对应的数据文件(一个表空间可能对应多个数据文件)
rman>sql 'alter database datafile 10 offline';
or
sql>alter database datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf' offline;
在执行restore/recover操作指定数据文件时,指定数据文件的序号和指定数据文件的详细路径,都可以.
rman>restore datafile 10;
rman>restore datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf';
rman>recover datafile 10;
rman>recover datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf';
rman>sql 'alter databsase datafile 10 online';
or
sql>alter database datafile 'D:\oracle\product\10.2.0\oradata\bob\users01.dbf' online;
这是简单的恢复,数据文件会被恢复到默认的位置.如果磁盘坏了,那就得指定新的数据文件路径了,同样要将数据文件改为offline状态.
rman>run {
set newname for datafile 10 to 'D:\NEWPATH\users01.dbf';
restore datafile 10;
switch datafile 10;
recover datafile 10;
}
select * from v$datafile
恢复归档日志文件
恢复归档文件也是用restore命令,如果只是为了在恢复数据文件后应用归档文件,那并不需要手动对归档文件进行恢复,rman会在recover的时候自动对适当的归档进行恢复.
单独恢复归档文件一般是创建了Data Guard环境,Standby端丢失了部分归档文件,必须从Primary端重新获取,或者用LogMiner对之前的归档进行分析等.
恢复归档日志文件也非常灵活,rman的recover命令中提供了多种限定条件,可以精确指定恢复哪些备份的归档文件,例如:恢复归档序号为20到30的归档文件:
rman>restore archivelog sequence between 20 and 30;
默认情况下rman将归档文件恢复到初始化参数log_archive_dest_1指定的路径下,如果想将恢复出来的归档存储到其他路径下,使用:
rman>run {
set archivelog destination to 'D:\oracle\bobbackup\arclog';
restore archivelog sequence between 35 and 50;
}
这样,恢复出来的sequenct序号为35~50的归档文件就被存储到新目录D:\oracle\bobbackup\arclog下.同一个run块允许同时出现多个set archivelog命令,将归档恢复到不同的目录:
rman>run {
set archivelog destination to 'D:\oracle\bobbackup\arclog1';
restore archivelog sequence between 15 and 20;
set archivelog destination to 'D:\oracle\bobbackup\arclog2';
restore archivelog sequence between 21 and 30;
set archivelog destination to 'D:\oracle\bobbackup\arclog3';
restore archivelog sequence between 31 and 40;
}
恢复控制文件and初始化参数spfile文件
1.从自动备份中恢复
没了控制文件,你只能nomount状态,启动db之前必须先set命令设置DBID:
rman>set dbid=13834161
如何获得目标数据库的DBID?
要获得目标数据库的DBID,多种查询,比如创建自动备份时,文件名中会包含DBID;或查看之前声称的rman备份日志,当使用rman登录目标数据库会首先输出目标数据库的DBID; 或者连接到目标数据库之后,查询v$database视图.
select dbid from v$database
启动数据库到nomount状态:
rman>startup nomount;
从自动备份中恢复控制文件,恢复默认路径:
rman>restore controlfile from autobackup;
执行上述语句后,备份集中的控制文件被恢复到初始化参数control_files指定的路径下
恢复到指定路径下:
rman>restore controlfile to 'D:\newpath\control01.ctl' from autobackup;
执行上述语句可将控制文件恢复到指定路径下并可命名为control01.ctl,数据库open时也可以执行,但路径要与当前数据库控制文件路径不同.
如果你执行备份操作前,修改过自动备份的默认路径,那么此时执行上述命令会提示你找不到备份文件,需重新设置一下自动备份路径,或手动复制自动备份的控制文件到当前默认路径下,默认是在$ORACLE_HOME/database,如果是linux/unix那就是在$ORACLE_HOME/dbs目录.
在nocatalog模式下修改控制文件的自动备份保存路径时,不要使用configure,因为configure进行的配置为永久配置,要用set命令配置控制文件自动备份的路径.
例如,使用set命令设置控制文件自动备份的路径:
rman>set controlfile autobackup format for device type disk to 'D:\oracle\backup\%F';
然后执行restore命令,从自动备份中恢复控制文件即可:
rman>restore controlfile from autobackup;
2.从备份集中恢复
10g开始restore直接提供了from backup字句,可直接从指定备份片段中恢复控制文件.
先set设置DBID:
rman>set dbid=13834161
rman>startup nomount;
执行restore指定控制文件所在备份片段的路径:
rman>restore controlfile from 'D:\oraclebackup\BOB_30_%P_C-13834161-20131230-10';
!使用备份的控制文件进行恢复后,必须recover database,并以open resetlogs方式打开数据库.
rman>
rman>
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25025926/viewspace-1065707/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25025926/viewspace-1065707/