Yexiong's java blog

          Yexiong's java blog

          解決ORA-01033: ORACLE initialization or shutdown in progress錯(cuò)誤[轉(zhuǎn)]

          錯(cuò)誤現(xiàn)象:
          因誤操作,數(shù)據(jù)庫中某一數(shù)據(jù)文件被誤刪,控制面板的Oracle相關(guān)服務(wù)顯示已啟動(dòng),但用SQL*Plus無法連接,顯示以下錯(cuò)誤:
          ORA-01033: ORACLE initialization or shutdown in progress

          模擬現(xiàn)象:
          create tablespace test datafile
          'c:\test.ora' size 5M
          AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
          default storage (initial 128K next 1M pctincrease 0)
          /

          關(guān)閉所有服務(wù)stop.bat
          net stop "OracleWebAssistant0"
          net stop "OracleOraHome81TNSListener"
          net stop "OracleServiceORADB"
          shutdown

          在操作系統(tǒng)中刪除test.ora文件

          重新啟動(dòng)服務(wù)start.bat
          net start "OracleWebAssistant0"
          net start "OracleOraHome81TNSListener"
          net start "OracleServiceORADB"

          服務(wù)里OracleServiceORADB顯示已啟動(dòng),但用SQL*Plus無法連接,
          顯示ORA-01033: ORACLE initialization or shutdown in progress

          解決方法:
          先讓該數(shù)據(jù)文件脫機(jī),就可以打開數(shù)據(jù)庫
          C:\>svrmgrl
          svrmgrl>connect internal
          svrmgrl>shutdown
          svrmgrl>startup mount
          --ARCHIVELOG模式命令,文件名要大寫
          svrmgrl>alter database datafile 'C:\TEST.ORA' offline;
          --NOARCHIVELOG模式命令
          svrmgrl>alter database datafile 'C:\TEST.ORA' offline drop;
          svrmgrl>alter database open;

          --查詢數(shù)據(jù)文件聯(lián)、脫機(jī)狀態(tài)
          SQL> select file#,name,status from v$datafile;
          SQL> drop tablespace test;

          表空間已丟棄。
          丟失聯(lián)機(jī)日志文件

          分兩種情況處理
          1、丟失的是非活動(dòng)的日志文件;
          2、丟失的是當(dāng)前激活的日志文件。

          如果是第一種情況,而發(fā)生故障的日志文件組又具有多個(gè)成員,可以先將數(shù)據(jù)庫shutdown,然后用操作系統(tǒng)命令將損壞日志文件組中好的日志成員文件把損壞的成員文件覆蓋(在同一個(gè)日志成員組中的所有日志文件的各為鏡象的),如果其物理位置不可用可將其拷貝到新的驅(qū)動(dòng)器上,使用alter database rename file ‘xxxx’ to ‘xxxx’改變文件位置,之后啟動(dòng)數(shù)據(jù)庫,如果正常馬上進(jìn)行一個(gè)冷備份。如果損壞的日志組中只有一個(gè)日志成員,先mount上數(shù)據(jù)庫,將其轉(zhuǎn)換為noarchivelog模式,執(zhí)行alter database add logfile member ‘xxx’ to group ‘x’給相關(guān)組增加一個(gè)成員,再執(zhí)行alter database drop logfile member ‘bad_file’將損壞的日志文件刪除,由于數(shù)據(jù)庫的結(jié)構(gòu)發(fā)生變動(dòng)需要備份控制文件,之后將數(shù)據(jù)庫改回archivelog模式,做一個(gè)冷備份。

          如果丟失的是當(dāng)前激活的日志文件,數(shù)據(jù)庫又沒有鏡像而且當(dāng)前日志組中所有成員均變?yōu)椴豢捎谩J紫葘?shù)據(jù)庫shutdown abort,從最近的一次全備份中恢復(fù)所有的數(shù)據(jù)文件,將數(shù)據(jù)庫啟動(dòng)到mount狀態(tài)。如果原來的日志文件物理位置不可用,使用alter database rename file ‘xxx’ to ‘xxx’改變文件的存放位置。然后,使用recover database until cancel命令來恢復(fù)數(shù)據(jù)庫,直到提示最后一個(gè)歸檔日志運(yùn)用完之后,輸入cancel。之后用alter database open resetlogs打開數(shù)據(jù)庫,如果沒有問題,立即進(jìn)行一個(gè)冷備份。注意!所有包含在損壞的redo log中的信息將會丟失,也就是說數(shù)據(jù)庫崩潰前已經(jīng)提交的數(shù)據(jù)有可能會丟失。這對于某些要求很高的應(yīng)用將會損失慘重,因此應(yīng)盡量使每個(gè)日志組具有多個(gè)日志成員,并且放置在不同的驅(qū)動(dòng)器上防止發(fā)生介質(zhì)故障。

          posted on 2008-04-21 21:15 Yexiong 閱讀(11329) 評論(1)  編輯  收藏

          Feedback

          # re: 解決ORA-01033: ORACLE initialization or shutdown in progress錯(cuò)誤[轉(zhuǎn)] 2009-07-10 14:16 jjiajia

          好文  回復(fù)  更多評論   



          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 沈阳市| 太保市| 高阳县| 绥德县| 商河县| 内黄县| 清镇市| 凤庆县| 泸定县| 黎川县| 扶余县| 西和县| 淮南市| 容城县| 临沧市| 鄂托克旗| 镇沅| 汝阳县| 新沂市| 南华县| 江阴市| 名山县| 山东| 呼伦贝尔市| 合肥市| 万源市| 青海省| 内丘县| 永安市| 登封市| 盐源县| 新津县| 拉孜县| 西盟| 林周县| 宾川县| 无棣县| 九台市| 高清| 鹤峰县| 浦城县|