数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle数据库自动存储管理(ASM)


发布日期:2023年07月23日
 
Oracle数据库自动存储管理(ASM)

关于ASM的讨论很多但是到底什么是ASM?ASM是一个有效的抽象层使你的Oracle数据库可以与叫做diskgroups的抽象空间一起使用而不是直接使用datafiles这带来了很多好处但是也要求学习一些新的概念命令使用和管理任务所以在投入你的生产系统之前看看它解决什么管理什么以及对它的正反面评价

为什么创建它?

回答这个问题的最好方式是直接追溯源头Bill Bridge——自动存储管理的最初架构师在Oracle Press标题中的Oracle ASMBill提供了一个链接他在那里讨论了使用供应商特定操作系统的文件系统来管理Oracle数据文件放置所遇到的问题

对于归档日志和备份操作系统供应商不提供共享磁盘文件系统

逻辑卷管理器隐藏了文件的位置使得很难管理磁盘I/O和提供良好的统计

当磁盘数超过现有的lvm不能工作得很好

当数据库有以上的数据文件时操作系统和Oracle不能很好地处理数据库

当有大量数据文件时命名就变得很困难了

特性和文件系统限制随操作系统的不同而不同

操作系统级的用户可以通过标准使用接触到Oracle文件而Oracle并不知道

所以他通过建立Oracle自己的文件系统开始解决这些问题他的目标是提供这些特性

与Oracle紧密集成并与集群一起使用(并行服务器)

自动使用新的存储作为磁盘单元或磁盘组来管理

支持成千上万的磁盘

文件不会名字并会在操作系统中隐藏起来

谁需要它?

现在快速浏览一下上面那些问题和解决方案会帮助你确定谁需要ASM起初它是用来处理现在很大型的联机数据库所以如果它包括你的商店那么你可能已经在关注它了或者开始执行ASM如果你的数据库较小数据文件也不多那么你可能需要再一些理由使你考虑采用它

你将要熟悉一些新技术并且应该从在你的开发环境中建立它开始并测试几个月

如果你想从你现有的磁盘子系统中获得更高的性能并获得更好的统计用于预测磁盘I/O

如果你正在使用RAC那么就需要考虑ASM了

开始

ASM是由一个实例管理非常类似于Oracle数据库但是初始参数是非常有限的而且启动过程也简单得多

a 将你的ORACLE_SID设置为+ASM

b 编辑initora

# as opposed to RDBMS for a normal Oracle instance

INSTANCE_TYPE=ASM

# these names will be used in place of datafile names when you create tablespaces

ASM_DISKGROUPS=SEAN AARON

processes=

# this parameter is platform specific and is the path to the raw disk device

ASM_DISKSTRING=/dev/cciss/cdp

# on g you should use diagnostic_dest instead of these

background_dump_dest=/opt/oracle/admin/+ASM/bdump

core_dump_dest=/opt/oracle/admin/+ASM/cdump

user_dump_dest=/opt/oracle/admin/+ASM/udump

c 启动ASM实例

$ sqlplus / as sysdba

SQL> startup

d 创建磁盘组

SQL> create diskgroup SEAN disk /dev/cciss/cdp′;

e 检查表空间的创建

你可能会猜测创建一个表空间会有轻微的改变默认方法如下所示

SQL> create tablespace sean_space datafile +SEAN size GB;

不过想一下这个很好的特性如果在你的数据库中initora文件你设置参数为

db_create_file_dest=+SEAN

那么你可以这样做

SQL> create tablespace sean_space;

然后让Oracle做其余的工作在这两种情形下你将发现在v$datafile中列出的文件路径是和抽象的+SEAN 磁盘组有关而不是与一个实际的操作系统数据文件

f 更多的

当然简化文件名称和表空间的创建只是ASM可以为你做的工作的冰山一角它还可以提供一个冗余级别

在数据库方面外部冗余能力主要是当你在硬件级别(RAID)上或Oracle可以看到的其它外部方法中具有冗余换句话说如果asm_diskstring设备是它们自己的逻辑隐藏物理磁盘于一些冗余的硬件层后面那么你就会有外部冗余能力

但是如果你没有这个冗余能力那么ASM可以提供你可以指定冗余失败组和一组其它的选项来防止损失一个或多个磁盘控制器或甚至是整个SAM失效ASM还提供了在磁盘组中均匀分布的I/O因为ASM很好的了解背后发生了什么所以Oracle可以自动的为你提供I/O到磁盘的一个更好的平衡

使用ASM遇到的挑战

ASM当然是一个具有很大潜能的强大技术但是对于每一个技术解决方案都会有很多的挑战对于ASM它潜在地破坏了Unix系统管理组和数据库/数据库管理员组间力量的普通平衡以前的组管理磁盘硬件和操作系统级别使数据库管理员与它们协作获取新的资源这将在某种程度上挑战这个平衡而这会引起一些来自于这个组的阻力

最后应该是业务需求促使了它的采用还要注意到ASM仍然是处于企业计算认识阶段相对还比较新有一些供应商他们的核心业务已经放在逻辑空间管理器/文件系统空间中很多年了一般来说对于软件系统和可靠性来说成熟是很重要的

总结

ASM很强大它为目前部署的不断发展的大型数据库系统提供了解决方案它还可以为较小数据库安装或者那些使用集群的数据库提供解决方案如同对于任何新技术一样评估测试然后更多的测试

上一篇:用一条SQL语句查询出每门课都大于80分的学生姓名

下一篇:Oracle发布免费开发工具Raptor