今天试验了下windows server 2012 下oracle rman备份整库到linux平台进行恢复,经过测试,是可恢复的,下面我们来看看恢复过程。
1、首先备份windows下的oracle备份;
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
sql 'alter system archive log current';
backup as compressed backupset format 'c:\backup\full_db_%d%u.bak' database;
backup current controlfile format 'c:\backup\ctl_file_%d%u.bak';
backup archivelog all tag='archivelog' format 'c:\backup\archivelog_%d%u.bak';
backup spfile format 'c:\backup\spfile_%d_U.bak';
release channel c1;
release channel c2;
release channel c3;
}
备份文件:

2、将备份文件复制到linux系统平台,创建相应目录
数据目录:/oradata/orcl
日志目录:/flash_recovery_area
编辑参数文件,使用pfile文件(注意目录位置及是否存在)
create spfile from pfile='/home/oracle/pfile100.ora'
startup nomount;
注册catalog目录 :catalog start with '/home/oracle/backup/';
恢复控制文件:
rman target /
restore conrolfile from '/home/oracle/backup/CTL_FILE_ORCL0A0USDSC.BAK';
启动库到mount状态: alter database mount;
恢复数据库:
run{
set newname for datafile 1 to '/oradata/orcl/SYSTEM01.DBF';
set newname for datafile 2 to '/oradata/orcl/SYSAUX01.DBF';
set newname for datafile 3 to '/oradata/orcl/UNDOTBS01.DBF';
set newname for datafile 4 to '/oradata/orcl/USERS01.DBF';
restore database ;
switch datafile all;
recover database;
}
备注:recover database过程中出现 scn 19412报错,因缺少归档日志造成;重新备份日志,复制到新的服务器(从原来库备份归档日志,backup archivelog all format '/home/oracle/backupold/archive_%d_%u.bak';)
recover database until scn 19412; 恢复完成;
sqlplus / as sysdba
alter database open resetlogs;(归档日志序列从1开始递增)
3、新库修复工作:
新建在线日志组:redo01.log redo02.log redo03.log
根据使用状态删除后新建(删除一个添加一个,做好日志切换工作)
删除logfile:alter database drop logfile group 1;
增加logfile: alter database add logfile group 1 '/oradata/orcl/redo01.log' size 50M;
切换日志组状态由active到unactive 或unused状态;(直至3个组全部更换完成)
设置数据默认临时表空间:
create temporary tablespace temp01 tempfile '/oradata/orcl/temp101.dbf' size 100m autoextend on maxsize 2g;
alter database default temporary tablespace temp01;
删除原来temp临时表空间: drop tablespace temp including contents and datafiles;
备注:做好新库备份(备份中存在问题,windows下归档日志路径不存在,导致备份失败)
windows备份文件转linux系统,所导致的问题。
由于控制文件有原来的archivelog日志信息,造成清楚这些日志报错
crosscheck archivelog all;
SYS@orcl>select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
C:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2022_05_30\O1_MF_1_5_K99OQ9QC_.ARC
C:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2022_05_31\O1_MF_1_6_K9BYLFH7_.ARC
C:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2022_05_31\O1_MF_1_7_K9BZ9QW1_.ARC
C:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2022_05_31\O1_MF_1_8_K9BZC7Y0_.ARC
C:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2022_05_31\O1_MF_1_9_K9BZD2M8_.ARC
C:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2022_05_31\O1_MF_1_10_K9BZHLW2_.ARC
C:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2022_05_31\O1_MF_1_11_K9BZJ072_.ARC
C:\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2022_05_31\O1_MF_1_12_K9BZMJCY_.ARC
/flash_recovery_area/ORCL/archivelog/2022_05_31/o1_mf_1_14_k9c9qs28_.arc
执行语句:
execute sys.dbms_backup_restore.resetCfileSection( 11);
select name from v$archived_log;(旧日志删除)
备份新库脚本如上(类似开头备份脚本,目录位置不同,略)
Yicheng16
22.05.31
-- The End --
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69963467/viewspace-2898293/ ,如需转载,请注明出处,否则将追究法律责任。