上一主题: 恢复管理器 (RMAN) 和将数据库还原到备用服务器下一主题: 使用命令行还原


使用 RMAN 将数据库还原至其他主机

您可以使用 RMAN 将数据库还原至其他主机。

使用 RMAN 将数据库还原至其他主机

  1. 输入以下命令,以获取要从 RMAN 编录中还原的数据库的 db_id 值(数据库 ID):
    sqlplus <rman 用户>/<rman 密码>@<rman 服务>
    SQL> select db_key, db_id, bs_key, recid, stamp, backup_type, start_time, status from rc_backup_set;
    
  2. 识别与要还原的数据库对应的 db_id 值。
  3. 输入以下命令,确定源数据库中每个数据文件的文件编号和位置:
    SVRMGR> select file#, name from v$data file;
    
  4. 将 init<$ORACLE_SID>.ora 文件从 <主机 1> 上的 $ORACLE_HOME/dbs 复制到 <主机 2>。
  5. 编辑 $ORACLE_HOME/dbs/init<$ORACLE_SID>.ora 并调整所有的路径,以反映 <主机 2> 上的新目录结构。
  6. 执行 SQL*Net 配置,确保 RMAN 编录显示于在 <主机 1> 和 <主机 2> 上安装的数据库中。
  7. 通过输入以下命令在 <主机 2> 上设置 Oracle 密码文件:
    orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=kernel
    
  8. 输入以下命令,使用 nomount 选项启动目标数据库:
    SVRMGR> startup nomount pfile=$ORACLE_HOME/dbs/init<$ORACLE_SID>.ora
    
  9. 输入以下命令还原控制文件:

    注意: 需要使用在第 2 步中获取的 db_id。

    rman rcvcat <rman 用户名>/<rman 密码>@<rman 服务>
    
    RMAN> set dbid=<源数据库 db_id 值>
    
    RMAN> connect target <用户名>/<密码>;
    
    RMAN> run {
    
    RMAN> allocate channel dev1 type 'sbt_tape';
    
    RMAN> restore controlfile;
    
    RMAN> release channel dev1;
    
    RMAN> }
    
  10. 输入以下命令安装目标数据库:
    SVRMGR> alter database mount;
    
  11. 使用在第 3 步中确定的位置,确定 RMAN 脚本中每个数据文件的新位置。
  12. 输入以下命令,使用在第 11 步中确定的新位置还原数据库:
    rman target <用户名>/<密码> rcvcat <rman 用户名>/<rman 密码>@<rman 服务>
    
    RMAN> run {
    
    RMAN> allocate channel dev1 type 'sbt_tape';
    
    RMAN> set newname for data file 1 to '<新路径>'
    
    RMAN> set newname for data file 2 to '<新路径>'
    
    ...
    
    RMAN> restore database;
    
    RMAN> switch data file all;
    
    RMAN> release channel dev1;
    
  13. 输入以下命令,使用已还原的控制文件恢复数据库:
    SVRMGR> recover database using backup controlfile until cancel;
    
  14. 输入以下命令,使用 resetlogs 选项打开数据库:
    SVRMGR> alter database open resetlogs;
    
  15. 如果发生错误“ORA-00344: 不能重新创建联机日志 %s":
    1. 请输入以下命令,重命名每个联机重做日志:
      SVRMGR> alter database rename file <online redo log #1 path> 
      to <联机重做日志 #1 新路径>;
      ...
      SVRMGR> alter database rename file <online redo log #n path> 
      to <联机重做日志 #n 新路径>;
      
    2. 输入以下命令打开数据库:
      SVRMGR> alter database open resetlogs;