标签云
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,770)
- DB2 (22)
- MySQL (77)
- Oracle (1,611)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (166)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (69)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (592)
- Oracle安装升级 (98)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (86)
- PostgreSQL (30)
- pdu工具 (6)
- PostgreSQL恢复 (9)
- SQL Server (32)
- SQL Server恢复 (13)
- TimesTen (7)
- 达梦数据库 (3)
- 达梦恢复 (1)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (39)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (22)
-
最近发表
- Oracle 19c 202507补丁(RUs+OJVM)-19.28
- 2025年的Oracle 8.0.5数据库恢复
- ORA-600 kokiasg1故障分析(obj$中核心字典序列全部被恶意删除)
- ORA-00756 ORA-10567故障数据0丢失恢复
- 数据库文件变成32k故障恢复
- tcp连接过多导致监听TNS-12532 TNS-12560 TNS-00502错误
- 文件系统格式化MySQL数据库恢复
- .sstop勒索加密数据库恢复
- 解决一次硬件恢复之后数据文件0kb的故障恢复case
- Error in invoking target ‘libasmclntsh19.ohso libasmperl19.ohso client_sharedlib’问题处理
- ORA-01171: datafile N going offline due to error advancing checkpoint
- linux环境oracle数据库被文件系统勒索加密为.babyk扩展名溯源
- ORA-600 ksvworkmsgalloc: bad reaper
- ORA-600 krccfl_chunk故障处理
- Oracle Recovery Tools恢复案例总结—202505
- ORA-600 kddummy_blkchk 数据库循环重启
- 记录一次asm disk加入到vg通过恢复直接open库的案例
- CHECKDB 发现了 N 个分配错误和 M 个一致性错误
- 达梦数据库dm.ctl文件异常恢复
- Oracle Recovery Tools修复ORA-00742、ORA-600 ktbair2: illegal inheritance故障
年归档:2016
pvid=yes导致asm无法mount
今天凌晨接到客户恢复请求,对于aix rac,两个ibm存储做mirror的环境中,客户做存储容灾演练,发现磁盘的名称发生改变,然后对其中一个磁盘设置pvid,结果悲剧了导致asm一个磁盘组无法正常起来。然后又aix端删除这些设备,然后重新扫描设备。结果不是一个磁盘组不能mount,而是整个gi就无法正常启动。希望我们给予技术支持。
查看asm 日志,确定asm disk信息
从这里可以确定,一共有两个asm diskgroup,每个group有两个磁盘,hdisk2和hdisk3 为hisdata,hdisk4,和hdisk5为emrdata.
使用kfed分析磁盘头
dd if=/dev/rhdisk2 of=/tmp/xifenfei/rhdisk2.dd bs=1024k count=10 dd if=/dev/rhdisk3 of=/tmp/xifenfei/rhdisk3.dd bs=1024k count=10 dd if=/dev/rhdisk4 of=/tmp/xifenfei/rhdisk4.dd bs=1024k count=10 dd if=/dev/rhdisk5 of=/tmp/xifenfei/rhdisk5.dd bs=1024k count=10 --传输到我电脑上分析 C:\Users\FAL>kfed read H:\temp\xifenfei\tmp\xifenfei\rhdisk2.dd|grep name kfdhdb.dskname: HISDATA_0000 ; 0x028: length=12 kfdhdb.grpname: HISDATA ; 0x048: length=7 kfdhdb.fgname: HISDATA_0000 ; 0x068: length=12 kfdhdb.capname: ; 0x088: length=0 C:\Users\FAL>kfed read H:\temp\xifenfei\tmp\xifenfei\rhdisk3.dd|grep name kfdhdb.dskname: HISDATA_0001 ; 0x028: length=12 kfdhdb.grpname: HISDATA ; 0x048: length=7 kfdhdb.fgname: HISDATA_0001 ; 0x068: length=12 kfdhdb.capname: ; 0x088: length=0 C:\Users\FAL>kfed read H:\temp\xifenfei\tmp\xifenfei\rhdisk4.dd|grep name kfdhdb.dskname: EMRDATA_0000 ; 0x028: length=12 kfdhdb.grpname: EMRDATA ; 0x048: length=7 kfdhdb.fgname: EMRDATA_0000 ; 0x068: length=12 kfdhdb.capname: ; 0x088: length=0 C:\Users\FAL>kfed read H:\temp\xifenfei\tmp\xifenfei\rhdisk5.dd|grep name C:\Users\FAL>kfed read H:\temp\xifenfei\tmp\xifenfei\rhdisk5.dd kfbh.endian: 201 ; 0x000: 0xc9 kfbh.hard: 194 ; 0x001: 0xc2 kfbh.type: 212 ; 0x002: *** Unknown Enum *** kfbh.datfmt: 193 ; 0x003: 0xc1 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 0 ; 0x008: file=0 kfbh.check: 0 ; 0x00c: 0x00000000 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 000000000 C1D4C2C9 00000000 00000000 00000000 [................] 000000010 00000000 00000000 00000000 00000000 [................] Repeat 254 times KFED-00322: Invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][212] C:\Users\FAL>kfed read H:\temp\xifenfei\tmp\xifenfei\rhdisk5.dd blkn=2|grep kfbh kfbh.endian: 0 ; 0x000: 0x00 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 33554432 ; 0x004: blk=33554432 kfbh.block.obj: 16777344 ; 0x008: file=128 kfbh.check: 2654889601 ; 0x00c: 0x9e3e6681 kfbh.fcn.base: 1696071680 ; 0x010: 0x65180000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 C:\Users\FAL>kfed read H:\temp\xifenfei\tmp\xifenfei\rhdisk5.dd blkn=510|grep name kfdhdb.dskname: EMRDATA_0001 ; 0x028: length=12 kfdhdb.grpname: EMRDATA ; 0x048: length=7 kfdhdb.fgname: EMRDATA_0001 ; 0x068: length=12 kfdhdb.capname: ; 0x088: length=0
通过上述分析,基本上确定由于对hdisk5设置了pvid导致该asm disk的磁盘头损坏.这个可以直接使用asm repair功能修复(注意要clear pvid)
C:\Users\FAL>kfed read H:\temp\xifenfei\tmp\xifenfei\rhdisk5.dd |grep name kfdhdb.dskname: EMRDATA_0001 ; 0x028: length=12 kfdhdb.grpname: EMRDATA ; 0x048: length=7 kfdhdb.fgname: EMRDATA_0001 ; 0x068: length=12 kfdhdb.capname: ; 0x088: length=0
启动crs到cssd进程报错分析
1. 由于删除磁盘,扫描设备导致hdisk[2-5] 权限和用户组不对
2. 由于删除,扫描磁盘导致磁盘共享模式不对
修复磁盘头和解决这两个问题之后,gi启动正常,磁盘组也正常mount,数据库也正常启动,数据0丢失,至此完美恢复
类似客户恢复案例:asm disk误设置pvid导致asm diskgroup无法mount恢复
如果您遇到此类情况,无法解决请联系我们,提供专业ORACLE数据库恢复技术支持
Phone:17813235971 Q Q:107644445

