文章
企业管理
作者:Arup Nanda
了解数据库云服务器,了解相应构建块以便对其执行命令。
> 返回系列目录
(注意:本指南用于培训:旨在推动从 DBA 到 DMA 的转变,为培训 DMA 提供快速参考。它无意替代 Oracle 提供的官方手册或其他文档。本指南中的信息未经 Oracle 验证,不受 Oracle 支持,您在使用时只能风险自负。)
我们首先简要介绍一下数据库云服务器。数据库云服务器出厂时为一个机架,该机架容纳了组成数据库基础架构的各种组件:磁盘、服务器、联网设备等等。有三种配置类型可供选择:全机架(见下图)、半机架或四分之一机架。所有这三种类型在架构方面是相同的,但组件数量不同。

图 1 截至本文撰写时数据库云服务器组件的高级视图
下面详细介绍其中每个组件及其作用。下面列出的内容适用于全机架;您还可以通过非常精彩的 3D 演示在实际环境中查看这些组件。
各节点运行 Oracle Clusterware、ASM 实例和数据库实例。您可以决定只创建一个集群或创建多个集群。类似地,您可以决定在集群上创建一个或多个数据库。假设您要创建三个数据库 — dev、int 和 QA,您有两种选择:
如果用第一个方法,您可以轻松添加和删除数据库实例。例如,一个全机架中有 8 个节点,您可以将 2 个节点分配给 dev,2 个给 int,4 个给 QA。假设计划进行成熟生产环境的压力测试,临时需要将所有 8 个节点分配给 QA 以便与生产环境中的 8 个节点保持一致。在此配置中,您只需关闭 dev 和 int 实例,并在这些节点上启动 QA 的另外四个实例。完成压力测试之后,可立即关闭这 4 个 QA 实例并在这些节点上重新启动 dev 和 int 实例。
如果您在数据库云服务器的一个机架上运行多个生产数据库,也可以利用此方法。如果某个数据库临时需要额外的计算能力以便安全渡过季节性的需求高峰,只需关闭另一个数据库的一个实例并在相应节点中重新启动需求量较大的这个数据库的实例。需求减退之后,您可以恢复到原来的状况。也可以在同一节点中运行两个实例,但是它们会相互竞争资源,这种情况是您不希望出现的。在 I/O 级别,可以通过 IO 资源管理器 (IORM) 来控制实例的资源使用情况。
另一方面,使用此方法时,始终只有一个集群。升级该集群时,将需要升级所有数据库。第二种方法则避免了此问题,每个数据库都有各自的集群,实现了完全隔离。您可以对它们进行任意的升级或操作而不会影响到其他数据库。但是,当需要将额外的计算能力用于其他节点时,不能只启动一个实例。需要从该集群删除一个节点,然后将该节点添加到需要它的另一个集群,与简单关闭和启动实例相比,这种操作更为复杂。
既然磁盘归属于存储单元,数据库计算节点如何访问磁盘呢?或者更具体地说,计算节点上运行的 ASM 实例如何访问磁盘?磁盘只提供给单元,不提供给计算节点。计算节点可通过单元查看磁盘。打个不太恰当的比方,这类似于网络连接存储。(请注意,单元磁盘并不作为 NAS 提供;这只是一个类比。)
闪存磁盘也作为存储设备提供给单元,就像普通磁盘一样。因此,可以将闪存磁盘添加到用于数据库的磁盘池以便进行超快访问,也可以使用闪存磁盘创建智能闪存缓存层,作为数据库缓冲区缓存和存储之间的二级缓存。此缓存层将缓存最常使用的对象,但并不遵循与数据库缓冲区缓存相同的算法,不是所有内容在发送到最终用户之前都要被缓存。智能闪存缓存只会缓存频繁访问的数据项,因此称为“智能”缓存。如果请求的数据不在智能闪存缓存中,则会自动将该请求转到磁盘。
您可能想知道,数据库云服务器性能如此惊人,它有什么“窍门”呢?如此性能背后的主要原因是一套运行在存储单元上的软件 — Exadata Storage Server。在这一部分中,我们将简要介绍一下存储服务器的内部组件(本部分不能代替官方文档!)。
在数据库云服务器中,存储并不只是转储存储。存储单元有足够的智能在内部处理某些负载,这样可以减轻数据库节点的工作。此过程被称作单元分流。下一部分将讨论被分流的操作的本质。
在传统 Oracle 数据库中,当用户选择一行甚至是一行中的单个列时,包含该行的整个数据块都会从磁盘读取到缓冲区缓存,然后从该数据块提取所选的行(在某些情况下是列)并将其提供给用户会话。在数据库云服务器中,大多数类型的访问都采用这一过程,但有几种非常重要的类型却不是这样。直接路径访问(例如全表扫描和全索引扫描)的过程与此不同。数据库云服务器可以直接从磁盘提取特定行(或列)并将其发送到数据库节点。此功能称为“智能扫描”,可以极大地减少 I/O。
例如有 10 亿行数据,其中只有 1,000 行与您的查询相匹配,但传统数据库中的全表扫描会检索所有数据块并从中筛选出这些行。而智能扫描将只提取这 1,000 行(甚至是这些行中的特定列,如果所请求的是列的话)— 这可能减少 I/O 一千万倍!单元分流支持单元实现此操作。
并非所有查询都能利用智能扫描。但直接缓冲区读取可以。这种查询的一个例子是全表扫描。索引扫描首先会查看索引块,然后是表块,因此,没有用上智能扫描。
存储单元怎么能知道从数据中筛选哪些列和行呢?这是通过存储软件中内置的另一个组件完成的。节点和单元之间的通信使用一个专门开发的协议 — iDB(智能数据库的缩写)。该协议不仅请求块(像在传统数据库中的 I/O 调用那样),而且可以选择性地发送其他相关信息。在可以执行智能扫描的情况下,iDB 会发送表名称、列名称、谓词以及有关查询的其他相关信息。此信息能让单元了解有关查询的许多其他信息,而不只是要检索的块的地址。同样地,利用 iDB,单元可以发送行和列数据,而不是传统的 Oracle 块。
智能扫描如何实现只发送相关的行和列而不是块?这要归功于存储单元内部的数据模式上构建的特殊数据结构。对于特定段,会将该段的所有列的最小值、最大值以及是否存在空值的信息存储在磁盘上的指定区域(通常大小为 1MB)。此数据结构称为存储索引。当单元通过 iDB 收到来自数据库节点的支持智能扫描的查询时,它将检查存储的哪些区域不含相应数据。例如,如果查询谓词声明 where rating = 3,则磁盘上列 RATING 的最小值和最大值分别为 4 和 10 的区域将肯定不会有任何匹配该谓词的行。因此单元将跳过不读取磁盘的该部分。通过检查存储索引,单元可排除不会包含该值的许多区域,因此可减少大量 I/O。
尽管存储索引在名称中有“索引”这个词,但它与普通索引完全不同。普通索引用于瞄准最有可能找到行的位置;存储索引则用于完全相反的目的 — 它关注的是最没可能找到行的位置。而且,与其他段不同,这些段不是存储在磁盘上;而是驻留在内存中。
数据块在被发送给最终用户之前存放在数据库缓冲区缓存中。如果在此找到数据,则不必往返访问存储。但如果未找到(大型数据库就可能出现这种情况),则不可避免地需要 I/O。在数据库云服务器中,在数据库缓冲区缓存和存储之间可存在二级缓存,称为“智能缓存”。智能缓存保存频繁访问的数据,该缓存中的数据可能满足数据库节点的请求,因而有可能不必转到磁盘,从而可以提升性能。
这是数据库云服务器内部的网络 — 服务器的神经系统,诸如数据库节点和存储单元之类的各种组件通过该网络相互连接。Infiniband 是一个运行 RDP(可靠数据报协议)的硬件介质,它具有高带宽、低延迟的特点,使得数据的传输极其快速。
磁盘布局需要额外说明,因为大多数活动都发生在磁盘上。如前面所述,磁盘连接到存储单元并作为逻辑单元 (LUN) 提供,在逻辑单元上再构建物理卷。
每个存储单元有 12 个物理磁盘。在高容量配置中,这些磁盘大小约为 2TB;在高性能配置中,每个约为 600GB。这些磁盘用于数据库存储。12 个磁盘中有 2 个还用于主目录和其他 Linux 操作系统文件。这两个磁盘划分为不同的分区,如下面的图 2 所示。

