RMAN实现异机恢复
1、源端进行全备
分别需要备份数据库、控制文件以及参数文件
backup database format '/home/oracle/backup/db_%d_%T_%U';
backup format '/home/oracle/backup/con_%s_%p' current controlfile;
backup spfile format '/home/oracle/backup/spfile_%U.bak';
备份完成后将备份传送至目标端
2、目标端创建必须的目录
由于只安装了数据库软件未创建实例所以需要创建对应文件夹
[oracle@orcl backup]$ mkdir -p /u01/datafile
[oracle@orcl backup]$ mkdir -p /u01/arch
[oracle@orcl backup]$ mkdir -p /u01/app/oracle/oradata/orcl
[oracle@orcl backup]$ mkdir -p /u01/app/oracle/fast_recovery_area/orcl
[oracle@orcl backup]$ mkdir -p /u01/app/oracle/admin/orcl/adump
[oracle@orcl backup]$ mkdir -p /u01/app/oracle/admin/orcl/dpdump
[oracle@orcl backup]$ mkdir -p /u01/app/oracle/admin/orcl/pfile
3、目标端设置DBID并启动到nomount状态
注:在rman下即使没有参数文件,默认也会启动一个DUMMY实例,以便能够恢复参数文件
[oracle@orcl backup]$ rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Jan 14 11:27:37 2019
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database (not started)
RMAN> set dbid 1520751339
executing command: SET DBID
RMAN> startup nomount
startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora'
starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 281019272 bytes
Database Buffers 780140544 bytes
Redo Buffers 5517312 bytes
4、从备份中恢复spfile参数文件
RMAN> restore spfile from '/home/oracle/backup/spfile_26tnahim_1_1.bak';
Starting restore at 2019/01/14 11:32:20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=171 device type=DISK
channel ORA_DISK_1: restoring spfile from AUTOBACKUP /home/oracle/backup/spfile_26tnahim_1_1.bak
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 2019/01/14 11:32:21
5、修改spfile文件并重新启动到nomount状态
复制spfile文件为pfile文件
[oracle@orcl dbs]$ cp spfileorcl.ora initorcl.ora
[oracle@orcl dbs]$ vi initorcl.ora
orcl.__sga_target=2466250752
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=671088640
orcl.__streams_pool_size=33554432
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=10737418240
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_dest_1='location=/u01/arch'
*.open_cursors=300
*.pga_aggregate_target=819986432
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2459959296
*.undo_tablespace='UNDOTBS1'
通过pfile文件将数据库启动到nomount状态
SQL> startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora';
ORACLE instance started.
Total System Global Area 2455228416 bytes
Fixed Size 2255712 bytes
Variable Size 805307552 bytes
Database Buffers 1627389952 bytes
Redo Buffers 20275200 bytes
SQL> create spfile from pfile;
File created.
6、恢复控制文件并启动到mount状态
恢复控制文件
RMAN> restore controlfile from '/home/oracle/backup/con_68_1';
Starting restore at 2019/01/14 11:43:37
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=134 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/orcl/control01.ctl
output file name=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
Finished restore at 2019/01/14 11:43:38
启动到mount状态
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
7、查看备份集开始恢复数据文件
查看备份集
RMAN> list backup of database;
恢复数据文件
RMAN> restore database ;
Starting restore at 2019/01/14 11:48:26
Starting implicit crosscheck backup at 2019/01/14 11:48:26
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=134 device type=DISK
Crosschecked 16 objects
Finished implicit crosscheck backup at 2019/01/14 11:48:27
Starting implicit crosscheck copy at 2019/01/14 11:48:27
using channel ORA_DISK_1
Finished implicit crosscheck copy at 2019/01/14 11:48:27
searching for all files in the recovery area
cataloging files...
no files cataloged
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/orcl/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/orcl/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/orcl/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/datafile/test.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/datafile/EPOINTOA9.dbf
channel ORA_DISK_1: restoring datafile 00007 to /u01/datafile/ZW.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/db_ORCL_20190114_22tnahet_1_1
channel ORA_DISK_1: piece handle=/home/oracle/backup/db_ORCL_20190114_22tnahet_1_1 tag=TAG20190114T144900
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:17
Finished restore at 2019/01/14 11:50:44
在进行recover database的过程中由于缺少日志执行尽心不完全恢复
RMAN> recover database ;
Starting recover at 2019/01/14 11:54:44
using channel ORA_DISK_1
starting media recovery
unable to find archived log
archived log thread=1 sequence=348
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/14/2019 11:54:45
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 348 and starting SCN of 3514345
只能基于时间点进行恢复
RMAN> recover database until scn 3514345;
Starting recover at 2019/01/14 11:56:50
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 2019/01/14 11:56:51
以resetlogs方式打开数据库
RMAN> alter database open resetlogs;
database opened
8、验证数据库是否恢复完毕
SQL> select name,open_mode from v$database;
NAME OPEN_MODE
--------- --------------------
ORCL READ WRITE