博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle恢复一例--ORA-03113、ORA-24324,ORA-01041错误
阅读量:2440 次
发布时间:2019-05-10

本文共 13796 字,大约阅读时间需要 45 分钟。

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 sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:21:19 2019Copyright (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 onSQL> conn / as sysdba已连接到空闲例程。SQL> startup nomountORA-01081: cannot start already-running ORACLE - shut it down firstSQL> shutdown abortORA-03113: 通信通道的文件结束SQL> startup nomountORA-24324: 未初始化服务句柄ORA-01041: 内部错误, hostdef 扩展名不存在SQL>SQL> shutdown abortORA-24324: 未初始化服务句柄ORA-01041: 内部错误, hostdef 扩展名不存在SQL>SQL> exit已断开连接C:\Documents and Settings\Administrator>C:\Documents and Settings\Administrator>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:22:42 2019Copyright (c) 1982, 2005, Oracle.  All rights reserved.ERROR:ORA-12560: TNS: 协议适配器错误请输入用户名:ERROR:ORA-12560: TNS: 协议适配器错误请输入用户名:ERROR:ORA-12560: TNS: 协议适配器错误SP2-0157: 在 3 次尝试之后无法连接到 ORACLE, 退出 SQL*PlusC:\Documents and Settings\Administrator>sc delete oracleserviceorcl[SC] DeleteService 成功C:\Documents and Settings\Administrator>oradimORADIM:  [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 | -helpC:\Documents and Settings\Administrator>oradim -new -sid ORCL -pfile E:\oracle\product\10.2.0\db_1\database\initorcl.ora实例已创建。C:\Documents and Settings\Administrator>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:32:21 2019Copyright (c) 1982, 2005, Oracle.  All rights reserved.已连接到空闲例程。SQL> startup nomountORACLE 例程已经启动。Total System Global Area  612368384 bytesFixed Size                  1332348 bytesVariable Size             174762884 bytesDatabase Buffers          432013312 bytesRedo Buffers                4259840 bytesSQL> alter database mount;数据库已更改。SQL> alter database open;alter database open*第 1 行出现错误:ORA-03113: 通信通道的文件结束SQL>

  终于可以使用startup命令了,但是open时还是报错,然后通过告警日志发现了pfile里很多的路径错误,还有redo日志也报错:

orcl.__db_cache_size=432013312orcl.__java_pool_size=4194304orcl.__large_pool_size=4194304orcl.__shared_pool_size=163577856orcl.__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=432013312orcl.__java_pool_size=4194304orcl.__large_pool_size=4194304orcl.__shared_pool_size=163577856orcl.__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 mountORACLE 例程已经启动。Total System Global Area  612368384 bytesFixed Size                  1332348 bytesVariable Size             174762884 bytesDatabase Buffers          432013312 bytesRedo 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_.ARCORA-00280: 更改 471095223 (用于线程 1) 在序列 #19104 中指定日志: {
=suggested | filename | AUTO | CANCEL}autoORA-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 forceORA-24324: 未初始化服务句柄ORA-01041: 内部错误, hostdef 扩展名不存在SQL> exit从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options 断开C:\Documents and Settings\Administrator>C:\Documents and Settings\Administrator>C:\Documents and Settings\Administrator>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:58:16 2019Copyright (c) 1982, 2005, Oracle.  All rights reserved.已连接到空闲例程。SQL> create spfile from pfile;文件已创建。SQL> startup mountORACLE 例程已经启动。Total System Global Area  612368384 bytesFixed Size                  1332348 bytesVariable Size             174762884 bytesDatabase Buffers          432013312 bytesRedo Buffers                4259840 bytes数据库装载完毕。SQL> alter database open;alter database open*第 1 行出现错误:ORA-03113: 通信通道的文件结束SQL> startup foree mountSP2-0714: 无效的        STARTUP 选项组合SQL> startup force mountORA-24324: 未初始化服务句柄ORA-01041: 内部错误, hostdef 扩展名不存在SQL> exit从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith 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 sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 22:59:52 2019Copyright (c) 1982, 2005, Oracle.  All rights reserved.已连接到空闲例程。SQL> startup force mountORACLE 例程已经启动。Total System Global Area  612368384 bytesFixed Size                  1332348 bytesVariable Size             174762884 bytesDatabase Buffers          432013312 bytesRedo Buffers                4259840 bytes数据库装载完毕。SQL> exit从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith 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 2019Copyright (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 sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 23:00:58 2019Copyright (c) 1982, 2005, Oracle.  All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> archive log list;数据库日志模式             非存档模式自动存档             禁用存档终点            USE_DB_RECOVERY_FILE_DEST最早的联机日志序列     19102当前日志序列           19104SQL>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_.ARCORA-00280: 更改 471095223 (用于线程 1) 在序列 #19104 中指定日志: {
=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月 -19SQL> 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 WRITEC:\Documents and Settings\Administrator>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 23:18:30 2019Copyright (c) 1982, 2005, Oracle.  All rights reserved.已连接到空闲例程。SQL> startupORACLE 例程已经启动。Total System Global Area  612368384 bytesFixed Size                  1332348 bytesVariable Size             174762884 bytesDatabase Buffers          432013312 bytesRedo Buffers                4259840 bytes数据库装载完毕。数据库已经打开。SQL> select open_mode from v$database;OPEN_MODE----------READ WRITE

最后再重启一次数据库:

C:\Documents and Settings\Administrator>sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期四 8月 1 23:18:30 2019Copyright (c) 1982, 2005, Oracle.  All rights reserved.已连接到空闲例程。SQL> startupORACLE 例程已经启动。Total System Global Area  612368384 bytesFixed Size                  1332348 bytesVariable Size             174762884 bytesDatabase Buffers          432013312 bytesRedo 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和个人微 信公众号( )上有同步更新

● 本文itpub地址:

● 本文博客园地址:

● 本文CSDN地址:

● 本文pdf版、个人简介及小麦苗云盘地址:

● 数据库笔试面试题库及解答:

● DBA宝典今日头条号地址:

........................................................................................................................

● 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

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

........................................................................................................................

小麦苗的微店

小麦苗出版的数据库类丛书

小麦苗OCP、OCM、高可用网络班

小麦苗腾讯课堂主页

........................................................................................................................

使用 微 信客户端 扫描下面的二维码来关注小麦苗的微 信公众号( )及QQ群(DBA宝典)、添加小麦苗微 信, 学习最实用的数据库技术。

........................................................................................................................

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2652530/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26736162/viewspace-2652530/

你可能感兴趣的文章
SUSE一纸诉状控告SCO 捍卫知识产权(转)
查看>>
debian下编译2.6.13.2内核的步骤及感受(转)
查看>>
预装正版的市场意义(转)
查看>>
创建小于16M XFree86迷你Linux系统(转)
查看>>
shell中常用的工具(转)
查看>>
使用MySQL内建复制功能来最佳化可用性(转)
查看>>
一个比较vista的vista主题for rf5.0fb(转)
查看>>
推荐一款 Linux 上比较漂亮的字体(转)
查看>>
在Linux中添加新的系统调用(转)
查看>>
Fedora Core 5.0 安装教程{下载}(转)
查看>>
把ACCESS的数据导入到Mysql中(转)
查看>>
shell里边子函数与主函数的实例(转)
查看>>
Linux中MAXIMA符号运算软件的简介(转)
查看>>
银行选择Linux 则无法回避高成本(转)
查看>>
上网聊天需要防范的几大威胁(转)
查看>>
[分享]后门清除完全篇(转)
查看>>
用php在linux下连接mssql2000(转)
查看>>
让你的Linux支持WEB修改密码(转)
查看>>
MYSQL的master/slave数据同步配置(转)
查看>>
一个完整的ftp远程批量shell(转)
查看>>