You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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控制台。
  • 执行恢复控制文件的命令,把路径换成你放备份的文件夹和对应的文件名:
    RESTORE CONTROLFILE FROM 'D:\rman_backup\你的备份文件名';
    
    要是不知道哪个是控制文件备份,没关系,4个文件挨个试就行(备份集里一般包含控制文件)。
  • 恢复完控制文件后,在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窗口,输入下面的命令:
    ALTER DATABASE OPEN RESETLOGS;
    
    这个命令会创建新的日志文件(因为原Linux的日志文件路径在Windows上不存在),执行完后数据库就正式打开了。

第九步:检查恢复成功没

  • 在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

火山引擎 最新活动