根据oracle入库数据进行告警,Oracle 启动故障案例之--ORA-600 [4193]错误

ORA-600[4193] 这个错误也是与UNDO 有关系,MOS 上有几篇相关的说明文章.

一.MOS说明

1.1 ORA-600 [4193] WhenTrying To Open The Database [ID 763566.1]

Symptoms

Copying database from one server to another server and getting an ORA-600 [4193] error when trying to open the database on the destination server.

--copy 数据库从一个server 到另一个server 后,尝试打开时报这个错误。

Cause

The online redo logs were copied when the source database was open, online redo logs should never be copied when the database is open.

--导致原因是因为在数据库open时把online redo logs 也一起copy 过去了。 在数据库open状态,online redo log 不应该copy。

Solution

In this instance the datafiles were being copied properly after the tablespaces were put in to backup mode, however, online redo logs should only be copied if the source database is shutdown first before copying the online redo logs.  The source database needed to remain open so, the datafiles were copied again (withthe tablespaces in backup mode) and then a number of archive logs were transferred over to the new server and after the last archivelog was applied the database could be opened with resetlogs and new online redo logs were created on the destination server.

--当表空间被设置为backup 模式之后,可以copy 数据文件,但是onlineredo log 只能是在数据库shutdown 之后才能copy,如果数据库一直是open 状态,那么只能把datafile copy 过去,然后把归档文件传送过去,最后用openresetlogs的方式打开数据库,在open时online redo log 会自动重建。

1.2 Ora-600 [4193] WhenOpening Or Shutting Down A Database [ID 452662.1]

1.2.1 Symptoms

Errors in alert.log:

Tue Jul 17 13:38:13 2007

Errors in file /home/Oracle/oracle/product/10.2.0/yms/rdbms/log/yms_smon_8337.trc:

ORA-00607: Internal error occurred while making a change to a data block

ORA-00600: internal error code, arguments: [4193], [3552], [3554], [], [], []

yms_smon_8337.trc:

SO: 0xdfaec728, type: 24, owner: 0xdf266580, flag: INIT/-/-/0x00

(buffer) PR: 0xdf1f1338 FLG: 0x1000

class bit: 0x80000

kcbbfbp: [BH: 0xded4bf40, LINK: 0xdfaec768]

kcbbfbx[0]: [BH: 0xdece41d8, LINK: 0xdfaec788]

where: ktuwh01: ktugus, why: 0

buffer tsn: 2 rdba: 0x00c00002 (3/2)

scn: 0x0000.03c95628 seq: 0x01 flg: 0x00 tail: 0x56280e01

frmt: 0x02 chkval: 0x0000 type: 0x0e=KTU UNDO HEADER W/UNLIMITED EXTENTS

BH (0xdece41d8) file#: 3 rdba: 0x00c003b6 (3/950) class: 20 ba: 0x11d6ba000

set: 6 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0

dbwrid: 0 obj: -1 objn: 0 tsn: 2 afn: 3

hash: [df870f70,df870f70] lru: [dece4488,dece4028]

obj-flags: object_ckpt_list

ckptq: [dedac4a0,ded47cb8] fileq: [dedac500,ded47cc8] objq: [ded47d78,db7bfd78]

use: [dfaec788,dfaec788] wait: [NULL]

st: XCURRENT md: EXCL tch: 0

flags: mod_started gotten_in_current_mode block_written_once

change state: ACTIVE

change count: 1

LRBA: [0xac3.4de07.0] HSCN: [0xffff.ffffffff] HSUB: [65535]

Using State Objects

----------------------------------------

SO: 0xdfaec728, type: 24, owner: 0xdf266580, flag: INIT/-/-/0x00

(buffer) PR: 0xdf1f1338 FLG: 0x1000

class bit: 0x80000

kcbbfbp: [BH: 0xded4bf40, LINK: 0xdfaec768]

kcbbfbx[0]: [BH: 0xdece41d8, LINK: 0xdfaec788]

