Windows oracle 11g rman備份恢復到linux系統

Yichen16發表於2022-05-31

          今天試驗了下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部落格 ” ,連結:http://blog.itpub.net/69963467/viewspace-2898293/,如需轉載,請註明出處,否則將追究法律責任。

相關文章