標籤:備份 資料檔案 archive idt 初始化 redolog ada ges 版本
手工備份恢複oracle資料庫:
雖然已經有了rman工具
但是手工恢複oracle能夠讓你對oracle資料庫有更加深入的瞭解
資料庫一致性開機條件:
資料檔案 scn,控制檔案 scn,redo scn一致
控制檔案記錄:
資料檔案應該到達的scn
當前redo
資料的物理結構資訊
歸檔資訊
前提條件:
歸檔日誌開啟
資料檔案有備份
控制檔案有備份
備份資料:
資料檔案備份:
資料檔案進入備份模式:
select ‘alter tablespace ‘|| tablespace_name||‘ begin backup;‘ from dba_tablespaces where tablespace_name not like ‘%TEMP%‘;
確認進入備份狀態:
再作業系統執行物理拷貝命令:
cp *.dbf /home/oracle/sg_backup_dbf/
拷貝完成,退出備份模式:
資料檔案備份完成!!!
備份完成切換幾次歸檔(多切換幾次)
alter system switch logfile;
控制檔案備份:
備份成二進位的形式:
SQL>alter database backup controlfile to ‘/home/oracle/backup_ctl/PROD4_CTL_20170703‘;
備份成邏輯檔案:
SQL> alter database backup controlfile to trace as ‘/home/oracle/backup_ctl/prod4.ctl‘;
一、資料表空間資料檔案刪除恢複:
重啟資料報錯:
根據提示查看資料檔案已經不存在(被刪除)
通過拷貝先前備份資料檔案進行恢複:
cp /home/oracle/sg_backup_dbf/* .
查看scn號:(不一致狀態)
通過執行recover database進行資料恢複()
啟動資料庫:
SQL> alter database open;
#恢複完成!
二、控制檔案被刪除:
重啟資料庫:
通過老版本資料檔案恢複:
cp /home/oracle/backup_ctl/PROD4_CTL_20170703 ./control01.ctl
cp /home/oracle/backup_ctl/PROD4_CTL_20170703 ./control02.ctl
再次重啟:
執行恢複:
SQL> recover database using backup controlfile until cancel;
#auto 模式
報錯:
(舊的控制檔案並不知道redo的情況)
再次執行恢複:
SQL> recover database using backup controlfile until cancel;
#Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
#/u01/app/oracle/oradata/PROD4/PROD4/redo01.log #使用指定的redo檔案恢複(手動輸入這行)
開機:
SQL> altr database open resetlogs;
恢複完成!
控制檔案損壞進行恢複後需要進行一次全備
使用altr database open resetlogs; 開機時,重新初始化了redolog,
archive log,以前的資料檔案的備份全部失效
刪除無用archive log
三、當前redo損壞
重啟資料庫無法開機
恢複:
刪除資料檔案
使用舊備份恢複資料檔案
恢複和前面提到的類似:
恢複命令:
recover database using backup controlfile until cancel;
#auto
recover database using backup controlfile until cancel;
#cancel
刪除控制檔案
關閉資料庫
使用備份的邏輯控制檔案恢複控制檔案(找出類似如下部分,直接執行)
(恢複控制檔案時需要資料檔案,但是使用現在的資料檔案是不行的,這就是前面先刪除資料檔案再恢複的原因)
執行開機:
alter database open resetlogs;
全備
刪除無用archive log
總結:
一致性開機的原理
scn號
開機的步驟
開機的所需檔案
手工備份恢複oracle資料庫