ITPub博客

首页 > 数据库 > Oracle > 数据库异机恢复,切数据库名,数据库路径改变

数据库异机恢复,切数据库名,数据库路径改变

原创 Oracle 作者:wm10240 时间:2014-11-17 16:34:25 0 删除 编辑

场景描述:

使用EAM全库备份在异机恢复,并且数据库名称由eamprod变为eamtest(目标服务器已安装oracle)。

过程:

(1)       复制EAM全库备份文件到目的主机。(/data/rmanbak/)

(2)       创建目录,包括:$ORACLE_BASE/oradata/eamtest  和$ORACLE_BASE/admin/eamtest/

Adump bdump dpump pfile udump

(3)       复制initeamprod.ora到目的主机initeamtest.ora。并修改相关内容

(4)        使用initeamtest.ora 创建实例,并启动到nomount状态(使用pfile创建实例后,生成spfile文件,并启动到nomount状态)。

(5)       从备份集中恢复数据文件和归档日志。

具体过程:

确认所有表空间所在的备份片:

?  如果源始数据库还能打开,就使用rman中list  backup查看具体备份信息

?  如果源始数据库打不开,则首先从备份集中恢复控制文件,然后在控制文件生成的trace文件查找表空间信息:

 

DECLARE

devtype varchar2(256);

done Boolean;

BEGIN

Devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

sys.dbms_backup_restore.restoreSetDatafile;

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>9,toname=> '/data/eamtest/aol04.dbf');

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>10,toname=>'/data/eamtest/OADB1.ORA');

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>11,toname=>'/data/eamtest/OADB2.ORA');

sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/data/rman/full_EAMPROD_nvpnbpgi_1_1', params=>null);

sys.dbms_backup_restore.deviceDeallocate;

END;

 

 

DECLARE

devtype varchar2(256);

done Boolean;

BEGIN

Devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

sys.dbms_backup_restore.restoreSetDatafile;

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>5,toname=> '/data/eamtest/aol.dbf');

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>13,toname=>'/data/eamtest/OAINDEX.ORA');

sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/data/rman/full_EAMPROD_o0pnbq1u_1_1', params=>null);

sys.dbms_backup_restore.deviceDeallocate;

END;

 

 

DECLARE

devtype varchar2(256);

done Boolean;

BEGIN

Devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

sys.dbms_backup_restore.restoreSetDatafile;

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>7,toname=> '/data/eamtest/aol02.dbf');

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>12,toname=>'/data/eamtest/OADB3.ORA');

sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/data/rman/full_EAMPROD_o1pnbq8b_1_1', params=>null);

sys.dbms_backup_restore.deviceDeallocate;

END;

 

DECLARE

devtype varchar2(256);

done Boolean;

BEGIN

Devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

sys.dbms_backup_restore.restoreSetDatafile;

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>1,toname=> '/data/eamtest/system01.dbf');

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>2,toname=>'/data/eamtest/undotbs01.dbf');

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>3,toname=>'/data/eamtest/sysaux01.dbf');

sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/data/rman/full_EAMPROD_o2pnbqh8_1_1', params=>null);

sys.dbms_backup_restore.deviceDeallocate;

END;

 

 

DECLARE

devtype varchar2(256);

done Boolean;

BEGIN

Devtype:=sys.dbms_backup_restore.deviceAllocate (type=>'',ident=>'t1');

sys.dbms_backup_restore.restoreSetDatafile;

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>4,toname=> '/data/eamtest/users01.dbf');

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>6,toname=>'/data/eamtest/AMPDATA01.ORA');

sys.dbms_backup_restore.restoreDatafileTo(dfnumber=>8,toname=>'/data/eamtest/aol03.dbf');

sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/data/rman/full_EAMPROD_o3pnbqkh_1_1', params=>null);

sys.dbms_backup_restore.deviceDeallocate;

END;

 

 

 

DECLARE

devtype varchar2(256);

done boolean;

BEGIN

devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'T1');

sys.dbms_backup_restore.restoreSetArchivedLog;

sys.dbms_backup_restore.restoreArchivedLogRange;

sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'/data/rman/arch_863366047_774.arc',params=>null);

sys.dbms_backup_restore.deviceDeallocate;

END;

 

 

 3.重建控制文件(因为数据库名字改变,所以要重建控制文件。以下信息都可以从由控制文件生成的trace文件中获取)

alter database backup controlfile to trace as ‘ ’;

 

CREATE CONTROLFILE SET DATABASE "EAMTEST" RESETLOGS FORCE LOGGING ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 1168

LOGFILE

  GROUP 7 '/data/eamtest/redo07.log'  SIZE 500M,

  GROUP 8 '/data/eamtest/redo08.log'  SIZE 500M,

  GROUP 9 '/data/eamtest/redo09.log'  SIZE 500M

-- STANDBY LOGFILE

DATAFILE

  '/data/eamtest/system01.dbf',

  '/data/eamtest/undotbs01.dbf',

  '/data/eamtest/sysaux01.dbf',

  '/data/eamtest/users01.dbf',

  '/data/eamtest/aol.dbf',

  '/data/eamtest/AMPDATA01.ORA',

  '/data/eamtest/aol02.dbf',

  '/data/eamtest/aol03.dbf',

  '/data/eamtest/aol04.dbf',

  '/data/eamtest/OADB1.ORA',

  '/data/eamtest/OADB2.ORA',

  '/data/eamtest/OADB3.ORA',

  '/data/eamtest/OAINDEX.ORA'

CHARACTER SET ZHS16GBK

;

4.不完全恢复

recover database using backup controlfile until cancel;

 

5.打开

alter database open resetlogs;

 

6.建临时文件

ALTER TABLESPACE TEMP ADD TEMPFILE '/data/eamtest/temp01.dbf'

     SIZE 1024M REUSE AUTOEXTEND OFF;

    

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29844843/viewspace-1336404/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 重建控制文件
请登录后发表评论 登录
全部评论

注册时间:2014-10-08

  • 博文量
    137
  • 访问量
    242811