Oracle恢復一例--ORA-03113、ORA-24324,ORA-01041錯誤
Oracle恢復一例--ORA-03113ORA-24324,ORA-01041錯誤
背景:
今天晚上上完OCM的課程後,有個OCP和高可用學員求助於麥老師。他的庫是Windows 10.2.0.1的資料庫,然後因為病毒問題,學員對資料庫做了冷備,然後做了恢復操作,結果啟動的時候不能啟動,報錯ORA-03113、ORA-24324,ORA-01041錯誤。經過微信簡單指導後還是不能啟動,於是只能TEAMVIEWER或向日葵來遠端協助解決了。TV用了一段時間後斷開了,只能用向日葵了。
首先發現第一個問題,就是資料庫服務估計是用的以前的,所以需要用oradim重建服務:
Microsoft Windows [版本 5.2.3790] (C) 版權所有 1985-2003 Microsoft Corp. C:\Documents and Settings\Administrator>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:21:19 2019 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已連線。 SQL> select open_mode from v$database; select open_mode from v$database * 第 1 行出現錯誤: ORA-01012: not logged on SQL> conn / as sysdba 已連線到空閒例程。 SQL> startup nomount ORA-01081: cannot start already-running ORACLE - shut it down first SQL> shutdown abort ORA-03113: 通訊通道的檔案結束 SQL> startup nomount ORA-24324: 未初始化服務控制程式碼 ORA-01041: 內部錯誤, hostdef 副檔名不存在 SQL> SQL> shutdown abort ORA-24324: 未初始化服務控制程式碼 ORA-01041: 內部錯誤, hostdef 副檔名不存在 SQL> SQL> exit 已斷開連線 C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:22:42 2019 Copyright (c) 1982, 2005, Oracle. All rights reserved. ERROR: ORA-12560: TNS: 協議介面卡錯誤 請輸入使用者名稱: ERROR: ORA-12560: TNS: 協議介面卡錯誤 請輸入使用者名稱: ERROR: ORA-12560: TNS: 協議介面卡錯誤 SP2-0157: 在 3 次嘗試之後無法連線到 ORACLE, 退出 SQL*Plus C:\Documents and Settings\Administrator>sc delete oracleserviceorcl [SC] DeleteService 成功 C:\Documents and Settings\Administrator>oradim ORADIM: <command> [options]。請參閱手冊。 輸入以下命令之一: 通過指定以下選項建立例項: -NEW -SID sid | -SRVC srvc | -ASMSID sid | -ASMSRVC srvc [-SYSPWD pass] [-STARTMODE auto|manual] [-SRVCSTART system|demand] [-PFILE file | -SPFILE] [-SHUTMODE normal|immediate|abort] [-TIMEOUT secs] [-RUNAS osusr/ospass] 通過指定以下選項編輯例項: -EDIT -SID sid | -ASMSID sid [-SYSPWD pass] [-STARTMODE auto|manual] [-SRVCSTART system|demand] [-PFILE file | -SPFILE] [-SHUTMODE normal|immediate|abort] [-SHUTTYPE srvc|inst] [-RUNAS osusr/ospass] 通過指定以下選項刪除例項: -DELETE -SID sid | -ASMSID sid | -SRVC srvc | -ASMSRVC srvc 通過指定以下選項啟動服務和例項: -STARTUP -SID sid | -ASMSID sid [-SYSPWD pass] [-STARTTYPE srvc|inst|srvc,inst] [-PFILE filename | -SPFILE] 通過指定以下選項關閉服務和例項: -SHUTDOWN -SID sid | -ASMSID sid [-SYSPWD pass] [-SHUTTYPE srvc|inst|srvc,inst] [-SHUTMODE normal|immediate|abort] 通過指定以下引數查詢幫助: -? | -h | -help C:\Documents and Settings\Administrator>oradim -new -sid ORCL -pfile E:\oracle\p roduct\10.2.0\db_1\database\initorcl.ora 例項已建立。 C:\Documents and Settings\Administrator>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:32:21 2019 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已連線到空閒例程。 SQL> startup nomount ORACLE 例程已經啟動。 Total System Global Area 612368384 bytes Fixed Size 1332348 bytes Variable Size 174762884 bytes Database Buffers 432013312 bytes Redo Buffers 4259840 bytes SQL> alter database mount; 資料庫已更改。 SQL> alter database open; alter database open * 第 1 行出現錯誤: ORA-03113: 通訊通道的檔案結束 SQL>
終於可以使用startup命令了,但是open時還是報錯,然後通過告警日誌發現了pfile裡很多的路徑錯誤,還有redo日誌也報錯:
orcl.__db_cache_size=432013312 orcl.__java_pool_size=4194304 orcl.__large_pool_size=4194304 orcl.__shared_pool_size=163577856 orcl.__streams_pool_size=0 *.audit_file_dest='E:\oracle\product\10.2.0/admin/orcl/adump' *.background_dump_dest='E:\oracle\product\10.2.0/admin/orcl/bdump' *.compatible='10.2.0.1.0' *.control_files='E:\oracle\product\10.2.0/oradata/orcl/\control01.ctl','E:\oracle\product\10.2.0/oradata/orcl/\control02.ctl','E:\oracle\product\10.2.0/oradata/orcl/\control03.ctl' *.core_dump_dest='E:\oracle\product\10.2.0/admin/orcl/cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='orcl' *.db_recovery_file_dest='E:\oracle\product\10.2.0/flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)' *.job_queue_processes=10 *.nls_language='SIMPLIFIED CHINESE' *.nls_territory='CHINA' *.open_cursors=300 *.pga_aggregate_target=203423744 *.processes=1000 *.remote_login_passwordfile='EXCLUSIVE' *.sessions=1105 *.sga_target=612368384 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='E:\oracle\product\10.2.0/admin/orcl/udump'
於是,我修改為如下模式:
orcl.__db_cache_size=432013312 orcl.__java_pool_size=4194304 orcl.__large_pool_size=4194304 orcl.__shared_pool_size=163577856 orcl.__streams_pool_size=0 *.audit_file_dest='E:\oracle\product\10.2.0\admin\orcl\adump' *.background_dump_dest='E:\oracle\product\10.2.0\admin\orcl\bdump' *.compatible='10.2.0.1.0' *.control_files='E:\oracle\product\10.2.0\oradata\orcl\control01.ctl','E:\oracle\product\10.2.0\oradata\orcl\control02.ctl','E:\oracle\product\10.2.0\oradata\orcl\control03.ctl' *.core_dump_dest='E:\oracle\product\10.2.0\admin\orcl\cdump' *.db_block_size=8192 *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='orcl' *.db_recovery_file_dest='E:\oracle\product\10.2.0\flash_recovery_area' *.db_recovery_file_dest_size=2147483648 *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)' *.job_queue_processes=10 *.nls_language='SIMPLIFIED CHINESE' *.nls_territory='CHINA' *.open_cursors=300 *.pga_aggregate_target=203423744 *.processes=1000 *.remote_login_passwordfile='EXCLUSIVE' *.sessions=1105 *.sga_target=612368384 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1' *.user_dump_dest='E:\oracle\product\10.2.0\admin\orcl\udump'
然後重啟資料庫,啟動到mount階段,繼續檢視redo日誌檔案:
SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- ---------- --- ---------- FIRST_CHANGE# FIRST_TIME ------------- -------------- 1 1 19103 52428800 1 NO INACTIVE 471044279 07-6月 -19 3 1 19102 52428800 1 NO INACTIVE 471009748 06-6月 -19 2 1 19104 52428800 1 NO CURRENT 471095223 07-6月 -19
我嘗試清空損壞的日誌檔案,但是成功執行前提:一致性關閉,很顯然這個命令不行,而且嘗試rman也不行:
SQL> startup force mount ORACLE 例程已經啟動。 Total System Global Area 612368384 bytes Fixed Size 1332348 bytes Variable Size 174762884 bytes Database Buffers 432013312 bytes Redo Buffers 4259840 bytes 資料庫裝載完畢。 SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2; ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 2 * 第 1 行出現錯誤: ORA-01624: 日誌 2 是緊急恢復例項 orcl (執行緒 1) 所必需的 ORA-00312: 聯機日誌 2 執行緒 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' SQL> ALTER DATABASE CLEAR LOGFILE GROUP 2; ALTER DATABASE CLEAR LOGFILE GROUP 2 * 第 1 行出現錯誤: ORA-01624: 日誌 2 是緊急恢復例項 orcl (執行緒 1) 所必需的 ORA-00312: 聯機日誌 2 執行緒 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG' SQL> alter system switch logfile; alter system switch logfile * 第 1 行出現錯誤: ORA-01109: 資料庫未開啟 SQL> recover database until cancel; ORA-00279: 更改 471095223 (在 06/07/2019 20:22:28 生成) 對於執行緒 1 是必需的 ORA-00289: 建議: E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_08_01\O1_MF_1_ 19104_%U_.ARC ORA-00280: 更改 471095223 (用於執行緒 1) 在序列 #19104 中 指定日誌: {<RET>=suggested | filename | AUTO | CANCEL} auto ORA-00308: 無法開啟歸檔日誌 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_08_01\O1_MF_1 _19104_%U_.ARC' ORA-27041: 無法開啟檔案 OSD-04002: 無法開啟檔案 O/S-Error: (OS 2) 系統找不到指定的檔案。 ORA-00308: 無法開啟歸檔日誌 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_08_01\O1_MF_1 _19104_%U_.ARC' ORA-27041: 無法開啟檔案 OSD-04002: 無法開啟檔案 O/S-Error: (OS 2) 系統找不到指定的檔案。 ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 將出現如下錯誤 ORA-01194: 檔案 1 需要更多的恢復來保持一致性 ORA-01110: 資料檔案 1: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF' SQL> alter database open noresetlogs; alter database open noresetlogs * 第 1 行出現錯誤: ORA-03113: 通訊通道的檔案結束 SQL> startup force ORA-24324: 未初始化服務控制程式碼 ORA-01041: 內部錯誤, hostdef 副檔名不存在 SQL> exit 從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 斷開 C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:58:16 2019 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已連線到空閒例程。 SQL> create spfile from pfile; 檔案已建立。 SQL> startup mount ORACLE 例程已經啟動。 Total System Global Area 612368384 bytes Fixed Size 1332348 bytes Variable Size 174762884 bytes Database Buffers 432013312 bytes Redo Buffers 4259840 bytes 資料庫裝載完畢。 SQL> alter database open; alter database open * 第 1 行出現錯誤: ORA-03113: 通訊通道的檔案結束 SQL> startup foree mount SP2-0714: 無效的 STARTUP 選項組合 SQL> startup force mount ORA-24324: 未初始化服務控制程式碼 ORA-01041: 內部錯誤, hostdef 副檔名不存在 SQL> exit 從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 斷開 C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:59:52 2019 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已連線到空閒例程。 SQL> startup force mount ORACLE 例程已經啟動。 Total System Global Area 612368384 bytes Fixed Size 1332348 bytes Variable Size 174762884 bytes Database Buffers 432013312 bytes Redo Buffers 4259840 bytes 資料庫裝載完畢。 SQL> exit 從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 斷開 C:\Documents and Settings\Administrator> C:\Documents and Settings\Administrator>rman target / 恢復管理器: Release 10.2.0.1.0 - Production on 星期四 8月 1 23:00:08 2019 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已連線到目標資料庫: ORCL (DBID=1313825522, 未開啟) RMAN> list backupset; 使用目標資料庫控制檔案替代恢復目錄 RMAN> list archivelog all; 說明與恢復目錄中的任何存檔日誌均不匹配 RMAN> exit 恢復管理器完成。
最後嘗試用recover database until cancel;來解決:
C:\Documents and Settings\Administrator>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 23:00:58 2019 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 SQL> archive log list; 資料庫日誌模式 非存檔模式 自動存檔 禁用 存檔終點 USE_DB_RECOVERY_FILE_DEST 最早的聯機日誌序列 19102 當前日誌序列 19104 SQL> SQL> recover database until cancel; ORA-00279: 更改 471095223 (在 06/07/2019 20:22:28 生成) 對於執行緒 1 是必需的 ORA-00289: 建議: E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2019_08_01\O1_MF_1_ 19104_%U_.ARC ORA-00280: 更改 471095223 (用於執行緒 1) 在序列 #19104 中 指定日誌: {<RET>=suggested | filename | AUTO | CANCEL} E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG 已應用的日誌。 完成介質恢復。 SQL> SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS ---------- ---------- ---------- ---------- ---------- --- ---------------- FIRST_CHANGE# FIRST_TIME ------------- -------------- 1 1 19103 52428800 1 NO INACTIVE 471044279 07-6月 -19 3 1 19102 52428800 1 NO INACTIVE 471009748 06-6月 -19 2 1 19104 52428800 1 NO CURRENT 471095223 07-6月 -19 SQL> alter database open; alter database open * 第 1 行出現錯誤: ORA-01589: 要開啟資料庫則必須使用 RESETLOGS 或 NORESETLOGS 選項 SQL> alter database open noresetlogs; 資料庫已更改。 SQL> select open_mode from v$database; OPEN_MODE ---------- READ WRITE C:\Documents and Settings\Administrator>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 23:18:30 2019 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已連線到空閒例程。 SQL> startup ORACLE 例程已經啟動。 Total System Global Area 612368384 bytes Fixed Size 1332348 bytes Variable Size 174762884 bytes Database Buffers 432013312 bytes Redo Buffers 4259840 bytes 資料庫裝載完畢。 資料庫已經開啟。 SQL> select open_mode from v$database; OPEN_MODE ---------- READ WRITE
最後再重啟一次資料庫:
C:\Documents and Settings\Administrator>sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 23:18:30 2019 Copyright (c) 1982, 2005, Oracle. All rights reserved. 已連線到空閒例程。 SQL> startup ORACLE 例程已經啟動。 Total System Global Area 612368384 bytes Fixed Size 1332348 bytes Variable Size 174762884 bytes Database Buffers 432013312 bytes Redo Buffers 4259840 bytes 資料庫裝載完畢。 資料庫已經開啟。 SQL> select open_mode from v$database; OPEN_MODE ---------- READ WRITE
總結:
1、開啟告警日誌,從告警日誌中會獲取很多有用的資訊
2、pfile和spfile裡的內容不能出錯
3、oradim用於建立windows下的oracle服務,至少要保證在sqlplus中可以使用startup或shutdown命令
4、redo損壞的話可以嘗試在SQL下進行恢復,使用命令: recover database until cancel;
---最後的建議:
1、修改為歸檔模式
2、及時做RMAN備份
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在itpub、部落格園、CSDN和個人微 信公眾號( xiaomaimiaolhr )上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文部落格園地址: http://www.cnblogs.com/lhrbest ● 本文CSDN地址: https://blog.csdn.net/lihuarongaini ● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826 ........................................................................................................................ ● QQ群號: 230161599 (滿) 、618766405 ● 微 信群:可加我微 信,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ) ,註明新增緣由 ● 於 2019-08-01 06:00 ~ 2019-08-31 24:00 在西安完成 ● 最新修改時間:2019-08-01 06:00 ~ 2019-08-31 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店 : https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ● 小麥苗出版的資料庫類叢書 : http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網路班 : http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁 : https://lhr.ke.qq.com/ ........................................................................................................................ 使用 微 信客戶端 掃描下面的二維碼來關注小麥苗的微 信公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2652530/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ibbackup恢復報錯一例
- ORA-03113錯誤分析(轉)
- Oracle恢復誤刪資料Oracle
- Oracle 不完全恢復遇到的ORA-600錯誤Oracle
- 深入理解 HDFS 錯誤恢復
- mysql資料庫恢復一例MySql資料庫
- Oracle delete誤運算元據恢復(BBED)Oracledelete
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- Oracle啟動報錯:ORA-03113: end-of-file on communication channelOracle
- NBU恢復oracleOracle
- ORACLE 錯誤Oracle
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- Hadoop錯誤之namenode當機的資料恢復Hadoop資料恢復
- rman恢復控制檔案的一個小錯誤
- NBU異機恢復ORACLE出現ORA-19507、ORA-27029和ORA-19511錯誤Oracle
- linux下恢復誤刪除oracle的資料檔案LinuxOracle
- Oracle案例12——NBU Oracle恢復Oracle
- 【北亞資料恢復】異常斷電導致Oracle資料庫報錯的oracle資料恢復資料恢復Oracle資料庫
- oracle冷備恢復Oracle
- oracle 異機恢復Oracle
- 恢復Oracle資料庫誤刪除資料的語句Oracle資料庫
- Mysql update誤操作恢復MySql
- hbase 恢復 誤刪除
- 【RMAN】Oracle12c之後,rman備份Dataguard備端恢復可能出現邏輯錯誤Oracle
- ORACLE登入出現“ORA-12560:TNS:協議介面卡錯誤”錯誤修復Oracle協議
- Oracle RMAN恢復測試Oracle
- Oracle 不完全恢復Oracle
- 【資料庫資料恢復】LINUX環境下ORACLE資料庫誤刪除的資料恢復資料庫資料恢復LinuxOracle
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 【資料庫資料恢復】磁碟空間不足導致sql server錯誤的資料恢復資料庫資料恢復SQLServer
- pt-archiver工具歸檔和恢復資料一例Hive
- eclipse 恢復誤刪檔案Eclipse
- mysql誤刪資料恢復MySql資料恢復
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 恢復MySQL資料庫建立儲存過程是遇到錯誤MySql資料庫儲存過程