controlfile檔案的備份與恢復

weifenghq發表於2009-01-23
Oracle的控制檔案controlfile有以下4種備份恢復方法。


注意:本文模擬controlfile故障均是直接刪除控制檔案。

1. 使用RMAN工具備份恢復controlfile



RMAN引數選項”CONFIGURE CONTROLFILE AUTOBACKUP ON/OFF”

定義為”ON”,則任意一次RMAN備份都會自動備份controlfile,比如備份tablespace;

定義為”OFF”,則不會自動備份controlfile,需要手動備份。

使用RMAN工具備份controflile的命令如下

#rman target /

RMAN>backup current controlfile;

使用RMAN備份集恢復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恢復時,必須有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命令恢復controlfile,步驟如下:



1> 使用備份檔案”backup.ctl”直接copy。

注意:複製檔案的名稱、路徑、份數與原controlfile完全一致。

2> 使用下列命令進行恢復

SQL> startup mount;

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE例程已經啟動。

Total System Global Area 452984832 bytes

Fixed Size 1249512 bytes

Variable Size 155193112 bytes

Database Buffers 289406976 bytes

Redo Buffers 7135232 bytes

資料庫裝載完畢。

SQL> recover database using backup controlfile;

ORA-00279:更改718494 (在07/31/2008 22:21:53生成)對於執行緒1是必需的

ORA-00289:建議: D:ORACLEPRODUCT10.2.0ARCHIVELOG1_2_661388974.ARC

ORA-00280:更改718494 (用於執行緒1)在序列#2中

指定日誌: {=suggested | filename | AUTO | CANCEL}

注意:提示輸入redolog,但一般情況下輸入建議的archivelog會報錯

在此處輸入的redolog為狀態為current的online redolog

透過v$log,v$logfile檢視確定當前狀態為CURRENT的redolog檔案

D:ORACLEPRODUCT10.2.0ORADATAZPREDO01.LOG

已應用的日誌。

完成介質恢復。

SQL> alter database open resetlogs;

資料庫已更改。

SQL>


3. 使用SQL*PLUS命令備份至trace檔案



備份控制檔案步驟如下:

#sqlplus “/as sysdba”

SQL> alter database backup controlfile to trace;

注意:

備份完畢後會在$ORACLE_HOME/admin/*sid*/udump目錄下生成對應的trace檔案

使用trace備份集恢復controlfile的步驟如下:



1> 開啟備份controlfile時生成的trace檔案

2> 找到標記”Set #1. NORESETLOGS case”部分。

注意:

一般情況下trace檔案裡都會有2部分相關內容

恢復時先執行”Set #1. NORESETLOGS case”部分

3> 執行上述標記部分的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:ORACLEPRODUCT10.2.0ORADATAZPREDO01.LOG' SIZE 50M,

GROUP 2 'D:ORACLEPRODUCT10.2.0ORADATAZPREDO02.LOG' SIZE 50M,

GROUP 3 'D:ORACLEPRODUCT10.2.0ORADATAZPREDO03.LOG' SIZE 50M

DATAFILE

'D:ORACLEPRODUCT10.2.0ORADATAZPSYSTEM01.DBF',

'D:ORACLEPRODUCT10.2.0ORADATAZPUNDOTBS01.DBF',

'D:ORACLEPRODUCT10.2.0ORADATAZPSYSAUX01.DBF',

'D:ORACLEPRODUCT10.2.0ORADATAZPUSERS01.DBF',

'D:ORACLEPRODUCT10.2.0ORADATAZPTBS1.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:ORACLEPRODUCT10.2.0ORADATAZPTEMP01.DBF'

SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;



4. 使用COPY或是cp命令進行控制檔案的備份


使用作業系統的copy或是cp命令直接備份controfile,恢復的方法與使用”alter database backup controlfile to filename”備份檔案步驟命令一樣。

from:
http://space.itpub.net/?uid-265709-action-viewspace-itemid-417369[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/633084/viewspace-1016445/,如需轉載,請註明出處,否則將追究法律責任。

相關文章