Oracle的控制文件controlfile有以下4種備份恢復(fù)方法,。
注意:本文模擬controlfile故障均是直接刪除控制文件,。
1. 使用RMAN工具備份恢復(fù)controlfile
RMAN參數(shù)選項”CONFIGURE CONTROLFILE AUTOBACKUP ON/OFF”
定義為”ON”,則任意一次RMAN備份都會自動備份controlfile,,比如備份tablespace,;
定義為”OFF”,則不會自動備份controlfile,,需要手動備份,。
使用RMAN工具備份controflile的命令如下
#rman target /
RMAN>backup current controlfile;
使用RMAN備份集恢復(fù)controlfile的步驟如下
#rman target /
RMAN>startup nomount
RMAN>set dbid=******
RMAN>restore controlfile from autobackup;
RMAN>alter database mount;
RMAN>recover database;
RMAn>alter database open open resetlogs;
注意:
使用RMAN恢復(fù)時,必須有instance的DBID,。DBID是唯一的,,可以通過v$instance視圖確定。
Controlfile故障后無法查詢v$instance視圖,,所以故障前須確知DBID,,否則會遇到麻煩,呵呵,。
2. 使用SQL*PLUS命令備份至指定文件
SQLPLUS命令備份controlfile有兩種方式,,這里先介紹備份為具體文件的方法。
使用SQL命令備份controlfile,,步驟如下:
#sqlplus “/as sysdba”
SQL> alter database backup controlfile to 'd:\backup.ctl';
使用SQL命令恢復(fù)controlfile,,步驟如下:
1> 使用備份文件”backup.ctl”直接copy。
注意:拷貝文件的名稱,、路徑,、份數(shù)與原controlfile完全一致。
2> 使用下列命令進(jìn)行恢復(fù)
SQL> startup mount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE例程已經(jīng)啟動,。
Total System Global Area 452984832 bytes
Fixed Size 1249512 bytes
Variable Size 155193112 bytes
Database Buffers 289406976 bytes
Redo Buffers 7135232 bytes
數(shù)據(jù)庫裝載完畢,。
SQL> recover database using backup controlfile;
ORA-00279:更改718494 (在07/31/2008 22:21:53生成)對于線程1是必需的
ORA-00289:建議: D:\ORACLE\PRODUCT\10.2.0\ARCHIVE\LOG1_2_661388974.ARC
ORA-00280:更改718494 (用于線程1)在序列#2中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
注意:提示輸入redolog,但一般情況下輸入建議的archivelog會報錯
在此處輸入的redolog為狀態(tài)為current的online redolog
通過v$log,v$logfile視圖確定當(dāng)前狀態(tài)為CURRENT的redolog文件
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\REDO01.LOG
已應(yīng)用的日志,。
完成介質(zhì)恢復(fù),。
SQL> alter database open resetlogs;
數(shù)據(jù)庫已更改,。
SQL>
3. 使用SQL*PLUS命令備份至trace文件
備份控制文件步驟如下:
#sqlplus “/as sysdba”
SQL> alter database backup controlfile to trace;
注意:
備份完畢后會在$ORACLE_HOME/admin/*sid*/udump目錄下生成對應(yīng)的trace文件
使用trace備份集恢復(fù)controlfile的步驟如下:
1> 打開備份controlfile時生成的trace文件
2> 找到標(biāo)記”Set #1. NORESETLOGS case”部分。
注意:
一般情況下trace文件里都會有2部分相關(guān)內(nèi)容
恢復(fù)時先執(zhí)行”Set #1. NORESETLOGS case”部分
3> 運行上述標(biāo)記部分的sql語句
SQL>STARTUP NOMOUNT
SQL>CREATE CONTROLFILE REUSE DATABASE "ZP" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\REDO01.LOG' SIZE 50M,
GROUP 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\REDO02.LOG' SIZE 50M,
GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\REDO03.LOG' SIZE 50M
DATAFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\SYSTEM01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\UNDOTBS01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\SYSAUX01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\USERS01.DBF',
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\TBS1.DBF'
CHARACTER SET ZHS16GBK
;
SQL>VARIABLE RECNO NUMBER;
SQL>EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');
RECOVER DATABASE;
SQL>ALTER SYSTEM ARCHIVE LOG ALL;
SQL>ALTER DATABASE OPEN;
SQL>ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\TEMP01.DBF'
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
4. 使用COPY或是cp命令進(jìn)行控制文件的備份
使用操作系統(tǒng)的copy或是cp命令直接備份controfile,,恢復(fù)的方法與使用”alter database backup controlfile to filename”備份文件步驟命令一樣,。 |
|