Oracle 10.2.0.1跨Linux至Windows平台RMAN备份恢复操作求助
从Linux Oracle 10.2.0.1备份恢复到Windows的超详细步骤
兄弟,看你完全没接触过RMAN和数据库管理,我把每一步都掰碎了讲,尽量用最直白的话,你跟着一步步来就行:
第一步:先在Windows上装好一模一样的Oracle环境
- 一定得装Oracle 10.2.0.1版本的数据库软件,版本号要和Linux上的完全一致,高一点低一点都不行。
- 安装的时候选“仅安装软件”就够了,不用提前创建新数据库。
- 记好你的安装路径,比如
D:\app\oracle\product\10.2.0\db_1,后面到处要用。
第二步:配置Windows的Oracle环境变量
- 右键“此电脑”→属性→高级系统设置→环境变量:
- 新建系统变量
ORACLE_HOME,值填刚才的安装路径(比如D:\app\oracle\product\10.2.0\db_1) - 新建系统变量
ORACLE_SID,值填原Linux数据库的SID(比如原数据库叫ORCL,这里就填ORCL,必须和原来的一样) - 在系统变量
Path里加个%ORACLE_HOME%\bin,这样你在CMD里直接就能跑RMAN和SQLPlus命令了。
- 新建系统变量
第三步:提前建几个必要的文件夹
- 建个备份文件存放的文件夹,比如
D:\rman_backup,把你从Linux拷过来的4个备份文件全丢进去。 - 建个数据库文件的存放目录,比如
D:\app\oracle\oradata\ORCL(ORCL就是你的SID),恢复后的数据、控制文件都放这儿。
第四步:启动Oracle实例到“裸奔”状态(NOMOUNT)
- 打开Windows的命令提示符(CMD),一定要以管理员身份运行,不然会有权限问题:
- 先启动监听(如果没开的话):输入
lsnrctl start,回车等它启动完。 - 然后进SQLPlus:输入
sqlplus / as sysdba,回车后会进入SQL命令行,再输入STARTUP NOMOUNT;,回车。这时候实例启动了,但还没加载控制文件。
- 先启动监听(如果没开的话):输入
第五步:从备份里恢复控制文件
- 再开一个CMD窗口(同样管理员身份),输入
rman target /,回车进入RMAN控制台。 - 执行恢复控制文件的命令,把路径换成你放备份的文件夹和对应的文件名:
要是不知道哪个是控制文件备份,没关系,4个文件挨个试就行(备份集里一般包含控制文件)。RESTORE CONTROLFILE FROM 'D:\rman_backup\你的备份文件名'; - 恢复完控制文件后,在RMAN里输入
ALTER DATABASE MOUNT;,回车,把实例切换到加载状态。
第六步:看看原数据库的文件路径(要换成Windows的)
- 在RMAN里输入
REPORT SCHEMA;,回车,这个命令会列出原Linux数据库所有数据文件、日志文件的路径。 - 你要把这些Linux路径换成刚才建的Windows文件夹路径,比如原路径是
/u01/app/oracle/oradata/ORCL/system01.dbf,就换成D:\app\oracle\oradata\ORCL\system01.dbf。
第七步:重定向数据文件并恢复数据库
- 在RMAN里复制下面的命令,注意把里面的数据文件路径换成你刚才改好的Windows路径,要把
REPORT SCHEMA里列的所有数据文件都写上:
给你解释下每个命令:RUN { SET NEWNAME FOR DATAFILE 1 TO 'D:\app\oracle\oradata\ORCL\system01.dbf'; SET NEWNAME FOR DATAFILE 2 TO 'D:\app\oracle\oradata\ORCL\sysaux01.dbf'; SET NEWNAME FOR DATAFILE 3 TO 'D:\app\oracle\oradata\ORCL\undotbs01.dbf'; SET NEWNAME FOR DATAFILE 4 TO 'D:\app\oracle\oradata\ORCL\users01.dbf'; -- 这里要根据你查到的结果,把所有数据文件都加进来 RESTORE DATABASE; SWITCH DATAFILE ALL; RECOVER DATABASE; }SET NEWNAME:告诉Oracle每个数据文件在Windows上的新位置RESTORE DATABASE:从备份里把数据文件恢复到新位置SWITCH DATAFILE ALL:让Oracle认可这些新的文件路径RECOVER DATABASE:应用归档日志,把数据库恢复到备份时的状态
第八步:重置日志文件并打开数据库
- 回到之前的SQLPlus窗口,输入下面的命令:
这个命令会创建新的日志文件(因为原Linux的日志文件路径在Windows上不存在),执行完后数据库就正式打开了。ALTER DATABASE OPEN RESETLOGS;
第九步:检查恢复成功没
- 在SQLPlus里输入
SELECT * FROM DBA_USERS;,回车,如果能正常返回一堆用户信息,说明恢复成功了!
几个一定要注意的坑
- 版本绝对不能错:Windows上的Oracle必须是10.2.0.1,差一个小版本都不行,否则恢复肯定失败。
- 备份文件别损坏:从Linux拷过来的时候要确保文件没丢,你可以在Linux上用
md5sum 文件名算哈希,Windows上用certutil -hashfile 文件名 MD5对比,哈希值一样就说明文件没问题。 - 权限要够:所有CMD窗口都要管理员身份运行,不然可能创建不了文件或者改不了Oracle配置。
- 字节序不用操心:x86的Linux和Windows都是小端字节序,Oracle 10g支持跨这种平台的恢复,不用额外处理。
内容的提问来源于stack exchange,提问作者Vallabh Naik




