ParnassusData Advanced Oracle Service ORACLE 数据库紧急救援报告 工程师 : 汪伟华 报告生成日期 : 2014 年 11 月 28 日 现场支持起始日期 : 2014 年 11 月 26 日 现场支持结束日期 : 2014 年 11 月 27 日 现场支持总时间 ( 小时 ): 14 更新日期 : 2014 年 11 月 28 日
文档控制 变更记录 日期作者及更新人版本号变更信息 28-Nov-14 汪伟华 1.0 Initial 28-Nov-14 刘相兵 1.1 修改 审阅人 版本号审阅人职位相关评论 1.1 胡章扬 审批人 版本号批准人日期相关评论 1.1 冯博 文档分发 分发号文档名分发位置 1 ORCLRECOVE-7 JIRA 诗檀软件 Oracle 数据库紧急救援报告 2
目录 文档控制... 2 变更记录... 2 审阅人... 2 审批人... 2 文档分发... 2 目录... 3 1. 服务简介... 4 1.1 服务范围... 4 1.2 服务结果... 4 2. 服务过程简介... 5 2.1 现场处理... 5 2.2 建议及总结... 17 其他问题... 19 未解决的问题... 19 已解决的问题... 19 最后... 20 诗檀软件 Oracle 数据库紧急救援报告 3
1. 服务简介 本文为诗檀软件对客户 Oracle 数据库服务进行紧急维修后所做 报告总结 1.1 服务范围 本次服务包括以下内容 : 救援数据库中数据文件并使将其相关业务数据成功取出 1.2 服务结果 诗檀软件工程师于 2014 年 11 月 26 日通过修正文件中的坏块 成功从原数据库中救出数据文件, 并操作诗檀公司救援工具 PRM 从数据文件中抽取出客户业务数据 所得数据已经倒入到临时数据库 ORCL1 中, 以方便用户查询验证 由于数据文件内部的坏块量较少, 因此保证了 90% 以上的业务数 据可成功抽取, 完成任务 诗檀软件 Oracle 数据库紧急救援报告 4
2. 服务过程简介 2.1 现场处理 现场 ORCL 数据库采用 11.2.0.1.0 版本单节点, 数据存储使用 普通文件存储模式, 其操作平台为 Windows Server 当时数据库情况 1. Alert Log 历史追溯通过追溯日志发现, 于 2014 年 1 月 5 日已出现坏块读取错误 Sun Jan 05 06:00:48 2014 GATHER_STATS_JOB encountered errors. Check the trace file. d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_j00 3_192.trc: ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 2: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX0 1.DBF' 然后这种坏块现象也蔓延到 System 表空间文件 Mon Feb 17 02:00:00 2014 Clearing Resource Manager plan via parameter d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_dbr m_3016.trc: ORA-00604: error occurred at recursive SQL level 1 ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 1: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM0 1.DBF' 诗檀软件 Oracle 数据库紧急救援报告 5
Unable to restore resource manager plan to '': ORA-02097: parameter cannot be modified because specified value is invalid ORA-00604: error occurred at recursive SQL level 1 ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 1: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM0 1.DBF' OSD-04006: ReadFile() 失败, 并开始出现内部错误 : Mon Feb 24 11:37:36 2014 Exception [type: ACCESS_VIOLATION, UNABLE_TO_READ] [ADDR:0xD4A0000] [PC:0x6D17E20, _kgghash()+686] d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora _5432.trc (incident=9762): ORA-07445: 出现异常错误 : 核心转储 [kgghash()+686] [ACCESS_VIOLATION] [ADDR:0xD4A0000] [PC:0x6D17E20] [UNABLE_TO_READ] [] Incident details in: d:\app\administrator\diag\rdbms\orcl\orcl\incident\incdi r_9762\orcl_ora_5432_i9762.trc 之后此类错误陆续出现在 REDO log 以及 TEMP 文件, 甚至在用户业务文件.ORA 中也出现了坏块 Sat May 24 08:27:46 2014 d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_m0 00_5072.trc (incident=9763): ORA-00603: ORACLE server session terminated by fatal error 诗檀软件 Oracle 数据库紧急救援报告 6
ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 3: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTB S01.DBF' ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 3: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTB S01.DBF' ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 3: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTB S01.DBF' ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 2: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX0 1.DBF' O/S-Erro Incident details in: d:\app\administrator\diag\rdbms\orcl\orcl\incident\incdi r_9763\orcl_m000_5072_i9763.trc opidrv aborting process M000 ospid (5072) as a result of ORA-603 Thu Sep 11 22:02:02 2014 诗檀软件 Oracle 数据库紧急救援报告 7
d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_j00 0_4392.trc: ORA-12012: error on auto execute of job 128120 ORA-01115: IO error reading block from file (block # ) ORA-01110: data file 6: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\BJ_ZCGL. ORA' ORA-06512: at "SYS.DBMS_ADVISOR", line 201 ORA-06512: at "SYS.DBMS_SPACE", line 1798 ORA-06512: at "SYS.DBMS_SPACE", line 1871 由于最终坏块蔓延到控制文件, 最终导致宕机 Thu Oct 09 21:49:52 2014 d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_m0 00_4676.trc: ORA-00202: control file: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTRO L01.CTL' d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_m0 00_4676.trc: ORA-00204: error in reading (block 22, # blocks 1) of control file ORA-00202: control file: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTRO L01.CTL' 诗檀软件 Oracle 数据库紧急救援报告 8
Thu Oct 09 21:54:01 2014 d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_lgw r_3036.trc: ORA-00202: control file: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTRO L01.CTL' d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_lgw r_3036.trc: ORA-00204: error in reading (block 22, # blocks 1) of control file ORA-00202: control file: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTRO L01.CTL' LGWR (ospid: 3036): terminating the instance due to error 204 之后客户及第三方服务机构曾多次尝试打开数据库失败 由于数据库文件坏块已基本蔓延至所有数据文件 一旦数据库奔溃后, 即便修复了控制文件 ( 据日志观察,10 月 31 日对控制文件进行过修复 ), 由于系统文件无法通过自检, 数据库打开失败也就成了必然事件 Wed Nov 19 11:37:05 2014 SMON: Restarting fast_start parallel rollback d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora _3568.trc: ORA-00604: 递归 SQL 级别 1 出现错误 诗檀软件 Oracle 数据库紧急救援报告 9
ORA-01115: 从文件读取块时出现 IO 错误 ( 块 # ) ORA-01110: 数据文件 1: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM0 1.DBF' ORA-27070: 异步读取 / 写入失败 d:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora _3568.trc: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01115: 从文件读取块时出现 IO 错误 ( 块 # ) ORA-01110: 数据文件 1: 'G:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM0 1.DBF' ORA-27070: 异步读取 / 写入失败 Error 604 happened during db open, shutting down database USER (ospid: 3568): terminating the instance due to error 604 用户曾试图将相关数据文件 copy 到其他无坏块盘, 但由于无法 完成坏块读取, 导致操作失败 2. 数据库配置 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options. Using parameter settings in server-side spfile D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_ 1\DATABASE\SPFILEORCL.ORA System parameters with non-default values: processes = 150 memory_target = 1232M control_files = 诗檀软件 Oracle 数据库紧急救援报告 10
"G:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTRO L01.CTL" control_files = "D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ ORCL\CONTROL02.CTL" db_block_size = 8192 compatible = "11.2.0.0.0" db_recovery_file_dest = "D:\app\Administrator\flash_recovery_area" db_recovery_file_dest_size= 3852M undo_tablespace = "UNDOTBS1" remote_login_passwordfile= "EXCLUSIVE" db_domain = "" dispatchers = "(PROTOCOL=TCP) (SERVICE=orclXDB)" audit_file_dest = "D:\APP\ADMINISTRATOR\ADMIN\ORCL\ADUMP" audit_trail = "DB" db_name = "orcl" open_cursors = 300 diagnostic_dest = "D:\APP\ADMINISTRATOR" 下图为数据库 Mount 后, 数据文件情况 : 诗檀软件 Oracle 数据库紧急救援报告 11
数据库救援处理 诗檀工程师在分析其数据库情况后, 按以下步骤进行数据库数据 救援操作 : 1. 首先使用文件修复拷贝工具将所有数据库文件 copy 至 I 盘 ( 磁盘为用户提供的无问题盘 ) System01.dbf 诗檀软件 Oracle 数据库紧急救援报告 12
SYSAUX01.dbf 诗檀软件 Oracle 数据库紧急救援报告 13
USER01.dbf TEMP01.dbf 诗檀软件 Oracle 数据库紧急救援报告 14
UNDOBS01.dbf REDO01.log 诗檀软件 Oracle 数据库紧急救援报告 15
REDO02.log REDO03.log Control file 2. 工程师使用 PRM-DUL 工具打开了对应数据库文件 : 诗檀软件 Oracle 数据库紧急救援报告 16
1) 打开 prm.bat 2) 使用字典模式并倒入数据文件 : SYSTEM01.DBF SYSAUX01.DBF BJ_ZCGL.ORA EXAMPLE01.DBF USERS01.DBF 3) 通过观察发现需要导出 Schema 下的数据 4. 使用 PRM-DUL DataBridge 方式将用户业务数据抽取并成功 倒入到临时数据库 ORCL1 中 2.2 建议及总结 1. 由于坏块使得重新将客户系统恢复已无意义 建议第三方重 新部署软件相应数据库应用设置并将救援出的客户数据重新导 入 2. 用户的数据库无备份, 无归档 并缺少相应数据库专业人员进行维护及日志检查 数据库出现问题在初期未能及时解决, 使得坏块扩散, 最终造成客户损失 建议 : 开启备份和日志归档, 派遣数据库相关人员做定期健康检查 诗檀软件 Oracle 数据库紧急救援报告 17
诗檀软件 Oracle 数据库紧急救援报告 18
其他问题 未解决的问题 问题号问题描述解决方案日期 已解决的问题 问题号问题描述解决方案解决日期 诗檀软件 Oracle 数据库紧急救援报告 19
最后 ParnassusData Corporation, Shanghai, GaoPing Road No. 733. China Phone: (+86) 400-690-3643 ParnassusData.com Copyright 2013, ParnassusData and/or its affiliates. All rights reserved. This document is provided for information purposes only and the contents hereof are subject to change without notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, or including implied warranties and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document and no contractual obligations are formed either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without our prior written permission. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. UNIX is a registered trademark licensed through X/Open Company, Ltd. 0410 Copyright 2014 ParnassusData Corporation. All Rights Reserved. 诗檀软件 Oracle 数据库紧急救援报告 20