目标
1、 完成数据库异机的迁移
2、 重组据库文件结构
3、 验证数据文件完整性
数据迁移方案详解
1. 迁移环境概述
2. source database
Ip:192.168.52.103
Oracle_sid=test
数据库版本 Oracle 10g release 2
- target database
IP:192.168.52.254
ORACLE_SID=test
数据库版本 Oracle 10g release 2
源库准备工作
1、 在源数据库创建一致性备份(主要包含数据文件,控制文件,归档文件)
Rman target / nocatalog
配置rman相关参数
RMAN> configure controlfile autobackup on; //开启rman自动备份控制文件
检测rman备份集有效性
RMAN> crosscheck backup;
RMAN> delete expired backup;
RMAN> delete obsolete;
RMAN> backup full format ‘/export/home/oracle/bk/full_%d_%t’ plus archivelog;
2、 Scp –r /export/home/oracle/bk/full_* 192.168.52.254: /export/home/oracle/full_bk
3、 把rman自动备份的参数文件和控制文件拷贝到目标数据库
Scp –r /export/home/oracle/bk/b_s 192.168.52.254: /export/home/oracle/full_bk/b_s
目标库准备工作
1、ort ORACLE_SID=test
2、rman target / nocatalog
3、RMAN> startup nomount
目标数据库没有参数文件怎么也能启动到nomount状态?
这种方式也只有rman可以,系统会默认一个sid,sqlplus工具就不能这么干。
果这种方式失败,我们可以自己创建一个pfile参数文件,只要注明sid即可,其余参数都默认。
4、
RMAN> restore spfile to ‘$ORACLE_HOME/dbs’ from ‘/export/home/oracle/full_bk/b_s’;
5、 RMAN> restore controlfile to ‘/oradata/test’ from ‘/export/home/oracle/full_bk/ full_test_20150707’;
6、 SQl> create pfile from spfile;
7、 Vi $ORACLE_HOME/dbs/inittest.ora
audit_file_dest
backupground_dump_dest
control_files
core_dump_dest
user_dump_dest
db_recovery_file_dest
8、 SQL> shutdown abort;
9、 SQL> startup mount pfile=’ $ORACLE_HOME/dbs/inittest.ora’;
10、 SQL> create spfile from pfile;
11、 RMAN> run{
set newname for datafile 1 to '/u02/database/SY5223/oradata/sysSY5223.dbf';
set newname for datafile 2 to '/u02/database/SY5223/undo/undotbsSY5223.dbf';
set newname for datafile 3 to '/u02/database/SY5223/oradata/sysauxSY5223.dbf';
set newname for datafile 4 to '/u02/database/SY5223/undo/undotbsSY52232.dbf';
set newname for datafile 5 to '/u02/database/SY5223/oradata/SY5223_system_tbl.dbf';
set newname for datafile 6 to '/u02/database/SY5223/oradata/SY5223_account_tbl.dbf';
set newname for datafile 7 to '/u02/database/SY5223/oradata/SY5223_stock_tbl.dbf';
set newname for datafile 8 to '/u02/database/SY5223/oradata/SY5223_stock_l_tbl.dbf';
restore database;
switch datafile all;
recover database;}
12、 RMAN> catalog start with ‘/export/home/oracle/full_bk’;
13、
RMAN> run{
set newname for datafile 1 to '/u02/database/SY5223/oradata/sysSY5223.dbf';
set newname for datafile 2 to '/u02/database/SY5223/undo/undotbsSY5223.dbf';
set newname for datafile 3 to '/u02/database/SY5223/oradata/sysauxSY5223.dbf';
set newname for datafile 4 to '/u02/database/SY5223/undo/undotbsSY52232.dbf';
set newname for datafile 5 to '/u02/database/SY5223/oradata/SY5223_system_tbl.dbf';
set newname for datafile 6 to '/u02/database/SY5223/oradata/SY5223_account_tbl.dbf';
set newname for datafile 7 to '/u02/database/SY5223/oradata/SY5223_stock_tbl.dbf';
set newname for datafile 8 to '/u02/database/SY5223/oradata/SY5223_stock_l_tbl.dbf';
restore database;
switch datafile all;
recover database;}
应为联机重做日志还未归档,导致在recover的时候做一致性检查时出错。这个错误是提醒你想要继续恢复的话就需要一个线程1,equence号位52的重做日志,但是这个文件在归档备份集中未找到, 因此我们可以设置恢复的sequence#来进行不完全恢复,set until sequence 51,当然我们也可以不做一致性检查直接重置redolog 的scn#来强制启动数据库,alter database open resetlogs;
12、alter database open resetlogs;
至此数据库迁移工作结束。
注意:上述数据库异机迁移支持跨网络迁移。数据库在备份的时候因为有一部分数据在online redolog,所以在备份的时候需要把内存和online redolog里面的数据库刷新到archivelog或者datafile中,保证一致性备份。如果不是一致性备份,在恢复的时候就要使用until或者resetlogs打开数据库。
duplicate之数据库迁移
Set oracle_sid=orcl
rman target=sys/robert auxname=sys/Robert@orcl2 duplicate target database to
neworcl from active database nofilenamecheck spfile
set control_files 'c:\oracle\oradata\neworcl\control01.ctl','c:\oracle\oradata\neworcl\control02.ctl'
set db_file_name_convert 'c:\oracle\oradata\orcl','c:\oracle\oradata\neworcl'
set log_file_name_convert 'c:\oracle\oradata\orcl','c:\oracle\oradata\neworcl';
recover tablespace users until time '10/06/2008:22:42:00' auxiliary destination 'c:\oracle\auxiliary';