例:将mestest服务器的dtlbwms数据库移动到dtsoradb01服务器中。
1、源数据库RMAN备份:
set command id to 'rman';
allocate channel dev1 type disk;
backup
format 'F:\HISDBRMANBAK\df%s_%p_%t'
database include current controlfile;
sql
'alter system archive log current';sql 'alter system archive log current'; delete noprompt obsolete; backup
filesperset 20
format 'F:\HISDBRMANBAK\Log\ar%s_%p_%t'
(archivelog until time '(SYSDATE-1)' all delete input); delete noprompt obsolete;
release channel dev1;
}
2、获得源数据库的参数文件,修改后传送至目标数据库,修改后的参数文件可以用于数据库启动,主要修改的参数应该包括:*_dmpb_dest、control_files、db_recovery_file_dest、db_create_file_dest等。
3、show parameter查出*_dmpb_dest、control_files、db_recovery_file_dest、db_create_file_dest等参数,在目标数据库中建立相应的文件夹。
4、将init<SID>.ora文件、Control文件copy到目标数据库,更改pfile相应的路径参数。如没有pfile,则在源数据库中从spfile生成:
5、在window平台下,可以通过oradim创建一个服务启动oracle环境。
6、通过rman来启动数据库到nomount状态
C:\>rman target /
RMAN> startup nomount pfile ='F:\oracle\product\10.2.0\db_1\database\initdtlbwms.ora'
7、通过备份的控制文件恢复出控制文件
8、装载数据库
9、将备份集拷贝到相应目录,向控制文件中加载备份集
10、作交叉检查,然后删除无效backup。
RMAN> delete expired backup;
11、通过控制文件获得表空间及数据文件列表
12、通过编写恢复脚本,然后执行恢复
set newname for datafile 1 to 'F:\oracle\product\10.2.0\oradata\dtlbwms\SYSTEM01.DBF';
set newname for datafile 2 to 'F:\oracle\product\10.2.0\oradata\dtlbwms\UNDOTBS01.DBF';
set newname for datafile 3 to 'F:\oracle\product\10.2.0\oradata\dtlbwms\SYSAUX01.DBF';
set newname for datafile 4 to 'F:\oracle\product\10.2.0\oradata\dtlbwms\USERS01.DBF';
set newname for tempfile 1 to 'F:\oracle\product\10.2.0\oradata\dtlbwms\TEMP01.DBF';
restore database;
switch datafile all;
}
run{
set newname for datafile 1 to 'D:\oracle\product\10.2.0\oradata\hisdb\SYSTEM01.DBF';
set newname for datafile 2 to 'D:\oracle\product\10.2.0\oradata\hisdb\UNDOTBS01.DBF';
set newname for datafile 3 to 'D:\oracle\product\10.2.0\oradata\hisdb\SYSAUX01.DBF';
set newname for datafile 4 to 'D:\oracle\product\10.2.0\oradata\hisdb\USERS01.DBF';
set newname for datafile 5 to 'D:\oracle\product\10.2.0\oradata\hisdb\EXAMPLE01.DBF';
set newname for datafile 6 to 'D:\oracle\product\10.2.0\oradata\hisdb\DRSYS';
set newname for datafile 7 to 'D:\oracle\product\10.2.0\oradata\hisdb\INDX';
set newname for datafile 8 to 'D:\oracle\product\10.2.0\oradata\hisdb\RBS';
set newname for datafile 9 to 'D:\oracle\product\10.2.0\oradata\hisdb\TOOLS';
set newname for tempfile 1 to 'D:\oracle\product\10.2.0\oradata\hisdb\TEMP01.DBF';
restore database;
switch datafile all;
}
注意:如果数据文件路径和原来的相同则直接
{
restore database;
}
PS:如果当前的控制文件不允许从这个历史备份集中进行恢复,立马寻求他法!!!
参看:http://www.cnblogs.com/Vegaslee/archive/2010/04/26/1721454.html 用dbms_backup_restore解决RMAN-06026 06023错误
13、数据文件恢复出来以后,可以对数据库应用归档日志进行恢复
也可以在sqlplus中手动恢复
PS:如果在线日志或归档日志全部丢失,不能进行如上操作,请参看:
http://www.cnblogs.com/Vegaslee/archive/2010/03/26/1696698.html
14、最后以resetlogs方式打开数据库
15、配置em
参看:http://www.cnblogs.com/vegaslee/archive/2009/04/08/1431762.html
【Vegas原创】使用RMAN转移数据库到不同主机(Linux版)请参看:http://www.cnblogs.com/vegaslee/archive/2009/03/02/1401481.html
----------------------------------------------------------------------------------------------------------------
常见问题解决:
1,目标数据库startup时,报redolog路径不对错误:
ALTER DATABASE RENAME FILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DTLBWMS\REDO02.LOG' TO 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\DTLBWMS\REDO02.LOG';
ALTER DATABASE RENAME FILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\DTLBWMS\REDO03.LOG' TO 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\DTLBWMS\REDO03.LOG';
2,OEM查看表空间时,报TEMP空间错误:
3,select时,报ORA-06553错误:
1)、Shutdown immediate
2)、startup migrate
注:startup migrate表示降级,在9i,无论升级/降级 数据库都是startup migrate;
10g后增加了upgrade参数,升级可直接用startup upgrade,降级仍是startup migrate.
3)、@$ORACLE_HOME/rdbms/admin/utlirp.sql;
4)、Shutdown immediate
5)、Startup
6)、@$ORACLE_HOME/rdbms/admin/utlrp.sql;
7)、Shutdown immediate
8)、Startup
参考文档:http://junmail.javaeye.com/blog/237109