解決掉電導致的ORA-600(4194)錯誤
一個朋友的資料庫由於掉電,導致資料庫無法正常開啟。簡單描述一下整個問題的解決過程。
第一件事情是瞭解情況,Windows環境下的32位10201資料庫,非歸檔模式,沒有備份。
檢查alert檔案,發現導致問題的原因是由於掉電導致日誌檔案損壞,在進行CRASH恢復時無法將資料庫恢復到一致性的狀態。
對大致情況有了一定的瞭解後,準備開始著手恢復工作:首先是備份現場,這樣如果恢復失敗,至少保留了出錯是的環境。
然後嘗試利用隱含引數_allow_resetlogs_corruption來開啟資料庫,這個步驟在很多篇文章中都描述過了,這裡就不重複了,可以參考:http://yangtingkun.itpub.net/post/468/464701
資料庫順利開啟,ALTER DATABASE OPEN RESETLOGS操作並沒有報錯,但是由於使用了隱含引數,因此資料庫肯定會丟失資料,而且會處於不一致的狀態,為了避免資料庫的不一致對資料造成進一步的損害,準備將業務使用者執行邏輯匯出:
D:\>exp hc/hc file=hc_20100303.dmp buffer=2048000 compress=n log=hc_20100303.log
Export: Release 10.2.0.1.0 - Production on 星期三 3月 3 17:38:01 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
EXP-00056: 遇到 ORACLE 錯誤 1034
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
EXP-00005: 所有允許的登入嘗試均失敗
EXP-00000: 匯出終止失敗
看錯誤資訊似乎資料庫沒有啟動,檢查發現果然資料庫自動關閉了,查詢alert檔案發現了大量的ORA-600(4194)錯誤。
再次嘗試啟動資料庫報錯:
C:\Documents and Settings\Administrator>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期三 3月 3 17:35:43 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已連線到空閒例程。
SQL> STARTUP
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 121637764 bytes
Database Buffers 482344960 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
ORA-00607: 當更改資料塊時出現內部錯誤
ORA-00600: 內部錯誤程式碼, 引數: [4194], [38], [22], [], [], [], [], []
雖然STARTUP命令報錯,但是資料庫已經開啟可以訪問了,但是沒過幾分鐘的時間,資料庫就又自動關閉了,導致資料庫自動關閉的原因仍然是ORA-600(4194)錯誤。
查詢metalink發現,導致這個錯誤是由於UNDO資訊出現了不一致,雖然metalink上沒有給出解決方法,不過根據經驗,利用隱含引數_corrupted_rollback_segments嘗試開啟資料庫。
好在資料庫可以短暫的開啟,這樣可以方便的查詢到系統啟動的回滾段名稱:
SQL> CONN / AS SYSDBA
已連線。
SQL> SELECT SEGMENT_NAME FROM DBA_ROLLBACK_SEGS;
SEGMENT_NAME
------------------------------
SYSTEM
_SYSSMU1$
_SYSSMU2$
_SYSSMU3$
_SYSSMU4$
_SYSSMU5$
_SYSSMU6$
_SYSSMU7$
_SYSSMU8$
_SYSSMU9$
_SYSSMU10$
已選擇11行。
SQL> CREATE PFILE='D:\ORACLE\ADMIN\ORCL\PFILE\INITORCL.ORA' FROM SPFILE;
檔案已建立。
在初始化引數檔案中新增下面的引數:
undo_management='MANUAL'
_corrupted_rollback_segments=(_SYSSMU1&,_SYSSMU2&,_SYSSMU3&,_SYSSMU4&,_SYSSMU5&,_SYSSMU6&,_SYSSMU7&,_SYSSMU8&,_SYSSMU9&,_SYSSMU10&)
下面嘗試開啟資料庫:
SQL> conn / as sysdba
已連線到空閒例程。
SQL> STARTUP PFILE=D:\ORACLE\ADMIN\ORCL\PFILE\INITORCL.ORA MOUNT
ORACLE 例程已經啟動。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 121637764 bytes
Database Buffers 482344960 bytes
Redo Buffers 7135232 bytes
資料庫裝載完畢。
SQL> RECOVER DATABASE;
完成介質恢復。
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL
ORA-00279: 更改 19786562 (在 03/03/2010 18:20:31 生成) 對於執行緒 1 是必需的
ORA-00289: 建議: D:\ORACLE\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2010_03_03\O1_MF_
1_3_%U_.ARC
ORA-00280: 更改 19786562 (用於執行緒 1) 在序列 #3 中
指定日誌: {
CANCEL
SQL> ALTER DATABASE OPEN RESETLOGS;
資料庫已更改。
資料庫成功開啟,下面再次利用EXP將資料庫的業務使用者進行匯出:
D:\>exp hc/hc file=hc_20100303.dmp buffer=2048000 direct=y recordlength=65534 compress=n log=hc_20100303.log
Export: Release 10.2.0.1.0 - Production on 星期三 3月 3 18:26:57 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
. 正在匯出 pre-schema 過程物件和操作
. 正在匯出使用者 HC 的外部函式庫名
. 匯出 PUBLIC 型別同義詞
. 正在匯出專用型別同義詞
. 正在匯出使用者 HC 的物件型別定義
即將匯出 HC 的物件...
. 正在匯出資料庫連結
. 正在匯出序號
. 正在匯出簇定義
. 即將匯出 HC 的表透過直接路徑...
. . 正在匯出表 CAT_ORG匯出了 6116 行
. . 正在匯出表 CESHI_USER_FUNC匯出了 0 行
表 HC_AGENT_ANN 將以常規路徑匯出。
. . 正在匯出表 HC_AGENT_ANN匯出了 295 行
. . 正在匯出表 HC_AGENT_ANN_ITEM匯出了 0 行
. . 正在匯出表 HC_AGENT_LINK匯出了 5 行
表 HC_AGENT_NEWS 將以常規路徑匯出。
. . 正在匯出表 HC_AGENT_NEWS匯出了 2054 行
. . 正在匯出表 HC_AGENT_NEWS_ITEM匯出了 0 行
.
.
.
. . 正在匯出表 HC_USER_MSN_SEND匯出了 122 行
. . 正在匯出表 HC_VIP_PUBLISH_PRODUCT匯出了 1858 行
. . 正在匯出表 HC_VISIT_COUNT匯出了 1 行
. . 正在匯出表 PLAN_TABLE匯出了 0 行
. . 正在匯出表 T_INVITE匯出了 0 行
. 正在匯出同義詞
. 正在匯出檢視
. 正在匯出儲存過程
. 正在匯出運算子
. 正在匯出引用完整性約束條件
. 正在匯出觸發器
. 正在匯出索引型別
. 正在匯出點陣圖, 功能性索引和可擴充套件索引
. 正在匯出後期表活動
. 正在匯出實體化檢視
. 正在匯出快照日誌
. 正在匯出作業佇列
. 正在匯出重新整理組和子組
. 正在匯出維
. 正在匯出 post-schema 過程物件和操作
. 正在匯出統計資訊
成功終止匯出, 沒有出現警告。
至此,資料庫的恢復工作完成。雖然資料庫可以開啟,但是丟失資料在所難免,所以關鍵資料一定要做好備份工作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-628764/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- UNDO表空間損壞,爆滿,ORA-600[4194]/[4193]錯誤解決
- 掉電引起的ORA-1172錯誤解決過程(二)
- 掉電引起的ORA-1172錯誤解決過程(一)
- 掉電引起的ORA-1172錯誤解決過程(三)
- ORA-600(17069)錯誤的解決過程
- impdp 匯入資料導致ora-600,arguments: [klaprs_11]錯誤
- 修改資料字典表導致ORA-600(ktecgsc:kcbz_objdchk)錯誤OBJ
- 時區錯誤導致oracle的EM不能啟動解決辦法Oracle
- 解決ORA-600(16164)錯誤的過程(二)
- 解決ORA-600(16164)錯誤的過程(一)
- 執行create table as 報ora-600的錯誤的解決方案
- 如何解決url傳參導致錯誤問題
- impdp時parallel=4導致的錯誤Parallel
- 錯誤初始化引數導致無法啟動的解決辦法
- 多餘索引導致explain錯誤索引AI
- oraInst.loc檔案錯誤導致opatch失敗問題的解決AI
- 解決了一例Shutdown時碰到Ora-600錯誤的問題
- ORA-600(kffmXpGet)錯誤
- ORA-600(2662)錯誤的重現和解決(二)
- ORA-600(2662)錯誤的重現和解決(一)
- git合併丟失程式碼問題分析與解決(錯誤操作導致)Git
- 解決 ViewPager 巢狀導致的 Fragment 選單錯亂Viewpager巢狀Fragment
- Node出錯導致執行崩潰的解決方案
- php輸出json資料,導致前端js判斷錯誤的分析及解決PHPJSON前端
- 解決 PBootCMS 中因資料庫名稱錯誤導致的“執行 SQL 發生錯誤!錯誤:no such table: ay_config”問題boot資料庫SQL
- merge語句導致的ORA錯誤分析
- 11gR2私有ip修改錯誤導致crs無法啟動解決方法
- sql出現結果集錯誤以及出現ora-600或者ora-7445錯誤的解決方法思路SQL
- Lombok 的@ToString導致的Maven編譯錯誤LombokMaven編譯
- eclipse: workspace出錯導致無法啟用的解決Eclipse
- 修復svn hook導致的字符集錯誤Hook
- sys密碼修改導致的RMAN-00571錯誤密碼
- goldengate命令輸入錯誤導致的血案2Go
- LInux下環境變數配置錯誤導致不能登入的及命令失效解決方案Linux變數
- oracle 92 oem 錯誤的更改oracle sga後,導致instance無法啟動的問題解決Oracle
- 故障分析 | 手動 rm 掉 binlog 導致主從報錯
- 解決IE上登陸oracle OEM時報:“證書錯誤,導航已阻止”的錯誤Oracle
- 【FGA】FGA handler中使用commit或DDL語句導致ORA-600 [4412]錯誤的再現及處理MIT