<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>《某集团ebs数据库redo undo丢失导致悲剧》的评论</title>
	<atom:link href="https://www.xifenfei.com/2014/07/%e6%9f%90%e9%9b%86%e5%9b%a2ebs%e6%95%b0%e6%8d%ae%e5%ba%93redo-undo%e4%b8%a2%e5%a4%b1%e5%af%bc%e8%87%b4%e6%82%b2%e5%89%a7.html/feed" rel="self" type="application/rss+xml" />
	<link>https://www.xifenfei.com/2014/07/%e6%9f%90%e9%9b%86%e5%9b%a2ebs%e6%95%b0%e6%8d%ae%e5%ba%93redo-undo%e4%b8%a2%e5%a4%b1%e5%af%bc%e8%87%b4%e6%82%b2%e5%89%a7.html</link>
	<description>提供7*24专业数据库(Oracle,SQL Server,MySQL,PostgreSQL等)恢复和技术支持@Tel:17813235971</description>
	<lastBuildDate>Thu, 11 Dec 2025 02:46:14 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>作者：惜分飞</title>
		<link>https://www.xifenfei.com/2014/07/%e6%9f%90%e9%9b%86%e5%9b%a2ebs%e6%95%b0%e6%8d%ae%e5%ba%93redo-undo%e4%b8%a2%e5%a4%b1%e5%af%bc%e8%87%b4%e6%82%b2%e5%89%a7.html/comment-page-1#comment-3958</link>
		<dc:creator><![CDATA[惜分飞]]></dc:creator>
		<pubDate>Thu, 31 Jul 2014 13:49:19 +0000</pubDate>
		<guid isPermaLink="false">https://www.xifenfei.com/?p=5440#comment-3958</guid>
		<description><![CDATA[ORA-600[4097][][][][][][][] (文档 ID 1030620.6)
[shell]
Problem Description: 
==================== 
 
An ORA-600 [4097] can be encountered through various activities that use 
rollback segments.


Solution Description: 
===================== 
 
The most likely cause of this is BUG 427389.  This BUG is fixed in
version 7.3.3.3.  The BUG is caused when Rollback Segments are dropped and 
recreated after a shutdown abort.  It is encountered through a very specific 
set of circumstances: 
 
When an instance has a rollback segment offline and the instance crashes, or 
the user does a shutdown abort, the rollback segment wrap number does not get 
updated.  If that segment is then dropped and recreated immediately after the 
instance is restarted, the wrap number could be lower than existing wrap 
numbers.  This will cause the ORA-600[4097] to occur in subsequent 
transactions using Rollback. 
 
To avoid encountering this bug, rollback segments should only be dropped and 
recreated after the instance has been shutdown normal and restarted.  If you 
have already encountered the bug, use the following workaround:  
 
   Select segment_name, segment_id from dba_rollback_segs; 
 
   Drop all Rollback Segments except for SYSTEM.  
 
   Recreate dummy (small) rollback segments with the same names in their place. 
 
   Then, recreate additional rollback segments you want to keep with their 
   permanent storage parameters.   
 
   Now drop the dummy ones. This should ensure that the segment_ids are not 
   reused. 

If you ever want to add a rollback segment you have to use the workaround steps
again.  If you do not fill the dummy slots you may see the problem re-appear.
[/shell]]]></description>
		<content:encoded><![CDATA[<p>ORA-600[4097][][][][][][][] (文档 ID 1030620.6)</p>
<pre class="brush: bash; title: ; notranslate">
Problem Description: 
==================== 
 
An ORA-600 [4097] can be encountered through various activities that use 
rollback segments.


Solution Description: 
===================== 
 
The most likely cause of this is BUG 427389.  This BUG is fixed in
version 7.3.3.3.  The BUG is caused when Rollback Segments are dropped and 
recreated after a shutdown abort.  It is encountered through a very specific 
set of circumstances: 
 
When an instance has a rollback segment offline and the instance crashes, or 
the user does a shutdown abort, the rollback segment wrap number does not get 
updated.  If that segment is then dropped and recreated immediately after the 
instance is restarted, the wrap number could be lower than existing wrap 
numbers.  This will cause the ORA-600[4097] to occur in subsequent 
transactions using Rollback. 
 
To avoid encountering this bug, rollback segments should only be dropped and 
recreated after the instance has been shutdown normal and restarted.  If you 
have already encountered the bug, use the following workaround:  
 
   Select segment_name, segment_id from dba_rollback_segs; 
 
   Drop all Rollback Segments except for SYSTEM.  
 
   Recreate dummy (small) rollback segments with the same names in their place. 
 
   Then, recreate additional rollback segments you want to keep with their 
   permanent storage parameters.   
 
   Now drop the dummy ones. This should ensure that the segment_ids are not 
   reused. 

If you ever want to add a rollback segment you have to use the workaround steps
again.  If you do not fill the dummy slots you may see the problem re-appear.
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>作者：惜分飞</title>
		<link>https://www.xifenfei.com/2014/07/%e6%9f%90%e9%9b%86%e5%9b%a2ebs%e6%95%b0%e6%8d%ae%e5%ba%93redo-undo%e4%b8%a2%e5%a4%b1%e5%af%bc%e8%87%b4%e6%82%b2%e5%89%a7.html/comment-page-1#comment-3957</link>
		<dc:creator><![CDATA[惜分飞]]></dc:creator>
		<pubDate>Thu, 31 Jul 2014 13:48:39 +0000</pubDate>
		<guid isPermaLink="false">https://www.xifenfei.com/?p=5440#comment-3957</guid>
		<description><![CDATA[RA-00600:[Kcfrbd_3] 
[shell]
ksedmp: internal or fatal error

ORA-00600: internal error code, arguments: [kcfrbd_3], [13], [64011], [1], [64000], [64000], [], []



Arg [a] File number

Arg [b] Block number

Arg [c] Nro of blocks

Arg [d] Logical File Size

Arg [e] File Size
[/shell]]]></description>
		<content:encoded><![CDATA[<p>RA-00600:[Kcfrbd_3] </p>
<pre class="brush: bash; title: ; notranslate">
ksedmp: internal or fatal error

ORA-00600: internal error code, arguments: [kcfrbd_3], [13], [64011], [1], [64000], [64000], [], []



Arg [a] File number

Arg [b] Block number

Arg [c] Nro of blocks

Arg [d] Logical File Size

Arg [e] File Size
</pre>
]]></content:encoded>
	</item>
	<item>
		<title>作者：惜分飞</title>
		<link>https://www.xifenfei.com/2014/07/%e6%9f%90%e9%9b%86%e5%9b%a2ebs%e6%95%b0%e6%8d%ae%e5%ba%93redo-undo%e4%b8%a2%e5%a4%b1%e5%af%bc%e8%87%b4%e6%82%b2%e5%89%a7.html/comment-page-1#comment-3956</link>
		<dc:creator><![CDATA[惜分飞]]></dc:creator>
		<pubDate>Thu, 31 Jul 2014 13:47:45 +0000</pubDate>
		<guid isPermaLink="false">https://www.xifenfei.com/?p=5440#comment-3956</guid>
		<description><![CDATA[Causes and Solutions for ora-600 [kdsgrp1] (文档 ID 1332252.1)
[shell]
APPLIES TO:

Oracle Database - Enterprise Edition - Version 10.2.0.4 and later
Information in this document applies to any platform.
***Checked for relevance on 12-Dec-2012***
PURPOSE

This document discusses the ora-600 [kdsgrp1] error, its possible causes and the work around solutions that can be tried.

TROUBLESHOOTING STEPS

The ora-600 [kdsgrp1] error is thrown when a fetch operation fails to find the expected row. The error is hit in memory and so may 
be a memory only error or an error that results from corruption on disk.

This error may indicate (but is not restricted to) any of the following conditions:

Lost writes
Parallel DML issues
Index corruption
Data block corruption
Consistent read [CR] issues 
Buffer cache corruption  
A full list of known issues is given in 
Note 285586.1 - ORA-600 [kdsgrp1] 
Each bug has a short description that indicates the circumstances where it is hit. The bug list can be shortened by 
selecting your database release to show only those issues that may affect you.

This issue may be intermittent or it may persist until the underlying disk level corruption is fixed. 
Intermittent issues are likely to be memory based (however intermittent access to the corruption 
can be confused with intermittent memory issues).

Common Work Around Solutions

If the issue is in memory only we can try to immediately resolve the issue by flushing the buffer 
cache but remember to consider the performance impact on production systems:

alter system flush buffer_cache;
If we have an intermittent consistent read issue we can try disabling rowCR which is an optimization 
to reduce consistent-read rollbacks during queries by setting _row_cr=FALSE in the initialization files. 
However, this could lead to performance degradation of queries. Please check the ratio of the two 
statistics &quot;RowCR hits&quot;/&quot;RowCR attempts&quot; to determine whether the workaround is to be used.

If this is a result of index corruption then we can drop and rebuild the index. Note that this will 
require a maintenance window on production systems.

Root Cause Determination
Now lets look at how we discover the root cause of the problem: the first step in finding the root 
cause of this issue is to inspect the generated trace file. The ora-600 will generate both a 
trace file in the trace directory and an incident file under the incident id within the incident directory. 
The top part of the trace file tells us the SQL that was being run when the error was hit:

----- Current SQL Statement for this session (sql_id=9mamr7xn4wg7x) ----- 
 
This immediately shows us the data objects that were accessed. Searching the trace file for the 
text string &#039;Plan Table&#039; will locate the SQL execution plan that is dumped within this trace file. 
For a persistent issue this allows us to determine which indexes have been accessed and so identify 
indexes that should be validated to check for block corruption:

SQL&gt; analyze index scott.pk_dept validate structure online; 

Index analyzed.

An other approach we can take is to use the file and block information contained in the trace file. 
At the top of the trace file we will find information on the block where the corruption was found:

*** SESSION ID:(3202.5644) 2011-03-19 04:12:16.910 
row 07c7c8c7.a continuation at 
file# 31 block# 510151 slot 11 not found

This information can be used to identify the object details in dba_extents:

Select owner, segment_name, segment_type, partition_name,tablespace_name 
From dba_extents 
Where relative_fno = &lt;file id&gt; 
And &lt;block#&gt; between block_id and (block_id+blocks-1);

We can then validate this object, for example a table and all it&#039;s indexes:

Analyze table scott.dept validate structure cascade online;
Remember that we may be dealing with a permanent corruption that is not located in the object blocks themselves. 
Examples of this include:

Dictionary corruption issue from transportable tablespace operations: check dba_tablespaces to 
see if the tablespace has been plugged in.
Lost writes in ASM diskgroup mirrors - most likely to be seen when there is heavy IO and disk resync activity. 
To check this run dbms_diskgroup.checkfile to detect mirror discrepancies
If analyze reports no corruption then check if there are any chained rows on the table. If these exist then 
we may have an undetected corruption and the issue should reproduce whenever the SQL is run. 
Exporting the table will also detect this issue.

If analyze and exporting the table (in the presence of chained rows) both report no errors 
then this should be considered a consistent read issue.

Once you understand the nature of the problem you can review the list of known bugs and determine 
which one matches your condition. If you cannot determine which issue is affecting you then open 
a service request with Oracle Support and upload the RDBMS and ASM (if applicable)instance alert 
logs for all nodes, any trace and incident files generated and a full description of the nature of the problem.
[/shell]]]></description>
		<content:encoded><![CDATA[<p>Causes and Solutions for ora-600 [kdsgrp1] (文档 ID 1332252.1)</p>
<pre class="brush: bash; title: ; notranslate">
APPLIES TO:

Oracle Database - Enterprise Edition - Version 10.2.0.4 and later
Information in this document applies to any platform.
***Checked for relevance on 12-Dec-2012***
PURPOSE

This document discusses the ora-600 [kdsgrp1] error, its possible causes and the work around solutions that can be tried.

TROUBLESHOOTING STEPS

The ora-600 [kdsgrp1] error is thrown when a fetch operation fails to find the expected row. The error is hit in memory and so may 
be a memory only error or an error that results from corruption on disk.

This error may indicate (but is not restricted to) any of the following conditions:

Lost writes
Parallel DML issues
Index corruption
Data block corruption
Consistent read [CR] issues 
Buffer cache corruption  
A full list of known issues is given in 
Note 285586.1 - ORA-600 [kdsgrp1] 
Each bug has a short description that indicates the circumstances where it is hit. The bug list can be shortened by 
selecting your database release to show only those issues that may affect you.

This issue may be intermittent or it may persist until the underlying disk level corruption is fixed. 
Intermittent issues are likely to be memory based (however intermittent access to the corruption 
can be confused with intermittent memory issues).

Common Work Around Solutions

If the issue is in memory only we can try to immediately resolve the issue by flushing the buffer 
cache but remember to consider the performance impact on production systems:

alter system flush buffer_cache;
If we have an intermittent consistent read issue we can try disabling rowCR which is an optimization 
to reduce consistent-read rollbacks during queries by setting _row_cr=FALSE in the initialization files. 
However, this could lead to performance degradation of queries. Please check the ratio of the two 
statistics &quot;RowCR hits&quot;/&quot;RowCR attempts&quot; to determine whether the workaround is to be used.

If this is a result of index corruption then we can drop and rebuild the index. Note that this will 
require a maintenance window on production systems.

Root Cause Determination
Now lets look at how we discover the root cause of the problem: the first step in finding the root 
cause of this issue is to inspect the generated trace file. The ora-600 will generate both a 
trace file in the trace directory and an incident file under the incident id within the incident directory. 
The top part of the trace file tells us the SQL that was being run when the error was hit:

----- Current SQL Statement for this session (sql_id=9mamr7xn4wg7x) ----- 
 
This immediately shows us the data objects that were accessed. Searching the trace file for the 
text string 'Plan Table' will locate the SQL execution plan that is dumped within this trace file. 
For a persistent issue this allows us to determine which indexes have been accessed and so identify 
indexes that should be validated to check for block corruption:

SQL&gt; analyze index scott.pk_dept validate structure online; 

Index analyzed.

An other approach we can take is to use the file and block information contained in the trace file. 
At the top of the trace file we will find information on the block where the corruption was found:

*** SESSION ID:(3202.5644) 2011-03-19 04:12:16.910 
row 07c7c8c7.a continuation at 
file# 31 block# 510151 slot 11 not found

This information can be used to identify the object details in dba_extents:

Select owner, segment_name, segment_type, partition_name,tablespace_name 
From dba_extents 
Where relative_fno = &lt;file id&gt; 
And &lt;block#&gt; between block_id and (block_id+blocks-1);

We can then validate this object, for example a table and all it's indexes:

Analyze table scott.dept validate structure cascade online;
Remember that we may be dealing with a permanent corruption that is not located in the object blocks themselves. 
Examples of this include:

Dictionary corruption issue from transportable tablespace operations: check dba_tablespaces to 
see if the tablespace has been plugged in.
Lost writes in ASM diskgroup mirrors - most likely to be seen when there is heavy IO and disk resync activity. 
To check this run dbms_diskgroup.checkfile to detect mirror discrepancies
If analyze reports no corruption then check if there are any chained rows on the table. If these exist then 
we may have an undetected corruption and the issue should reproduce whenever the SQL is run. 
Exporting the table will also detect this issue.

If analyze and exporting the table (in the presence of chained rows) both report no errors 
then this should be considered a consistent read issue.

Once you understand the nature of the problem you can review the list of known bugs and determine 
which one matches your condition. If you cannot determine which issue is affecting you then open 
a service request with Oracle Support and upload the RDBMS and ASM (if applicable)instance alert 
logs for all nodes, any trace and incident files generated and a full description of the nature of the problem.
</pre>
]]></content:encoded>
	</item>
</channel>
</rss>
