标签云
asm恢复 bbed bootstrap$ dul kcbzib_kcrsds_1 kccpb_sanity_check_2 kcratr_nab_less_than_odr MySQL恢复 obet ORA-00312 ORA-00704 ORA-00742 ORA-01110 ORA-01200 ORA-01555 ORA-01578 ORA-01595 ORA-600 2662 ORA-600 2663 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-600 kcratr_nab_less_than_odr 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 比特币加密文章分类
- MongoDB (1)
- MongoDB恢复 (1)
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (112)
- 数据库 (1,882)
- DB2 (22)
- MySQL (82)
- Oracle (1,707)
- Data Guard (53)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (168)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (72)
- Oracle Bug (8)
- Oracle RAC (56)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (661)
- Oracle安装升级 (108)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (91)
- PostgreSQL (37)
- pdu工具 (7)
- PostgreSQL恢复 (13)
- SQL Server (34)
- SQL Server恢复 (14)
- TimesTen (7)
- 达梦数据库 (5)
- 达梦恢复 (3)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (51)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (34)
- MongoDB (1)
-
最近发表
- 断电引起ORA-600 3005故障处理
- 记录一次云存储资源到期之后引起的数据库恢复
- Firebird 损坏数据库数据抢救工具—firebirdext
- Oracle 19c 202610补丁(RUs+OJVM)-19.33
- 由于con$.con#值达到极限,触发数据库增加约束报ORA-600 12807错误
- MongoDB 离线提取工具—mongoext
- .bres勒索病毒加密数据库dmp文件可恢复
- ORA-600 krsm_mrp_rebuild_lf_list.lno_mismatch
- 记录一次0丢失的ORA-00354: 损坏重做日志块标头故障恢复
- 不当数据库恢复操作导致一个月数据丢失
- obet快速修复oracle 位图损坏块
- 不太常见的10.2.0.1的oracle redo损坏恢复
- obet forcecopy功能抢救硬件故障中的数据文件
- kcratr_nab_less_than_odr和system坏块故障处理
- 通过obet 恢复system坏块,打开数据库
- obet dbv功能完整说明
- 分享一例运行在aix上的sap系统数据库恢复过程
- OBET-Oracle Block Editor Tool使用说明
- 几乎动用了所有手段的Oracle故障恢复
- Oracle Block Edit Tool (obet) 功能增强–2026.07
分类目录归档:Oracle
hp平台rdisk中磁盘丢失导致asm启动报ORA-15042恢复
有老朋友找到我,说一个客户的数据库异常,问题是asm无法正常mount,提示是缺少两块磁盘.问我是否可以恢复.因为是内网环境,通过他那边发过来的零零散散的信息,大概分析如下
asm alert日志报错
ERROR: diskgroup DGROUP1 was not mounted
Fri Aug 12 16:03:12 EAT 2016 SQL> alter diskgroup DGROUP1 mount Fri Aug 12 16:03:12 EAT 2016 NOTE: cache registered group DGROUP1 number=1 incarn=0xf6781b5c Fri Aug 12 16:03:12 EAT 2016 NOTE: Hbeat: instance first (grp 1) Fri Aug 12 16:03:16 EAT 2016 NOTE: start heartbeating (grp 1) Fri Aug 12 16:03:16 EAT 2016 NOTE: cache dismounting group 1/0xF6781B5C (DGROUP1) NOTE: dbwr not being msg'd to dismount ERROR: diskgroup DGROUP1 was not mounted
前台尝试mount asm 磁盘组报错ORA-15042

