control_files error ORA-01122 ORA-00214(原創(chuàng))
2024-07-21 02:09:45
供稿:網(wǎng)友
中國(guó)最大的web開發(fā)資源網(wǎng)站及技術(shù)社區(qū),
昨天公司數(shù)據(jù)庫(kù)出現(xiàn)問(wèn)題,由于斷電(oracle 處于open狀態(tài)下),導(dǎo)致數(shù)據(jù)庫(kù)啟動(dòng)時(shí)報(bào)錯(cuò)ora-00214: controlfile ‘d:/oracle/oradata/orcl/control01.ctl’ version 57460 inconsistent with file d:/oracle/oradata/orcl/control02.ctl’ version 57452.
ora-01122 atabase file1 failed verfication check
這個(gè)是由于控制文件版本不同導(dǎo)致。在數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程中,從安全的角度考慮,系統(tǒng)使用了三個(gè)鏡像的控制文件,現(xiàn)在三個(gè)控制文件version號(hào)不一致,所以數(shù)據(jù)庫(kù)instance啟動(dòng)時(shí)報(bào)錯(cuò)。
我首先備份了控制文件,啟動(dòng)了數(shù)據(jù)庫(kù)到nomount狀態(tài)下,分別指定系統(tǒng)控制文件為三個(gè)中的其中一個(gè)
alter system set control_files='f:/oracle/oradata/oracas/control01.ctl'
scope=spfile
然后啟動(dòng)數(shù)據(jù)庫(kù)到mount狀態(tài)下,如果還是報(bào)錯(cuò),就指定下一個(gè)
alter system set control_files='f:/oracle/oradata/oracas/control02.ctl'
scope=spfile
然后啟動(dòng)數(shù)據(jù)庫(kù)到mount狀態(tài)下,如果還是報(bào)錯(cuò),就指定下一個(gè)
alter system set control_files='f:/oracle/oradata/oracas/control03.ctl'
scope=spfile
只要上面三次操作中有一次成功,就可以用那個(gè)成功的控制文件來(lái)重新作出另外兩個(gè)控制文件。
如果三次操作都不成功,就是說(shuō)這三個(gè)控制文件都不好使了,這時(shí)候需要建立新的控制文件
步驟如下:
1、alter database backup controlfile to trace;
這時(shí)候會(huì)在udump目錄下生成sid_ora_*.trc文件,根據(jù)你是在歸檔還是非歸檔模式下,選擇一段內(nèi)容
建立創(chuàng)建腳本
我是在非歸檔模式下,選擇第一段內(nèi)容
2)根據(jù)得到的trc文件建立ora.sql內(nèi)容如下:
create controlfile reuse database "oracas" noresetlogs noarchivelog
maxlogfiles 50
maxlogmembers 5
maxdatafiles 100
maxinstances 1
maxloghistory 226
logfile
group 2 'f:/oracle/oradata/oracas/redo02.log' size 100m,
group 3 'f:/oracle/oradata/oracas/redo03.log' size 100m
datafile
'f:/oracle/oradata/oracas ystem01.dbf',
'f:/oracle/oradata/oracas/undotbs01.dbf',
'f:/oracle/oradata/oracas/cwmlite01.dbf',
'f:/oracle/oradata/oracas/drsys01.dbf',
'f:/oracle/oradata/oracas/example01.dbf',
'f:/oracle/oradata/oracas/indx01.dbf',
'f:/oracle/oradata/oracas/odm01.dbf',
'f:/oracle/oradata/oracas/tools01.dbf',
'f:/oracle/oradata/oracas/users01.dbf',
'f:/oracle/oradata/oracas/xdb01.dbf'
character set zhs16gbk
;
startup nomount,然后執(zhí)行ora.sql,。
成功以后,嘗試打開數(shù)據(jù)庫(kù),失敗,需要進(jìn)行media recovery;
recover dadafile 'f:/oracle/oradata/oracas ystem01.dbf',
......
全部恢復(fù)以后,就可以啟動(dòng)數(shù)據(jù)庫(kù),alter database open noresetlog;
再重新給生成的控制文件做鏡像就可以了。
由于是昨天做的操作,可能有些細(xì)節(jié)步驟沒有寫上來(lái),但是大體上就是這樣了^_^