图 2 磁盘布局
物理磁盘称为单元磁盘。根据需要的网格磁盘数量,每个单元磁盘分成多个分区(下一句再解释)。每个分区称为一个网格磁盘,表面上引用了网格基础架构,这些磁盘实际用于内部。这些网格磁盘用于构建 ASM 磁盘组,因此用作 ASM 磁盘。ASM 磁盘组由来自多个存储单元的多个 ASM 磁盘组成。如果磁盘组是采用常规冗余或高冗余(通常就是这种情况)方式构建的,则在不同的单元中放置故障组。因此,如果某个单元发生故障,数据在其他单元上仍然可用。最后,在这些磁盘组上构建数据库。
默认情况下这些磁盘组包含以下属性:
| 参数 | 说明 | 值 |
_._DIRVERSION | 目录的最低允许版本 | 11.2.0.2.0 |
COMPATIBLE.ASM | 其特性可以使用此磁盘组的最高 ASM 版本。例如,ASM 卷管理只在 11.2 中可用。如果将此参数设置为 11.1,则此磁盘组就不能用于 ASM 卷。 | 11.2.0.2.0 |
IDP.TYPE | 智能数据放置,这是 ASM 的一项数据放置特性,该特性允许将访问较频繁的数据放在磁盘周围访问速度更快的位置附近。 | dynamic |
CELL.SMART_SCAN_CAPABLE | 是否能对此磁盘组启用 Exadata Storage Server 的智能扫描功能? | TRUE |
COMPATIBLE | 可以在此磁盘组上创建的数据库的最低版本。版本号向后追溯得越深,数据库云服务器和 ASM 实例之间的消息传递就越可能造成性能问题。因此,除非您计划在此创建 11.2 之前版本的数据库(有这种计划的可能性很小),不要改动此参数。 | 11.2.0.2 |
AU Size | 此磁盘上分配单元的大小。AU 是磁盘组上的最小可寻址单元。 |
|
在 12 个磁盘中的 2 个磁盘上,有操作系统、Oracle Exadata Storage Server 软件和其他与操作系统相关的文件系统,如 /home。它们在一个磁盘上约占 29GB。为了进行保护,此区域以 RAID1 方式镜像到另一磁盘上。文件系统挂载在该 RAID1 卷上。
然而,这导致这两个单元磁盘上的数据比其他 10 个单元磁盘上的少。如果在这 12 个磁盘上创建一个 ASM 磁盘组,则在这两个磁盘上将出现不平衡。因此,您(或任何执行此安装的人)应使用其他 10 个单元磁盘上的 29TB 创建另一个磁盘组。这将为其他磁盘组创建相同大小的 ASM 磁盘。这种“补偿性”磁盘组通常名为 DBFS_DG。由于此磁盘组是构建在磁盘的内轨上,所以与外轨相比,性能较低。因此您可能不希望在这里创建数据库,而是将其用作其他目的,如存储 ETL 文件。ETL 文件需要一个文件系统。您可以在此磁盘组上创建一个数据库文件系统 — 因此名为 DBFS_DG。当然,您想怎么用都可以,甚至是将其用于数据库文件,尤其是用于访问量较小的对象。
初步介绍了这些组件之后,下面将提供这些组件的详细说明。
截至本文撰写之时,最新的一代(第三代)数据库云服务器有两种型号(X2-2 和 X2-8),各种规模(全机架、半机架和四分之一机架)以及三种类型的存储(高性能、高容量 SAS 和高容量 SATA)。有关详细规格,请参见 Oracle 网站上的配置规格:X2-2、 X2-8、X2-2 Storage Server。
在本部分中,您已了解什么是数据库云服务器、它由哪些不同硬件和软件组件组成、什么因素让它具有快速的性能以及您应管理哪些内容。下面我们作个总结。在下一部分,您将了解命令类别和初步命令。
| 术语 | 说明 |
单元分流 | 存储单元的一项功能,可执行局部查询处理,且在处理过程中在存储级别筛选不必要的数据。 |
智能扫描 | 此特性允许单元只在相关单元中搜索数据;而不是搜索所有单元 |
iDB | 智能数据库协议,允许数据库节点传递有关查询的信息,例如谓词。它支持智能扫描。 |
节点 | 也称数据库节点或计算节点。这是数据库、ASM 和集群件运行的位置。客户端连接到节点。运行 Oracle Enterprise Linux。 |
单元 | 也称作存储单元,它运行 Exadata Storage Server 软件。数据库使用的磁盘连接到此位置。运行 Oracle Enterprise Linux。 |
智能闪存 | 基于闪存的存储,可用作磁盘或作为频繁访问段的二级缓存以减少磁盘访问。 |
> 返回系列目录