where: ktuwh01: ktugus, why: 0

buffer tsn: 2 rdba: 0x00c003b6 (3/950)

scn: 0x0000.03be3c7d seq: 0x5a flg: 0x04 tail: 0x3c7d025a

frmt: 0x02 chkval: 0x0868 type: 0x02=KTU UNDO BLOCK

----------------------------------------

Error 607 in redo application callback

TYP:0 CLS:20 AFN:3 DBA:0x00c003b6 OBJ:4294967295 SCN:0x0000.03be3c7d SEQ: 90 OP:5.1

ktudb redo: siz: 132 spc: 4462 flg: 0x0012seq: 0x0de2 rec: 0x09

UNDO BLK:

xid: 0x0002.045.00006c61seq:0xde0 cnt: 0x60 irb: 0x60 icl: 0x0 flg: 0x0000

1.2.2 Cause

When we try toapply redo to an undo block (forward changes are made by  the applicationof redo to a block) we check that the seq# in the undo  record matches the seq# in the redo record.

--数据库在启动时需要进行一个前滚的操作,在前滚时会应用redo 到undo block上,操作时会检查undorecord里的seq#和 redo record里的seq#.

These seq# should be the  same because when we apply a redo record we must apply itto the correct version of the block.

--正常情况下,这2者的seq# 应该是一致的。

We can only apply a redo record to a  block that contains the same seq# as in the redo record.

--在一致的情况下,我们才应用redo record 到undo record。

If the seq# do not match then ORA-600[4193][a].[b] is raised. .

Arg [a] Undorecord seq number --> seq: 0xde0 = 3552

Arg [b] Redo record seq number --> seq: 0x0de2   = 3554

--如果不一致就会出现ORA-600[4193][a][b]的错误。其中a 是undo 里的seq#记录,b是redo 里的seq# 值。 这里的值都是十六进程,我们可以通过to_number() 这个函数来转换一下:

SYS@anqing1(rac1)>  Select to_number('de0','xxxx') from dual;

TO_NUMBER('DE0','XXXX')

-----------------------

3552

This implies some kind of block corruptionin either the redo or the undo block.

--当redo record 和 undo record 不一致时,就会抛出ORA-600[4193]的错误。

相关的文章参考:

1.2.3 Solution

1.2.3.1 If Database is opened:

--在db open 状态下,解决的方法如下:

1) Find out the rollback segment, based onthe first part of the xid: 0x0002.045.00006c61

usn=2 is the segment_id

select segment_name,status from dba_rollback_segs where segment_id=2;

RS_DATA1   ONLINE

2) Dump the transaction table of the rollbacksegment to see if all TX are commited:

alter system dump undoheader RS_DATA1;

3) check the trace file created underuser_dump_dest

In the trace file search for the Keyword "TRN TBL"

TRN TBL::

index state cflags wrap#   uel   scn            dba

-----------------------------------------------------------------------------

0x00   9     0x00 0x21eb1 0x0023 0x0000.d28c43e9 0x00000000 ......

state=9 means transaction is committed

4) offline the rollback segment:

alter rollback segment rs_data1 offline;

select status from dba_rollback_segs where segment_id=2;

5)   if STATUS=OFFLINE

drop rollback segment RS_DATA1;

1.2.3.2 If Database doesn't open:

--如果数据库不是open状态,处理方法如下:

1.   a) If using rollback segments,remove the rollback_segments line from init.ora, and open database

b) If using undo segments setundo_management = manualin init.ora/spfile, and try to opendatabase.

2. If database opens means all transactions are committed, and you can drop the rollback segment or the undo tablespace

1.3 bug 导致的ORA-600[4193]

MOS:

ORA-600 [4193] "seq# mismatch while adding undo record" [ID 39282.1]

Bug 8240762 - Undo corruptions with ORA-600[4193]/ORA-600 [4194] or ORA-600 [4137] [ID 8240762.8]

Undo corruptionmay be caused after a shrink and the same undo block may be used for two different transactions causing several internal errors like:

