Oracle数据库分析.pdf
请务必阅读正文之后的 重要声明 部分 Table_Industry 证券研究报告 /行业深度 报告 2019 年 06 月 18 日 计算机行业 Oracle 数据库分析 Table_Main Table_Title 评级:增持(维持) 分析师:谢春生 执业证书编号: S0740518010002 Email: xiecsr.qlzq 研究助理 : 杨亚宇 Email: yangyyr.qlzq Table_Profit 基本状况 上市公司数 207 行业总市值 (亿 元 ) 20048 行业流通市值 (亿元 ) 9846 Table_QuotePic 行业 -市场走势对比 公司持有该股票比例 Table_Report 相关报告 Table_Finance Table_Summary 投资要点 数据库作为计算机架构的核心底层软件, 从 1970 年左右发展到现在,已经有五十年左右的时间。那个时候,软件还并没有很正式的作为单独的产品进行销售,更多的是与硬件和解决方案一起卖给客户。数据库产品发展到现在,中间经过各种计算载体和计算架构的变化,但数据库的核心重要位置依然没有变化。同时,我们看到在这个过程中,数据库领域进进出出的厂商有很多,但 Oracle 的行业领导地位也一直没有发生变化 。 如何理解数据库? 对于非 IT 专业的人,经常会问,数据库有什么用?数据库,从字面来理解就是保存数据的仓库。按照正式语言来定义,数据库是按照一定的结构,来组织、存储和管理数据的仓 库。在计算机中,它一般是由一个或者一组文件构成。如果没有数据库,计算机的数据处理速度(读写的速度)可能就没有这么迅速。 在数据库产品的演进中,其基于的数据模型也在发生变化。 根据数据模型的不同,数据库可以分为关系型数据库和非关系型数据库。关系型数据库的底层数据模型是关系模型。非关系型数据库是一个大类,其又可以分为不同种类的数据库。比如,面向高性能并发读写的 key-value 数据库,面向海量数据访问的面向文档数据库,面向可扩展性的分布式数据库等。 Oracle 的数据库产品。 Oracle 的数据库产品是公司最起家的 业务。 Oracle的数据库业务发展历程,与全球数据库发展历史交织在一起,也与 Oracle整个公司的发展绑定在一起。 Oracle 的数据库产品包括两种。第一个是Oracle 自己的数据库产品,也就是 Oracle Database。第二个是 MySQL。关于 MySQL 与 Oracle 的关系,也是从原来的竞争对手,通过 Sun 这家公司而成为 Oracle 自己的产品。目前 Oracle 的数据产品已经更新到 Oracle Database 18c,其提供了一个高性能、高可靠和高安全的平台,可以在云,本地或混合云进行部署。 Oracle 数据库面临的竞争。 在数据库领域,商业数据库一直面临着来自于开源数据库的竞争,关系型数据库也面临着来自于非关系型数据库( NoSQL)的竞争。最近几年,在新的计算环境下, Oracle 的数据库产品面临的外部挑战和外部竞争也越来越大。我们经常看到,亚马逊、阿里、Salesforce 等云计算厂商也都在基于开源数据库,研发自主的数据库产品。商业数据库 &开源数据库,关系型数据库和非关系型数据库,未来又将走向何方? 风险提示。 行业景气度回升进程低于预期的风险;人力成本上升超过预期的风险; 行业业绩增速低于预期的风险;技术的演进进程低于预期的风险 。 -30%-20%-10%0%10%20%30%40%18-0618-0718-0818-0918-1018-1118-1219-0119-0219-0319-0419-05计算机 (申万 ) 沪深 300 请务必阅读正文之后的 重要声明 部分 - 2 - 行业深度 研究 内容目录 1、为什么研究 Oracle 数据库? . - 3 - 2、如何理解数据库? . - 5 - 3、数据库的发展历程 . - 10 - 4、 Oracle 的数据库 . - 20 - 5、 Oracle 数据库面临的竞争 . - 33 - 6、数据库市场格局演化情况 . - 35 - 7、总结 . - 42 - 风险提示 . - 43 - 请务必阅读正文之后的 重要声明 部分 - 3 - 行业深度 研究 1、 为什么研究 Oracle 数据库? 数据库作为 计算机架构 的核心底层软件,从 1970 年左右发展到现在,已 经有五十年左右的时间。那个时候,软件还并没有很正式的作为单独的产品进行销售,更多的是与硬件和解决方案一起卖给客 户。数据库产品发展到现在,中间经过各种计算载体和计算架构的变化,但数据库的核心重要位置依然没有变化 。同时,我们看到在这个过程中,数据库领域进进出出的厂商有很多,但 Oracle 的行业领导地位也一直 没有发生变化 。 如果我们读过数据库的发展历史,我们也会好奇,是哪些因素造就了Oracle 的在数据库领域长达 40 多年的 行业 领导地位 , 并不断保持产品性能的领先? 同时,随着计算场景和计算架构的变化,新的数据库模型不断涌现,对传统关系型数据库带来一定挑战。未来 Oracle 的数据库产品又该如何应对? 在目前自主可控的背景下,大家也比较关心国产数据库的发展和应用情况。国内数据库的参与者主要包括南大通用、武汉达梦、北京凯星辰、人大金仓、广州巨杉等。 与海外 主流数据库相比,目前 国内的数据库处于什么竞争水平? 通过研究 Oracle 的数据库产品 ,可以使我们对数据库这个行业有一个初步的认识,来进一步分析在关键的 IT 底层环节,未来国内自主可控的路径和可能性。 从 Oracle 公司自身来 看, Oracle 可以说是全球 软件 巨头 ,体量虽然没有 Microsoft 那么大,但 ,( 1) 在数据库和应用软件领域, Oracle 的确实有其难以撼动的地位 。 ( 2)在 IT 布局的完备性方面, Oracle 应该是继 IBM 之后(在 IBM 发展中,其业务发生多次调整和分拆),在全球 IT巨头中布局最为完整、最为完善的一家。我们这里所说的 IT 完备性主要是基于 IT 基础产业链 角度。 在 Oracle 的发展过程中,其业务种类 越来越 多样化,既包括软件、也包括硬件;软件中既包括应用软件、也包括基础软件。 如何更好的理解Oracle 的每个业务。从 这篇文章开始,我们将把 Oracle 的主要业务,做一系列的讲解。以便于我们对国内相应市场和相应公司的产品做比较。 请务必阅读正文之后的 重要声明 部分 - 4 - 行业深度 研究 图表 1: Oracle 的业务布局 来源: Gartner、 中泰证券研究所 图表 2: Oracle 营业收入 图表 3: Oracle 净利润 来源: Wind、 中泰证券研究所 来源: Wind、 中泰证券研究所 数据库是 Oracle 创立 之初的业务 ,也是 Oracle 其他业务 发展的 基础。即使目前,数据库业务 收入 在 Oracle 各业务中 占比 最大, 也是 Oracle最赚钱的业务之一 。 从下面这个数据我们可以看出,数据库业务收入占比在 35%-40%左右。可知,数据库业务对于 Oracle 而言是非常重要的业务。 144 180 224 233 268 356 371 372 383 382 370 377 398 25.1% 24.6% 3.7% 15.3% 32.8% 4.2% 0.2% 2.9% -0.1% -3.1% 1.8% 5.6% -5%0%5%10%15%20%25%30%35%050100150200250300350400450收入(亿元,左轴) 增速( %,右轴) 34 43 55 56 61 85 100 109 110 99 89 93 38 26.4% 29.2% 1.3% 9.7% 39.3% 16.8% 9.5% 0.3% -9.3% -10.4% 4.9% -59% -80%-60%-40%-20%0%20%40%60%020406080100120 净利润(亿元,左轴) 增速( %,右轴) 请务必阅读正文之后的 重要声明 部分 - 5 - 行业深度 研究 图表 4: Oracle 收入构成( 2016) 来源: Gartner、 中泰证券研究所 2、 如何理解 数据库 ? 如何理解数据库 ? 从 IT 基础架构来看,数据库是计算机底层架构的核心基础软件。我们通常说计算机三大基础软件:操作系统、数据库、中间件。如果没有数据库, 计算机的数据处理速度(读写的速度)可能就没有这么迅速 。对于非 IT 专业的人,经常会问,数据库有什么用? 数据库,从字面来理解就是保存数据的仓库。按照正式语言来定义 ,数据库是按照一定的结构,来组织、存储和管理数据的仓库。在计算机中,它一般是由一个或者一组文件构成。在以上的描述中,我们需要关注几个关键词:结构、组织、存储、管理。 为什么需要数据库? 从本质来看 , 计算机解决的 是数据计算和数据处理问题。 数据库是计算机应用系统中的一种专门管理数据资源的系统 。数据有多种形式,包括 文字、数码、符号、图形、图像以及声音等。数据是所有计算机系统所要处理的对象。 在计算机发展的过程中,人们也一直在想如何 解决计算机产生的大量数据 的 存储和管理 问题 。 在早期,一种解决方法 是制作文件,即将处理过程编成程序文件,将所涉及的数据按程序要求组织成数据文件,用程序文件来调用。数据文件与程序文件保持着一定的对应关系。 但在计算机应用快速 发展的背景 下,这种文件式方法表现出一定的不足 。比如,在这种模式 中 , 数据通用性 较 差,不便于移植,在不同文件中存储大量重复信息、浪费存储空间、更新不便等。 Database Software, 36.0% Database Infrastructure, 6.0% On-premise Applications, 25.0% Cloud Reveues, 11.0% Professional Services, 9.0% Hardware Sales , 5.0% Hardware Support, 6.0% 请务必阅读正文之后的 重要声明 部分 - 6 - 行业深度 研究 图表 5: 文件保存数据的缺点 来源: Gartner、 中泰证券研究所 如果引入文件管理系统, 文件管理系统作为应用程序与 数据文件的接口,这些应用程序只需要与文件管理系统交互就可以带来一些灵活性。不过这种方式还是解决不了“ 数据冗余 、 处理效率低 ” 的问题,特别是在较大规模的系统中更加明显 。 数据库系统便能解决上述问题。数据库系统不从具体的应用程序出发,而是立足于数据本身的管理,它将所有数据保存在数据库中,进行科学的组织,并借助于数据库管理系统,以它为中介,与各种应用程序或应用系统接口,使之能方便地使用数据库中的数据。 图表 6: 数据库 管理方式的演化 来源: Wind、 中泰证券研究所 请务必阅读正文之后的 重要声明 部分 - 7 - 行业深度 研究 Oracle 数据库服务器大致分为两个主要部分: 1) Oracle instance (数据库实例,上半部分) 2) Database(数据库,下半部分)。 Oracle 服务器 =实例 +数据库 。 实例 =SGA(实例内存) +后台进程 内存 =SGA+PGA SGA=Database Buffer Cache (数据库高速缓存区缓存) +Share Pool (共享池) +Redo Log Buffer(日志缓存区) 图表 7: Oracle 数据库体系结构图 来源: Gartner、 中泰证券研究所 用户不能直接连接到数据库,而是用户先发出一个用户进程, 用户进程和 Oracle 服务器发出的服务器进程交互,然后服务器进程再和实例交互,最后实例和底层数据库交互,从而实现用户和数据库的交互。具体过程看下图: 图表 8: 用户与数据库数据的交互过程 来源: Wind、 中泰证券研究所 请务必阅读正文之后的 重要声明 部分 - 8 - 行业深度 研究 我们以 Oracle 数据库为例,来介绍下数据库的体系结构,这样更有利于我们对数据库的理解 。 从存储结构上 , oracle 数据库 可以分为物理存储结构和逻辑存储结构 。 物理存储结构: 主要由 数据文件,控制文件,重做日志文件 3 种类型的文件组成。 1) 数据文件:存储数据库数据的文件 。数据库中的所有数据最终都保存在数据文件中。但一个数据文件只对应一个数据库,而一个数据库可以包含多个数据文件。 2) 控制文件:是一个很小的二进制文件,用于维护和描述数据库的物理结构 。控制 文件十分重要,存放着数据库中的数据文件和日志文件,一旦该文件受损,数据库将无法正常工作。 3) 重做日志文件:用于记录数据库中所有修改信息的文件,简称日志文件 。该文件是进行数据库备份与恢复的重要手段,可以保证数据库的安全,并且该文件不是唯一存在的,在一个日志文件组中,日志文 件最多可以有五个。 除了上述文件,还有参数文件,备份文件,归档重做日志文件,警告、跟踪日志文件。 图表 1: 数据库的 两个存储结构 来源: Gartner、 中泰证券研究所 逻辑存储结构 : 主要包括表空间,段,区和数据块,它们的关系为:数据库 =N*表空间 =N*段 =N*区 =N*数据块 1) 表空间: Oracle 中最大的逻辑存储结构,与物理上的一个或多个数据文件相对应,大小等于所有数据文件大小的总和。 2) 段: 一般是数据库终端用户将处理的最小存储单位,段的数据空间是以数据区为单位的,根据存储数据的特征,可以分为 4 种类型(数据段,索引段,临时段,回退段)。 请务必阅读正文之后的 重要声明 部分 - 9 - 行业深度 研究 3) 区: 磁盘空间分配的最小单位,有一个或多个数据块组成。 4) 数据块: 用来管理存储空间的最基本单位,也是最小的逻辑存储单位数据块由块头部,表目录,行目录,空闲空间,行空间组成。 图表 10: 数据库的架构 来源: Wind、 中泰证券研究所 从实例结构上 , Oracle 可以分为 进程结构和内存结构 。 进程结构: 主要包括: DBWn 进程, LGWR 进程, CKPT 进程, SMON进程, PMON 进程, ARCn 进程。 DBWn 进程: ( Database writer,数据库写入)进程,用于管理数据缓冲区,以便用户总能找到空闲的缓冲区,通过延迟写优化磁盘 I/O 读写,将所有修改后的缓冲区数据写入数据文件。 LGWR 进程: ( log writer,日志写入)进程,负责管理日志缓冲区的一个后台程序,用于将缓冲区的数据写入磁盘的日志文件。 CKPT 进程: ( check point,检查点或检验点)进程,一般在日志切换时自动产生,用于缩短实例恢复所需时间 。 SMON 进程: (system monitor,系统监控 )用于数据库实例出现故障或系统崩溃时,通过将联机重做日志文件中的条目应用于数据文件,执行崩溃恢复,还用于系统重新启动期间清理所有表空间的临时段。 PMON 进程 :( process monitor,进程监控)进程,用于在用户出现故障时执行进程恢复操作,负责清理内存存储区和释放该进程所使用的资源。 ARCO 进程 :( archive process,归档)进程,用于将写满的日志文件复制到归档日志文件中,防止日志文件组中的日志信息由于日志文件组的循环使用而被覆盖。只有当 oracle 数据库运行在归档模式下 是才会产生ARCN 进程。 RECO 进程 :( recovery,恢复)进程,存在于分布式数据库系统中,用于自动解决在分布式数据库中出现的事务故障。 请务必阅读正文之后的 重要声明 部分 - 10 - 行业深度 研究 内存结构:主要分为系统全局区( SGA),程序全局区( PGA)。 内存结构是影响数据库性能的主要因素之一。 系统全局区 ( system global area)是 Oracle 为系统分配的一组共享的内存结构,可以包含一个数据库实例的数据或控制信息。在一个数据库实例中,可以有多个用户进程,这些用户进程可以共享系统全局区的数据。该区域 包括的分区: : 1) 数据缓冲区: 用于存储从磁盘文件中读取的数据,供所有用户共享。 2) 日志缓冲区: 用于存储数据库的修改操作信息。 3) 共享池: 用于保存最近执行的 SQL 语句, PL/SQL 程序的数据字典信息,它是对 SQL 语句和 PL/SQL 程序进行语法分析,编译和执行的内存区域。 4) 大型池: 用于提供一个大的缓冲区功数据库的备份与恢复数据使用,是 SGA 的可选区域。 5) JAVA 池: 用于在数据库中支持 JAVA 的执行。 程序全局区( program global area):是 oracle 系统分配给一个进程的私有内存区域 。 3、数据库的发展历程 数据管理方式的演变 。今天我们看到的数据库是随着数据管理方式的演变 、成熟 和完善之后的产品形态。数据库其实就是对数据进行存储、管理、处理的 载体。而这些数据的载体也随着数据管理方式的不同而呈现出不同的 产品形态。为了更好地 理解数据库在 IT 领域的角色和作用。我们可以了解下,在人类历史上,数据管理方式的演变过程。 打卡机。 在 19 世纪末,美国为了解决人口普查问题,利用打孔卡上的孔来表示数据,当时 Hollerith 发明了分拣机、制表机和记录机,记录完整的数据。 图表 11: 数据库的演进 来源: IDC、 中泰证券研究所