ASM(Automatic Storage Management)是Oracle 10g及以后版本的数据库管理工具,它是一个完全集成在数据库中的文件系统管理工具,它能够提供满足企业级的高可用、可扩展、性能优化等要求的文件管理功能,同时在硬件资源的利用上也更加高效。
在ASM中,管理和分配磁盘空间的单位是磁盘组,而不是传统的单个磁盘。磁盘组由多个磁盘或者是分区构成,并且具备自我维护、自我管理等自动化特性。ASM磁盘组的管理,主要依赖于Oracle RAC集群环境和GRID Infrastructure工具。
-- 创建ASM实例
create spfile='+ASM' from pfile='$ORACLE_HOME/dbs/init+ASM.ora';
-- 创建磁盘组
create diskgroup data external redundancy
disk 'ORCL:DISK01','ORCL:DISK02'
attribute 'compatible.asm'='11.2','compatible.rdbms'='11.2';
-- 向磁盘组添加磁盘
alter diskgroup data add disk 'ORCL:DISK03';
使用ASM后,管理数据库的操作也发生了相应变化。例如,在使用传统的管理方式下,需要手动添加和管理诸如文件名、目录等对象。而在ASM下,管理对象的单位是文件模板和文件组,而不是先创建目录和文件,再操作文件,从而大大简化了管理工作。
-- 创建文件模板和文件组
create diskgroup file_system external redundancy;
create asm_alias '+file_system' 'system_templates';
-- 向文件组中添加文件模板
create file system_templates datafile '+file_system' size 1000m;
除了以上的基础操作,ASM中还存在一系列高级管理操作,例如:动态扩展磁盘组容量、磁盘故障处理、备份与还原、磁盘移除与替换等等。这些操作在ORA-错误处理、性能提升、批量管理等方面都有着重大的意义。
-- 磁盘扩展
alter diskgroup data add disk '+ORCL/DATA/DATA01' size 500G;
-- 磁盘故障处理
alter diskgroup data offline disk 'ORCL:DISK01';
-- 磁盘移除与替换
alter diskgroup data drop disk 'ORCL:DISK01' rebalance power 5;
alter diskgroup data add disk 'ORCL:DISK04' rebalance power 5;
总之,ASM技术已经成为了现代数据库架构中的重要工具,通过其高效、动态的管理方式,大大简化了数据库管理者的工作量,同时,也保证了数据库持续可靠的运行。如果你还没有在生产环境中使用ASM,那么,这绝对值得一试。