1. 程式人生 > >oracle數據庫冷備中的手工備份和恢復

oracle數據庫冷備中的手工備份和恢復

ber back red hat dia 11g lte recovery pro ||

我的操作系統是red hat5.5 32位系統oracle11g

以我的系統為例:

冷備狀態下,數據庫必須是關閉的,但是我們現在要做一個實驗,在開庫的狀態下分別查詢出:

1.show parameter spfile

記錄spfile的位置:/u01/oracle/dbs/spfileprod.ora

2.show parameter control

記錄控制文件的位置:

/u01/oradata/prod/control01.ctl, /u01/flash_recovery_area/prod/control02.ctl

3.select name from v$datafile;

記錄數據文件的位置:

/u01/oradata/prod/system01.dbf
/u01/oradata/prod/sysaux01.dbf
/u01/oradata/prod/undotbs01.dbf
/u01/oradata/prod/users01.dbf
/u01/oradata/prod/example01.dbf

4,select member from v$logfie;

記錄日誌文件的位置:

/u01/oradata/prod/redo03.log
/u01/oradata/prod/redo02.log
/u01/oradata/prod/redo01.log

然後shutdown immediate關閉數據庫

mkdir -p /home/oracle/cold_backup

將上述查到各個文件的路徑復制到cold_backup文件夾下

cp /u01/oracle/dbs/spfileprod.ora /home/oracle/cold_backup

cp /u01/oradata/prod/control01.ctl /home/oracle/cold_backup

cp /u01/flash_recovery_area/prod/control02.ctl /home/oracle/cold_backup

cp /u01/oradata/prod/*.dbf /home/oracle/cold_backup

cp /u01/oradata/prod/*.log /home/oracle/cold_backup(redo日誌可備也可不備)

模擬數據庫損壞

rm -rf /u01/oracle/dbs/spfileprod.ora

rm -rf /u01/oradata/prod/control01.ctl

rm -rf /u01/flash_recovery_area/prod/control02.ctl

rm -rf /u01/oradata/prod/*.dbf

rm -rf /u01/oradata/prod/*.log

這時打開數據發現報錯缺失各種文件,然後按照縣恢復參數文件---控制文件----數據文件的順序對數據庫進行恢復

mkdir -p /home/oracle/controlfile

mkdir -p /home/oracle/datafile

mkdir -p /redologfile

1》用備份出來的這些文件把原來的數據庫給搭建起來

cp /home/oracle/cold_backup/*.ctl /home/oracle/controlfile

cp /home/oracle/cold_backup/*.dbf /home/oracle/datafile

cp /home/oracle/cold_backup/*.log /home/oracle/redologfile

cp /home/oracle/cold_backup/spfileprod.ora /u01/oracle/dbs(此目錄就是先前spfile的目錄)

2》打開庫到nomount,如果發現打不開可能丟失一個文件件

在此查詢創建:

show parameter audit

mkdir -p /u01/admin/prod/adump

3》如果可以啟動到nomount,邏輯上重新創建控制文件

alter system set control_files=‘/home/oracle/controlfile/control01.ctl‘,‘/home/oracle/controlfile/control03.ctl‘ scope=spfile;

4》關庫重啟

5》邏輯上修改數據文件和日誌文件的位置

數據文件:

select ‘alter database rename file ‘||‘‘‘‘||name ||‘‘‘‘||‘ to ‘||replace(name,‘/u01/oradata/prod‘,‘/home/oracle/datafile‘)||‘‘‘;‘ from v$datafile;

日誌文件:

select ‘alter database rename file ‘||‘‘‘‘||member ||‘‘‘‘||‘ to ‘||replace(member,‘/u01/oradata/prod‘,‘/home/oracle/redologfile‘)||‘‘‘;‘ from v$logfile;

通過對數據文件和日誌文件批批處理得出的SQL語句粘貼運行

6》alter database open;

冷備中手工備份和恢復至此完成,僅供參考!!

oracle數據庫冷備中的手工備份和恢復