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

网友投稿 459 2023-11-26 15:12:28

场景描述:

使用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)从备份集中恢复数据文件和归档日志。

具体过程:

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

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

?如果源始数据库打不开,则首先从备份集中恢复控制文件,然后在控制文件生成的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.logSIZE 500M,

GROUP 8 /data/eamtest/redo08.logSIZE 500M,

GROUP 9 /data/eamtest/redo09.logSIZE 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博客 ” ,链接:http://blog.itpub.net/29844843/viewspace-1336404/,如需转载,请注明出处,否则将追究法律责任。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mysql锁机制的概念是什么
下一篇:Redis哨兵模式是什么
相关文章