gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:1449回复:0

oracle10g 新特性之自动存储管理(oracle技术网)

楼主#
更多 发布于:2007-11-16 11:06
自动存储管理  <BR>  <BR>数据库管理员终于可以将自己从单调而常用的增加、移动和删除存储磁盘的任务中解脱出来了 — 并且无需增加额外的成本。  <BR>  <BR>假设您刚得到一个新的 Oracle 数据库的全新的服务器和存储子系统。除操作系统配置之外,在您能够创建数据库之前,最重要的工作是什么?很明显,就是创建存储系统布局 — 或更具体地说,选择一种保护级别,然后构建必需的冗余磁盘阵列 (RAID) 组。  <BR>  <BR>在大多数数据库安装中安装存储器要花费大量的时间。从多种可能中选择一种特定的磁盘配置需要仔细的规划和分析,并且最重要的是,需要详细了解存储技术、卷管理器和文件系统。在这个阶段的设计任务可以大致说明如下(注意这个列表只是代表性的,任务将随配置而变化):  <BR>  <BR>确认存储器在操作系统级通过了认证,并确定冗余保护的级别,该级别可能已经提供(硬件 RAID)。  <BR>集中和构建逻辑卷组,并确定分段或镜像是否也是必需的。  <BR>在逻辑卷管理器创建的逻辑卷上构建文件系统。  <BR>设定所有权和权限,以便 Oracle 进程可以对设备进行打开、读和写操作。  <BR>在文件系统上创建数据库,如果可能的话务必在非 RAID 的位置上创建特殊文件,例如重做日志、临时表空间和重做表空间之类的特殊文件。  <BR>在大多数公司中,这些步骤大部分是由对存储系统非常了解的某些人来执行的。这里的“某些人”通常不是数据库管理员。  <BR>  <BR>不过,请注意所有这些任务 — 分段、镜像、逻辑文件系统构建 — 的执行都只支持一种类型的服务器,Oracle 数据库。因此,Oracle 自己提供一些技巧来简化或改进这个过程不是很有意义吗?  <BR>  <BR>Oracle Database 10g 正是这么做的。一个新的和激动人心的特性 — 自动存储管理 (ASM) — 使 DBA 能够完全在 Oracle 框架内执行上述的许多任务。利用 ASM,您可以仅利用 Oracle Database 10g 软件自带的功能(无需额外的成本)来将一组磁盘转换成一个高可伸缩的(重点是在“可伸缩”上)和高性能的文件系统/卷管理器。并且您不需要是一个磁盘、卷管理器或文件系统管理方面的专家。  <BR>  <BR>在本部分中,您将了解到关于 ASM 大量的基础知识,以开始在实际的应用程序中使用它。正如您的猜测,这个强大的特性无疑将引发全面的讨论,篇幅所限,我们不能在此作过多介绍,如果您想了解更多的内容,在结论部分列出了一些极好的信息来源。  <BR>  <BR>ASM 是什么?  <BR>  <BR>假设您要在数据库中使用 10 个磁盘。利用 ASM,您不需要在 OS 端创建任何东西,该特性将把一组物理磁盘集合成一个逻辑实体(称为磁盘组)。磁盘组类似于一个分段(和可选镜像)文件系统,但具有重要的差异:它不是一个用于存储用户文件的通用文件系统,并且它不进行缓冲。由于后面的原因,磁盘组提供了直接作为原始设备来访问这个空间,并仍提供文件系统的便利性和灵活性的好处。  <BR>  <BR>逻辑卷管理器一般使用一个函数(如散列函数)来将块的逻辑地址映射到物理块。计算使用 CPU 周期。此外,当增加一个新的磁盘(或 RAID-5 磁盘组)时,这种典型的分段函数需要重新定位整个数据集中的每一位。  <BR>  <BR>相比而言,ASM 使用一个特殊的 Oracle 例程来解决从文件区到物理磁盘块的映射问题。这种设计除了定位文件区非常快速之外,还在增加或删除磁盘时有所帮助,因为文件区的位置不需要调整。这个特殊的 ASM 例程类似于其它的文件系统,必须运行此例程,ASM 才能工作,并且用户不能进行修改。一个 ASM 例程可以在同一台服务器上支持许多 Oracle 数据库例程。  <BR>  <BR>这个特殊的例程只是一个例程,不是用户可以在其中创建对象的数据库。所有关于磁盘的元数据都存储在磁盘组本身中,使得它们能够尽可能地自我描述。  <BR>  <BR>那么概括地说,ASM 的优点是什么?  <BR>磁盘增加 — 增加磁盘变得非常容易。无需停机时间,并且文件区域自动重新分配。  <BR>I/O 分配 — I/O 自动分布在所有可用的磁盘上,无需人工干预,从而减少了热点出现的可能性。  <BR>带区宽度 — 在重做日志文件中分段可以细分(128K,以获得更快的传输速率),对于数据文件,带区则略大一些(1MB,以一次性传输大量的数据块)。  <BR>缓冲 — ASM 文件系统不进行缓冲,直接进行输入/输出。  <BR>核心化的异步 I/O — 实现核心化的异步 I/O 无需特殊的设置,并且无需使用原始或第三方的文件系统(如 Veritas Quick I/O)。  <BR>镜像 — 如果硬件镜像不可用,则可以容易地建立软件镜像。  <BR>逐步创建一个基于 ASM 的数据库  <BR>  <BR>下面是如何创建一个基于 ASM 的数据库的具体的示例:  <BR>  <BR>1. 创建一个 ASM 例程  <BR>  <BR>通过指定下列初始化参数,您可以利用数据库创建助手来创建一个 ASM 例程:  <BR>  <BR>INSTANCE_TYPE = ASM <BR>  <BR>当服务器启动时,您应当启动该例程,而当服务器关闭时,应当最后关闭该例程。  <BR>  <BR>这个参数的默认值是 RDBMS,适用于常见的数据库。  <BR>  <BR>2. 创建磁盘组  <BR>  <BR>在启动 ASM 例程后,利用可用的磁盘创建一个磁盘组。  <BR>  <BR>CREATE DISKGROUP dskgrp1 <BR>EXTERNAL REDUNDANCY <BR>DISK <BR>'/dev/d1', <BR>'/dev/d2', <BR>'/dev/d3', <BR>'/dev/d4', <BR>... and so on for all the specific disks ... <BR>; <BR>  <BR>在上述命令中,我们使数据库利用名称为 /dev/d1、/dev/d2 等的磁盘创建了一个名称为 dksgrp1 的磁盘组。您还可以在 DISK 子句中用通配符指定磁盘名称,而不是分别给定磁盘。  <BR>  <BR>DISK '/dev/d*' <BR>  <BR>在上述命令中,我们指定了一个子句 EXTERNAL REDUNDANCY,它指示一个磁盘出现故障将使磁盘组停止工作。这通常是由硬件提供冗余(如镜像)的情况。如果没有基于硬件的冗余,则可以设置 ASM 来在磁盘组中创建一组特殊的磁盘(称为 failgroup),以提供这种冗余。  <BR>  <BR>CREATE DISKGROUP dskgrp1 <BR>NORMAL REDUNDANCY <BR>FAILGROUP failgrp1 DISK <BR>'/dev/d1', <BR>'/dev/d2', <BR>FAILGROUP failgrp2 DISK <BR>'/dev/d3', <BR>'/dev/d4'; <BR>  <BR>d3 和 d4 不是 d1 和 d2 的镜像,虽然看起来似乎是那样。相反,ASM 使用所有的磁盘来创建一个容错系统。例如,可能利用在 d4 上保留的一个备份来在 d1 中创建磁盘组上的一个文件。另一个文件可以利用 d2 上的备份在 d3 上创建。一个特定的磁盘出现故障,则允许使用另一个磁盘上的备份,以使操作可以继续。例如,您可能丢失了磁盘 d1 和 d2 的控制器,ASM 将为全部故障磁盘组的区块的拷贝建立镜像,以保持数据完整性。  <BR>  <BR>3. 创建表空间  <BR>  <BR>现在利用基于 ASM 的存储器中的一个数据文件来在主数据库中创建一个表空间。  <BR>  <BR>CREATE TABLESPACE USER_DATA DATAFILE '+dskgrp1/user_data_01'  <BR>SIZE 1024M <BR>/ <BR>  <BR>就这样!创建过程完成了。  <BR>  <BR>注意磁盘组是如何作为一个虚拟文件系统使用的。这种方法不仅在数据文件中有用,在其它类型的 Oracle 文件中也有用。例如,您可以按以下方式创建在线重做日志文件  <BR>  <BR>LOGFILE GROUP 1 ( <BR>'+dskgrp1/redo/group_1.258.3', <BR>'+dskgrp2/redo/group_1.258.3' <BR>) SIZE 50M, <BR>... <BR>  <BR>更多的资源  <BR>正如之前所提到的,本文的目的不是为了提供关于 AMS 特性的所有知识,使您变成一个专家,原因很简单,相关的信息量太大了。不过,别失望,在 Oracle 技术网上提供了许多的帮助:  <BR>  <BR>“自动存储”(作者:Lannes Morris-Murphy)是关于 ASM 的一篇极好的介绍性文章。  <BR>  <BR>ASMLib — 为 Linux 提供的一个 ASM 特性的资料库 — 扩展了 ASM 功能。本页面还链接了技术参考文献和资料库模块的源代码。  <BR>  <BR>Oracle 数据库管理员指南 10g Release 1 (10.1) 的第 12 章完整说明了 ASM 背后的概念。  <BR>   <BR>甚至存档日志目标也可以设为一个磁盘组。与 Oracle 数据库相关的全部内容都可以在一个基于 ASM 的磁盘组中创建。例如,备份是 ASM 的另一大用途。您可以设置一组廉价的磁盘来创建一个数据库的恢复区,RMAN 可以使用这个恢复区来创建备份数据库文件和存档日志文件。(在下一个关于 Oracle Database 10g 中的 RMAN 的部分中,您将详细了解如何使用这种功能来为您带来好处。)  <BR>  <BR>请记住,无论 ASM 如何支持仅由 Oracle 数据库创建和读取的文件;它也不能替代一个通用的文件系统,并且不能存储二进制文件和纯文本文件。  <BR>  <BR>维护  <BR>  <BR>让我们看看维护磁盘组所需的一些典型任务。您可能必须经常在磁盘组 dskgrp1 中增加额外的磁盘来适应不断增长的需求。可以执行下面的语句:  <BR>  <BR>alter diskgroup dskgrp1 add disk '/dev/d5'; <BR>  <BR>要查明哪个磁盘在哪个磁盘组中,可以执行下面的语句:  <BR>  <BR>select * from v$asm_disk; <BR>  <BR>该命令显示了 ASM 例程为所有客户机数据库管理的所有磁盘。在这些磁盘中,您可能决定利用以下命令来删除一个磁盘:  <BR>  <BR>alter diskgroup dskgrp1 drop disk diskb23;
喜欢0 评分0
游客

返回顶部