ORA-600 [4193] / ORA-600 [4194] for new transactions

ORA-600 [4137] for a transaction rollback

Undo segment shrink is internally done by Oracle.

--undo shrink 导致的undo corruptions

Workaround

Drop the undo segment.

Affects:

Product (Component)

Oracle Server (Rdbms)

Range of versions believed to be affected

Versions >= 10.2 but BELOW 11.2

Versions confirmed as being affected

Platforms affected

Generic (all / most platforms affected)

Fixed:

在Oracle 10.2 以上到11.2 的DB 会受Bug 8240762的影响导致undo 的corruption。在10.2.0.5 中已经修复了这个bug。如果出现这种问题,drop 对应的undo segment 即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html表ge模板_精选甘特图模板,丰富又好用

你听说过甘特图吗?你可能不知道,也有可能是只是听说过但是并不了解。今天我们就来说一说甘特图吧!甘特图其实就是是通过标示出活动顺序和时间间隔来表示某一特定项目的顺序与时间之间的关系的一种图表。与时间表或日程规划表不同的部分是甘特…

js函数提示 vscode_为VSCode / Monaco Intellisence添加JavaScript类型提示

有没有办法暗示VSCode / Monaco的intellisense变量的类型.我有一些像这样的代码var loc window.location;var gl context1.getContext("webgl");var ctx context2.getContext("2d");我看到VSCode知道loc是一个URL但它不知道gl是什么它也不知道ctx是什么…

oracle中调试存储过程,详解Oracle调试存储过程

详解Oracle调试存储过程一 调试关键步骤1、在要调试的存储过程右键,选择编辑以进行调试,截图如下:2、点击小瓢虫,弹出调试窗口,截图如下:3、输入7839员工编号,点击确认,进行调试&…

imp oracle full,Oracle 10g imp 之 full database (转官档)

Using Export and Import to Move a DatabaseBetweenPlatforms10g官档:The Export and Import utilities are the only method that Oracle supports for moving an existing Oracle database from one hardware platform. to another. This includes moving between UNIX and …

python朴素贝叶斯对wine_基于朴素贝叶斯对Wine数据集分类

龙源期刊网http://www.qikan.com.cn基于朴素贝叶斯对Wine数据集分类作者:夏赵建杜友福来源:《电脑知识与技术》2017年第29期摘要:为了解决由于葡萄酒的组成成分十分复杂与多样而导致它的类型分类与品质划分困难的问题,减少由于感官…

伪静态php配置,PHP开启伪静态配置

1.检测Apache是否开启mod_rewrite功能可以通过php提供的phpinfo()函数查看环境配置,找到“Loaded Modules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。…

python flask上传文件_Python-Flask-文件上传

一、Python-Flask-文件上传1、简化版文件上传创建目录:cd 5-4mkdir -p uploads #必须先创建uploads文件夹。upload.htmlTitle文件上传示例app.pyimport osfrom flask import Flask, render_template, send_from_directory, request, jsonify, make_responseimport t…

linux的apache安装在哪个目录,在linux系统下apache的默认安装路径在哪

如果采用RPM包安装,安装路径应在 /etc/httpd目录下。(学习教程推荐:apache)apache配置文件:/etc/httpd/conf/httpd.conf 可以修改相关的访问路径及配置Apache模块路径:/usr/sbin/apachectl 启动模块web目录:/var/www/h…

车子Linux系统,Linux车载系统Automotive Grade Linux

【中关村在线软件资讯】7月8日消息:Linux在车载系统上,并不想落后于苹果、谷歌等竞争对手,这不,Linux最近也推出了可定制的车载系统平台——Automotive Grade Linux,旨在建立一个未来智能汽车系统的标准。Linux车载系统…

linux 进程带宽限制,在Linux中限制网络带宽使用

限制网络流量速率的一种方法是通过一个名为trickle的命令行工具。通过在程序运行时,预先加载一个速率限制 socket 库 的方法,trickle 命令允许你改变任意一个特定程序的流量。 trickle 命令有一个很好的特性是它仅在用户空间中运行,这意味着&…

