首页 > 数据库 > Oracle > 数据库异机恢复,切数据库名,数据库路径改变
场景描述:
使用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/ ,如需转载,请注明出处,否则将追究法律责任。