rman异机异构恢复

一.源端数据库全备


1.全库备份脚本

cat rman_full_backup.sh
source /home/oracle/.bash_profile
rman target / log=/home/oracle/backup/logs/backupall_rman.log<<EOF
run
{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
sql 'alter system archive log current';
backup as compressed backupset database format '/home/oracle/backup/bak/db_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all format '/home/oracle/backup/bak/arch_%t_%s';
backup format '/home/oracle/backup/bak/con_%s_%p' current controlfile;
release channel ch1;
release channel ch2;
}
EOF

2.scp到目标端

scp /home/oracle/backup/bak/* root@192.168.10.10:/backup

chown -R oracle:install /backup

chmod –R 775 /backup

二、目标端还原操作

1.在目标端设置DBID,启动到nomount阶段

注:在rman下即使没有参数文件,默认也会启动一个DUMMY实例,以便能够恢复参数文件

rman target /

set dbid 111

startup nomount;

2.还原spfile

restore spfile to pfile '/home/oracle/oracle/product/10.2.0/db_1/dbs/spfileSCM2.ora' from '/app/backup/backup/backupsets/ora_cfc-3990839260-20170518-00';
参数文件修改之后可能需要修改相关的参数,可以相关的路径修改成新的路径
rman target /
startup nomount  pfile='/home/oracle/oracle/product/10.2.0/db_1/dbs/initSCM2.ora';

注:如果新库路径跟老库不一致,需要创建相关的目录并修改pfile相关的参数文件。

mkdir -p /home/oracle/app/oracle/admin/orcl/{adump,bdump,cdump,ddump,udump} 
mkdir -p /home/oracle/app/oracle/oradata/orcl 
mkdir -p /home/oracle/app/oracle/flash_recovery_area/ORCL

3.恢复控制文件
RMAN>restore controlfile from '/app/backup/backup/backupsets/ora_cfc-3990839260-20170518-00';
4.启动mount状态
alter database mount;
5.检查数据库备份有效性
RMAN> crosscheck backup;
6.把备份集注册一下
RMAN> catalog start with '/app/backup/backup';
RMAN>  crosscheck backup;
RMAN> restore database preview summary;
7.如果要将数据文件还原到不同的地方(恢复路径不同),那么就要用set命令指定新位置。 并且使用switch datafile all将信息更新的到控制文件。否则就可以直接使用restore database命令。
run
{
set newname for datafile            1 to "/data/scm2/system01.dbf";                 
set newname for datafile          2 to "/data/scm2/undotbs01.dbf";         
set newname for datafile          3 to "/data/scm2/sysaux01.dbf";          
set newname for datafile          4 to "/data/scm2/users01.dbf";           
set newname for datafile          5 to "/data/scm2/bookt_d01.dbf";         
set newname for datafile          6 to "/data/scm2/data_consol_d01.dbf";   
set newname for datafile          7 to "/data/scm2/data_consol_x01.dbf";   
set newname for datafile          8 to "/data/scm2/escmowner_d01.dbf";     
set newname for datafile          9 to "/data/scm2/escmowner_x01.dbf";     
set newname for datafile         10 to "/data/scm2/escmowner_x02.dbf";     
set newname for datafile         11 to "/data/scm2/escmowner_x03.dbf";     
set newname for datafile         12 to "/data/scm2/escmupdate_d01.dbf";    
set newname for datafile         13 to "/data/scm2/escmupdate_x01.dbf";    
set newname for datafile         14 to "/data/scm2/gent_d03.dbf";          
set newname for datafile         15 to "/data/scm2/gent_d01.dbf";          
set newname for datafile         16 to "/data/scm2/gent_d02.dbf";          
set newname for datafile         17 to "/data/scm2/gent_x01.dbf";          
set newname for datafile         18 to "/data/scm2/gsot_d01.dbf";          
set newname for datafile         19 to "/data/scm2/inventory_d01.dbf";     
set newname for datafile         20 to "/data/scm2/inventory_d02.dbf";     
set newname for datafile         21 to "/data/scm2/inventory_x01.dbf";     
set newname for datafile         22 to "/data/scm2/mit_d01.dbf";           
set newname for datafile         23 to "/data/scm2/ppot_d01.dbf";          
set newname for datafile         24 to "/data/scm2/sct_d01.dbf";           
set newname for datafile         25 to "/data/scm2/smt_d01.dbf";           
set newname for datafile         26 to "/data/scm2/smt_x01.dbf";           
set newname for datafile         27 to "/data/scm2/statspack_d01.dbf";     
set newname for datafile         28 to "/data/scm2/stat_d01.dbf";          
set newname for datafile         29 to "/data/scm2/stat_x01.dbf";          
set newname for datafile         30 to "/data/scm2/tna_d01.dbf";           
set newname for datafile         31 to "/data/scm2/tna_x01.dbf";           
set newname for datafile         32 to "/data/scm2/tracking_d01.dbf";      
set newname for datafile         33 to "/data/scm2/gent_d04.dbf";          
set newname for datafile         34 to "/data/scm2/ANTIDUMP_D02.dbf";      
set newname for datafile         35 to "/data/scm2/ANTIDUMP_x01.dbf";      
set newname for datafile         36 to "/data/scm2/escmupdate_d02.dbf";    
set newname for datafile         37 to "/data/scm2/users02.dbf";           
set newname for datafile         38 to "/data/scm2/escmupdate_d03.dbf";    
set newname for datafile         39 to "/data/scm2/TDC_SHIPING_DATA01.dbf";
set newname for datafile         40 to "/data/scm2/TDC_SHIPING_IDX01.dbf"; 
set newname for datafile         41 to "/data/scm2/escmowner_d02.dbf";       
restore database ;
switch datafile all;
}
8.恢复数据库
RMAN>  recover database;

9:处理redo log和temp表空间

如前面所说,如果实例安装路径不同,或者redo log和临时表空间对应的文件在目标服务器上找不到。那么就必须操作下面

SQL> col status for a7
SQL> col type for a7;
SQL> col member for a64;
SQL> select * from v$logfile;
 
    GROUP# STATUS  TYPE    MEMBER                                                           IS_
---------- ------- ------- ---------------------------------------------------------------- ---
         4         ONLINE  /u01/app/oracle/oradata/SCM2/redo04.log                          NO
         3         ONLINE  /u01/app/oracle/oradata/SCM2/redo03.log                          NO
         2         ONLINE  /u01/app/oracle/oradata/SCM2/redo02.log                          NO
         1         ONLINE  /u01/app/oracle/oradata/SCM2/redo01.log                          NO
 
SQL> 
SQL> alter database rename file '/u01/app/oracle/oradata/SCM2/redo01.log'
  2  to '/home/oracle/oracle/oradata/SCM2/redo01.log';
Database altered.
SQL>  alter database rename file '/u01/app/oracle/oradata/SCM2/redo02.log'
  2  to '/home/oracle/oracle/oradata/SCM2/redo02.log';
Database altered
SQL> alter database rename file '/u01/app/oracle/oradata/SCM2/redo03.log'
  2  to  '/home/oracle/oracle/oradata/SCM2/redo03.log';
Database altered.
SQL>  alter database rename file '/u01/app/oracle/oradata/SCM2/redo04.log'
  2  to '/home/oracle/oracle/oradata/SCM2/redo04.log';
Database altered.
 
SQL> 
SQL> col name for a80;
SQL> select name from v$tempfile;
 
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/SCM2/temp01.dbf
 
SQL> alter database tempfile '/u01/app/oracle/oradata/SCM2/temp01.dbf' drop;
 
SQL> alter tablespace temp
  2  add tempfile '/home/oracle/oracle/oradata/temp01.dbf'
  3  size 200M
  4  autoextend on
  5  next 128M
  6  maxsize 4G;
 
Tablespace altered.

10:用open resetlogs 打开数据库

正常情况下应该是

SQL> alter database open resetlogs;
Database altered.
posted @ 2019-12-10 11:13  小草一亩三分地  阅读(508)  评论(0)    收藏  举报