重建物理備庫案例兩則
上週末兩個生產庫的物理備庫都出現了問題,週末分別重建了一把,兩庫出的問題一樣,建立的方法也不同,以下是詳細資訊;
場景1
備庫b上的監控指令碼失效,從7月8號就開始與主庫不一致,直到上週末才發現;檢視alertlog,發現archive gap相差很多,且很多在主庫上都已不存在,考慮主庫資料更新比較頻繁,決定重新建立備庫;
但是主庫server磁碟容量有限,此時只剩200g左右,而資料庫大小有600g,使用rman備份來建立備庫不太合適,於是採用rman的copy命令替代;
具體方法為:將備庫關閉,並將其datafile全部刪除;對主庫中的資料檔案,先使用copy命令將其放到磁碟上,然後scp傳輸至備庫,接著刪除磁碟上的copy以騰出磁碟空間,重複這一步驟,直到所有檔案都傳輸至備庫為止;
使用pl/sql生成相應指令碼
declare
begin
dbms_output.put_line('rman target / ');
for i in (select file#,name from v$datafile) loop
dbms_output.put_line('copy datafile '||i.file#||' to ''/data/oracle/copy/'||substr(i.name,instr(i.name,'/',-1,1)+1)||''';');
dbms_output.put_line('host ''scp /data/oracle/copy/'||substr(i.name,instr(i.name,'/',-1,1)+1)||' *.*.*.*:/data/oracle/oradata/standby'';');
dbms_output.put_line('host ''rm /data/oracle/copy/'||substr(i.name,instr(i.name,'/',-1,1)+1)||''';');
end loop;
end;
/
輸出結果如下
rman target /
copy datafile 1 to '/data/oracle/copy/system.dbf';
host 'scp /data/oracle/copy/ system.dbf *.*.*.*:/data/oracle/oradata/standby';
host 'rm /data/oracle/copy/ system.dbf ';
在主庫開一個screen視窗,執行以上命令,傳輸完畢後即可開始recover備庫
注:
1、從copy第一個資料檔案起生成的redo log都需要儲存完整,備庫recover的時候需要用到
2、執行前需要配置主備庫的ssh使用者等價,否則每次scp都要輸入密碼;
場景2
生產庫上的另一套dataguard系統出現archive gap,有別與第一個案例,雖然相應的日誌檔案在主庫也已不存在,但這次發現時間比較早,備庫較之主庫只延遲了兩天,無須推倒重建,在此採用incremental recover的方式恢復備庫。
先確定備庫的current scn,以此在主庫上執行incremental backup,將備份傳至備庫,使用recover noredo方式恢復備庫
具體步驟為:
1、
檢視物理備庫的scn
SQL> select to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
----------------------------------------
20032338311
2、
在主庫執行incremental備份
run
{allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
allocate channel d4 type disk;
backup as compressed backupset incremental from SCN 20032338311 database format '/data/oracle/backup/rman/standby_%d_%T_%U.bak'
include current controlfile for standby filesperset=5 tag 'FOR STANDBY';
release channel d1;
release channel d2;
release channel d3;
release channel d4;
}
3、
將備份集傳輸到備庫的/data/oracle/backup/rman目錄
4、
RMAN>catalog start with '/data/oracle/backup/rman';
run {
allocate channel dsk0 type disk;
allocate channel dsk1 type disk;
allocate channel dsk2 type disk;
restore standby controlfile to '/u01/app/oracle/control01.ctl';
recover database noredo;
}
5、
關閉standby資料庫
將/u01/app/oracle/control01.ctl覆蓋現有的控制檔案
6、
啟動物理備庫檢查
SQL> startup mount
SQL> select to_char(current_scn) from v$database;
TO_CHAR(CURRENT_SCN)
----------------------------------------
20133423174
SQL> SELECT * FROM V$ARCHIVE_GAP;
no rows selected
為備庫增加standby redolog
開啟recover程式
SQL> alter database recover managed standby database disconnect from session using current logfile;
然後觀察alertlog一段時間,確保不會有錯誤發生
7、
如果備份用不到了,則現在可以刪除
RMAN> DELETE BACKUP TAG ‘FOR STANDBY’;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-706823/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g Data guard 物理備庫故障恢復重建例項Oracle
- 物理DG從庫損壞後的重建
- 物理備庫互轉快照備庫
- 配置物理備庫+邏輯備庫
- 為物理備庫新增standby logfile group相關事則
- 搭建物理備庫
- 利用RMAN備份重建資料庫資料庫
- 10 管理物理和快照備庫
- Oracle:Failover 到物理備庫OracleAI
- 物理備庫的搭建過程
- RMAN DUPLICATE建立DataGuard物理備庫
- 物理備庫failover實驗AI
- 物理備用資料庫(二)資料庫
- 物理備用資料庫(一)資料庫
- dataguard-建立物理備庫全程解析
- 物理備庫無法接受archivelogHive
- Oracle 11g Data guard 物理備庫應急切換(failover)後原有主庫的重建(通過RMAN恢復)OracleAI
- 【DG】怎麼使用Data Pump備份物理備庫
- 在物理備庫上部署閃回資料庫資料庫
- 單節點主庫、邏輯備庫升級為RAC、物理備庫、邏輯備庫(1)
- 單節點主庫、邏輯備庫升級為RAC、物理備庫、邏輯備庫(2)
- 單節點主庫、邏輯備庫升級為RAC、物理備庫、邏輯備庫(3)
- 單節點主庫、邏輯備庫升級為RAC、物理備庫、邏輯備庫(4)
- 單節點主庫、邏輯備庫升級為RAC、物理備庫、邏輯備庫(5)
- 驗證物理備庫是否執行正常
- oracle 11g之物理備庫管理Oracle
- Data guard 配置之搭建物理備庫
- DATA GUARD物理備庫的SWITCHOVER切換
- 10G物理備庫搭建文件
- [Dataguard]主庫歸檔丟失,備庫不需重建實驗
- nginx的一些規則案例備忘Nginx
- 用物理備庫的檔案來恢復主庫
- ORACLE DATAGUARD 資料庫---建立物理備用資料庫Oracle資料庫
- Data Guard物理備庫read/write後,切換回備庫狀態
- Oracle10G Dataguard 多個備庫 - 主庫和物理備庫的切換Oracle
- 【DataGuard】手工冷備搭建 Oracle 11g DataGuard 物理備庫Oracle
- 【DATAGUARD】DG系列之RACtoONE物理備庫的搭建
- 使用RMAN backup和restore方式部署物理備庫REST