Decode360's Blog

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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          控制文件及其創建
          ?
          ??? 今天來學習一下Oracle中一個比較重要的文件類型——控制文件。控制文件主要用于記錄Oracle實例中的各個系統信息,例如數據文件、日志、名稱、版本、檢查點SCN等信息,對于數據庫的還原、以及一致性控制都有很重要的作用。
          ?
          一、控制文件
          ?
          ??? 控制文件是一個小型的二進制文件,可以記錄數據庫的物理結構。包括:
          ?
          ??? * 數據庫名稱
          ??? * 數據文件和聯機重做日志文件的名稱和位置
          ??? * 數據庫創建的時標
          ??? * 當前日志的序號
          ??? * 檢驗點信息
          ?
          ??? 一般Oracle數據庫創建時都會創建至少兩個或兩個以上的控制文件。
          ?
          二、控制文件的標準
          ?
          ??? 1、控制文件的文件名
          ?
          ??? 由CONTROL_FILES參數來指定控制文件名。
          ??? 若沒有指定該參數,則生成默認文件名,默認文件名在各個操作系統中各不相同
          ?
          ??? 2、控制文件的復用
          ?
          ??? 一般不同的控制文件都存放在不同的磁盤,當某個磁盤損壞時可以通過在其他磁盤上的控制文件進行復用,不需要任何的介質恢復。
          ?
          ??? * 找到CONTROL_FILES參數列出所有文件名,將相應內容寫入所有控制文件
          ??? * CONTROL_FILES中列出的第一個文件是Oracle數據庫運行期間唯一可以讀取的文件
          ??? * 數據庫運行期間,任何控制文件變為不可用,則實例不能繼續運行
          ?
          ??? 3、備份控制文件
          ?
          ??? 進行以下數據庫物理結構改變之后,需要備份控制文件
          ?
          ??? * 添加、取消或重命名數據文件
          ??? * 添加或撤銷表空間,或更改表空間讀寫狀態
          ??? * 添加或取消重做日志文件
          ?
          ??? 4、控制文件大小管理
          ?
          ??? MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES參數控制
          ?
          ?
          三、創建控制文件
          ?
          ??? 1、創建初始化控制文件
          ?
          ??? CONTROL_FILES = (/u01/oracle/prod/control01.ctl,
          ???????????????????? /u02/oracle/prod/control02.ctl,
          ???????????????????? /u03/oracle/prod/control03.ctl)
          ?
          ??? 注:若已經存在與指定名同名的文件,則在CREATE DATABASE語句中指定CONTROLFILE REUSE子句。而且新控制文件與原先控制文件的SIZE必須相同。
          ?
          ??? 2、創建額外副本、重命名和重定位控制文件
          ?
          ??? ① 關閉數據庫
          ??? ② 在操作系統中復制、修改原控制文件
          ??? ③ 修改CONTROL_FILES,添加或修改新的控制文件名
          ??? ④ 重新啟動數據庫
          ?
          ??? 3、創建新的控制文件
          ?
          ??? 以下情況可能會需要重新創建新的控制文件:
          ?
          ??? * 數據庫所有控制文件都收到永久性損壞,且無任何備份
          ??? * 希望修改數據庫參數的永久性設置,例如:SID、MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES等參數
          ?
          ??? 4、創建語句示例
          ?
          ??? 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 語句可能會損壞數據文件和聯機重做日志文件,省略文件名會引起文件中數據的丟失,或失去訪問完整數據庫的能力,所以在使用這條語句時需要特別小心。
          ?
          ??? 5、創建步驟(嚴格遵守)
          ?
          ??? ① 制作包括數據庫所有數據文件和聯機重做日志文件的列表,可以使用以下SQL列出清單
          ??????? selectmemberfrom v$logfile; --聯機重做日志文件

          ??????? select name from v$datafile; -- 數據文件

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

          ??? ② 關閉數據庫(IMMEDIATE、ABORT)
          ??? ③ 備份數據庫的所有數據文件和聯機重做日志文件
          ??? ④ 啟動一個新的實例,但不要裝載和打開數據庫(NOMOUNT)
          ??? ⑤ 使用CREATE CONTROLFILE語句創建一個新的控制文件
          ??????? 注:若重命名數據庫,或聯機重做日志文件丟失,可使用RESETLOGS子句
          ??? ⑥ 在離線存儲設備上存儲新的控制文件備份
          ??? ⑦ 編輯CONTROL_FILES初始化參數,若重命名數據庫,則編輯DB_NAME參數
          ??? ⑧ 進行數據庫恢復(如果需要的話 )
          ??????? 注:若指定RESETLOGS,則需要加入USING BACKUP CONTROL FILE來恢復數據庫
          ??? ⑨ 打開數據庫(ALTER DATABASE OPEN;)
          ???
          ?
          ?
          posted on 2008-11-23 22:18 decode360 閱讀(362) 評論(0)  編輯  收藏 所屬分類: 08.DBA
          主站蜘蛛池模板: 平武县| 禄丰县| 恩施市| 灵璧县| 同江市| 盈江县| 泰来县| 昌宁县| 东乌珠穆沁旗| 曲周县| 阆中市| 达孜县| 海晏县| 高安市| 和平县| 若尔盖县| 哈巴河县| 新疆| 金华市| 崇明县| 绥中县| 鄂尔多斯市| 信丰县| 鹿泉市| 璧山县| 石狮市| 右玉县| 新龙县| 松江区| 阿图什市| 平南县| 赞皇县| 南乐县| 会理县| 长春市| 磴口县| 峡江县| 青冈县| 日照市| 江西省| 西平县|