—————————— ———– —— ———- ———-
DATA_DG MOUNTED NORMAL 40960 35840
LOG_DG MOUNTED NORMAL 20480 20480
ARCH_DG MOUNTED EXTERN 61440 61440
SQL> SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk;GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU STATE NAME
———— ———– ——- ———— ——– ——————————
1 0 CACHED MEMBER NORMAL DGDATA_0000
1 1 CACHED MEMBER NORMAL DGDATA_0001
2 0 CACHED MEMBER NORMAL LOG_DG_0000
2 1 CACHED MEMBER NORMAL LOG_DG_0001
3 0 CACHED MEMBER NORMAL ARCH_DG_0000
3 1 CACHED MEMBER NORMAL ARCH_DG_0001
3.2 ASM故障恢复操作
ASM故障恢复操作:
— 查看故障磁盘
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/sdf1’;– 重平衡磁盘组
ALTER DISKGROUP data_dg REBALANCE POWER 11;– 2. 磁盘组挂载失败恢复
— 强制挂载磁盘组
ALTER DISKGROUP data_dg MOUNT FORCE;– 3. ASM实例启动失败恢复
— 启动ASM实例到nomount状态
STARTUP NOMOUNT;– 检查ASM配置文件
$ cat $ORACLE_HOME/dbs/init+ASM.ora
— 启动ASM实例
STARTUP;– 4. 文件故障恢复
— 使用RMAN恢复损坏的文件
RMAN>
RESTORE DATAFILE ‘+dgdata/fgedudb/datafile/users01.dbf’;RECOVER DATAFILE ‘+dgdata/fgedudb/datafile/users01.dbf’;– 5. 网络故障恢复
— 检查网络连接
$ ping
$ tnsping +ASM
— 重启网络服务
$ service network restart
— 重启ASM实例
SHUTDOWN IMMEDIATE;STARTUP;
3.3 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;– 2. 定期备份ASM配置
ALTER DISKGROUP data_dg BACKUP DISK TO ‘/backup/asm_data_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’;– 3. 定期检查存储设备状态
$ ls -l /dev/sd*
$ fdisk -l
$ iostat -x 1
— 4. 定期监控ASM性能
SELECT * FROM v$asm_perfstat;SELECT * FROM v$asm_disk_io_stat;– 5. 定期进行故障演练
— 模拟磁盘故障
ALTER DISKGROUP data_dg DROP DISK ‘/dev/sdb1’ FORCE;ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdf1’;– 6. 配置ASM告警
— 设置ASM告警阈值
ALTER DISKGROUP data_dg SET ATTRIBUTE ‘disk_repair_time’ = ‘4h’;– 7. 合理规划磁盘组和故障组
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’;
Part04-生产案例与实战讲解
4.1 Oracle数据库ASM故障处理案例
以下是一个ASM故障处理的实际案例:
— 1. 检查ASM实例状态
SELECT instance_name, status FROM v$instance;– 2. 查看磁盘组状态
SELECT name, state, type, total_mb, free_mb FROM v$asm_diskgroup;– 3. 查看磁盘状态,发现故障磁盘
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk;– 4. 确认故障磁盘
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk WHERE state = ‘FAILED’;– 5. 删除故障磁盘
ALTER DISKGROUP data_dg DROP DISK ‘DGDATA_0000’ FORCE;– 6. 添加新磁盘
ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdf1’;– 7. 重平衡磁盘组
ALTER DISKGROUP data_dg REBALANCE POWER 11;– 8. 监控重平衡状态
SELECT group_number, operation, state, power, sofar, est_work, est_rate, est_minutes FROM v$asm_operation;– 9. 验证磁盘组状态
SELECT name, state, type, total_mb, free_mb 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_data_config.bkp’;
4.2 ASM故障问题诊断与解决
ASM故障问题诊断与解决:
— 查看故障磁盘
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk WHERE state = ‘FAILED’;– 解决方案:删除故障磁盘,添加新磁盘
ALTER DISKGROUP data_dg DROP DISK ‘DGDATA_0000’ FORCE;ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdf1’;– 2. 磁盘组挂载失败问题
— 查看磁盘组状态
SELECT name, state, type, total_mb, free_mb FROM v$asm_diskgroup;– 解决方案:强制挂载磁盘组
ALTER DISKGROUP data_dg MOUNT FORCE;– 3. ASM实例启动失败问题
— 启动ASM实例到nomount状态
STARTUP NOMOUNT;– 查看ASM配置文件
$ cat $ORACLE_HOME/dbs/init+ASM.ora
— 解决方案:修复ASM配置文件,启动ASM实例
STARTUP;– 4. 文件故障问题
— 检查文件状态
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;– 解决方案:使用RMAN恢复损坏的文件
RMAN>
RESTORE DATAFILE ‘+dgdata/fgedudb/datafile/users01.dbf’;RECOVER DATAFILE ‘+dgdata/fgedudb/datafile/users01.dbf’;– 5. 网络故障问题
— 检查网络连接
$ ping
$ tnsping +ASM
— 解决方案:重启网络服务,重启ASM实例
$ service network restart
SHUTDOWN IMMEDIATE;STARTUP;
4.3 故障排除
ASM故障排除:
— 查看故障磁盘
SELECT group_number, disk_number, mount_status, header_status, state, name FROM v$asm_disk WHERE state = ‘FAILED’;– 解决方案:删除故障磁盘,添加新磁盘
ALTER DISKGROUP data_dg DROP DISK ‘DGDATA_0000’ FORCE;ALTER DISKGROUP data_dg ADD DISK ‘/dev/sdf1’;– 2. 磁盘组挂载失败
— 查看磁盘组状态
SELECT name, state, type, total_mb, free_mb FROM v$asm_diskgroup;– 解决方案:强制挂载磁盘组
ALTER DISKGROUP data_dg MOUNT FORCE;– 3. ASM实例启动失败
— 启动ASM实例到nomount状态
STARTUP NOMOUNT;– 查看ASM配置文件
$ cat $ORACLE_HOME/dbs/init+ASM.ora
— 解决方案:修复ASM配置文件,启动ASM实例
STARTUP;– 4. 文件故障
— 检查文件状态
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;– 解决方案:使用RMAN恢复损坏的文件
RMAN>
RESTORE DATAFILE ‘+dgdata/fgedudb/datafile/users01.dbf’;RECOVER DATAFILE ‘+dgdata/fgedudb/datafile/users01.dbf’;– 5. 网络故障
— 检查网络连接
$ ping
$ tnsping +ASM
— 解决方案:重启网络服务,重启ASM实例
$ service network restart
SHUTDOWN IMMEDIATE;STARTUP;
Part05-风哥经验总结与分享
5.1 ASM故障处理最佳实践
- 及时响应故障,减少故障对业务的影响
- 遵循故障处理流程,确保处理过程的一致性
- 备份重要数据,防止故障处理过程中的数据丢失
- 记录故障处理过程,便于后续分析和改进
- 定期演练故障处理流程,提高处理效率
- 使用多个故障组,确保数据冗余
- 定期检查ASM状态,及时发现潜在问题
5.2 常见问题与解决方案
- 磁盘故障:删除故障磁盘,添加新磁盘,启动重平衡
- 磁盘组挂载失败:强制挂载磁盘组,修复磁盘头
- ASM实例启动失败:检查ASM配置文件,修复配置问题
- 文件故障:使用RMAN恢复损坏的文件
- 网络故障:检查网络连接,重启网络服务,重启ASM实例
5.3 故障预防建议
- 使用多个故障组,确保数据冗余
- 定期检查ASM状态,及时发现潜在问题
- 定期备份ASM配置和元数据
- 定期检查存储设备状态,确保硬件健康
- 合理规划磁盘组和故障组,确保负载均衡
- 配置ASM告警,及时发现问题
- 定期进行故障演练,提高处理效率
- 建立完善的故障处理流程和文档
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
from oracle:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
