【ORACLE】RMAN實現資料遷移
********************************************************
** 部落格出自blog.csdn.net/clark_xu 徐長亮專欄
********************************************************
原來的資料庫伺服器使用rman進行全庫的備份,然後再異地的伺服器上恢復一模一樣的資料庫
1.1 原伺服器備份資料庫
第一步,檢視資料庫的例項名和DBID
connected to target database: DB3 (DBID=2060124769, not open)
第二步,進行全備份
backup AS COMPRESSED BACKUPSET database
include current controlfile format '/orabak/db_%d_%T_%s'
plus archivelog format '/orabak/arch_%d_%T_%s' ;
第三步,檢視資料庫檔案的位置: /home/oracle/oradata/db3/
第四步,將備份檔案arch_DB3_20140910_8和 db_ DB3_20140910_7複製異機上/home/oracle/orabak
1.2 目標伺服器上建立資料庫
第一步,建立例項名相同(db3),資料庫檔案的位置相同(/home/oracle/oradata/db3/
第二步,關閉例項,啟動到nomount狀態。Sql>startup nomount;
第三步,設定dbid和原資料庫dbid相同
rman target/
Recovery Manager: Release 10.2.0.5.0 - Production on Thu Sep 11 19:53:50 2014
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: db3 (not mounted)
RMAN> set dbid 2060124769
executing command: SET DBID
第四步,恢復控制檔案
RMAN> restore controlfile from '/home/oracle/db_DB3_20140910_7';
Starting restore at 11-SEP-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=153 devtype=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:05
output filename=/home/oracle/oradata/db3/db3/control01.ctl
output filename=/home/oracle/oradata/db3/db3/control02.ctl
output filename=/home/oracle/oradata/db3/db3/control03.ctl
Finished restore at 11-SEP-14
第五步,mount資料庫
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
第六步,註冊從源資料庫拷貝過來的備份集到rman中
RMAN> catalog start with '/home/oracle/orabak';
searching for all files that match the pattern /home/oracle/orabak
List of Files Unknown to the Database
=====================================
File Name: /home/oracle/orabak/arch_DB3_20140910_8
File Name: /home/oracle/orabak/db_DB3_20140910_7
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done
第七步,恢復歸檔日誌
RMAN> restore archivelog all;
Starting restore at 11-SEP-14
using channel ORA_DISK_1
archive log thread 1 sequence 6 is already on disk as file /oracle/product/10.2.0.5/dbs/arch1_6_857918757.dbf
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=3
channel ORA_DISK_1: reading from backup piece /home/oracle/orabak/arch_DB3_20140910_1
channel ORA_DISK_1: restored backup piece 1
piece handle=/home/oracle/orabak/arch_DB3_20140910_1 tag=TAG20140910T172944
(注:如果不恢復歸檔日誌,
RMAN> recover database;
Starting recover at 11-SEP-14
using channel ORA_DISK_1
starting media recovery
unable to find archive log
archive log thread=1 sequence=7)
第八步,恢復資料庫檔案(因為目標資料庫和原資料庫的資料檔案位置相同,所以簡單些)
RMAN> restore database;
Starting restore at 11-SEP-14
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /home/oracle/oradata/db3/system01.dbf
restoring datafile 00002 to /home/oracle/oradata/db3/undotbs01.dbf
restoring datafile 00003 to /home/oracle/oradata/db3/sysaux01.dbf
restoring datafile 00004 to /home/oracle/oradata/db3/users01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/orabak/db_DB3_20140910_6
channel ORA_DISK_1: restored backup piece 1
piece handle=/home/oracle/orabak/db_DB3_20140910_6 tag=TAG20140910T173540
第九步,恢復資料庫
RMAN> recover database;
Starting recover at 11-SEP-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=152 devtype=DISK
starting media recovery
media recovery complete, elapsed time: 00:00:03
Finished recover at 11-SEP-14
第十步,啟動資料庫
alter database open resetlogs;