2 FAILGROUP fg1 DISK ‘/dev/sdb1’, ‘/dev/sdc1’
3 FAILGROUP fg2 DISK ‘/dev/sdd1’, ‘/dev/sde1’
4 ATTRIBUTE ‘compatible.asm’ = ‘19.0.0’, ‘compatible.rdbms’ = ‘19.0.0’, ‘au_size’ = ‘4M’;Diskgroup created.
SQL> SELECT name, state, type, total_mb, free_mb FROM v$asm_diskgroup;NAME STATE TYPE TOTAL_MB FREE_MB
—————————— ———– —— ———- ———-
DATA_DG MOUNTED NORMAL 40960 40960
3.2 ASM磁盘组管理操作
ASM磁盘组管理操作:
ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdf1’;– 2. 向指定故障组添加磁盘
ALTER DISKGROUP data_dg ADD FAILGROUP fg1 DISK ‘/dev/sdf1’;– 3. 从磁盘组移除磁盘
ALTER DISKGROUP data_dg DROP DISK ‘/dev/sdf1’;– 4. 强制移除故障磁盘
ALTER DISKGROUP data_dg DROP DISK ‘/dev/sdb1’ FORCE;– 5. 重命名磁盘
ALTER DISKGROUP data_dg RENAME DISK ‘/dev/sdb1’ TO ‘data_disk1’;– 6. 调整磁盘组属性
ALTER DISKGROUP data_dg SET ATTRIBUTE ‘compatible.asm’ = ‘19.0.0’;ALTER DISKGROUP data_dg SET ATTRIBUTE ‘compatible.rdbms’ = ‘19.0.0’;ALTER DISKGROUP data_dg SET ATTRIBUTE ‘au_size’ = ‘4M’;– 7. 重平衡磁盘组
ALTER DISKGROUP data_dg REBALANCE POWER 10;– 8. 查看重平衡状态
SELECT group_number, operation, state, power, sofar, est_work, est_rate, est_minutes FROM v$asm_operation;– 9. 删除磁盘组
DROP DISKGROUP data_dg INCLUDING CONTENTS;
3.3 ASM磁盘组监控与维护
ASM磁盘组监控与维护操作:
SELECT name, state, type, total_mb, free_mb, required_mirror_free_mb, usable_file_mb FROM v$asm_diskgroup;– 2. 查看磁盘组中的磁盘
SELECT group_number, disk_number, mount_status, header_status, state, total_mb, free_mb, name FROM v$asm_disk WHERE group_number = (SELECT group_number FROM v$asm_diskgroup WHERE name = ‘DATA_DG’);– 3. 查看磁盘组的文件
SELECT af.name, af.type, af.bytes, adg.name AS diskgroup_name
FROM v$asm_file af, v$asm_diskgroup adg
WHERE af.group_number = adg.group_number AND adg.name = ‘DATA_DG’;– 4. 查看ASM空间使用情况
SELECT name, total_mb, free_mb, (total_mb – free_mb) AS used_mb, ROUND((total_mb – free_mb) / total_mb * 100, 2) AS used_percent FROM v$asm_diskgroup;– 5. 查看ASM性能指标
SELECT * FROM v$asm_perfstat;– 6. 查看ASM操作
SELECT group_number, operation, state, power, sofar, est_work, est_rate, est_minutes FROM v$asm_operation;– 7. 检查ASM磁盘的健康状态
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk;– 8. 备份ASM配置
ALTER DISKGROUP data_dg BACKUP DISK TO ‘/backup/asm_config.bkp’;
Part04-生产案例与实战讲解
4.1 Oracle数据库ASM磁盘组管理案例
以下是一个ASM磁盘组管理的实际案例:
— 1. 检查ASM实例状态
SELECT instance_name, status FROM v$instance;– 2. 创建数据磁盘组
CREATE DISKGROUP data_dg NORMAL REDUNDANCY
FAILGROUP fg1 DISK ‘/dev/sdb1’, ‘/dev/sdc1’
FAILGROUP fg2 DISK ‘/dev/sdd1’, ‘/dev/sde1’
ATTRIBUTE ‘compatible.asm’ = ‘19.0.0’, ‘compatible.rdbms’ = ‘19.0.0’, ‘au_size’ = ‘4M’;– 3. 创建日志磁盘组
CREATE DISKGROUP log_dg NORMAL REDUNDANCY
FAILGROUP fg1 DISK ‘/dev/sdf1’, ‘/dev/sdg1’
FAILGROUP fg2 DISK ‘/dev/sdh1’, ‘/dev/sdi1’
ATTRIBUTE ‘compatible.asm’ = ‘19.0.0’, ‘compatible.rdbms’ = ‘19.0.0’, ‘au_size’ = ‘4M’;– 4. 创建归档磁盘组
CREATE DISKGROUP arch_dg EXTERNAL REDUNDANCY
DISK ‘/dev/sdj1’, ‘/dev/sdk1’
ATTRIBUTE ‘compatible.asm’ = ‘19.0.0’, ‘compatible.rdbms’ = ‘19.0.0’, ‘au_size’ = ‘4M’;– 5. 查看磁盘组信息
SELECT name, state, type, total_mb, free_mb FROM v$asm_diskgroup;– 6. 向数据磁盘组添加磁盘
ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdl1’;– 7. 重平衡数据磁盘组
ALTER DISKGROUP data_dg REBALANCE POWER 10;– 8. 查看重平衡状态
SELECT group_number, operation, state, power, sofar, est_work, est_rate, est_minutes FROM v$asm_operation;– 9. 监控磁盘组空间使用情况
SELECT name, total_mb, free_mb, (total_mb – free_mb) AS used_mb, ROUND((total_mb – free_mb) / total_mb * 100, 2) AS used_percent FROM v$asm_diskgroup;– 10. 检查磁盘健康状态
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk;– 11. 备份ASM配置
ALTER DISKGROUP data_dg BACKUP DISK TO ‘/backup/asm_config.bkp’;ALTER DISKGROUP log_dg BACKUP DISK TO ‘/backup/asm_log_config.bkp’;ALTER DISKGROUP arch_dg BACKUP DISK TO ‘/backup/asm_arch_config.bkp’;
4.2 ASM磁盘组问题诊断与解决
ASM磁盘组问题诊断与解决:
— 查看磁盘组状态
SELECT name, state, type, total_mb, free_mb FROM v$asm_diskgroup;– 查看磁盘状态
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk;– 解决方案:修复磁盘头,重新挂载磁盘组
ALTER DISKGROUP data_dg MOUNT FORCE;– 2. 磁盘故障问题
— 查看故障磁盘
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk WHERE state = ‘FAILED’;– 解决方案:删除故障磁盘,添加新磁盘
ALTER DISKGROUP data_dg DROP DISK ‘/dev/sdb1’ FORCE;ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdm1’;– 3. 空间不足问题
— 查看磁盘组空间使用情况
SELECT name, total_mb, free_mb, (total_mb – free_mb) AS used_mb, ROUND((total_mb – free_mb) / total_mb * 100, 2) AS used_percent FROM v$asm_diskgroup;– 解决方案:添加磁盘或清理空间
ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdm1’;– 4. 重平衡失败问题
— 查看重平衡状态
SELECT group_number, operation, state, power, sofar, est_work, est_rate, est_minutes FROM v$asm_operation;– 解决方案:调整重平衡功率,监控重平衡过程
ALTER DISKGROUP data_dg REBALANCE POWER 5;– 5. 磁盘组性能问题
— 查看ASM性能指标
SELECT * FROM v$asm_perfstat;– 解决方案:优化磁盘组配置,增加磁盘数量
4.3 故障排除
ASM磁盘组故障排除:
— 检查磁盘状态
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk;– 解决方案:修复磁盘头,使用FORCE选项重新挂载
ALTER DISKGROUP data_dg MOUNT FORCE;– 2. 磁盘故障导致数据丢失风险
— 查看故障磁盘
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk WHERE state = ‘FAILED’;– 解决方案:立即替换故障磁盘,确保数据冗余
ALTER DISKGROUP data_dg DROP DISK ‘/dev/sdb1’ FORCE;ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdm1’;– 3. 磁盘组空间耗尽
— 查看磁盘组空间
SELECT name, total_mb, free_mb, usable_file_mb FROM v$asm_diskgroup;– 解决方案:紧急添加磁盘,清理不必要的文件
ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdm1’;– 4. 重平衡过程过慢
— 查看重平衡状态
SELECT group_number, operation, state, power, sofar, est_work, est_rate, est_minutes FROM v$asm_operation;– 解决方案:调整重平衡功率,在业务低峰期进行
ALTER DISKGROUP data_dg REBALANCE POWER 11;– 5. ASM实例无法启动
— 启动ASM实例到nomount状态
STARTUP NOMOUNT;– 查看告警日志
SELECT * FROM v$diag_info;– 解决方案:检查ASM配置文件,确保磁盘可访问
Part05-风哥经验总结与分享
5.1 ASM磁盘组管理最佳实践
- 根据业务需求规划合理的磁盘组结构和冗余级别
- 使用多个磁盘组分离不同类型的数据,优化性能
- 确保磁盘组中的磁盘性能一致,避免性能瓶颈
- 定期监控磁盘组的空间使用情况,及时添加磁盘
- 定期检查磁盘的健康状态,及时替换故障磁盘
- 备份ASM配置和元数据,确保故障恢复
- 在业务低峰期进行重平衡操作,减少对业务的影响
5.2 常见问题与解决方案
- 磁盘组挂载失败:检查磁盘状态,使用FORCE选项重新挂载,修复磁盘头
- 磁盘故障:立即删除故障磁盘,添加新磁盘,启动重平衡
- 空间不足:紧急添加磁盘,清理不必要的文件,监控空间使用趋势
- 重平衡过慢:调整重平衡功率,在业务低峰期进行
- 性能问题:优化磁盘组配置,增加磁盘数量,调整条带化参数
5.3 性能优化建议
- 使用多个磁盘组分离不同类型的数据,如数据、日志、归档等
- 合理设置AU(Allocation Unit)大小,根据数据文件大小调整
- 使用适当的冗余级别,平衡性能和可靠性
- 确保磁盘组中的磁盘数量足够,提高I/O并行度
- 定期监控ASM性能指标,及时调整配置
- 使用ASM的条带化功能,提高I/O性能
- 合理规划故障组,确保数据冗余和性能
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
from oracle:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
