Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評(píng)論 :: 0 Trackbacks
          控制文件及其創(chuàng)建
          ?
          ??? 今天來(lái)學(xué)習(xí)一下Oracle中一個(gè)比較重要的文件類(lèi)型——控制文件。控制文件主要用于記錄Oracle實(shí)例中的各個(gè)系統(tǒng)信息,例如數(shù)據(jù)文件、日志、名稱(chēng)、版本、檢查點(diǎn)SCN等信息,對(duì)于數(shù)據(jù)庫(kù)的還原、以及一致性控制都有很重要的作用。
          ?
          一、控制文件
          ?
          ??? 控制文件是一個(gè)小型的二進(jìn)制文件,可以記錄數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。包括:
          ?
          ??? * 數(shù)據(jù)庫(kù)名稱(chēng)
          ??? * 數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件的名稱(chēng)和位置
          ??? * 數(shù)據(jù)庫(kù)創(chuàng)建的時(shí)標(biāo)
          ??? * 當(dāng)前日志的序號(hào)
          ??? * 檢驗(yàn)點(diǎn)信息
          ?
          ??? 一般Oracle數(shù)據(jù)庫(kù)創(chuàng)建時(shí)都會(huì)創(chuàng)建至少兩個(gè)或兩個(gè)以上的控制文件。
          ?
          二、控制文件的標(biāo)準(zhǔn)
          ?
          ??? 1、控制文件的文件名
          ?
          ??? 由CONTROL_FILES參數(shù)來(lái)指定控制文件名。
          ??? 若沒(méi)有指定該參數(shù),則生成默認(rèn)文件名,默認(rèn)文件名在各個(gè)操作系統(tǒng)中各不相同
          ?
          ??? 2、控制文件的復(fù)用
          ?
          ??? 一般不同的控制文件都存放在不同的磁盤(pán),當(dāng)某個(gè)磁盤(pán)損壞時(shí)可以通過(guò)在其他磁盤(pán)上的控制文件進(jìn)行復(fù)用,不需要任何的介質(zhì)恢復(fù)。
          ?
          ??? * 找到CONTROL_FILES參數(shù)列出所有文件名,將相應(yīng)內(nèi)容寫(xiě)入所有控制文件
          ??? * CONTROL_FILES中列出的第一個(gè)文件是Oracle數(shù)據(jù)庫(kù)運(yùn)行期間唯一可以讀取的文件
          ??? * 數(shù)據(jù)庫(kù)運(yùn)行期間,任何控制文件變?yōu)椴豢捎茫瑒t實(shí)例不能繼續(xù)運(yùn)行
          ?
          ??? 3、備份控制文件
          ?
          ??? 進(jìn)行以下數(shù)據(jù)庫(kù)物理結(jié)構(gòu)改變之后,需要備份控制文件
          ?
          ??? * 添加、取消或重命名數(shù)據(jù)文件
          ??? * 添加或撤銷(xiāo)表空間,或更改表空間讀寫(xiě)狀態(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語(yǔ)句中指定CONTROLFILE REUSE子句。而且新控制文件與原先控制文件的SIZE必須相同。
          ?
          ??? 2、創(chuàng)建額外副本、重命名和重定位控制文件
          ?
          ??? ① 關(guān)閉數(shù)據(jù)庫(kù)
          ??? ② 在操作系統(tǒng)中復(fù)制、修改原控制文件
          ??? ③ 修改CONTROL_FILES,添加或修改新的控制文件名
          ??? ④ 重新啟動(dòng)數(shù)據(jù)庫(kù)
          ?
          ??? 3、創(chuàng)建新的控制文件
          ?
          ??? 以下情況可能會(huì)需要重新創(chuàng)建新的控制文件:
          ?
          ??? * 數(shù)據(jù)庫(kù)所有控制文件都收到永久性損壞,且無(wú)任何備份
          ??? * 希望修改數(shù)據(jù)庫(kù)參數(shù)的永久性設(shè)置,例如:SID、MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES等參數(shù)
          ?
          ??? 4、創(chuàng)建語(yǔ)句示例
          ?
          ??? 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 語(yǔ)句可能會(huì)損壞數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件,省略文件名會(huì)引起文件中數(shù)據(jù)的丟失,或失去訪問(wèn)完整數(shù)據(jù)庫(kù)的能力,所以在使用這條語(yǔ)句時(shí)需要特別小心。
          ?
          ??? 5、創(chuàng)建步驟(嚴(yán)格遵守)
          ?
          ??? ① 制作包括數(shù)據(jù)庫(kù)所有數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件的列表,可以使用以下SQL列出清單
          ??????? selectmemberfrom v$logfile; --聯(lián)機(jī)重做日志文件

          ??????? select name from v$datafile; -- 數(shù)據(jù)文件

          ??????? select value from v$parameter where name = 'control_files' ; -- 控制文件

          ??? ② 關(guān)閉數(shù)據(jù)庫(kù)(IMMEDIATE、ABORT)
          ??? ③ 備份數(shù)據(jù)庫(kù)的所有數(shù)據(jù)文件和聯(lián)機(jī)重做日志文件
          ??? ④ 啟動(dòng)一個(gè)新的實(shí)例,但不要裝載和打開(kāi)數(shù)據(jù)庫(kù)(NOMOUNT)
          ??? ⑤ 使用CREATE CONTROLFILE語(yǔ)句創(chuàng)建一個(gè)新的控制文件
          ??????? 注:若重命名數(shù)據(jù)庫(kù),或聯(lián)機(jī)重做日志文件丟失,可使用RESETLOGS子句
          ??? ⑥ 在離線存儲(chǔ)設(shè)備上存儲(chǔ)新的控制文件備份
          ??? ⑦ 編輯CONTROL_FILES初始化參數(shù),若重命名數(shù)據(jù)庫(kù),則編輯DB_NAME參數(shù)
          ??? ⑧ 進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)(如果需要的話 )
          ??????? 注:若指定RESETLOGS,則需要加入U(xiǎn)SING BACKUP CONTROL FILE來(lái)恢復(fù)數(shù)據(jù)庫(kù)
          ??? ⑨ 打開(kāi)數(shù)據(jù)庫(kù)(ALTER DATABASE OPEN;)
          ???
          ?
          ?
          posted on 2008-11-23 22:18 decode360 閱讀(362) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 08.DBA
          主站蜘蛛池模板: 鄂托克前旗| 方城县| 定陶县| 斗六市| 东乌珠穆沁旗| 城固县| 辽阳县| 怀集县| 永昌县| 多伦县| 铁力市| 乌兰浩特市| 武胜县| 大同市| 博野县| 辽宁省| 宁强县| 靖宇县| 繁峙县| 威宁| 石棉县| 乐陵市| 曲沃县| 新津县| 锡林郭勒盟| 孟村| 定安县| 深泽县| 旺苍县| 南涧| 泰顺县| 成武县| 射洪县| 吉木萨尔县| 大方县| 伊宁市| 杂多县| 盘锦市| 遂川县| 遂溪县| 正阳县|