热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

某客户ERP系统Oracle8.0.5恢复一例-mysql教程

本站文章除注明转载外,均为本站原创:转载自lovewifelovelife—Roger的Oracle技术博客本文链接地址:某客户ERP系统Oracle8.0.5恢复一例某客户的ERP数据库出现异常,数据库版本比较老,是Oracle8.0.5。问题本身并不复杂,简单记录一下。主要的问

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger 的Oracle技术博客 本文链接地址: 某客户ERP系统Oracle 8.0.5恢复一例 某客户的ERP数据库出现异常,数据库版本比较老,是Oracle 8.0.5。 问题本身并不复杂,简单记录一下。 主要的问

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客

本文链接地址: 某客户ERP系统Oracle 8.0.5恢复一例

某客户的ERP数据库出现异常,数据库版本比较老,是Oracle 8.0.5。 问题本身并不复杂,简单记录一下。

主要的问题是客户的应用访问报错,通过分析客户传的alert log发现出现了大量的IO错误,如下:

Thu Dec 25 13:29:42 2014
ORACLE Instance PROD (pid = 78) - Error 1115 encountered while recovering transaction (28, 23).
Thu Dec 25 13:29:42 2014
Errors in file /u04/dbcommon/PROD/udump/prod_ora_23181.trc:
ORA-01115: IO error reading block from file 2 (block # 262144)
ORA-01110: data file 2: '/u03/oradata/PROD/rbs1.dbf'
ORA-27072: skgfdisp: I/O error
SVR4 Error: 2: No such file or directory
Additional information: 262143
ORACLE Instance PROD (pid = 78) - Error 1115 encountered while recovering transaction (28, 23).
Thu Dec 25 13:30:04 2014
Errors in file /u04/dbcommon/PROD/udump/prod_ora_23181.trc:
ORA-01115: IO error reading block from file 2 (block # 262144)
ORA-01110: data file 2: '/u03/oradata/PROD/rbs1.dbf'
ORA-27072: skgfdisp: I/O error
SVR4 Error: 2: No such file or directory
Additional information: 262143

从alert log 来看,上述报错的文件出现IO error,实际上该文件是确实存在的。开始我以为有可能是数据文件头的
os block 损坏了,通过dd dump分析发现是OK,如下:

---异常文件
$ dd if=rbs1.dbf.bak bs=8192 count=1 | od -x |head -10
1+0 records in
1+0 records out
0000000 0000 0000 0000 2000 0007 f800 5a5b 5c5d
0000020 0000 0000 0000 0000 0000 0000 0000 0000
*
0020000
 
----正常文件
$ dd if=oed3.dbf  bs=8192 count=1 | od -x |head -10
1+0 records in
1+0 records out
0000000 0000 0000 0000 2000 0000 1e00 5a5b 5c5d
0000020 0000 0000 0000 0000 0000 0000 0000 0000
*
0020000

同时,从报错来看,提到了一个block,查看trace可以看到该block的内容如下:

********************************************************************************
UNDO BLK:
xid: 0x001c.017.0000c361  seq: 0x88ef cnt: 0x4e  irb: 0x1   icl: 0x0   flg: 0x0000
 
 Rec Offset      Rec Offset      Rec Offset      Rec Offset      Rec Offset
---------------------------------------------------------------------------
0x01 0x1f88     0x02 0x1f2c     0x03 0x1e9c     0x04 0x1e44     0x05 0x1dec
。。。。。。
0x47 0x03c0     0x48 0x0364     0x49 0x02d4     0x4a 0x027c     0x4b 0x0224
0x4c 0x01c4     0x4d 0x0168     0x4e 0x00d8
 
 
*-----------------------------
* Rec #0x1  slt: 0x17  objn: 202838(0x00031856)  objd: 202838  tblspc: 22(0x00000016)
*       Layer:  10 (Index)   opc: 22   rci 0x00
Undo type:  Regular undo   Last buffer split:  No
Temp Object:  No
rdba: 0x0083ffff
*-----------------------------
index undo for leaf key operations
KTB Redo
op: 0x02  ver: 0x01
op: C  uba: 0x0083ffff.88ef.4b
Dump kdilk : itl=3, kdxlkflg=0x1 sdc=0 indexid=0x18816b90 block=0x05c12678
restore leaf row (clear leaf delete flags)
key :(14):  04 c3 02 24 32 05 3c 3d 49 4a 66 02 c1 2c
keydata/bitmap : (6):  19 40 79 da 00 1d

上述的dump内容非常简单。我们回头来看下前面的错误:

Error 1115 encountered while recovering transaction (28, 23)

首先我们需要明白,这里的28,,23分别代表什么含义 ?

正常情况下,这里的28表示回滚段编号,23表示事务槽编号。 通过检查发现实际上这里的信息是不对的。
客户的系统中根本不存在这个回滚段。通过block号,我们定位到实际上是第4号回滚段。

因此要解决这个回滚段事务的问题,就很简单了,通过_corrupted_rollback_segments=RBS4 然后强制drop即可。

另外,由于这里事务涉及的操作,其实是针对Index的操作,因此。我们drop完成之后,还需要重建相关的Index。

当处理完这个之后,客户反馈另外一个数据文件也有问题,当操作某个表时,会出现异常,如下:

SVRMGR> insert /*+append */into  inv.MTL_TRANSACTION_ACCOUNTS_BAK select /*+parallel(t,4)*/* from inv.MTL_TRANSACTION_ACCOUNTS t;
ORA-12801: error signaled in parallel query server P001
ORA-01115: IO error reading block from file 94 (block # 262141)
ORA-27072: skgfdisp: I/O error
SVR4 Error: 25: Inappropriate ioctl for device
Additional information: 262141
ORA-01115: IO error reading block from file 94 (block # 262141)
ORA-27072: skgfdisp: I/O error
SVR4 Error: 25: Inappropriate ioctl for device
Additional information: 262141

实际上,这个表,在我处理之前,直接count(1)操作,都会报上面的错误。经查,这是Oracle 805的bug导致。

通过调整disk_async_io=false,以及db_file_multiblock_read_count为16,解决了这个问题。

虽然可以进行count,然而客户反馈业务操作仍然报错。最后我们发现,这可能是oracle 805的bug导致,当数据文件大小
超过2GB时,会出现异常。实际上,我在进行dbv检查时,该数据文件都会报错。

最后我们通过cats重建表,然后重建index解决了该问题。

备注:805版本中,rename table语法很坑爹,必须这样:

alter table roger.test rename to test_new;

这个系统将近20年了,也正是够老的了。

Related posts:

  1. win 环境 O/S-Error: (OS 23) 数据错误(循环冗余检查) —恢复
  2. 不完全详解os block header
  3. 使用ODU恢复9208数据库一例
  4. windows Oracle数据文件大小为0的恢复case

推荐阅读
  • 本篇文章介绍如何将两个分别表示整数的链表进行相加,并生成一个新的链表。每个链表节点包含0到9的数值,如9-3-7和6-3相加得到1-0-0-0。通过反向处理链表、逐位相加并处理进位,最终再将结果链表反向,即可完成计算。 ... [详细]
  • CentOS 系统管理基础
    本文介绍了如何在 CentOS 中查询系统版本、内核版本、位数以及磁盘分区的相关知识。通过这些命令,用户可以快速了解系统的配置和磁盘结构。 ... [详细]
  • 本文详细介绍了一种高效的算法——线性筛法,用于快速筛选出一定范围内的所有素数。通过该方法,可以显著提高求解素数问题的效率。 ... [详细]
  • 本文详细介绍了get和set方法的作用及其在编程中的实现方式,同时探讨了点语法的使用场景。通过具体示例,解释了属性声明与合成存取方法的概念,并补充了相关操作的最佳实践。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 精选多款高效实用软件及工具推荐
    本文介绍并推荐多款高效实用的软件和工具,涵盖系统优化、网络加速、多媒体处理等多个领域,并提供安全可靠的下载途径。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
  • Java中的基本数据类型与包装类解析
    本文探讨了Java编程语言中的8种基本数据类型及其对应的包装类。通过分析这些数据类型的特性和使用场景,以及自动拆装箱机制的实现原理,帮助开发者更好地理解和应用这些概念。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 本文详细探讨了Java中的包管理机制,包括默认包的使用和自定义包名的创建方法。通过实际操作,帮助开发者更好地理解和应用包管理。 ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • 本文深入探讨了 Exchange Server 2010 中客户端访问的代理和重定向机制,特别是在跨站点环境中如何配置这些功能以确保用户能够顺利访问邮箱服务。通过详细解析不同场景下的应用,帮助管理员更好地理解和实施相关设置。 ... [详细]
  • 本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ... [详细]
  • 编写css让div2在div1的右下角? ... [详细]
author-avatar
伟哥
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有