0

0

当ASM磁盘组无法MOUNT之时如何找到对应的物理磁盘?

php中文网

php中文网

发布时间:2016-06-07 16:11:02

|

1867人浏览过

|

来源于php中文网

原创

如果数据存放于asm磁盘组之上,当asm磁盘组无法mount起来,则意味着无法打开数据库。我们假设磁盘头部没有损坏,只是盘符变了,但无法正确设置asm_diskstring参数。 实验环境: RHEL5 + ORACLE10.2.0.4RAC+RAW+ASM 通过此次实验你将掌握以下知识点: 1. 初步

如果数据存放于asm磁盘组之上,当asm磁盘组无法mount起来,则意味着无法打开数据库。我们假设磁盘头部没有损坏,只是盘符变了,但无法正确设置asm_diskstring参数。

实验环境: RHEL5 + ORACLE10.2.0.4RAC+RAW+ASM

通过此次实验你将掌握以下知识点:

1. 初步了解如何使用ORACLE两款内部工具amdu/kfed

2. 在ASM磁盘组无法MOUNT的情况下,如何对应物理磁盘和ASMDISK的关系

3. 当ASM_DISKSTRING设置不全时,如何补全并将磁盘组MOUNT起来。

SQL> ALTER DISKGROUP ALL MOUNT
Sat Nov 29 22:15:09 2014
NOTE: cache registered group DATA number=1 incarn=0x5bc84523
Sat Nov 29 22:15:09 2014
NOTE: Hbeat: instance first (grp 1)
Sat Nov 29 22:15:13 2014
NOTE: start heartbeating (grp 1)
NOTE: cache opening disk 0 of grp 1: DATA_0000 path:/dev/raw/raw3 <<<<<<<
Sat Nov 29 22:15:13 2014
NOTE: F1X0 found on disk 0 fcn 0.619
NOTE: cache opening disk 1 of grp 1: DATA_0001 path:/dev/raw/raw4 <<<<<<<
NOTE: cache mounting (first) group 1/0x5BC84523 (DATA)
* allocate domain 1, invalid = TRUE
Sat Nov 29 22:15:13 2014
NOTE: attached to recovery domain 1
Sat Nov 29 22:15:13 2014
NOTE: starting recovery of thread=1 ckpt=23.573 group=1
NOTE: advancing ckpt for thread=1 ckpt=23.573
NOTE: cache recovered group 1 to fcn 0.5267
Sat Nov 29 22:15:13 2014
NOTE: opening chunk 1 at fcn 0.5267 ABA
NOTE: seq=24 blk=574
Sat Nov 29 22:15:13 2014
NOTE: cache mounting group 1/0x5BC84523 (DATA) succeeded
SUCCESS: diskgroup DATA was mounted

下面我们取消raw3,raw4裸设备的定义,重启操作系统...

SQL> alter diskgroup all mount;
alter diskgroup all mount
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DATA"

SQL> alter system set asm_diskstring='/dev/sdd1'; <<<<<此处只添加一块盘符

System altered.

SQL> alter diskgroup data mount;
alter diskgroup data mount
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15040: diskgroup is incomplete
ORA-15042: ASM disk "1" is missing <<<<<<依旧缺失一块盘符





