Oracle Exadata初探

标签: 图书推荐 | 发表时间:2012-08-14 13:32 | 作者:baiyuzhong
出处:http://www.programmer.com.cn

Exadata是什么?

在我们看来,它是一个把硬件和软件根据合理的配置整合在一起的 Oracle数据库(在本文编写时是11gR2版本)平台。Exadata数据库机器包含了存储子系统,在存储层上运行着研发的新软件,这使得研发人员可以做一些在其他平台上无法完成的事情。

实际上,Exadata一开始是以一个存储系统形式诞生的,如果你跟参与研发此产品的人交谈,你经常会听到他们称存储组件为Exadata或者是SAGE (Storage Appliance for Grid Environments,网格环境存储设备),这是该产品研发项目的代码名称。

Exadata原本设计用来解决超大型数据库所存在的普遍性能瓶颈,也就是无法(在可接受时间内)从磁盘存储系统向数据库服务器传输足够大量的数据。Oracle一直以来都提供了非常快速的数据访问方式,主要是通过非常聪明的缓存技术,但是当数据库容量开始扩大到无法高效使用缓存技术的时候,Oracle开始寻找一种解决方案,可以有效解决存在于存储层和数据库层之间的瓶颈。他们想出的解决方案是融合了硬件和软件的组合拳。如果你仔细想一下,也可以知道有两种方法可以减小这个瓶颈,第一种是让传输管道更大,虽然有很多组件参与其中,不过你可以简单地认为Infiniband就是这个更大的管道;第二种方法是减少需要传输的数据量,这是通过智能扫描(Smart Scan)来完成的。这套组合非常成功地解决了问题,但是不要误会,通过智能扫描实现的后者(第二种方法)才是真正的制胜秘诀。

Kevin说:如果前提是尽可能地减少对于Oracle数据库核心功能的修改的话,作者们对于减轻数据仓库/商业智能系统的存储和服务器之间瓶颈的方法论描述是正确的,不过实际上,从一个纯粹的计算机科学角度看,存储和服务器之间数据流问题的解决方案中还应该包括划分多个数据库实例读取数据的方法,也就是“shared-nothing”这种MPP方法。虽然这也值得一提,不过还是不把时间浪费在讨论Oracle并未采用的方案上了。

Kevin说:在我看来,数据仓库/商业智能从业者,在Oracle环境中,如果对Exadata感兴趣,那么在了解Exadata其他方面之前,最应该先了解的是存储节点卸载(Offload)处理,而所有的其他技术都只是为了支持存储节点的卸载处理。比如,过早过多地关注Exadata Infiniband组件,就并非是深刻理解整个技术的最好方式,换句话说,我们在观察细节之前最好先欣赏全局。当我做Exadata主题培训的时候,我都是从存储节点卸载处理开始,讲解下面四个概念。

存储节点卸载处理(Cell Offload Processing):该工作由存储服务器完成,否则就必须在数据库服务器上执行。它包括的功能有智能扫描、数据文件初始化、RMAN offload和混合列式压缩解压(在没有内存并行查询的场景中)。

智能扫描(Smart Scan):这是存储节点卸载处理中与提高数据仓库/商业智能查询性能的最有关系的操作,智能扫描是将数据文件初始化、字段投影、存储索引消减以及HCC解压等操作卸载到存储节点的方法。

全表扫描或者全索引快速扫描(Full Scan or Index Fast Full Scan):为了触发智能扫描,查询优化器选择的必要的访问方法。

直接路径读取(Direct Path Read):智能扫描需要的缓存模型,智能扫描的数据流是无法缓存在SGA缓冲池中的。直接路径读取可以串行也可以并行,缓冲在进程的PGA(heap)中。

Exadata概览

一图胜千言。图1-1展示了组成Exadata数据库机器的各部分的轮廓。

图1-1  Exadata组件概览

 

当考虑Exadata的时候,如果在思想上将整个系统划分为两个部分会更好理解,即存储层和数据库层。两层之间用Infiniband网络来连接,Infiniband提供了低延迟、高带宽的光纤通信链路,也提供了链路上的冗余和联结(bonding)。数据库层由多个Sun服务器组成,运行着Oracle 11gR2软件,虽然RAC实际上并不是必须的,但是这些服务器通常还是配置成一个或多个RAC集群。

