热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

OracleORA-006006002错误的解决方法

这种错误经常是在数据库恢复之后,经常会遇到如下ORA-6006002错误,这属于常见的,可以分析消除的错误之一,下面我们来看解决办法。

这种错误经常是在数据库恢复之后,经常会遇到如下ORA-600 6002错误,这属于常见的,可以分析消除的错误之一,下面我们来看解决办法。

这种错误经常是在数据库恢复之后,经常会遇到如下ORA-600 6002错误,这属于常见的,可以分析消除的错误之一,下面我们来看解决办法。

以下是最近在用户数据恢复中遇到的错误:

*** 2012-03-08 13:56:04.178
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [6002], [0], [0], [4], [0], [], [], []
----- PL/SQL Call Stack -----
object line object
handle number name
57cce5a18 418 package body SYS.DBMS_HA_ALERTS_PRVT
57cce5a18 552 package body SYS.DBMS_HA_ALERTS_PRVT


错误现实,在执行SYS.DBMS_HA_ALERTS_PRVT包的内部任务时出现问题。
而 ORA-00600 6002 错误和索引相关,具体内容是指:
当Oracle试图去插入一个索引键值时,首先需要找到合适的位置,并且去进行相关校验,校验内容包括索引列数量、数据大小等,一旦发现不一致,则将出现ORA-600 的 6002错误。

MOS上的解释如下:

Oracle was trying to insert a key and key data into a b*tree index.
In order to do this, it had to first find the correct leaf block to do the insert.
Once the correct leaf block is retrieved, Oracle validates the block by checking the data size and number of columns in the key.
If there is a mismatch then ORA-600 [6002] is reported.

其主要的参数含义如下:

Arg [a] Number of bytes in keydata
Arg [b] Number of bytes in the index layer of the leaf header
Arg [c] Number of columns in index search key structure
Arg [d] Number of columns in the index layer fo the leaf header

所以如果遇到这个错误,首先应该找到出现问题的索引对象,可以尝试通过重建索引消除这个错误影响。
如下是跟踪文件中体现的出现错误的块头信息:

Block header dump: 0x00c086ed
Object id on Block? Y
seg/obj: 0x22a9 csc: 0x00.1c87691f itc: 12 flg: E typ: 2 - INDEX
brn: 0 bdba: 0xc086e9 ver: 0x01 opc: 0
inc: 0 exflg: 0

Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x000a.016.00045449 0x0080027f.4951.02 C--- 0 scn 0x0000.0b0c478c
0x02 0x0014.00e.000aadce 0x01000b9f.67ea.26 C--- 0 scn 0x0000.1c876660
0x03 0x0014.01b.000aada1 0x01000b9f.67ea.17 C--- 0 scn 0x0000.1c87653d
0x04 0x000a.002.000e628d 0x00800247.6ebe.29 C--- 0 scn 0x0000.1c87691e
0x05 0x0034.00e.00000270 0x010061c8.00c6.11 ---- 1 fsc 0x0000.00000000
0x06 0x0009.01d.0001e6dc 0x0080008a.8128.37 --U- 1 fsc 0x0031.1c876923
0x07 0x0008.017.0001d3c2 0x00800080.8857.26 C--- 0 scn 0x0000.1c87613a
0x08 0x0002.02b.0001720e 0x00801355.7ebb.1f C--- 0 scn 0x0000.1c87654d
0x09 0x000a.01f.000e6254 0x00800245.6ebe.0e C--- 0 scn 0x0000.1c87683c
0x0a 0x0009.004.0001e89d 0x0080008a.8128.30 C--- 0 scn 0x0000.1c876841
0x0b 0x000a.00a.000e6279 0x0080023f.6ebe.08 C--- 0 scn 0x0000.1c87666a
0x0c 0x000a.011.000e6252 0x0080022f.6ebe.3e C--- 0 scn 0x0000.1c87613e

我们可以看到出现问题的对象号是22a9,类型正是索引。
通过数据库查询可以找到这个对象名称,通过重建索引即可解决:

