说下方法和步骤,格式有点乱,勉强看看吧。有时候用在 window 下测试环境的 rman 迁移还是比较有用的。
说明: 虚拟机 xp 系统两台 oracle 11.2.0.1 版本数据库
源数据库关闭归档模式,在mount 下进行全库备份,控制文件自动备份。
目标库只安装数据库软件,然后创建监听即可, 注意:目标库安装了数据库也是可以的
然后在目标数据库创建与源库一样的目录
--备份数据数据库,会自动备份控制文件及参数文件
backup database;
--创建文本格式的参数文件,生成目录在 database 下
在源库 执行 create pfile from spfile
设置环境变量
set oracle_sid=orcl
创建实例
oradim -new -sid orcl
创建密码文件
orapwd file=E:\app\product\11.2.0\dbhome_1\database\PWDorcl.ora password=orcl entries=2
将在源库 执行 create pfile from spfile
生成的 INITorcl 路径为 E:\app\product\11.2.0\dbhome_1\database
将此文件复制到目标库的,目标库路径与源库路径一定要相同
然后
sqlplus / as sysdba
startup nomount;
目标库上
create spfile from pfile;
这就生成了参数文件。
在目标库
启动rman
rman target /
(设置dbid ,在源库用rman 备份时的dbid 要记下来)注意:如果rman 备份的路径在默认的路径则可以不用设置
set dbid 3601019238
startup nomout;
恢复控制文件
restore controlfile to 'E:\app\oradata\orcl\CONTROL01.CTL' from autobackup;
restore controlfile to 'E:\app\flash_recovery_area\orcl\CONTROL02.CTL' from autobackup;
可以直接 restore controlfile from autobackup; 前提是在默认的目录中
启动到mount 状态
startup mount;
--还原数据库
restore database;
/*
如果数据文件目录不同
run{
set newname for datafile 1 to 'E:\app\oradata\system01.dbf';
set newname for datafile 3 to 'E:\app\oradata\undotbs01.dbf';
set newname for datafile 2 to 'E:\app\oradata\sysaux01.dbf.dbf';
set newname for datafile 4 to 'E:\app\oradata\users01.dbf';
restore database;
switch datafile all;
}
*/
--恢复数据库
recover database;
/*
如果数据文件目录不同,修改日志文件路径与数据文件同目录
alter database rename file 'E:\app\oradata\orcl\redo01.log' to 'E:\app\oradata\redo01.log';
alter database rename file 'E:\app\oradata\orcl\redo02.log' to 'E:\app\oradata\redo02.log';
alter database rename file 'E:\app\oradata\orcl\redo03.log' to 'E:\app\oradata\redo03.log';
*/
--打开数据库
alter database open resetlogs;