数据库服务器使用ASM来管理存储,即使数据库并不是配置成RAC,ASM也是必须的。存储层同样由多个Sun服务器构成,每个存储服务器都包含12块磁盘,并且运行着Oracle存储服务器软件(称之为cellsrv)。两层之间的通信通过iDB协议完成,这是一种使用Infiniband来实现的网络协议,iDB用来将请求和请求的元数据(比如说查询谓词)传输到cellsrv中,在某些情况下,cellsrv可以利用请求元数据来访问需要的数据,而后再将结果传输回数据库层。当cellsrv如此运作的时候,就被称为智能扫描,通常因此将会极大减少需要传输回数据库层的数据量。当无法使用智能扫描的时候,cellsrv就会返回整个Oracle数据块。iDB使用的是RDS协议,这是一种低延迟的协议,跳过了内核调用,在Infiniband网络中通过远程直接内存访问(RDMA)来完成进程间通信。

Exadata的历史

自2008年首次发布以来,Exadata已经经历了好几次重大变革。以下简要回顾产品的沿袭和与时俱进的变迁。

Kevin说:我想分享一些历史。在Exadata之前,我们有一个SAGE——网格环境存储设备,这大概可以称为V0。实际上直到为了在2008年的Open World时大张旗鼓地跟惠普一起缔造一个超强联合品牌,拉里埃里森将之命名为Exadata之前的一星期,它还一直被称为SAGE。虽然SAGE的第一个实现版本完全采用了HP的硬件,不过Oracle始终没有认为这个平台一定要运行于HP硬件之上,在Oracle收购Sun后,Exadata平台更是完全地采用了Sun的硬件。另一方面,Oracle也没有认为数据库主机一定要运行于Linux操作系统之上,事实上就在收购Sun成为事实之前,把iDB移植到HP-UX安腾平台的开发工作已经接近尾声了。要说SAGE的诞生,其实可以追溯到更早的时候。

V1:2008年末发布的第一款Exadata,被称为V1,融合了HP的硬件和Oracle的软件。整体架构跟现在的X2-2版本相似,除了Flash Cache部分(这是在V2版本中新加入的)。Exadata V1市场定位在纯粹的数据仓库平台。该产品广受关注但是并没有大面积部署,由于硬件过热带来的麻烦也让人头疼,总是听到“在机柜上都可以煎鸡蛋了”这样的说法。很多原先V1的客户后来都替换成了V2。

V2:2009年的Open World上发布了Exadata第2版本。这个版本是Sun和Oracle合作的产品。当发布该产品时,Oracle已经在尝试收购Sun微系统公司。很多组件都升级到更大更快的版本,不过最大的区别是V2采用了大容量的固态存储。存储节点升级为使用了384G的Exadata智能闪存,而软件也同样升级,以充分发挥这些新缓存的效能。这让Oracle可以将产品定位于不仅仅是数据仓库的平台,由此打开了一个更大的市场。

X2:2010年的Open World上发布了Exadata第3版本,被称为X2。实际上X2有两个独立的版本。X2-2依循的是V2的基本架构,但是数据库服务器升级到了8台双CPU服务器,CPU也升级到了6核,之前的V2是4核。另外一个X2版本是X2-8,它没有使用小型的1U数据库服务器,而是引入了更大的拥有8´8核CPU核、1T内存的更大的数据库服务器,由于具有更多的CPU和更大的内存,X2-8的市场定位是为大型OLTP系统或者混合负载系统提供更强劲、更稳定的平台。

本文节选自《深入理解Oracle Exadata》,本书由Kerry Osborne(凯里•奥斯本)、Randy Johnson(兰迪•约翰逊)、Tanel Põder(托内耳•卜戴德)著,黄凯耀,张乐奕,张瑞译,电子工业出版社出版。

 

 

相关 [oracle exadata] 推荐:

Oracle Exadata初探

