gdufo

           

          oracle控制文件的管理

          oracle數(shù)據(jù)庫(kù)通過(guò)控制文件保持?jǐn)?shù)據(jù)庫(kù)的完整性,一旦控制文件被破壞數(shù)據(jù)庫(kù)將無(wú)法啟動(dòng),因此建議采用多路控制文件或者備份控制文件的方法。
          控制文件是數(shù)據(jù)庫(kù)建立的時(shí)候自動(dòng)生成的二進(jìn)制文件,只能通過(guò)實(shí)例進(jìn)行修改,如果手動(dòng)修改的話會(huì)造成控制文件與物理信息不符合,從而導(dǎo)致數(shù)據(jù)庫(kù)不能正常工作。

          控制文件主要包括下面內(nèi)容:

          1.控制文件所屬數(shù)據(jù)庫(kù)的名字,一個(gè)控制文件只能屬一個(gè)數(shù)據(jù)庫(kù)

          2.數(shù)據(jù)庫(kù)創(chuàng)建時(shí)間

          3.數(shù)據(jù)文件的名稱,位置,聯(lián)機(jī),脫機(jī)狀態(tài)信息

          4.所有表空間信息

          5.當(dāng)前日志序列號(hào)

          6.最近檢查點(diǎn)信息

          其中,數(shù)據(jù)庫(kù)名稱,標(biāo)識(shí)和創(chuàng)建時(shí)間在數(shù)據(jù)庫(kù)創(chuàng)建時(shí)寫入;數(shù)據(jù)文件和重做日志名稱和位置在增加,重命名或者刪除的時(shí)候更新;表空間信息在增加或者刪除表空間的時(shí)候進(jìn)行更新。

          在初始化參數(shù)文件中control_files參數(shù)主要來(lái)描述控制文件的文件名跟物理路徑,如下所示:

          control_files=("d:\oracle\oradata\oradb\control01.ctl")

          該參數(shù)只設(shè)置一個(gè),也可以設(shè)置多個(gè),如下所示:

          control_files=('d:\oracle\oradata\oradb\control01.ctl',

                                'd:\oracle\oradata\oradb\control02.ctl',

                                'd:oracle\oradata\oradb\control03.ctl')

          這個(gè)方法叫做多路控制文件,oracle可以利用這個(gè)方法恢復(fù)被破壞的控制文件,oracle最多允許設(shè)置8個(gè)多路控制文件。

          必須所有的多路控制文件都完整正確數(shù)據(jù)庫(kù)才能正常啟動(dòng),只要丟失一個(gè)或者一個(gè)內(nèi)容不正確數(shù)據(jù)庫(kù)就不能順利啟動(dòng)。

          對(duì)控制文件的管理原則:

          1.明確控制文件的名稱和存儲(chǔ)路徑

          參數(shù)設(shè)置錯(cuò)誤將無(wú)法打開數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)打開以后,實(shí)例將同時(shí)寫入所有的控制文件但是只會(huì)讀取第一個(gè)控制文件的內(nèi)容。

          2.為數(shù)據(jù)庫(kù)創(chuàng)建多路控制文件

          a.多路控制文件內(nèi)容必須完全一樣,oracle實(shí)例同時(shí)將內(nèi)容寫入到control_files變量所設(shè)置的控制文件中。

          b.初始化參數(shù)control_files中列出的第一個(gè)文件是數(shù)據(jù)庫(kù)運(yùn)行期間唯一可讀取的控制文件。

          c.創(chuàng)建,恢復(fù)和備份控制文件必須在數(shù)據(jù)庫(kù)關(guān)閉的狀態(tài)下運(yùn)行,這樣才能保證操作過(guò)程中控制文件不被修改。

          d.數(shù)據(jù)庫(kù)運(yùn)行期間如果一個(gè)控制文件變?yōu)椴豢捎茫敲磳?shí)例將不再運(yùn)行,應(yīng)該終止這個(gè)實(shí)例,并對(duì)破壞的控制文件進(jìn)行修復(fù)。

          3.將多路控制文件放在不同的硬盤上

          4.采用操作系統(tǒng)鏡像方式備份控制文件

          5.手工方式備份控制文件

          應(yīng)該及時(shí)備份特別是發(fā)生了如下的操作的時(shí)候:

          添加刪除重命名數(shù)據(jù)文件

          添加刪除表空間,改變表空間讀寫狀態(tài)

          添加刪除重做日志文件

          如果手工備份不及時(shí)的話,就會(huì)產(chǎn)生備份的控制文件與正在使用的控制文件不一致,那么利用備份的控制文件啟動(dòng)數(shù)據(jù)庫(kù)時(shí)會(huì)破壞數(shù)據(jù)庫(kù)的一致性完整性,甚至不能啟動(dòng)數(shù)據(jù)庫(kù),因此手工備份控制文件要注意及時(shí)備份。
          創(chuàng)建多路控制文件
          利用spfile文件創(chuàng)建多路控制文件

          (spfile以二進(jìn)制文本形式存在,不能用vi等編輯器對(duì)其中參數(shù)進(jìn)行修改。文件格式為spfileSID.ora。如果要對(duì)spfile文件進(jìn)行修改,可以采用SQL語(yǔ)言)

          1.利用SYS帳號(hào)登陸SQL*PLUS,查詢一下控制文件信息視圖

          SQL>select name from v$controlfile;
          結(jié)果顯示為:

          NAME
          ----------------------------------
          d:\oracle\oradata\oradb\control01.ctl

          d:\oracle\oradata\oradb\control02.ctl

          d:\oracle\oradata\oradb\control03.ctl

          這里列出了控制文件的名稱以及位置

          2.更改spfile中控制文件的信息:(增加了一個(gè)新的控制文件)

          SQL>alter system set control_files=

          'd:\oracle\oradata\oradb\control01.ctl',

          'd:\oracle\oradata\oradb\control02.ctl',

          'd:\oracle\oradata\oradb\control03.ctl',

          'd:\oracle\oradata\oradb\control04.ctl'

          scope=spfile

          結(jié)果顯示為:

          系統(tǒng)已經(jīng)更改。

          (第二步的操作需要注意的是:進(jìn)行這些操作,必須是在DB啟動(dòng)的時(shí)候,否則會(huì)彈出“ORACLE not available”錯(cuò)誤。)

          3.關(guān)閉數(shù)據(jù)庫(kù)

          4.在操作系統(tǒng)中將已有的控制文件復(fù)制,修改名稱保存到剛才增加控制文件的指定位置。(這步必須做的,否則數(shù)據(jù)庫(kù)無(wú)法啟動(dòng))

          5.重新啟動(dòng)控制文件,使控制文件改變生效。

          6.還可以使用pfile的方法來(lái)修改控制文件,使用create pfile from spfile;來(lái)生成pfile,然后使用vi等編輯器編譯pfile,先手工拷貝控制文件修改相應(yīng)的名稱,然后把新的控制文件的路徑增加到pfile中,使用pfile啟動(dòng)數(shù)據(jù)庫(kù),然后使用pfile創(chuàng)建spfile即可.
          管理控制文件
          備份控制文件

          SQL> alter database backup controlfile to ‘d:\20080326.ctl’

          SQL> alter database backup controlfile to trace;(備份創(chuàng)建控制文件的腳本)

          # 具體文件名請(qǐng)看<background_dump_dest>/alert_<SID>.log文件里有詳細(xì)說(shuō)明。例如在/opt/app/oracle/diag/rdbms/orcl/orcl/trace/目錄下。

          alter database backup controlfile to trace
          Mon Nov 23 10:27:56 2009
          ALTER DATABASE BACKUP CONTROLFILE TO TRACE
          Backup controlfile written to trace file /opt/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_4169.trc

          數(shù)據(jù)庫(kù)已更改。

          然后從這個(gè)備份的位置直接把文件拷貝回之前的目錄覆蓋就好了。

           

          刪除控制文件(刪除某一路的控制文件)

           

          spfile文件

          1.利用SYS帳號(hào)登陸SQL*PLUS,查詢一下控制文件信息視圖

          SQL>select name from v$controlfile;

          結(jié)果顯示為:

          NAME
          ----------------------------------

          d:oracle\oradata\oradb\control01.ctl

          d:oracle\oradata\oradb\control02.ctl

          d:oracle\oradata\oradb\control03.ctl

          d:oracle\oradata\oradb\control04.ctl

          這里列出了控制文件的名稱以及位置

          2.更改spfile中控制文件的信息,刪除一個(gè)新的控制文件
          SQL>alter system set control_files=
          'd:oracle\oradata\oradb\control01.ctl',
          'd:oracle\oradata\oradb\control02.ctl',
          'd:oracle\oradata\oradb\control03.ctl',
          scope=spfile
          結(jié)果顯示為:
          系統(tǒng)已經(jīng)更改。

          3.關(guān)閉數(shù)據(jù)庫(kù)
          4.在操作系統(tǒng)中刪除控制文件
          5.重新啟動(dòng)數(shù)據(jù)庫(kù),使控制文件生效

          posted on 2009-11-19 09:24 gdufo 閱讀(164) 評(píng)論(0)  編輯  收藏 所屬分類: Database (oracle, sqlser,MYSQL)

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 迭部县| 桦川县| 玉山县| 夏河县| 许昌市| 宁强县| 页游| 隆化县| 林甸县| 启东市| 肥西县| 翁牛特旗| 丰城市| 长春市| 巨鹿县| 中西区| 桂林市| 姜堰市| 红河县| 濮阳市| 高清| 尼木县| 中江县| 辽宁省| 资源县| 行唐县| 博爱县| 德令哈市| 泰和县| 宜川县| 池州市| 揭东县| 泸水县| 深水埗区| 赣州市| 长乐市| 建德市| 佳木斯市| 西宁市| 易门县| 九龙县|