一、控制文件
?
??? 控制文件是一個小型的二進制文件,可以記錄數(shù)據(jù)庫的物理結構。包括:
?
??? * 數(shù)據(jù)庫名稱
??? * 數(shù)據(jù)文件和聯(lián)機重做日志文件的名稱和位置
??? * 數(shù)據(jù)庫創(chuàng)建的時標
??? * 當前日志的序號
??? * 檢驗點信息
?
??? 一般Oracle數(shù)據(jù)庫創(chuàng)建時都會創(chuàng)建至少兩個或兩個以上的控制文件。
?
二、控制文件的標準
?
??? 1、控制文件的文件名
?
??? 由CONTROL_FILES參數(shù)來指定控制文件名。
??? 若沒有指定該參數(shù),則生成默認文件名,默認文件名在各個操作系統(tǒng)中各不相同
?
??? 2、控制文件的復用
?
??? 一般不同的控制文件都存放在不同的磁盤,當某個磁盤損壞時可以通過在其他磁盤上的控制文件進行復用,不需要任何的介質恢復。
?
??? * 找到CONTROL_FILES參數(shù)列出所有文件名,將相應內(nèi)容寫入所有控制文件
??? * CONTROL_FILES中列出的第一個文件是Oracle數(shù)據(jù)庫運行期間唯一可以讀取的文件
??? * 數(shù)據(jù)庫運行期間,任何控制文件變?yōu)椴豢捎茫瑒t實例不能繼續(xù)運行
?
??? 3、備份控制文件
?
??? 進行以下數(shù)據(jù)庫物理結構改變之后,需要備份控制文件
?
??? * 添加、取消或重命名數(shù)據(jù)文件
??? * 添加或撤銷表空間,或更改表空間讀寫狀態(tài)
??? * 添加或取消重做日志文件
?
??? 4、控制文件大小管理
?
??? MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES參數(shù)控制
?
?
三、創(chuàng)建控制文件
?
??? 1、創(chuàng)建初始化控制文件
?
??? CONTROL_FILES = (/u01/oracle/prod/control01.ctl,
?????????????????????/u02/oracle/prod/control02.ctl,
???????????????????? /u03/oracle/prod/control03.ctl)
?
??? 注:若已經(jīng)存在與指定名同名的文件,則在CREATE DATABASE語句中指定CONTROLFILE REUSE子句。而且新控制文件與原先控制文件的SIZE必須相同。
?
??? 2、創(chuàng)建額外副本、重命名和重定位控制文件
?
??? ① 關閉數(shù)據(jù)庫
??? ② 在操作系統(tǒng)中復制、修改原控制文件
??? ③ 修改CONTROL_FILES,添加或修改新的控制文件名
??? ④ 重新啟動數(shù)據(jù)庫
?
??? 3、創(chuàng)建新的控制文件
?
??? 以下情況可能會需要重新創(chuàng)建新的控制文件:
?
??? * 數(shù)據(jù)庫所有控制文件都收到永久性損壞,且無任何備份
??? * 希望修改數(shù)據(jù)庫參數(shù)的永久性設置,例如:SID、MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES等參數(shù)
?
??? 4、創(chuàng)建語句示例
?
??? CREATE CONTROLFILE
??? SET DATABASE prod
??? LOGFILE GROUP 1 ('/u01/oracle/prod/redo01_01.log',
???????????????????? '/u01/oracle/prod/redo01_02.log'),
??????????? GROUP?2 ('/u01/oracle/prod/redo02_01.log',
???????????????????? '/u01/oracle/prod/redo02_02.log'),
??????????? GROUP?3 ('/u01/oracle/prod/redo03_01.log',
???????????????????? '/u01/oracle/prod/redo03_02.log')
??? NORESETLOGS
??? DATAFILE '/u01/oracle/prod/system01.dbf' SIZE 3M,
???????????? '/u01/oracle/prod/rbs01.dbf' SIZE 5M,
???????????? '/u01/oracle/prod/users01.dbf' SIZE 5M,
???????????? '/u01/oracle/prod/temp01.dbf' SIZE 5M
??? MAXLOGFILES 50
??? MAXLOGMEMBERS 3
??? MAXDATAFILES 200
??? MAXINSTANCES 6
??? ARCHIVELOG;
?
??? 注:CREATE CONTROLFILE 語句可能會損壞數(shù)據(jù)文件和聯(lián)機重做日志文件,省略文件名會引起文件中數(shù)據(jù)的丟失,或失去訪問完整數(shù)據(jù)庫的能力,所以在使用這條語句時需要特別小心。
?
??? 5、創(chuàng)建步驟(嚴格遵守)
?
??? ① 制作包括數(shù)據(jù)庫所有數(shù)據(jù)文件和聯(lián)機重做日志文件的列表,可以使用以下SQL列出清單
??????? selectmemberfrom v$logfile; --聯(lián)機重做日志文件
???????select
name
from
v$datafile;
--
數(shù)據(jù)文件
???????select
value
from
v$parameter
where
name
=
'control_files'
;
--
控制文件
??? ② 關閉數(shù)據(jù)庫(IMMEDIATE、ABORT)
??? ③ 備份數(shù)據(jù)庫的所有數(shù)據(jù)文件和聯(lián)機重做日志文件
??? ④ 啟動一個新的實例,但不要裝載和打開數(shù)據(jù)庫(NOMOUNT)
??? ⑤ 使用CREATE CONTROLFILE語句創(chuàng)建一個新的控制文件
??????? 注:若重命名數(shù)據(jù)庫,或聯(lián)機重做日志文件丟失,可使用RESETLOGS子句
??? ⑥ 在離線存儲設備上存儲新的控制文件備份
??? ⑦ 編輯CONTROL_FILES初始化參數(shù),若重命名數(shù)據(jù)庫,則編輯DB_NAME參數(shù)
??? ⑧ 進行數(shù)據(jù)庫恢復(如果需要的話
)
??????? 注:若指定RESETLOGS,則需要加入USING BACKUP CONTROL FILE來恢復數(shù)據(jù)庫
??? ⑨ 打開數(shù)據(jù)庫(ALTER DATABASE OPEN;)
???
?
?
-The End-