标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-01595 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,748)
- DB2 (22)
- MySQL (75)
- Oracle (1,594)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (162)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (68)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (584)
- Oracle安装升级 (96)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (84)
- PostgreSQL (30)
- pdu工具 (6)
- PostgreSQL恢复 (9)
- SQL Server (30)
- SQL Server恢复 (11)
- TimesTen (7)
- 达梦数据库 (2)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (38)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (21)
-
最近发表
- Oracle 19c 202504补丁(RUs+OJVM)-19.27
- Oracle Recovery Tools修复ORA-600 6101/kdxlin:psno out of range故障
- pdu完美支持金仓数据库恢复(KingbaseES)
- 虚拟机故障引起ORA-00310 ORA-00334故障处理
- pg创建gbk字符集库
- PostgreSQL运行日志管理
- ora-600 kdsgrp1 错误描述
- GAM、SGAM 或 PFS 页上存在页错误处理
- ORA-600 krhpfh_03-1208
- VMware勒索加密恢复(vmdk勒索恢复)
- ORA-39773: parse of metadata stream failed故障处理
- sql数据库备份失败—失败: 23(数据错误(循环冗余检查)
- vmdk文件被加密恢复(虚拟机文件加密)
- 差点被误操作的ORA-600 kcratr_nab_less_than_odr故障
- win平台19c 打patch遭遇2个小问题汇总
- pg单个数据库目录恢复-pdu恢复单个数据库目录数据
- pg删除数据恢复—pdu恢复pg delete数据
- .[OnlyBuy@cyberfear.com].REVRAC勒索mysql恢复
- 表dml操作权限授权给public,导致只读用户失效
- 21c数据库恢复遭遇ora-600 ktugct: corruption detected
标签归档:kdsgrp1
ora-600 kdsgrp1 错误描述
当 fetch作找不到预期的行时,会引发 ora-600 [kdsgrp1] 错误。该错误在内存中命中,因此可能是仅内存错误或由磁盘损坏导致的错误。
此错误可能表示(但不限于)以下任何情况:
- 丢失写入
- 并行 DML 问题
- 索引损坏
- 数据块损坏
- 一致性读取 [CR] 问题
- 缓冲区缓存损坏
说明 285586.1 - ORA-600 [kdsgrp1] 中
提供了已知问题的完整列表:
每个错误都有一个简短描述,指示遇到它的情况。可以通过选择您的数据库版本来缩短 bug 列表,以仅显示可能影响您的问题。
此问题可能是间歇性的,也可能持续存在,直到修复底层磁盘级别损坏为止。间歇性问题可能是基于内存的(但是,对损坏的间歇性访问可能会与间歇性内存问题相混淆)。
常见的解决方法
如果问题仅在内存中,我们可以尝试通过刷新缓冲区缓存来立即解决问题,但请记住考虑对生产系统的性能影响:
更改系统刷新buffer_cache;
如果我们遇到间歇性一致性读取问题,我们可以尝试禁用 rowCR,这是一种优化,通过在初始化文件中设置 _row_cr=FALSE 来减少查询期间的一致性读取回滚。但是,这可能会导致查询的性能下降。请检查“RowCR hits”/“RowCR attempts”这两个统计信息的比率,以确定是否要使用解决方法。
如果这是索引损坏的结果,那么我们可以删除并重新构建索引。请注意,这将需要在 生产系统上有一个 maintenance window。
根本原因确定
现在让我们看看我们如何发现问题的根本原因:查找此问题根本原因的第一步是检查生成的跟踪文件。ora-600 将在跟踪目录中生成跟踪文件,并在事件目录中的事件 ID 下生成事件文件。
跟踪文件的顶部告诉我们遇到错误时正在运行的 SQL:
—–此会话的当前 SQL 语句 (sql_id=9mamr7xn4wg7x) —–
这立即向我们显示了访问的数据对象。在跟踪文件中搜索文本字符串 ‘Plan Table’ 将找到此跟踪文件中转储的 SQL 执行计划。对于持久性问题,这允许我们确定哪些索引已被访问,从而确定应验证以检查块损坏的索引:
SQL>分析索引 <OWNER>.<INDEX NAME>在线验证结构;
指数分析。
我们可以采取的另一种方法是使用 trace 文件中包含的 file 和 block 信息。在跟踪文件的顶部,我们将找到有关发现损坏的块的信息:
会话 ID:(3202.5644) 2011-03-19 04:12:16.910
行 07c7c8c7.a 在
文件# 31 块# 510151插槽 11 未找到的延续
行 07c7c8c7.a 在
文件# 31 块# 510151插槽 11 未找到的延续
此信息可用于识别 dba_extents 中的对象详细信息:
从 dba_extents 中选择 owner、segment_name、segment_type、partition_name,tablespace_name
其中 relative_fno = <文件 id>
并且 <block#> 在 block_id 和 (block_id+blocks-1) 之间;
其中 relative_fno = <文件 id>
并且 <block#> 在 block_id 和 (block_id+blocks-1) 之间;
然后我们可以验证这个对象,例如一个表和它的所有索引:
分析表 <OWNER>.<TABLE NAME>在线验证结构级联;
请记住,我们可能正在处理不在对象块本身中的永久损坏。这方面的示例包括:
- 可传输表空间作导致的字典损坏问题:检查 dba_tablespaces 以查看表空间是否已插入。
- ASM 磁盘组镜像中的写入丢失 – 最有可能在存在大量 IO 和磁盘重新同步活动时看到。要检查此内容,请运行 dbms_diskgroup.checkfile 以检测镜像差异
如果 analyze 报告没有损坏,则检查表上是否有任何链接的行。如果存在这些,则可能存在未检测到的损坏,并且每当运行 SQL 时,问题都会再次出现。导出表也会检测到此问题。
如果 analyze 和 export 表(在存在链式行的情况下)都报告没有错误,则应将其视为一致性读取问题。
了解问题的性质后,您可以查看已知 bug 列表并确定哪个 bug 与您的条件匹配。如果您无法确定哪个问题影响了您,请向 Oracle 技术支持提交服务请求,并上传所有节点的 RDBMS 和 ASM(如果适用)实例警报日志、生成的任何跟踪和事件文件以及问题性质的完整描述。
|
解决CON$ ORA-600 kdsgrp1错误
数据库报ORA 600 kdsgrp1错误
数据库报ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], []错
Thread 1 advanced to log sequence 23861 (LGWR switch) Current log# 7 seq# 23861 mem# 0: /oradata/easdb/redo07.log Tue Nov 15 10:00:42 2016 Errors in file /u01/oracle/diag/rdbms/easdb/easdb/trace/easdb_dw00_3165.trc (incident=908262): ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], [] Incident details in: /u01/oracle/diag/rdbms/easdb/easdb/incident/incdir_908262/easdb_dw00_3165_i908262.trc Tue Nov 15 10:00:55 2016 Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Tue Nov 15 10:00:56 2016 Errors in file /u01/oracle/diag/rdbms/easdb/easdb/trace/easdb_dw00_3165.trc (incident=908263): ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], [] ORA-06512: at "SYS.KUPW$WORKER", line 1751 ORA-06512: at line 2 Incident details in: /u01/oracle/diag/rdbms/easdb/easdb/incident/incdir_908263/easdb_dw00_3165_i908263.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. DW00 terminating with fatal err=600, pid=40, wid=1, job SYSTEM. Tue Nov 15 10:01:01 2016 Thread 1 advanced to log sequence 23862 (LGWR switch) Current log# 2 seq# 23862 mem# 0: /oradata/easdb/redo02.log Tue Nov 15 10:01:23 2016 Errors in file /u01/oracle/diag/rdbms/easdb/easdb/trace/easdb_dm00_3163.trc (incident=908254): ORA-31671: Worker process DW00 had an unhandled exception. ORA-00600: internal error code, arguments: [kdsgrp1], [], [], [], [], [], [], [], [], [], [], [] ORA-06512: at "SYS.KUPW$WORKER", line 1751 ORA-06512: at line 2 Incident details in: /u01/oracle/diag/rdbms/easdb/easdb/incident/incdir_908254/easdb_dm00_3163_i908254.trc Use ADRCI or Support Workbench to package the incident. See Note 411.1 at My Oracle Support for error and packaging details. Tue Nov 15 10:01:26 2016 Tue Nov 15 10:01:28 2016 Thread 1 advanced to log sequence 23863 (LGWR switch) Current log# 4 seq# 23863 mem# 0: /oradata/easdb/redo04.log
trace文件中信息
*** 2016-11-15 10:00:35.977 * kdsgrp1-1: ************************************************* row 0x004459e6.26 continuation at 0x004459e6.26 file# 1 block# 285158 slot 38 not found KDSTABN_GET: 0 ..... ntab: 1 curSlot: 38 ..... nrows: 208 kdsgrp - dump CR block dba=0x004459e6 Block header dump: 0x004459e6 Object id on Block? Y seg/obj: 0x1c csc: 0x01.c712f743 itc: 3 flg: - typ: 1 - DATA fsl: 0 fnx: 0x0 ver: 0x01 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0x000b.015.0036d715 0x00c01bba.0fbd.02 C--- 0 scn 0x0001.c6b4cb1a 0x02 0x000c.004.00044d36 0x04c0dd93.3eec.33 C--- 0 scn 0x0001.c6d2c65b 0x03 0x000d.008.00008eb9 0x04c0777a.10e3.02 --U- 2 fsc 0x0056.c7346f21
确定报错对象和确认异常
SQL> select object_name from dba_objects where object_id=28; OBJECT_NAME --------------------------------------------------------- CON$ SQL> ANALYZE TABLE sys.CON$ VALIDATE STRUCTURE CASCADE online; ANALYZE TABLE sys.CON$ VALIDATE STRUCTURE CASCADE online * ERROR at line 1: ORA-01499: table/index cross reference failure - see trace file SQL> SET LINES 122 SQL> COL INDEX_OWNER FOR A20 SQL> COL INDEX_NAME FOR A30 SQL> COL TABLE_OWNER FOR A20 SQL> COL COLUMN_NAME FOR A25 SQL> SELECT TABLE_OWNER,INDEX_NAME,COLUMN_NAME,COLUMN_POSITION 2 FROM Dba_Ind_Columns 3 WHERE table_name = upper('&TABLE_NAME') order by TABLE_OWNER,INDEX_OWNER,INDEX_NAME,COLUMN_POSITION; Enter value for table_name: CON$ old 3: WHERE table_name = upper('&TABLE_NAME') order by TABLE_OWNER,INDEX_OWNER,INDEX_NAME,COLUMN_POSITION new 3: WHERE table_name = upper('CON$') order by TABLE_OWNER,INDEX_OWNER,INDEX_NAME,COLUMN_POSITION TABLE_OWNER INDEX_NAME COLUMN_NAME COLUMN_POSITION -------------------- ------------------------------ ------------------------- --------------- SYS I_CON1 OWNER# 1 SYS I_CON1 NAME 2 SYS I_CON2 CON# 1 SQL> select owner#,name from con$ 2 minus 3 select /*+ full(t) */owner#,name from con$ t; no rows selected SQL> select /*+ full(t) */owner#,name from con$ t 2 minus 3 select owner#,name from con$ ; no rows selected SQL> select /*+ full(t) */ con# from con$ t 2 minus 3 select con# from con$ ; no rows selected SQL> select con# from con$ 2 minus 3 select /*+ full(t) */ con# from con$ t ; CON# ---------- 1037224 1037225 1037386 1037387 1037388 …… 1037846 62 rows selected.
通过上述分析,可以确定是由于CON$和I_CON2数据不一致,而且是index的数据比表中多了62条.针对这样情况,考虑通过重建index来解决.
尝试rebuild index
SQL> alter index I_CON2 rebuild online; alter index I_CON2 rebuild online * ERROR at line 1: ORA-00701: object necessary for warmstarting database cannot be altered SQL> SQL> SQL> SQL> SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup upgrade ORACLE instance started. Total System Global Area 2421825536 bytes Fixed Size 2215744 bytes Variable Size 1828716736 bytes Database Buffers 570425344 bytes Redo Buffers 20467712 bytes Database mounted. Database opened. SQL> alter index I_CON2 rebuild; alter index I_CON2 rebuild * ERROR at line 1: ORA-00701: object necessary for warmstarting database cannot be altered
因为是数据库核心index,无法直接rebuild解决,只能通过bootstrap$核心index(I_OBJ1,I_USER1,I_FILE#_BLOCK#,I_IND1,I_TS#,I_CDEF1等)异常恢复—ORA-00701错误解决 方式解决
ORA-600 kdsgrp1
在硬件恢复,断电,redo异常等恢复case中ORA-600 [kdsgrp1]是一个比较常见的错误,这里该出来官方关于该错误的解释说明和处理方法
RROR: Format: ORA-600 [kdsgrp1] VERSIONS: versions 10.1 and above DESCRIPTION: This error was introduced in 10g with the fix to Bug 2442351, it provides for an extra health check on a block, we detected a null row header, see Note:2442351.9 for more information. Error may be caused by: Case 1. A row referenced in an index that does not exist in the table. Case 2. An non-existent rowid pointed to by a chained row. Trace Examples: Case 1. Mismatch between table and index: ==================================================== Trace file has: row 02433566.13 continuation at file# 9 block# 210278 slot 20 not found The file=9 block=210278 is rdba=0x02433566 which was taken from an index: row#3[7549] flag: ------, lock: 0, len=85, data:(6): 02 43 35 66 00 14 But the slot 20 does not exist in the table block: tab 0, row 1, @0x1e62 tl: 2 fb: --HDFL-- lb: 0x3 tab 0, row 12, @0x191a tl: 2 fb: --HDFL-- lb: 0x1 tab 0, row 17, @0x1675 tl: 2 fb: --HDFL-- lb: 0x2 tab 0, row 21, @0x1459 tl: 2 fb: --HDFL-- lb: 0x4 ORA-1499 may be produced by analyze: analyze table <table name> validate structure cascade; Case 2. A row points to another rowid which does not exist (Chained row does not exist). ============================================================================================ Trace file has: row 1186b11a.ffffffff continuation at file# 70 block# 441621 slot 1 not found It means that row with rdba 0x1186b11a continues in file# 70 block# 441621 slot 1. But the information in file# 70 block# 441621 slot 1 does not exist. It is: tab 0, row 16, @0xd7f ---> This is the slot with the problem. tl: 29 fb: -------- lb: 0x0 cc: 11 nrid: 0x1186bd15.1 ---> It points to rdba=0x1186bd15 slot 1 (file# 70 block# 441621 slot 1) but that row does not exist in that block. For this case ANALYZE TABLE .. VALIDATE STRUCTURE is not detecting this logical corruption Referece Bug 6858313 Run an export (exp) or Full Table Scan to identify if there is a permanent invalid chained row. Workaround for Case 2: The row producing the ORA-600 [kdsgrp1] can be skipped by setting the Event 10231 Note that a testcase has concluded that event 10231 does not skip rows in an Index Organized Table (IOT) when there is an invalid nrid as explained in Case 2. It only works for regular tables. Event 43810 skip corrupt block in IOT?s (10.2.0.4) nor parameter _index_scan_check_skip_corrupt (11g) work for this case 2 on IOTs either. FUNCTIONALITY: Kernel Data layer Seek/Scan IMPACT: PROCESS FAILURE POSSIBLE PHYSICAL CORRUPTION