Oracle異地資料庫恢復
最近一臺DB伺服器硬體故障,經過各種嘗試無法啟動伺服器,那麼要想做DB恢復一般有兩種常用方式:
1、做硬碟冷遷移(前提不是硬碟損壞)
2、做異地資料恢復
如果對資料要求較高,那麼我們推薦使用第一種方式,即硬碟冷遷移(將損壞伺服器的硬碟插拔到無硬體故障的伺服器上)。
如果想盡快恢復,又無法到機房及時完成更換硬體,則透過異地資料恢復的方式。(這種方式有幾種缺點:只是將每天的rman全備同步到備份伺服器,如果備機沒有做系統初始化、資料庫軟體安裝,需要重灌系統、資料庫等,另外就是有異地、異機備份的資料、防火牆配置、hosts配置、tnsnames.ora、listener.ora、rman全備、spfile/pfile、controlfile備份等)
鑑於我恰好有兩臺伺服器安裝了資料庫、系統也做了初始化,因此我採用的異地備份資料還原的方式,具體步驟如下:
1)系統、資料庫初始化
2)將異地備份檔案cp到備機,主要包括rman全備(歸檔、全備、控制檔案、spfile檔案備份)、hosts、iptables、tnsnames.ora、listener.ora、.bash_profile
3)將系統備份檔案還原、主機名、網路修改、環境變數檔案還原等,重啟伺服器
4)將spfile透過strings生成pfile,並調整裡面的相應的檔案路徑為新伺服器的路徑
5)透過pfile啟動資料到nomount,然後透過create spfile from pfile生成spfile,關閉資料並在此啟動到nomount
6)透過rman target /連線到資料庫,restore controlfile from '/U01/app/oracle/tools/20161104/full_ORCL_20161104_3842';還原控制檔案,然後alter database mount ;啟動到mount狀態
7)透過下面命令獲取到所有資料檔案重新命名語句
col name for a100;
set line 200;
set pagesize 20000;
select file#,name from v$database;
cat aa |while read line;do num=`echo $line |awk '{print $1}'`; name=`echo $line |awk '{print $2}'|awk -F'/' '{print $8}'`; echo "set newname for datafile ${num} to '/U01/app/oracle/oradata/orcl11g/${name}' ;"; done
8)透過下面命令在rman中完成資料庫的資料檔案restore
run
{
set newname for datafile 1 to '/U01/app/oracle/oradata/orcl11g/system01.dbf' ;
set newname for datafile 2 to '/U01/app/oracle/oradata/orcl11g/sysaux01.dbf' ;
set newname for datafile 3 to '/U01/app/oracle/oradata/orcl11g/undotbs01.dbf' ;
set newname for datafile 4 to '/U01/app/oracle/oradata/orcl11g/users01.dbf' ;
......
set newname for datafile 25 to '/U01/app/oracle/oradata/orcl11g/XXX.dbf' ;
restore database;
switch datafile all;
} ;
9)透過下面命令做資料庫恢復
recover database until scn 2299;
10)由於異地恢復,redo日誌需要重建,因此做介質恢復後開啟資料庫需要透過resetlogs方式開啟。
alter database open resetlogs;
備註:alter database clear logfile group 2; 清空日誌 ,如果有ORA-00392: log 3 of thread 1 is being cleared, operation not allowed,需要清理。
alter system swith logfile ;
alter database add logfile member '' to group 1;
alter database drop logfile member 'xxxx';
1、做硬碟冷遷移(前提不是硬碟損壞)
2、做異地資料恢復
如果對資料要求較高,那麼我們推薦使用第一種方式,即硬碟冷遷移(將損壞伺服器的硬碟插拔到無硬體故障的伺服器上)。
如果想盡快恢復,又無法到機房及時完成更換硬體,則透過異地資料恢復的方式。(這種方式有幾種缺點:只是將每天的rman全備同步到備份伺服器,如果備機沒有做系統初始化、資料庫軟體安裝,需要重灌系統、資料庫等,另外就是有異地、異機備份的資料、防火牆配置、hosts配置、tnsnames.ora、listener.ora、rman全備、spfile/pfile、controlfile備份等)
鑑於我恰好有兩臺伺服器安裝了資料庫、系統也做了初始化,因此我採用的異地備份資料還原的方式,具體步驟如下:
1)系統、資料庫初始化
2)將異地備份檔案cp到備機,主要包括rman全備(歸檔、全備、控制檔案、spfile檔案備份)、hosts、iptables、tnsnames.ora、listener.ora、.bash_profile
3)將系統備份檔案還原、主機名、網路修改、環境變數檔案還原等,重啟伺服器
4)將spfile透過strings生成pfile,並調整裡面的相應的檔案路徑為新伺服器的路徑
5)透過pfile啟動資料到nomount,然後透過create spfile from pfile生成spfile,關閉資料並在此啟動到nomount
6)透過rman target /連線到資料庫,restore controlfile from '/U01/app/oracle/tools/20161104/full_ORCL_20161104_3842';還原控制檔案,然後alter database mount ;啟動到mount狀態
7)透過下面命令獲取到所有資料檔案重新命名語句
col name for a100;
set line 200;
set pagesize 20000;
select file#,name from v$database;
cat aa |while read line;do num=`echo $line |awk '{print $1}'`; name=`echo $line |awk '{print $2}'|awk -F'/' '{print $8}'`; echo "set newname for datafile ${num} to '/U01/app/oracle/oradata/orcl11g/${name}' ;"; done
8)透過下面命令在rman中完成資料庫的資料檔案restore
run
{
set newname for datafile 1 to '/U01/app/oracle/oradata/orcl11g/system01.dbf' ;
set newname for datafile 2 to '/U01/app/oracle/oradata/orcl11g/sysaux01.dbf' ;
set newname for datafile 3 to '/U01/app/oracle/oradata/orcl11g/undotbs01.dbf' ;
set newname for datafile 4 to '/U01/app/oracle/oradata/orcl11g/users01.dbf' ;
......
set newname for datafile 25 to '/U01/app/oracle/oradata/orcl11g/XXX.dbf' ;
restore database;
switch datafile all;
} ;
9)透過下面命令做資料庫恢復
recover database until scn 2299;
10)由於異地恢復,redo日誌需要重建,因此做介質恢復後開啟資料庫需要透過resetlogs方式開啟。
alter database open resetlogs;
備註:alter database clear logfile group 2; 清空日誌 ,如果有ORA-00392: log 3 of thread 1 is being cleared, operation not allowed,需要清理。
alter system swith logfile ;
alter database add logfile member '' to group 1;
alter database drop logfile member 'xxxx';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27067062/viewspace-2127956/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫冷備份的異地恢復Oracle資料庫
- Oracle資料庫的冷備份及冷備份異地恢復方法Oracle資料庫
- 【北亞資料恢復】異常斷電導致Oracle資料庫報錯的oracle資料恢復資料恢復Oracle資料庫
- oracle 9I 資料庫異機恢復( Catalog 庫 )Oracle資料庫
- 資料庫異機冷備恢復資料庫
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 【11g 庫異地恢復】實驗
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- 【實驗】Oracle 10g RAC生產資料庫RMAN方式恢復到異地單機資料庫全程記錄Oracle 10g資料庫
- Oracle資料庫終極恢復Oracle資料庫
- nbu恢復oracle資料庫案例Oracle資料庫
- oracle之rman恢復資料庫Oracle資料庫
- ORACLE資料庫恢復技術Oracle資料庫
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- oracle基於歸檔的增量異地恢復Oracle
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- oracle 資料庫全庫恢復實驗Oracle資料庫
- RMAN異地恢復實戰
- 初試Oracle的RMAN異地異系統恢復…………失敗…………Oracle
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】ASM例項不能掛載的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 寶塔資料庫恢復 mysql資料庫丟失恢復 mysql資料庫刪除庫恢復 寶塔mysql資料庫恢復資料庫MySql
- 【資料庫資料恢復】斷電導致Oracle資料庫資料丟失的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- Oracle資料庫恢復之resetlogsOracle資料庫
- Oracle資料庫冷備和恢復Oracle資料庫
- Oracle & MySQL & PostgreSQL資料庫恢復支援OracleMySql資料庫
- oracle資料庫不完全恢復Oracle資料庫
- Oracle資料庫Redo故障的恢復Oracle資料庫
- Oracle DBA1 ---- 資料庫恢復Oracle資料庫
- Oracle資料庫的非常規恢復Oracle資料庫
- Oracle 資料庫不一致導致異常的恢復Oracle資料庫
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- 【資料庫資料恢復】ORACLE常見資料災難&資料恢復可能性資料庫資料恢復Oracle
- oracle 異機恢復Oracle