使用losetup实现linux普通文件做asm disk
上一篇文章《使用_asm_allow_only_raw_disks实现普通文件做asm disk》中已经介绍使用_asm_allow_only_raw_disks参数使得oracle asm可以使用文件作为asm disk,这篇文章介绍在linux中还可以通过losetup来实现文件系统模拟磁盘实现使用文件系统做asm disk的效果
通过dd构造文件
[oracle@xifenfei ~]$ mkdir /u01/oracle/oradata/asmdisk [oracle@xifenfei ~]$ dd if=/dev/zero of=/u01/oracle/oradata/asmdisk/xifenfei01.dd bs=10240k count=100 100+0 records in 100+0 records out 1048576000 bytes (1.0 GB) copied, 21.9158 seconds, 47.8 MB/s [oracle@xifenfei ~]$ dd if=/dev/zero of=/u01/oracle/oradata/asmdisk/xifenfei02.dd bs=10240k count=100 100+0 records in 100+0 records out 1048576000 bytes (1.0 GB) copied, 22.392 seconds, 46.8 MB/s [oracle@xifenfei ~]$ ls -lh /u01/oracle/oradata/asmdisk/ total 3.0G -rw-r--r-- 1 oracle oinstall 1000M Feb 27 22:58 xifenfei01.dd -rw-r--r-- 1 oracle oinstall 1000M Feb 27 23:00 xifenfei02.dd
使用losetup模拟磁盘
[root@xifenfei asmdisk]# ls -l /dev/lo log loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7 [root@xifenfei asmdisk]# losetup /dev/loop1 xifenfei01.dd [root@xifenfei asmdisk]# losetup /dev/loop2 xifenfei02.dd
使用raw实现磁盘转换为裸设备
[root@xifenfei asmdisk]# raw /dev/raw/raw10 /dev/loop1 /dev/raw/raw10: bound to major 7, minor 1 [root@xifenfei asmdisk]# raw /dev/raw/raw11 /dev/loop2 /dev/raw/raw11: bound to major 7, minor 2 [root@xifenfei asmdisk]# ls -l /dev/raw/raw1[0-1] crw------- 1 root root 162, 10 Feb 27 23:16 /dev/raw/raw10 crw------- 1 root root 162, 11 Feb 27 23:16 /dev/raw/raw11 [root@xifenfei asmdisk]# chown oracle.dba /dev/raw/raw1[0-1] [root@xifenfei asmdisk]# ls -l /dev/raw/raw1[0-1] crw------- 1 oracle dba 162, 10 Feb 27 23:16 /dev/raw/raw10 crw------- 1 oracle dba 162, 11 Feb 27 23:16 /dev/raw/raw11
创建磁盘组
[oracle@xifenfei ~]$ export ORACLE_SID=+ASM [oracle@xifenfei ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on Thu Feb 27 23:19:28 2014 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create diskgroup xff external redundancy disk '/dev/raw/raw10','/dev/raw/raw11'; Diskgroup created. SQL> select group_number,name from v$asm_diskgroup; GROUP_NUMBER NAME ------------ ------------------------------------------------------------ 1 DATA 2 XFF SQL> select path,TOTAL_MB from v$asm_disk where group_number=2; PATH TOTAL_MB -------------------- ---------- /dev/raw/raw11 1000 /dev/raw/raw10 1000
通过kfed验证asm disk是数据文件
[oracle@xifenfei tmp]$ kfed read /dev/raw/raw10|grep XFF kfdhdb.dskname: XFF_0000 ; 0x028: length=8 kfdhdb.grpname: XFF ; 0x048: length=3 kfdhdb.fgname: XFF_0000 ; 0x068: length=8 [oracle@xifenfei tmp]$ kfed read /dev/raw/raw11|grep XFF kfdhdb.dskname: XFF_0001 ; 0x028: length=8 kfdhdb.grpname: XFF ; 0x048: length=3 kfdhdb.fgname: XFF_0001 ; 0x068: length=8 [oracle@xifenfei tmp]$ kfed read /u01/oracle/oradata/asmdisk/xifenfei01.dd |grep XFF kfdhdb.dskname: XFF_0000 ; 0x028: length=8 kfdhdb.grpname: XFF ; 0x048: length=3 kfdhdb.fgname: XFF_0000 ; 0x068: length=8 [oracle@xifenfei tmp]$ kfed read /u01/oracle/oradata/asmdisk/xifenfei02.dd |grep XFF kfdhdb.dskname: XFF_0001 ; 0x028: length=8 kfdhdb.grpname: XFF ; 0x048: length=3 kfdhdb.fgname: XFF_0001 ; 0x068: length=8
通过kfed命令,确定asm本质是用了dd出来的数据文件做asm disk.
使用_asm_allow_only_raw_disks实现普通文件做asm disk
不少人可能都有一个烦恼,我们平时使用的是win系统,但是想测试下asm,很可能还要到linux的虚拟机里面,这样太麻烦了。如果能够使用win文件系统里面的文件直接做asm disk,直接给asm 使用那就省事了。这篇文章就描述10g中如何实现win 文件系统中的文件做asm disk.注意:如果11g需要安装grid
准备两个文件
h:\ASMDISK>dd if=/dev/zero of=asmdisk1.dd bs=10240k count=200 rawwrite dd for windows version 0.6beta3. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by terms of the GPL Version 2. 200+0 records in 200+0 records out h:\ASMDISK>dd if=/dev/zero of=asmdisk2.dd bs=10240k count=200 rawwrite dd for windows version 0.6beta3. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by terms of the GPL Version 2. 200+0 records in 200+0 records out h:\ASMDISK>dir 驱动器 H 中的卷没有标签。 卷的序列号是 360E-41A8 h:\ASMDISK 的目录 2016-06-17 22:02 <DIR> . 2016-06-17 22:02 <DIR> .. 2016-06-17 22:30 2,097,152,000 asmdisk1.dd 2016-06-17 22:30 2,097,152,000 asmdisk2.dd 2 个文件 4,194,304,000 字节 2 个目录 574,891,098,112 可用字节
这里使用dd来构造文件,当然你也可以通过asmtools来实现
增加css服务
C:\Windows\system32>d:/app\product\10.2.0\db_1\bin\localconfig add Step 1: creating new OCR repository Successfully accumulated necessary OCR keys. Creating OCR keys for user 'fal', privgrp ''.. Operation successful. Step 2: creating new CSS service successfully created local CSS service successfully added CSS to home
使用文件创建asm 磁盘组
dbca选择自动存储管理,并且到选择磁盘步骤终止,因为没有磁盘分区给asm使用
h:\ASMDISK>set ORACLE_SID=+ASM D:\app\product\10.2.0\db_1\bin>SQLPLUS / AS SYSDBA SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 6月 17 22:08:57 2016 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options SQL> alter system set "_asm_allow_only_raw_disks"=false 2 ; alter system set "_asm_allow_only_raw_disks"=false * 第 1 行出现错误: ORA-02095: ???????????? SQL> alter system set "_asm_allow_only_raw_disks"=false scope=spfile; 系统已更改。 SQL> shutdown immediate; ORA-15100: ?????????? ASM 实例已关闭 SQL> startup ASM 实例已启动 Total System Global Area 83886080 bytes Fixed Size 1289028 bytes Variable Size 57431228 bytes ASM Cache 25165824 bytes ORA-15110: ?????? SQL> create diskgroup data external redundancy disk 'H:\asmdisk\ASMDISK1.dd','H:\asmdisk\ASMDISK2.dd'; create diskgroup data external redundancy disk 'H:\asmdisk\ASMDISK1.dd','H:\asmdisk\ASMDISK2.dd' * 第 1 行出现错误: ORA-15018: ??????? ORA-15031: ???? 'H:\asmdisk\ASMDISK2.dd' ????????? ORA-15014: ?? 'H:\ASMDISK\ASMDISK2.DD' ?????? ORA-15031: ???? 'H:\asmdisk\ASMDISK1.dd' ????????? ORA-15014: ?? 'H:\ASMDISK\ASMDISK1.DD' ?????? SQL> show parameter asm; NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ _asm_allow_only_raw_disks boolean FALSE asm_diskgroups string asm_diskstring string asm_power_limit integer 1 SQL> alter system set asm_diskstring="H:\asmdisk\*.dd" ; 系统已更改。 SQL> create diskgroup data external redundancy disk 'H:\asmdisk\ASMDISK1.dd','H:\asmdisk\ASMDISK2.dd'; 磁盘组已创建。 SQL> select path from v$asm_disk; PATH -------------------------------------------------------------------------------- H:\ASMDISK\ASMDISK1.DD H:\ASMDISK\ASMDISK2.DD
这一步你也可以通过ORADIM创建asm服务,然后创建asm参数文件,然后启动asm,创建磁盘组
dbca创建数据库选择asm
实现效果(普通file做asm disk)

同理在linux等平台上也可以使用_asm_allow_only_raw_disks参数实现文件系统做asm disk