使用RMAN异机恢复磁带库的备份文件至文件系统
2016-08-25 16:41
441 查看
描述:原生产环境为Linux RAC+ASM+10.2.0.4,因存储故障,数据库无法启动;需使用第三方磁带库备份软件备份的文件进行数据库恢复。
恢复控制文件:
SET DBID 2240547690;
run {
allocate channel ch1 type 'sbt_tape' PARMS="SBT_LIBRARY=/opt/simpana/Base/libobk.so";
restore controlfile to '/home/oracle/control01.ctl' from autobackup ;
release channel ch1;
}
启动数据库至mount状态:
alter database mount;
restore database:
run {
allocate channel ch1 type 'sbt_tape' PARMS="SBT_LIBRARY=/opt/simpana/Base/libobk.so";
set newname for datafile 1 to '/oradata/orcl/system.256.769887829 ';
set newname for datafile 2 to '/oradata/orcl/undotbs1.258.769887829 ';
set newname for datafile 3 to '/oradata/orcl/sysaux.257.769887829 ';
set newname for datafile 4 to '/oradata/orcl/users.259.769887829 ';
set newname for datafile 5 to '/oradata/orcl/undotbs2.264.769887929 ';
set newname for datafile 6 to '/oradata/orcl/undotbs3.265.769887929 ';
set newname for datafile 7 to '/oradata/orcl/user01 ';
set newname for datafile 8 to '/oradata/orcl/user02 ';
restore database;
switch datafile all ;
release channel ch1;
}
recover database:
run {
allocate channel ch1 type 'sbt_tape' PARMS="SBT_LIBRARY=/opt/simpana/Base/libobk.so";
recover database;
release channel ch1;
}
更改redolog文件目录:
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_2.262.769887895' TO '/oradata/orcl/group_2.262.769887895';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_1.261.769887889' TO '/oradata/orcl/group_1.261.769887889';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_5.266.769887971' TO '/oradata/orcl/group_5.266.769887971';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_6.267.769887977' TO '/oradata/orcl/group_6.267.769887977';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_3.268.769887983' TO '/oradata/orcl/group_3.268.769887983';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_4.269.769887989' TO '/oradata/orcl/group_4.269.769887989';
启动数据库至OPEN状态:
SQL> alter database open resetlogs;
Database altered.
删除原有的临时表空间文件:
alter database tempfile '+DATA01/orcl/tempfile/temp.263.769887907' offline;
alter database tempfile '+DATA01/orcl/tempfile/temp.263.769887907' drop;
添加新的临时表空间文件:
alter tablespace TEMP add tempfile '/oradata/orcl/temp02' size 7636M autoextend on maxsize unlimited ;
参考MOS文章如下:
How To Restore Rman Backups On A Different Node When The Directory Structures Are Different (文档 ID 419137.1)
In this Document
Oracle Database - Enterprise Edition - Version 10.1.0.2 and later
Information in this document applies to any platform.
***Checked for relevance on 20-July-2015***
Restoring Rman backup on a different node with different backup directory structures and different database directory structures .
++ Rman backup of database is done on NODE 1.
++ The database has to be has to be restored from the Rman backup on NODE 2.
++ The directory structures for the backups and the database files are different on NODE 2.
++ The Rman backups have to put in new directory structure on NODE 2 unlike as they were on NODE 1.
++ Also the database has to be restored to a different directory structure on NODE 2.
ASSUMPTIONS
-----------------------
++ The backups on NODE 1 are done to '/node1/database/backup'
++ The database files on NODE 1 are in '/node1/database/prod'
++ The backups on NODE 2 will be in location '/node2/database/backup'
++ The database files on NODE 2 will be restored to '/node2/database/prod
$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Feb 13 00:29:33 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORA10G (DBID=3932056136)
RMAN> backup database plus archivelog;
Starting backup at 13-FEB-07
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=143 recid=109 stamp=614392105
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_annnn_TAG20070213T002825_2x21kbds
_.bkp tag=TAG20070213T002825 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 13-FEB-07
Starting backup at 13-FEB-07
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00003 name=/node1/database/prod/sysaux01.dbf
input datafile fno=00001 name=/node1/database/prod/system01.dbf
input datafile fno=00002 name=/node1/database/prod/undotbs01.dbf
input datafile fno=00004 name=/node1/database/prod/users01.dbf
input datafile fno=00005 name=/node1/database/prod/1.dbf
input datafile fno=00006 name=/node1/database/prod/sysaux02.dbf
input datafile fno=00007 name=/node1/database/prod/undotbs02.dbf
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_nnndf_TAG20070213T002827_2x21kd12
_.bkp tag=TAG20070213T002827 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
Finished backup at 13-FEB-07
Starting backup at 13-FEB-07
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=144 recid=110 stamp=614392165
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_annnn_TAG20070213T002925_2x21m6ty
_.bkp tag=TAG20070213T002925 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 13-FEB-07
Starting Control File and SPFILE Autobackup at 13-FEB-07
piece handle=/u01/oracle/product/ora10g/dbs/c-3932056136-20070213-02 comment=NONE
Finished Control File and SPFILE Autobackup at 13-FEB-07
RMAN> exit
+ The database backup pieces to location '/node2/database/backup'
+ Controlfile backup piece to the location '/node2/database/backup'
+ The parameter file i.e init.ora file to the default location i.e $ORACLE_HOME/dbs
user_dump_dest =
background_dump_dest =
control_files =
[oracle@test-br test]$ export ORACLE_HOME=/u01/oracle/product/ora10g
[oracle@test-br test]$ export ORACLE_SID=ora10g
[oracle@test-br test]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@test-br test]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Feb 13 00:36:55 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database (not started)
RMAN> startup nomount
Oracle instance started
Total System Global Area 205520896 bytes
Fixed Size 1218508 bytes
Variable Size 75499572 bytes
Database Buffers 121634816 bytes
Redo Buffers 7168000 bytes
RMAN> restore controlfile from '/node2/database/backup/c-3932056136-20070213-02';
Starting restore at 13-FEB-07
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete,
elapsed time: 00:00:02
output filename=/node2/database/prod/control01.ctl
Finished restore at 13-FEB-07
6) Mount the database
RMAN > alter database mount
RMAN> catalog backuppiece '/node2/database/backup/o1_mf_annnn_TAG20070213T002925_2x21m6ty_.bkp';
RMAN> catalog backuppiece '/node2/database/backup/o1_mf_annnn_TAG20070213T002825_2x21kbds_.bkp';
RMAN> catalog backuppiece '/node2/database/backup/o1_mf_nnndf_TAG20070213T002827_2x21kd12_.bkp';
This feature of cataloging backup pieces is available from ORACLE 10g versions. Prior to Oracle 10g we were not able to catalog the backup pieces. For more information on cataloging options refer the metalink note 470463.1
If we are restoring the Rman backups from tapes,then we should ensure the same media manager variables that were used during backups are maintained during restore too.
The below article gives the information of various media manager Environment Variables.
NOTE.312737.1 RMAN and Specific Media Managers Environment Variables.
Confirm the location of your tempfiles, recreate them at the new location if required:
SQL> select * from v$tempfile;
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'new tempfile path filename' REUSE;
恢复控制文件:
SET DBID 2240547690;
run {
allocate channel ch1 type 'sbt_tape' PARMS="SBT_LIBRARY=/opt/simpana/Base/libobk.so";
restore controlfile to '/home/oracle/control01.ctl' from autobackup ;
release channel ch1;
}
启动数据库至mount状态:
alter database mount;
restore database:
run {
allocate channel ch1 type 'sbt_tape' PARMS="SBT_LIBRARY=/opt/simpana/Base/libobk.so";
set newname for datafile 1 to '/oradata/orcl/system.256.769887829 ';
set newname for datafile 2 to '/oradata/orcl/undotbs1.258.769887829 ';
set newname for datafile 3 to '/oradata/orcl/sysaux.257.769887829 ';
set newname for datafile 4 to '/oradata/orcl/users.259.769887829 ';
set newname for datafile 5 to '/oradata/orcl/undotbs2.264.769887929 ';
set newname for datafile 6 to '/oradata/orcl/undotbs3.265.769887929 ';
set newname for datafile 7 to '/oradata/orcl/user01 ';
set newname for datafile 8 to '/oradata/orcl/user02 ';
restore database;
switch datafile all ;
release channel ch1;
}
recover database:
run {
allocate channel ch1 type 'sbt_tape' PARMS="SBT_LIBRARY=/opt/simpana/Base/libobk.so";
recover database;
release channel ch1;
}
更改redolog文件目录:
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_2.262.769887895' TO '/oradata/orcl/group_2.262.769887895';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_1.261.769887889' TO '/oradata/orcl/group_1.261.769887889';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_5.266.769887971' TO '/oradata/orcl/group_5.266.769887971';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_6.267.769887977' TO '/oradata/orcl/group_6.267.769887977';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_3.268.769887983' TO '/oradata/orcl/group_3.268.769887983';
ALTER DATABASE RENAME FILE '+DATA01/orcl/onlinelog/group_4.269.769887989' TO '/oradata/orcl/group_4.269.769887989';
启动数据库至OPEN状态:
SQL> alter database open resetlogs;
Database altered.
删除原有的临时表空间文件:
alter database tempfile '+DATA01/orcl/tempfile/temp.263.769887907' offline;
alter database tempfile '+DATA01/orcl/tempfile/temp.263.769887907' drop;
添加新的临时表空间文件:
alter tablespace TEMP add tempfile '/oradata/orcl/temp02' size 7636M autoextend on maxsize unlimited ;
参考MOS文章如下:
How To Restore Rman Backups On A Different Node When The Directory Structures Are Different (文档 ID 419137.1)
In this Document
Goal |
Solution |
Steps to acheive the goal: 1) Connect to the target database using rman and backup the database ---> ON NODE 1 |
3) Edit the PFILE on NODE 2 to change the environment specific parameters like . |
4) Once the PFILE is suitably modified invoke Rman on the NODE 2 after setting the Oracle environment variables and start the database in nomount mode: |
5) Restore the controlfile from the backup piece. |
7) Now catalog the backup pieces that were shipped from NODE 1 |
8) Get to know the last sequence available in the archivelog backup using the following command.This will help us in recovering the database till that archivelog. |
9) Rename the Redolog files,so that they can be created in new locations when opened the database is opened in resetlogs |
10) Now restore the datafiles to new locations and recover. Since we are recovering the database here till the archivelog sequence 50 the sequence number in the SET UNTIL SEQUENCE clause |
11) Confirm your tempfiles |
References |
This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review. |
APPLIES TO:
Oracle Database - Enterprise Edition - Version 10.1.0.2 and laterInformation in this document applies to any platform.
***Checked for relevance on 20-July-2015***
GOAL
Restoring Rman backup on a different node with different backup directory structures and different database directory structures .++ Rman backup of database is done on NODE 1.
++ The database has to be has to be restored from the Rman backup on NODE 2.
++ The directory structures for the backups and the database files are different on NODE 2.
++ The Rman backups have to put in new directory structure on NODE 2 unlike as they were on NODE 1.
++ Also the database has to be restored to a different directory structure on NODE 2.
SOLUTION
ASSUMPTIONS-----------------------
++ The backups on NODE 1 are done to '/node1/database/backup'
++ The database files on NODE 1 are in '/node1/database/prod'
++ The backups on NODE 2 will be in location '/node2/database/backup'
++ The database files on NODE 2 will be restored to '/node2/database/prod
Steps to acheive the goal:
1) Connect to the target database using rman and backup the database ---> ON NODE 1
$ rman target /Recovery Manager: Release 10.2.0.1.0 - Production on Tue Feb 13 00:29:33 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: ORA10G (DBID=3932056136)
RMAN> backup database plus archivelog;
Starting backup at 13-FEB-07
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=143 recid=109 stamp=614392105
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_annnn_TAG20070213T002825_2x21kbds
_.bkp tag=TAG20070213T002825 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 13-FEB-07
Starting backup at 13-FEB-07
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00003 name=/node1/database/prod/sysaux01.dbf
input datafile fno=00001 name=/node1/database/prod/system01.dbf
input datafile fno=00002 name=/node1/database/prod/undotbs01.dbf
input datafile fno=00004 name=/node1/database/prod/users01.dbf
input datafile fno=00005 name=/node1/database/prod/1.dbf
input datafile fno=00006 name=/node1/database/prod/sysaux02.dbf
input datafile fno=00007 name=/node1/database/prod/undotbs02.dbf
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_nnndf_TAG20070213T002827_2x21kd12
_.bkp tag=TAG20070213T002827 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55
Finished backup at 13-FEB-07
Starting backup at 13-FEB-07
current log archived
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=1 sequence=144 recid=110 stamp=614392165
channel ORA_DISK_1: starting piece 1 at 13-FEB-07
channel ORA_DISK_1: finished piece 1 at 13-FEB-07
piece handle=/node1/database/backup/o1_mf_annnn_TAG20070213T002925_2x21m6ty
_.bkp tag=TAG20070213T002925 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02
Finished backup at 13-FEB-07
Starting Control File and SPFILE Autobackup at 13-FEB-07
piece handle=/u01/oracle/product/ora10g/dbs/c-3932056136-20070213-02 comment=NONE
Finished Control File and SPFILE Autobackup at 13-FEB-07
RMAN> exit
2) Move the following files to the NODE 2:
+ The database backup pieces to location '/node2/database/backup'
+ Controlfile backup piece to the location '/node2/database/backup'
+ The parameter file i.e init.ora file to the default location i.e $ORACLE_HOME/dbs
3) Edit the PFILE on NODE 2 to change the environment specific parameters like .
user_dump_dest =background_dump_dest =
control_files =
4) Once the PFILE is suitably modified invoke Rman on the NODE 2 after setting the Oracle environment variables and start the database in nomount mode:
[oracle@test-br test]$ export ORACLE_HOME=/u01/oracle/product/ora10g[oracle@test-br test]$ export ORACLE_SID=ora10g
[oracle@test-br test]$ export PATH=$ORACLE_HOME/bin:$PATH
[oracle@test-br test]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Feb 13 00:36:55 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database (not started)
RMAN> startup nomount
Oracle instance started
Total System Global Area 205520896 bytes
Fixed Size 1218508 bytes
Variable Size 75499572 bytes
Database Buffers 121634816 bytes
Redo Buffers 7168000 bytes
5) Restore the controlfile from the backup piece.
RMAN> restore controlfile from '/node2/database/backup/c-3932056136-20070213-02';Starting restore at 13-FEB-07
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete,
elapsed time: 00:00:02
output filename=/node2/database/prod/control01.ctl
Finished restore at 13-FEB-07
6) Mount the database
RMAN > alter database mount
7) Now catalog the backup pieces that were shipped from NODE 1
RMAN> catalog backuppiece '/node2/database/backup/o1_mf_annnn_TAG20070213T002925_2x21m6ty_.bkp';RMAN> catalog backuppiece '/node2/database/backup/o1_mf_annnn_TAG20070213T002825_2x21kbds_.bkp';
RMAN> catalog backuppiece '/node2/database/backup/o1_mf_nnndf_TAG20070213T002827_2x21kd12_.bkp';
This feature of cataloging backup pieces is available from ORACLE 10g versions. Prior to Oracle 10g we were not able to catalog the backup pieces. For more information on cataloging options refer the metalink note 470463.1
8) Get to know the last sequence available in the archivelog backup using the following command.This will help us in recovering the database till that archivelog.
RMAN > list backup of archivelog all;
Let us assume the last sequence of last archivelog in the backup is 50.
9) Rename the Redolog files,so that they can be created in new locations when opened the database is opened in resetlogs
SQL> alter database rename file '/node1/database/prod/redo01.log' to '/node2/database/prod/redo01.log'; ...... ...... ......
10) Now restore the datafiles to new locations and recover. Since we are recovering the database here till the archivelog sequence 50 the sequence number in the SET UNTIL SEQUENCE clause
RMAN> run { set until sequence 51; set newname for datafile 1 to '/node2/database/prod/sys01.dbf'; set newname for datafile 2 to '/node2/database/prod/undotbs01.dbf'; set newname for datafile 3 to '/node2/database/prod/sysaux01.dbf'; set newname for datafile 4 to '/node2/database/prod/users01.dbf'; set newname for datafile 5 to '/node2/database/prod/1.dbf'; set newname for datafile 6 to '/node2/database/prod/sysaux02.dbf'; set newname for datafile 7 to '/node2/database/prod/undotbs02.dbf'; restore database; switch datafile all; recover database; alter database open resetlogs; }
If we are restoring the Rman backups from tapes,then we should ensure the same media manager variables that were used during backups are maintained during restore too.
The below article gives the information of various media manager Environment Variables.
NOTE.312737.1 RMAN and Specific Media Managers Environment Variables.
11) Confirm your tempfiles
Confirm the location of your tempfiles, recreate them at the new location if required:SQL> select * from v$tempfile;
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'new tempfile path filename' REUSE;
相关文章推荐
- Oracle - 使用RMAN的备份及恢复一例-丢失所有控制文件
- ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复
- 非系统数据文件损坏,rman备份恢复
- 使用RMAN的备份及恢复一例-丢失所有控制文件
- 使用RMAN实现异机备份恢复(WIN平台)
- 将Oracle数据库改为归档模式并启用RMAN备份 如下Linux环境下对Oracle单节点数据库采用文件系统情况的配置归档模式过程。首先查看数据库归档模式和磁盘使用情况,确定归档文件放到什么位置。
- 必须使用记录或另一备份以恢复包含系统注册数据的文件.恢复成功(已解决)
- 使用rman备份异机恢复数据库
- RMAN异机恢复实验 RAC+ASM恢复到单实例文件系统
- ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复
- 使用RMAN实现异机备份恢复(WIN平台)
- ORACLE 11G没有备份文件參数文件在异机通过rman备份恢复找回被误删的数据
- ORACLE 11G没有备份文件参数文件在异机通过rman备份恢复找回被误删的数据
- RMAN未使用catalog备份丢失控制文件的恢复方法
- 使用RMAN的备份及恢复一例-丢失所有控制文件
- 使用恢复操作系统的方式异机恢复RAC到单实例文件系统
- 非系统数据文件损坏,rman备份恢复
- oracle 12c RMAN异机恢复还原RAC集群(ASM)为单实例库(文件系统)记录
- 使用RMAN从磁带库恢复归档文件
- HPUX操作系统使用tar命令恢复系统备份带指定文件