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/,如需转载,请注明出处,否则将追究法律责任。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值