从这里可以明显的看出来asm 磁盘组无法正常mount,是由于缺少asm disk 15,16.如果想恢复asm,最好的方法就是找出来这两个磁盘.通过kfed对现在的磁盘进行分析,最后我们发现asm disk 14对应的磁盘为disk160,,asm disk 17对应的disk163,根据第一感觉很可能是disk161和disk161两块盘异常,让机房检查硬件无任何告警
OS层面分析
省略和本次结论无关的记录
ls -l /dev/rdisk crw-rw---- 1 oracle dba 13 0x000070 Jan 1 2016 disk160 crw-rw---- 1 oracle dba 13 0x000073 Jan 1 2016 disk163 ls -l /dev/disk brw-r----- 1 bin sys 1 0x000070 Jan 13 2015 disk160 brw-r----- 1 bin sys 1 0x000071 Jan 13 2015 disk161 brw-r----- 1 bin sys 1 0x000072 Jan 13 2015 disk162 brw-r----- 1 bin sys 1 0x000073 Jan 13 2015 disk163
这里我们发现在hp unix中/dev/disk下面磁盘都存在,但是/dev/rdisk下面丢失,通过ioscan相关命令继续分析
ioscan -fNnkC disk
disk 160 64000/0xfa00/0x70 esdisk CLAIMED DEVICE HP OPEN-V
/dev/disk/disk160 /dev/rdisk/disk160
disk 161 64000/0xfa00/0x71 esdisk CLAIMED DEVICE HP OPEN-V
/dev/disk/disk161
disk 162 64000/0xfa00/0x72 esdisk CLAIMED DEVICE HP OPEN-V
/dev/disk/disk162
disk 163 64000/0xfa00/0x73 esdisk CLAIMED DEVICE HP OPEN-V
/dev/disk/disk163 /dev/rdisk/disk163
这里我们基本上可以确定是/dev/rdisk下面的盘发生丢失.进一步分析,因为rdisk是聚合后的盘符,那我们分析聚合前的盘符是否正常
ioscan -m dsf
/dev/rdisk/disk160 /dev/rdsk/c29t12d4
/dev/rdsk/c28t12d4
/dev/rdisk/disk163 /dev/rdsk/c29t12d7
/dev/rdsk/c28t12d7
ls -l /dev/rdsk
crw-r----- 1 bin sys 188 0x1dc000 Apr 22 2014 c29t12d0
crw-r----- 1 bin sys 188 0x1dc100 Apr 22 2014 c29t12d1
crw-r----- 1 bin sys 188 0x1dc300 Jan 13 2015 c29t12d3
crw-r----- 1 bin sys 188 0x1dc400 Jan 13 2015 c29t12d4
crw-r----- 1 bin sys 188 0x1dc500 Jan 13 2015 c29t12d5
crw-r----- 1 bin sys 188 0x1dc600 Jan 13 2015 c29t12d6
crw-r----- 1 bin sys 188 0x1dc700 Jan 13 2015 c29t12d7
crw-r----- 1 bin sys 188 0x1cc100 Apr 22 2014 c28t12d1
crw-r----- 1 bin sys 188 0x1cc300 Jan 13 2015 c28t12d3
crw-r----- 1 bin sys 188 0x1cc400 Jan 13 2015 c28t12d4
crw-r----- 1 bin sys 188 0x1cc500 Jan 13 2015 c28t12d5
crw-r----- 1 bin sys 188 0x1cc600 Jan 13 2015 c28t12d6
crw-r----- 1 bin sys 188 0x1cc700 Jan 13 2015 c28t12d7
通过这里我们基本上可以大概判断出来/dev/rdsk/c28t12d5,/dev/rdsk/c28t12d6,/dev/rdsk/c29t12d5,/dev/rdsk/c29t12d6就是我们需要找的/dev/rdisk/disk161和disk162的聚合之前的盘符.也就是说,现在我们判断只有/dev/rdisk下面的字符设备有问题,其他均正常.
通过系统命令修复异常
insf -e -H 64000/0xfa00/0x71 insf -e -H 64000/0xfa00/0x72

现在已经可以正常看到/dev/rdisk/disk161和/dev/rdisk/disk162盘符,初步判断,os层面盘符已经恢复正常.修改磁盘权限和所属组
chmod 660 /dev/rdisk/disk161 chmod 660 /dev/rdisk/disk162 chown oracle:dba /dev/rdisk/disk161 chown oracle:dba /dev/rdisk/disk162
正常启动asm,mount磁盘组,open数据库