代码如下

SQL> select object_name from dba_objects where object_id=to_number('22a9','xxxxx');

OBJECT_NAME
------------------------------------------------------------------------------------------------------------------------
WRI$_ALERT_THRESHOLD_LOG_PK

SQL> alter index WRI$_ALERT_THRESHOLD_LOG_PK rebuild online;

Index altered.

6002错误需要根据对象的不同进行分析,通常是可以通过索引重建解决的。有时候问题会出现在IOT对象上,可以通过备份数据,TRUNCATE再INSERT回插记录解决。

另一篇文章

ORA-600的3020错误,数据库在故障恢复中,应用归档日志时遇到3020错误:

ORA-00283: recovery session canceled due to errors
RMAN-11003: failure during parse/execution of SQL statement:
alter database recover logfile '/arch/prod1_2711_681480148.arc'
ORA-00283: recovery session canceled due to errors
ORA-12801: error signaled in parallel query server P011, instance hpdb1:PROD1 (1)
ORA-00600: internal error code, arguments: [3020], [37], [94633], [2], [3659], [604], [16], []
ORA-10567: Redo is inconsistent with data block (file# 37, block# 94633)
ORA-10564: tablespace APPS_UNDOTS2
ORA-01110: data file 37


出现这个错误后,恢复中断,无法继续,3020错误在Metalink上的解释,主要原因是:

This is called a 'STUCK RECOVERY'.
There is an inconsistency between the information stored in the redo
and the information stored in a database block being recovered.

也就是说,在恢复时发现Redo里面记录的信息和被恢复的数据块信息不一致,导致恢复无法继续。比如Update Some record from 3 to 2,结果发现该记录根本不是3,恢复无法继续。

这个错误可能是由于写Redo的某个操作丢失,这可能是由于异常宕机或存储故障导致的。
This error can be reported if any of these updates are lost for some reason.

出现这个错误,如果没有备份,数据也不是特别重要,则可以通过一些隐含参数或强制手段来打开数据库,不过不可避免的会出现数据损失,Olive做过一次这样的尝试 。
经过验证的可实践方式是使用:

代码如下
recover database [using backup controlfile] allow 1 corruption;

将不一致的块标记为损坏,然后可以执行进一步的恢复尝试。

这次处理这个案例,最后选择了不完全恢复,补录数据,有时候放弃也是一种恢复!


推荐阅读
  • 本文介绍如何从包含多个记录的会员表中,筛选出同时拥有BookID为10和14的会员。通过SQL查询语句,可以有效地获取符合条件的MemberID。 ... [详细]
  • 在进行QT交叉编译时,可能会遇到与目标架构不匹配的宏定义问题。例如,当为ARM或MIPS架构编译时,需要确保使用正确的宏(如QT_ARCH_ARM或QT_ARCH_MIPS),而不是默认的QT_ARCH_I386。本文将详细介绍如何正确配置编译环境以避免此类错误。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • Oracle中NULL、空字符串和空格的处理与区别
    本文探讨了在Oracle数据库中使用NULL、空字符串('')和空格('_')时可能遇到的问题及解决方案。重点解释了它们之间的区别,以及在查询和函数中的行为。 ... [详细]
  • Oracle 数据导出为 SQL 脚本的详细步骤
    本文介绍如何使用 PL/SQL Developer 工具将 Oracle 数据库中的数据导出为 SQL 脚本,包括详细的步骤和注意事项。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 1.介绍有时候我们需要一些模拟数据来进行测试,今天简单记录下如何用存储过程生成一些随机数据。2.建表我们新建一张学生表和教师表如下:CREATETABLEstudent(idINT ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ... [详细]
  • 本文介绍了在 SQL Server 2012 客户端中格式化 SQL 查询语句的多种方法,包括内置功能和第三方工具,帮助用户提高代码可读性和维护性。 ... [详细]
author-avatar
奈何为人非_800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有