Yexiong's java blog

          Yexiong's java blog

          解決ORA-01033: ORACLE initialization or shutdown in progress錯誤[轉]

          錯誤現象:
          因誤操作,數據庫中某一數據文件被誤刪,控制面板的Oracle相關服務顯示已啟動,但用SQL*Plus無法連接,顯示以下錯誤:
          ORA-01033: ORACLE initialization or shutdown in progress

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

          關閉所有服務stop.bat
          net stop "OracleWebAssistant0"
          net stop "OracleOraHome81TNSListener"
          net stop "OracleServiceORADB"
          shutdown

          在操作系統中刪除test.ora文件

          重新啟動服務start.bat
          net start "OracleWebAssistant0"
          net start "OracleOraHome81TNSListener"
          net start "OracleServiceORADB"

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

          解決方法:
          先讓該數據文件脫機,就可以打開數據庫
          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;

          --查詢數據文件聯、脫機狀態
          SQL> select file#,name,status from v$datafile;
          SQL> drop tablespace test;

          表空間已丟棄。
          丟失聯機日志文件

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

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

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

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

          Feedback

          # re: 解決ORA-01033: ORACLE initialization or shutdown in progress錯誤[轉] 2009-07-10 14:16 jjiajia

          好文  回復  更多評論   



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


          網站導航:
           
          主站蜘蛛池模板: 新河县| 慈利县| 荣成市| 平潭县| 广河县| 宁津县| 东方市| 呼和浩特市| 保德县| 吐鲁番市| 固原市| 赫章县| 鸡泽县| 屯留县| 盐津县| 咸丰县| 东山县| 普兰店市| 鸡西市| 灵山县| 英德市| 中阳县| 墨竹工卡县| 广州市| 秀山| 友谊县| 仙桃市| 措美县| 定西市| 虎林市| 涟水县| 汉寿县| 上思县| 山丹县| 长顺县| 凤山县| 永新县| 平果县| 利辛县| 泗洪县| 达日县|