- - 技术改变世界 创新驱动中国 - 《程序员》官网
在我们看来,它是一个把硬件和软件根据合理的配置整合在一起的 Oracle数据库(在本文编写时是11gR2版本)平台. Exadata数据库机器包含了存储子系统,在存储层上运行着研发的新软件,这使得研发人员可以做一些在其他平台上无法完成的事情. 实际上,Exadata一开始是以一个存储系统形式诞生的,如果你跟参与研发此产品的人交谈,你经常会听到他们称存储组件为Exadata或者是SAGE (Storage Appliance for Grid Environments,网格环境存储设备),这是该产品研发项目的代码名称.

Oracle 收购 Ksplice

- feng823 - LinuxTOY
实现无需重启即可为 Linux 内核打安全补丁的 Ksplice 被 Oracle 收购. 在被收购前, Ksplice 为 Fedora, Ubuntu 免费提供该功能,对于 RHEL 和 CentOS 则需要订阅其产品. Oracle 表示将把 Ksplice 带来的零宕机安全更新功能添加到 Oracle 产品订阅服务中,同时停止对其他企业级 Linux 发行版的支持,将 Oracle Unbreakable Linux 打造成唯一具备零宕机安全更新功能的企业级 Linux 发行版.

Linux Ksplice,MySQL and Oracle

- Syn - DBA Notes
Oracle 在 7 月份收购了 Ksplice. 使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性. 现在该产品已经合并到 Oracle Linux 中. 目前已经有超过 700 家客户,超过 10 万套系统使用了 Ksplice (不知道国内是否已经有用户了.

oracle license计算

- Fenng - eagle's home
Oracle license的计算是基于CPU core的. 用core的数目乘以一个系数core factor就可以得到所需的oracle license的数目. 对于不同的CPU,core factor是不一样的,可以从oracle提供的这张列表中查到 Oracle Processor Core Factor Table.

Oracle MySQL Or NoSQL续

- - Sky.Jian 朝阳的天空
接前面一篇,这里再将之前在“中国系统架构师大会”5周年的时候发布的纪念册“IT架构实录”上的一篇文章发出来,也算是前面博文中PPT的一个文字版解读吧. Oracle,MySQL 还是 NoSQL. 随着阿里系的“去IOE”运动在社区的宣传声越来越大,国内正在掀起一股“去xxx”的技术潮. 不仅仅是互联网企业,包括运营商以及金融机构都已经开始加入到这个潮流之中.

[转]Oracle 碎片

- - 小鸥的博客
  当生成一个数据库时,它会 分成称为表空间( Tablespace )的多个逻辑段( Segment ),如系统( System )表空间 , 临时( Temporary )表空间等. 一个表空间可以包含多个数据范围( Extent )和一个或多个自由范围块,即自由空间( Free Space ).

oracle 索引

- - 数据库 - ITeye博客
        自动:在使用primary和unique后系统会自动创建唯一索引.         手动:create   index   索引名  on 表名(字段1,....). 查询表上有哪些索引(网上找的,能用,表名和索引名要大写). 1、查找表的所有索引(包括索引名,类型,构成列):. select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表.

Oracle索引

- - Oracle - 数据库 - ITeye博客
在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快. 索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容. 对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分. singlecolumnorconcatenated  对一列或多列建所引.

Oracle表空间(tablespaces)

- - 博客园_首页
  我们知道oarcle数据库真正存放数据的是数据文件(data files),Oarcle表空间(tablespaces)实际上是一个逻辑的概念,他在物理上是并不存在的,那么把一组data files 捻在一起就成为一个表空间. 一个数据库可以包含多个表空间,一个表空间只能属于一个数据库. 一个表空间包含多个数据文件,一个数据文件只能属于一个表空间.

Oracle函数介绍

- - CSDN博客数据库推荐文章
在SQL中有两种函数一种是单行函数,一种是多行函数.在sql与pl/sql中都自带了很多类型的函数,比如有字符、数字、日期、转换和混合型等多种函数用于处理单行数据,因此这些都被称为单行函数.这些函数都可以被用于select、where和oder by等子句中.下面我们就来分析单行函数,在这里我列举了oracle中一些常用的单行函数进行操作.希望你所有收获:.