控制檔案詳解(轉)

物理狂人發表於2011-11-30
本文詳細介紹控制檔案
主要從以下幾個問題
1.什麼是控制檔案,它有什麼作用?
2.控制檔案包含哪些內容?
3.什麼時候建立控制檔案?
4.在哪些時候應該更新控制檔案?
5.什麼情況下需要建立新的控制檔案呢?
6.建立控制檔案的步驟是?
7.怎麼備份控制檔案呢?
8.怎麼從備份中恢復控制檔案呢?
1.什麼是控制檔案,它有什麼作用?
記錄資料庫的物理結構,是oracle載入或恢復時必不可少的二進位制檔案.
2.控制檔案包含哪些內容?
資料庫名
資料檔案和重做日誌檔名和地置資訊
資料建立時間
檢查點(checkpoint)資訊
當前log序列號
3.什麼時候建立控制檔案?
當資料庫建立時會自動建立控制檔案,可以手動更改控制檔案地置和名稱,為安全起見最好將控制檔案放在不同磁碟下.
4.在哪些時候應該更新控制檔案?
當資料檔案增加,刪除或改名(因為控制檔案裡會記錄資料檔名和位置)
當增加刪除或修改表空間讀寫狀態時()
當增加或刪除重做日誌檔案或重做日誌檔案組
5.什麼情況下需要建立新的控制檔案呢?
當所有控制檔案損壞而沒有備份時
當要更改在建立資料時指定的初使化引數設定時(如資料庫名..)
6..建立控制檔案的步驟是?
1.列出資料庫所有資料檔案和線上重做日誌檔案
可以這3個檢視中查到:
SELECT MEMBER FROM V$LOGFILE;
SELECT NAME FROM V$DATAFILE;
SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
2.關閉資料庫
3.備份所有資料檔案和線上重做日誌檔案
4.開啟例項
startup nomount(這種開啟方式不載入控制檔案)
5.建立新的控制檔案
此時檔案列表一定要對否時恢復不了資料庫
6.備份剛建立的控制檔案
7.修改初使化引數檔案,將所有有用的控制檔案加進去
8.恢復資料庫
9.開啟資料庫
當須要恢復資料庫時使用alter database open resetlogs;
否時用alter database open 開啟資料庫.
下面貼出建立控制檔案語句
QL> shutdown immediate
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area  644468736 bytes
Fixed Size                  1335108 bytes
Variable Size             268435644 bytes
Database Buffers          369098752 bytes
Redo Buffers                5599232 bytes
已用時間:  00: 00: 05.14SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  ARCHIVELOG
  2      MAXLOGFILES 5
  3      MAXLOGMEMBERS 3
  4      MAXDATAFILES 100
  5      MAXINSTANCES 1
  6      MAXLOGHISTORY 292
  7  LOGFILE
  8    GROUP 1 'D:\APP\YICHUNMEI\LOGS\ORCL\REDO01.LOG'  SIZE 10M,
  9    GROUP 2 'D:\APP\YICHUNMEI\LOGS\ORCL\REDO02.LOG'  SIZE 10M,
 10    GROUP 3 'D:\APP\YICHUNMEI\LOGS\ORCL\REDO03.LOG'  SIZE 10M
 11  -- STANDBY LOGFILE
 12  DATAFILE
 13    'D:\APP\YICHUNMEI\ORADATA\ORCL\SYSTEM01.DBF',
 14    'D:\APP\YICHUNMEI\ORADATA\ORCL\SYSAUX01.DBF',
 15    'D:\APP\YICHUNMEI\ORADATA\ORCL\UNDOTBS01.DBF',
 16    'D:\APP\YICHUNMEI\ORADATA\ORCL\USERS01.DBF'
 17  CHARACTER SET ZHS16GBK
 18  ;
控制檔案已建立。
SQL> alter database open;
資料庫已更改。
另外:建立控制檔案時很容易報(ORA-01173, ORA-01176, ORA-01177, ORA-01215, or ORA-01216))等錯誤,主要是資料檔案日誌檔案沒有列對,不是多了可能就是少了.
7.怎麼備份控制檔案呢?
下面是兩種備份方法
方法一直接備份成bkp檔案
SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'D:\app\yichunmei\oradata\ORCL\control.bkp';
資料庫已更改。
方法二將生成控制檔案的指令碼寫入trace檔案中,可從trace中得到建立控制檔案指令碼,再執行建立指令碼
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
資料庫已更改。
已用時間:  00: 00: 00.05
SQL>
SQL>
SQL> @D:\app\yichunmei\product\11.1.0\db_1\RDBMS\ADMIN\gettrcname.sql
TRACE_FILE_NAME
----------------------------------------------------------------------------------------------------
d:\app\yichunmei\diag\rdbms\orcl\orcl\trace/orcl_ora_4520.trc
8.怎麼從備份中恢復控制檔案呢?
1.對於bkp檔案可用rman
RMAN> restore controlfile from 'D:\app\yichunmei\oradata\ORCL\CONTROL.BKP';
啟動 restore 於 28-11月-11
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=98 裝置型別=DISK
通道 ORA_DISK_1: 已複製控制檔案副本
輸出檔名=D:\APP\YICHUNMEI\ORADATA\ORCL\CONTROL01.CTL
輸出檔名=D:\APP\YICHUNMEI\ORADATA\ORCL\CONTROL02.CTL
完成 restore 於 28-11月-11
RMAN> recover database;
RMAN>alter database open resetlog;
2.對於用指令碼建立的控制檔案,直接覆蓋就行
先關閉資料庫
再備份覆蓋以前的
再修改引數檔案
再開啟資料庫

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

相關文章