ITPub博客

首页 > Linux操作系统 > Linux操作系统 > recover 用法

recover 用法

原创 Linux操作系统 作者:Aminiy 时间:2013-07-05 11:05:48 0 删除 编辑
1、rman完全恢复
是指当数据文件出现介质失败时,使用restore命令转储数据文件备份,并使用recover命令将数据文件恢复到失败点状态,archive模式
2、rman不完全恢复
是指当数据库出现介质失败或逻辑失败时,使用restore命令转储备份,并使用recover命令将数据库恢复到备份点与失败点之间某个时刻的状态,只适用于archivelog模式。
3、rman转储命令
使用rman执行介质恢复时,收下需要转储备份文件,转储备份文件是用restore命令来完成的。
a)restore database--只能在mount状态下使用,转储所有的数据文件。
b)restore database 只能在open状态下使用,转储特定表空间数据文件。
c)restore datafile(mount or open)转储特定数据文件
d)restore controlfile(nomount )转储特定控制文件
e)restore archivelog(open)转储归档日志
f)restore spfile(nomount)转储服务器参数文件。
4、raman恢复命令
当执行介质恢复时,在转储了备份之后,需要用归档日志恢复数据文件,恢复数据文件使用recover命令来完成的,当执行recover命令时,rman会自动用备份以来的所有归档日志。
a)recoverdatabase(mount)恢复所有数据文件
b)recover tablespace(open)恢复特定表空间
c)recover datafile(mount or open)恢复特定数据文件
5、恢复数据库,所有数据文件被删除
rman target /
startup force mount
run {
restore database;
recover database;
sql 'alter database open';
}
6、恢复数据库,数据文件所在的磁盘出现硬盘故障
rman target /
run {startup force mount;
set newname for DATAFIFLE 1 to '/u01/app/oracle/oradate/hxy/system01.dbf';
set newname for DATAFIFLE 2 to '/u01/app/oracle/oradate/hxy/systaux01.dbf';
set newname for DATAFIFLE 3 to '/u01/app/oracle/oradate/hxy/undotbs01.dbf';
set newname for DATAFIFLE 4 to '/u01/app/oracle/oradate/hxy/USERS01.dbf';
set newname for DATAFIFLE 5 to '/u01/app/oracle/oradate/hxy/EXAMPLe01.dbf';
set newname for DATAFIFLE 6 to '/u01/app/oracle/oradate/hxy/TBSP_USERDATA01.dbf';
set newname for DATAFIFLE 7 to '/u01/app/oracle/oradate/hxy/UNDO_USERDATA01.dbf';
restore database;
 switch datafile all;
 recover database;
 sql 'alter database open';
}
RMAN> report schema;    -- 查看数据库恢复后的物理方案。
7、 恢复SYSTEM表空间,数据文件被误删除 SYSTEM表空间的数据文件被误删除,那么在装载数据库之后,先使用RESTORE DATAFILE命令转储该表空间对应的数据文件,再使用RECOVER DATABASE命令用用归档日志恢复该
  SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run { startup force mount; restore datafile 1;
recover datafile 1
 sql 'alter database open';
}
8、 恢复SYSTEM表空间,数据文件所在磁盘出现故障
SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run {
startup force mount;
set newname for datafile 1 to '/u01/app/oracle/oradate/hxy/SYSTEM01.DBF'; 
restore datafile 1;
switch datafile 1;
recover datafile 1;
sql 'alter database open';
}
9、 OPEN状态下恢复,关闭后意外的数据文件被误删除
SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run {
startup force mount;
sql 'alter database datafile 4 offline';
sql 'alter database open';
restore datafile 4;
recover datafile 4;
sql 'alter database datafile 4 online'; }
10、 OPEN状态下恢复,关闭后意外的数据文件所在磁盘出现损坏
SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run { startup force mount;
sql 'alter database datafile 4 offline';
sql 'alter database ope';
set newname for datafile 4 to '/u01/app/oracle/oradate/hxy/user01.dbf';
restore datafile 4;
switch datafile 4;
recover datafile 4;
sql 'alter database datafile 4 online';
}
11、 OPEN状态下其他数据文件出现介质失败,数据文件丢失
SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run {
sql 'alter database datafile 4 offline';
restore datafile 4; recover datafile 4;
sql 'alter database datafile 4 online';
}
12、 OPEN状态下其他数据文件出现介质失败,磁盘损坏
SET ORACLE_SID=DEMO C:
>RMAN  TARGET  /
RMAN> run {
sql 'alter database datafile 4 offline';
set newname for datafile 4 to '/u01/app/oracle/oradate/hxy/user01.dbf';
restore datafile 4;
switch datafile 4;
recover datafile 4;
sql 'alter database datafile 4 online';
}
13、 在OPEN状态下恢复未备份的数据文件,数据文件被误删除 条件:从建立数据文件到目前为止所有的归档日志必须全部存在。
SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run {
startup force mount;
sql 'alter database datafile 7 offline';
sql 'alter database open';
restore datafile 7;
recover datafile 7;
sql 'alter database datafile 7 online';
}
14、 在OPEN状态下恢复未备份的数据文件,数据文件被误删除 条件:从建立数据文件到目前为止所有的归档日志必须全部存在。
SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run { startup force mount;
sql 'alter database datafile 7 offline';
sql 'alter database open';
set newname for datafile 7 to '/u01/app/oracle/oradate/hxy/user04.dbf';
restore datafile 7;
switch datafile 7;
recover datafle 7;
sql 'alter database datafile 7 online';
}
15、 OPEN状态时表空间所有数据文件出现介质失败,数据文件被删除
SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run {
sql 'alter tablespace users offline for recover';
restore tablespace users;
recover tablespace users;
sql 'alter tablespace users online'; }
16、 OPEN状态时表空间所有数据文件出现介质失败,磁盘损坏
SET ORACLE_SID=DEMO
RMAN  TARGET  /
RMAN> run {
sql 'alter tablespace users offline for recover';
set newname for datafile 4 to '/u01/app/oracle/oradate/hxy/user01.dbf';
restore tablespace users;
switch datafile all;
recover tablespace users;
sql ' alter tablespace users online';
}
17、 不完全恢复,只适用于ARCHIVELOG模式,基于时间的恢复
SQL> host date
当前日期:2013-07-05 星期五 输入日期:(年\月\日)
SQL> host time
当前时间:17:00:28.82
SQL> truncate table scott.emp
如上,emp表被截断的时间大约在17:00:28,所以将该数据库恢复到该时间点,就可以完全恢复emp表的所有数据。在实际工作用LogMiner确定误操作时间点。 当使用RMAN执行基于时间点的不完全恢复时,首先要在命令行设置环境变量NLS_DATE_FORMAT(指定日期时间格式)。在进入RMAN之后,先装载数据库,再使用SET UNTIL TIME命令指定要恢复到得时间点,使用RESTORE DATABASE转储所有数据文件,使用RECOVER DATABASE命令恢复数据库,最
后使用SQL语句ALTER DATABASE OPEN RESETLOGS打开数据库。
set nls_date_format=yyyy-mm-dd hh24:mi:ss
set oracle_sid=demo
RMAN target /
RMAN> run {
startup force mount;
set until time='2013-07-04 17:00:29';
restore database;
recover database;
sql 'alter database open resetlogs';
}
当使用resetlogs选项打开数据库之后,会复位日志序列号,并生成新的数据库副本。建议删除早期的所有备份,并重新备份数据库。
RMAN> run {
delete noprompt backup;
delete noprompt copy; backup database format='d:\backup\%d_%s.bak';
sql 'alter system archive log current';
}
18、 不完全恢复,只适用于ARCHIVELOG模式,基于SCN
SQL> SELECT current_scn FROM v$database; CURRENT_SCN --------------------- 511413
SQL> DROP TABLE scott.emp
set oracle_sid=demo
RMAN target /
RMAN> run {
startup fore mount;
set until scn=511413;
restore database;
recover database;
sql 'alter database open resetlogs';
}
当使用resetlogs选项打开数据库之后,会复位日志序列号,并生成新的数据库副本。建议删除早期的所有备份,并重新备份数据库。
RMAN> run {
delete noprompt backup;
delete noprompt copy;
backup database format='d:\backup\%d_%s.bak';
sql 'alter system archive log current';
}
19、 不完全恢复,只适用于ARCHIVELOG模式,日志序列号
RMAN> run {
startup force mount;
set until sequence=6;   -- 6 为日志序列号
restore database;
recover database;
sql 'alter database open resetlogs';
}
当使用resetlogs选项打开数据库之后,会复位日志序列号,并生成新的数据库副本。建议删除早期的所有备份,并重新备份数据库。
RMAN> run {
delete noprompt backup;
delete noprompt copy;
backup database format='d:\backup\%d_%s.bak';
sql 'alter system archive log current';
}
20、 不完全恢复,只适用于ARCHIVELOG模式,基于备份控制文件恢复基于备份控制文件恢复是指使用备份控制文件恢复数据库的过程,当误删除了表空间或者数据库所有控制文件全部损坏时,可以使用这种恢复方法。 SQL>drop tabnlespace user01 including contents; 当误删除表空间后,查看alter文件可以确定删除表空间时的时间。 Sun Oct 03 18:36:18 2011 drop tablespace user01 including contents Sun Oct 03 18:36:21 2011 Starting control autobackup
如上所示,表空间误删除的时间为Oct 03 18:36:18 2011,只要恢复到这个时间点就可以了。 注意,当使用基于备份控制文件的RMAN不完全恢复时,如果没有使用恢复目录,那么要求必须激活了控制文件自动备份,否则不能转储控制文件备份。当执行基于备份控制文件的不完全恢复时,在启动了例程之后,转储控制文件之前需要使用SET DBID命令设置数据库的ID编号,在转储了控制文件吼吼装载数据库然后基于时间点的RMAN不完全恢复。
set nls_data_format=yyyy-mm-dd hh24:mi:ss
set oracle_sid=demo
RMAN target /
RMAN> startup force nomount
RMAN>set dbid = 32222222;
RMAN> restore controlfile from autobackup maxseq 6;
RMAN> alter database mount;
RMAN> run {
set until time='2013-07-04 18:36:18';
restore database; recover database;
sql 'alter database open resetlogs'; }
当使用resetlogs选项打开数据库之后,会复位日志序列号,并生成新的数据库副本。建议删除早期的所有备份,并重新备份数据库。
RMAN> run {
delete noprompt backup;
delete noprompt copy;
backup database format='/backup/%d_%s.bak';
sql 'alter system archive log current'; }

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24492954/viewspace-765562/,如需转载,请注明出处,否则将追究法律责任。

上一篇: dump 用法
下一篇: rman备份(转载)
请登录后发表评论 登录
全部评论

注册时间:2011-04-09

  • 博文量
    41
  • 访问量
    239349