[oracle@dwdb1 tmp]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`
[oracle@dwdb1 tmp]$ ./amdu -diskstring='/dev/sd*' -dump 'DATA' <<<<<扫描/dev/sd*所有设备
[oracle@dwdb1 tmp]$ cd amdu_2014_11_30_08_28_26
[oracle@dwdb1 amdu_2014_11_30_08_28_26]$ ls -lrt
total 94364
-rw-r--r-- 1 oracle oinstall 7231 Nov 30 08:28 report.txt

-rw-r--r-- 1 oracle oinstall 8000 Nov 30 08:28 DATA.map
-rw-r--r-- 1 oracle oinstall 96514048 Nov 30 08:28 DATA_0001.img

截取部分report.txt内容:

VisualizeAI
VisualizeAI

用AI把你的想法变成现实

下载
----------------------------- DISK REPORT N0010 ------------------------------
Disk Path: /dev/sdd1
Unique Disk ID:
Disk Label:
Physical Sector Size: 512 bytes
Disk Size: 1019 megabytes
Group Name: DATA
Disk Name: DATA_0000
Failure Group Name: DATA_0000
Disk Number: 0
Header Status: 3
Disk Creation Time: 2014/11/05 12:55:10.506000
Last Mount Time: 2014/11/29 23:14:47.663000
Compatibility Version: 0x0a100000
Disk Sector Size: 512 bytes
Disk size in AUs: 1019 AUs
Group Redundancy: 1
Metadata Block Size: 4096 bytes
AU Size: 1048576 bytes
Stride: 113792 AUs
Group Creation Time: 2014/11/05 12:55:10.486000
File 1 Block 1 location: AU 2

----------------------------- DISK REPORT N0012 ------------------------------
Disk Path: /dev/sde1 <<<<<<<<<<<<<<<<<磁盘全路径
Unique Disk ID:
Disk Label:
Physical Sector Size: 512 bytes
Disk Size: 1019 megabytes
Group Name: DATA
Disk Name: DATA_0001
Failure Group Name: DATA_0001
Disk Number: 1 <<<<<<<<<<<<<<<<<<<<<<<<<磁盘序号为1
Header Status: 3
Disk Creation Time: 2014/11/05 13:01:56.714000
Last Mount Time: 2014/11/29 23:14:47.663000
Compatibility Version: 0x0a100000
Disk Sector Size: 512 bytes
Disk size in AUs: 1019 AUs
Group Redundancy: 1
Metadata Block Size: 4096 bytes
AU Size: 1048576 bytes
Stride: 113792 AUs
Group Creation Time: 2014/11/05 12:55:10.486000
File 1 Block 1 location: AU 0

...
------------------------- SUMMARY FOR DISKGROUP DATA -------------------------
Allocated AU's: 1632
Free AU's: 406
AU's read for dump: 100
Block images saved: 23563
Map lines written: 100
Heartbeats seen: 0
Corrupt metadata blocks: 0
Corrupt AT blocks: 0


******************************* END OF REPORT ********************************

结合以上信息,使用KFED再次确认:

[oracle@dwdb1 tmp]$ kfed read /dev/sde1 |more
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; 0x001: 0x82
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
kfbh.datfmt: 1 ; 0x003: 0x01
kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0
kfbh.block.obj: 2147483649 ; 0x008: TYPE=0x8 NUMB=0x1
kfbh.check: 1289251580 ; 0x00c: 0x4cd86afc
kfbh.fcn.base: 0 ; 0x010: 0x00000000
kfbh.fcn.wrap: 0 ; 0x014: 0x00000000
kfbh.spare1: 0 ; 0x018: 0x00000000
kfbh.spare2: 0 ; 0x01c: 0x00000000
kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8
kfdhdb.driver.reserved[0]: 0 ; 0x008: 0x00000000
kfdhdb.driver.reserved[1]: 0 ; 0x00c: 0x00000000
kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000
kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000
kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000
kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000
kfdhdb.compat: 168820736 ; 0x020: 0x0a100000
kfdhdb.dsknum: 1 ; 0x024: 0x0001
kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER

这样,就可以确定disk1就为/dev/sde1了

SQL> alter system set asm_diskstring='/dev/sdd1','/dev/sde1';

System altered.

SQL> alter diskgroup data mount;

Diskgroup altered.

接下来就可以启动数据库了。

 

以上简单地使用了AMDU/KFED命令,这两款具都可以实现在ASM磁盘组无法MOUNT的情况下对磁盘读写,其中KFED命令还可以用于磁盘头部的修复(10.2.5.0以上的数据库全有自动备份),还可以做异常恢复:从ASM磁盘直接恢复数据文件,总之也是个非常强大的工具。

 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

46

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

41

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

37

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

21

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

18

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

3

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

245

2026.02.27

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

21

2026.02.27

AO3官网直接进入
AO3官网直接进入

AO3官网最新入口合集,汇总2026年可用官方及镜像链接,助你快速稳定访问Archive of Our Own平台。阅读专题下面的文章了解更多详细内容。

403

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
TypeScript 教程
TypeScript 教程

共19课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号