这次的恢复,主要是从操作系统层面判断解决问题,从而实现数据库完美恢复,数据0丢失.有类似恢复案例:分区无法识别导致asm diskgroup无法mount
如果您遇到此类情况,无法解决请联系我们,提供专业ORACLE数据库恢复技术支持
Phone:17813235971 Q Q:107644445
E-Mail:dba@xifenfei.com
ORA-600 kcbz_check_objd_typ_1 处理
客户数据库异常(ORA-600 kcbz_check_objd_typ_1),让我们远程给分析处理
ORA-600 kcbz_check_objd_typ_1异常
Mon Aug 8 12:19:28 2016 Completed: ALTER DATABASE OPEN Mon Aug 8 12:19:29 2016 db_recovery_file_dest_size of 20480 MB is 0.00% used. This is a user-specified limit on the amount of space that will be used by this database for recovery-related files, and does not reflect the amount of space available in the underlying filesystem or ASM diskgroup. Mon Aug 8 12:19:33 2016 Errors in file /home/oracle/admin/RT/bdump/rt_smon_1514.trc: ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_1], [0], [0], [1], [], [], [], [] Mon Aug 8 12:20:21 2016 Shutting down archive processes Mon Aug 8 12:20:26 2016 ARCH shutting down ARC3: Archival stopped Mon Aug 8 13:12:25 2016 Thread 1 advanced to log sequence 13804 Current log# 3 seq# 13804 mem# 0: /home/oracle/product/10.2.0/oradata/RT/redo03a.log Mon Aug 8 14:01:37 2016 Thread 1 advanced to log sequence 13805 Current log# 2 seq# 13805 mem# 0: /home/oracle/product/10.2.0/oradata/RT/redo02a.log Mon Aug 8 14:20:51 2016 Errors in file /home/oracle/admin/RT/bdump/rt_smon_1514.trc: ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_1], [0], [0], [1], [], [], [], [] Mon Aug 8 15:54:47 2016 Thread 1 advanced to log sequence 13808 Current log# 2 seq# 13808 mem# 0: /home/oracle/product/10.2.0/oradata/RT/redo02a.log Mon Aug 8 16:21:48 2016 Errors in file /home/oracle/admin/RT/bdump/rt_smon_1514.trc: ORA-00600: internal error code, arguments: [kcbz_check_objd_typ_1], [0], [0], [1], [], [], [], [] Mon Aug 8 16:22:05 2016 Errors in file /home/oracle/admin/RT/bdump/rt_pmon_1500.trc: ORA-00474: SMON process terminated with error
这里比较明显,数据库报大量ORA-600 kcbz_check_objd_typ_1错误之后,然后smon进程终止,实例crash.
smon trace文件
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options ORACLE_HOME = /home/oracle/product/10.2.0/db_1 System name: SunOS Node name: st104 Release: 5.10 Version: Generic_141445-09 Machine: i86pc Instance name: RT Redo thread mounted by this instance: 1 Oracle process number: 12 Unix process pid: 1514, image: oracle@st104 (SMON) *** 2016-08-08 12:19:26.868 *** SERVICE NAME:() 2016-08-08 12:19:26.868 *** SESSION ID:(383.1) 2016-08-08 12:19:26.868 Dead transaction 0x003d.002.0000f964 recovered by SMON Dead transaction 0x0041.017.00004d55 recovered by SMON Dead transaction 0x0047.002.0000180c recovered by SMON Dead transaction 0x004c.01c.00001b57 recovered by SMON *** SESSION ID:(383.1) 2016-08-08 12:19:27.470 DATA seg.obj=0, on-disk obj=925949, dsflg=0, dsobj=923715, cls=4 Formatted dump of block: buffer tsn: 4 rdba: 0x0100336b (4/13163) scn: 0x09c6.b2c7f7a2 seq: 0x02 flg: 0x04 tail: 0xf7a20602 frmt: 0x02 chkval: 0x649b type: 0x06=trans data Hex dump of block: st=0, typ_found=1 *** SESSION ID:(383.1) 2016-08-08 12:19:34.244 DATA seg.obj=0, on-disk obj=925950, dsflg=0, dsobj=923671, cls=4 Formatted dump of block: buffer tsn: 4 rdba: 0x01003343 (4/13123) scn: 0x09c6.b2c7f7dc seq: 0x02 flg: 0x04 tail: 0xf7dc0602 frmt: 0x02 chkval: 0x8013 type: 0x06=trans data Hex dump of block: st=0, typ_found=1 *** SESSION ID:(383.1) 2016-08-08 12:19:35.197 DATA seg.obj=0, on-disk obj=925941, dsflg=0, dsobj=923657, cls=4 Formatted dump of block: buffer tsn: 7 rdba: 0x01c03d53 (7/15699) scn: 0x09c6.b2c7f570 seq: 0x02 flg: 0x04 tail: 0xf5700602 frmt: 0x02 chkval: 0xe5c5 type: 0x06=trans data Hex dump of block: st=0, typ_found=1 *** SESSION ID:(383.1) 2016-08-08 12:19:38.965 DATA seg.obj=0, on-disk obj=925948, dsflg=0, dsobj=923656, cls=4 Formatted dump of block: buffer tsn: 7 rdba: 0x01c03a6b (7/14955) scn: 0x09c6.b2c7f745 seq: 0x02 flg: 0x04 tail: 0xf7450602 frmt: 0x02 chkval: 0x58c5 type: 0x06=trans data Hex dump of block: st=0, typ_found=1
这里可以看出来有block中的obj和dataobj不匹配.
查询seg$.type=3
type=3为临时对象,由于异常原因导致smon在清理temp对象无法正常完成,从而使得smon终止,实例crash.
SQL> select file#, block#, ts# from seg$ where type# = 3;
FILE# BLOCK# TS#
---------- ---------- ----------
4 13163 4
4 13123 4
7 15699 7
7 14955 7
ORA-600 kcbz_check_objd_typ_1处理方法
1) Check tablespace bitmap
SQL> oradebug setmypid
SQL> exec dbms_space_admin.tablespace_verify('&TBSP_NAME')
SQL> oradebug tracefile_name
or if the tablespace involved is an ASSM tablespace:
SQL> oradebug setmypid
SQL> exec dbms_space_admin.assm_tablespace_verify ('&TBSP_NAME',dbms_space_admin.TS_VERIFY_BITMAPS)
SQL> oradebug tracefile_name
I am expecting to fail
2) Corrupt these temp segments
SQL> exec dbms_space_admin.segment_corrupt('&TBSP_NAME', &FILE#, &BLOCK#)
3) Drop them
SQL> exec dbms_space_admin.segment_drop_corrupt('&TBSP_NAME', &FILE#, &BLOCK#)
4) Rebuild tablespace bitmap
exec DBMS_SPACE_ADMIN.TABLESPACE_REBUILD_BITMAPS('&TBSP_NAME')
5) Verify the tablespace again
SQL> oradebug setmypid
SQL> exec dbms_space_admin.tablespace_verify('&TBSP_NAME')
SQL> oradebug tracefile_name
or if the tablespace involved is an ASSM tablespace:
SQL> oradebug setmypid
SQL> exec dbms_space_admin.assm_tablespace_verify('&TBSP_NAME',dbms_space_admin.TS_VERIFY_BITMAPS)
SQL> oradebug tracefile_name
MON_MODS$表ORA-600 13013报错处理
有朋友反馈数据库启动运行一点时间之后,然后就自动crash,让我们帮忙找原因,通过分析是由于smon进程触发ORA-600 13013导致数据库异常
alert日志报错信息
Thu Aug 4 18:39:44 2016 Database Characterset is ZHS16GBK replication_dependency_tracking turned off (no async multimaster replication found) Starting background process QMNC QMNC started with pid=33, OS id=22935 Thu Aug 4 18:39:44 2016 Completed: ALTER DATABASE OPEN Thu Aug 4 18:39:44 2016 db_recovery_file_dest_size of 2048 MB is 0.00% used. This is a user-specified limit on the amount of space that will be used by this database for recovery-related files, and does not reflect the amount of space available in the underlying filesystem or ASM diskgroup. Thu Aug 4 18:48:41 2016 Thread 1 advanced to log sequence 86746 Current log# 3 seq# 86746 mem# 0: /opt/ora10/oradata/ora10g/redo03.log Thu Aug 4 18:58:13 2016 Errors in file /opt/ora10/admin/ora10g/bdump/ora10g_smon_22449.trc: ORA-00600: internal error code, arguments: [13013], [5001], [482], [4198075], [40], [4198075], [17], [] Thu Aug 4 18:58:56 2016 Non-fatal internal error happenned while SMON was doing flushing of monitored table stats. SMON encountered 8 out of maximum 100 non-fatal internal errors. Thu Aug 4 18:59:06 2016 Errors in file /opt/ora10/admin/ora10g/bdump/ora10g_smon_22449.trc: ORA-00600: internal error code, arguments: [13013], [5001], [482], [4198075], [40], [4198075], [17], [] Thu Aug 4 18:59:08 2016 Errors in file /opt/ora10/admin/ora10g/bdump/ora10g_pmon_22413.trc: ORA-00474: SMON process terminated with error Thu Aug 4 18:59:08 2016 PMON: terminating instance due to error 474 Instance terminated by PMON, pid = 22413
通过trace文件大概可以发现是由于ORA-600 13013错误导致数据库crash,而且这里有类似”SMON was doing flushing of monitored table stats”错误提示,根据经验,很可能是smon把表的dml操作收集信息相关.
ORA-600 [13013] 含义
ORA-600 [13013] [a] [b] {c} [d] [e] [f]
This format relates to Oracle Server 8.0.3 to 10.1
Arg [a] Passcount
Arg [b] Data Object number
Arg {c} Tablespace Relative DBA of block containing the row to be updated
Arg [d] Row Slot number
Arg [e] Relative DBA of block being updated (should be same as 1)
Arg [f] Code
根据这个错误信息,以及How to resolve ORA-00600 [13013], [5001] [ID 816784.1]中的描述
ORA-600 13013 对应对象
SQL> select object_name from dba_objects where object_id=482 OBJECT_NAME -------------------------------------------------------------------------------- MON_MODS$
该对象正是和监控dml变化相关的表,smon会对其进行相关操作,以前写过一篇:MON_MODS$和MON_MODS_ALL$统计DML操作次数的文章
对于MON_MODS$表ORA-600 13013处理
SQL> analyze table mon_mods$ validate structure cascade;
analyze table mon_mods$ validate structure cascade
*
ERROR at line 1:
ORA-01499: table/index cross reference failure - see trace file
SQL> select index_name from dba_indexes where table_name='MON_MODS$';
INDEX_NAME
------------------------------
I_MON_MODS$_OBJ
SQL> ALTER INDEX I_MON_MODS$_OBJ REBUILD;
Index altered.
SQL> analyze table mon_mods$ validate structure cascade;
analyze table mon_mods$ validate structure cascade
*
ERROR at line 1:
ORA-01499: table/index cross reference failure - see trace file
SQL> CREATE TABLE MON_MODS_BAK AS SELECT * FROM MON_MODS$;
Table created.
SQL> SELECT COUNT(*) FROM MON_MODS$;
COUNT(*)
----------
1247
SQL> C/MON_MODS$/MON_MODS_BAK;
1* SELECT COUNT(*) FROM MON_MODS_BAK
SQL> /
COUNT(*)
----------
1247
SQL> TRUNCATE TABLE MON_MODS$;
Table truncated.
SQL> INSERT INTO MON_MODS$ SELECT * fROM MON_MODS_BAK;
1247 rows created.
SQL> COMMIT;
Commit complete.
SQL> analyze table mon_mods$ validate structure cascade;
Table analyzed.
自此关于MON_MODS$表相关的ORA-600 13013异常处理完全,当然也可以通过重建I_MON_MODS$_OBJ索引来解决,但是不能通过rebuild index解决.数据库也就不会因此而crash了.
发表在 Oracle备份恢复
评论关闭

加我微信(17813235971)
加我QQ(107644445)

