oracle數據庫冷備中的手工備份和恢復
我的操作系統是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數據庫冷備中的手工備份和恢復