gpedit msc组策略面板 win10在哪里_windows10的组策略在哪

展开全部请参看:网页链接第一种方法:无论32位还是64位,均可.我的是64位.How to Enable Group Policy Editor (gpedit.msc) In Windows 10 Home EditionLast Updated on: July 10, 2020 by Usman Khurshid这里下载的就是个批处理文件gpedit-enabler.bat,内容是:echo offpushd &q…

linux ping监控脚本,WINDOWS和LINUX下带时间的PING包监控脚本

WINDOWS使用方法;cscript ping.vbs 172.26.163.10 -t -l 1000Dim args, flag, unsuccOutargs""otherout""flag0If WScript.Arguments.count 0 ThenWScript.Echo "Usage: cscript ping.vbs [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]&q…

nx set 怎么实现的原子性_正确地使用Redis的SETNX实现锁机制

setNX,是set if not exists 的缩写,也就是只有不存在的时候才设置, 设置成功时返回 1 , 设置失败时返回 0 。可以利用它来实现锁的效果,但是很多人在使用的过程中都有一些问题没有考虑到。例如某个查询数据库的接口因为请求量比较…

linux img 内核启动,linux的启动流程(initrd.img)

http://www.ibm.com/developerworks/cn/linux/l-initrd.html一、从哪里到哪里本文旨在描述linux中内核如何调用启动,然后如何从img的文件系统切换到硬盘的过程。描述起于:linux-2.6.11/init/main.c中函数 static int init(void * unused)描述止于&#x…

python的flask实现第三方登录怎么写_关于qq和新浪微博的第三方登陆|python|flask

前些日子研究了一下qq和新浪微博的第三方登陆的东西,发现其实难度并不大。来给大家分享一下我的经验和流程。不论是qq还是新浪微博的第三方登陆都是用了Oauth2.0授权流程,唯一不同的是qq多了一个openid的获取,多了一步。先介绍一下Oauth2.0的…

linux boot分区有什么用,/ boot分区的真正作用是什么?

射门很难引导...好吧...这确实是最难的部分。每次启动计算机时,它基本上都会重新适应。它熟悉其各个部分,并且满足每个部分都具有功能。但可以说,它每次都要从自己的引导程序中拉起自己。在设计启动过程时,技巧是逐步启动计算机。…

内存颗粒位宽和容量_64M的SDRAM颗粒 一般内存是多大的?

内存颗粒识别存储颗粒主要有这样的一些品牌:美国的Micron(美光)、德国的Infineon(英飞凌);韩国的SAMSUNG(三星)、HY(现代);日本的NEC(日本电气)、Hitachi(日立)、Mitsubishi(三菱)、Toshiba(东芝);台湾的EilteMT、ESMT(晶豪)、Etr…

linux ios开发环境,iOS开发环境搭建(Linux版)

iOS开发环境搭建(Linux版)2015-05-11 13:26:503057浏览必须申明的是,我们强烈建议大家在Mac下学习iOS应用开发,迫不得已才选择Windows和Linux。看到Linux的环境搭建步骤,早已凌乱。1. Ubuntu 10.10 iPhone Toolchain 4If you use Ubuntu 11.0…

pb9数据窗口中显示行数据与当前行区别_Hive的窗口函数

聚合函数(如sum()、avg()、max()等等)是针对定义的行集(组)执行聚集,每组只返回一个值。窗口函数也是针对定义的行集(组)执行聚集,可为每组返回多个值。如既要显示聚集前的数据,又要…

linux下shell脚本论文,Linux下Shell脚本编程

1、 shell脚本是什么它是一种脚本语言,并非编程语言。可以使用一些逻辑判断、循环等语法。可以自定义子函数,是系统命令的集合。shell脚本可以实现自动化运维,大大增加我们的工作效率。2、shell脚本结构以及执行方法开头行指定bash路径: #! /…