Oracle数据库是由ORACLE(甲骨文)公司于1979年所研制开发的一种关系型数据库。Oracle数据库由多个关系组成,包括表、视图、索引、序列、存储过程等。它是一个以数据为中心,反映数据之间的关系的信息库。Oracle数据库适用于Windows、Linux和unix等多种操作系统。
1977年,拉里·埃里森(Laurel E. Ellison)、鲍勃·穆勒(Bob Miner)和爱德·奥茨(Ed Oates)共同创立软件开发实验室(SDL,甲骨文公司的前身),并开发了Oracle。1979年,Oralce公司推出第一个基于SQL标准的商用的关系数据库Oralce 2版本,该版本使用汇编语言开发,随后于1983年推出由c语言开发的Oracle 3版本。1998年至2001年间,Oracle公司发布了i(Internet)系列的Oracle 8i版本和Oracle 9i版本。然后于2003年至2007年间开启g(grid)网格系列的研究,发布了Oracle 10g和Oracle 11g版本。Oracle从2013年开始了对c(cloud)云系列的研究,发布了Oracle 12c,随后版本持续的更新迭代,2023年发布了代号为“App Simple”的Oracle 23c。
Oracle数据库凭借很好的并行处理能力、系统可移植性好、使用方便、功能强大等特性,被广泛应用于各个领域,它是一种高效率,可靠性好、适应高吞吐量的数据库解决方案,能够满足银行,医院、保险等企业和事业开发大型数据库的需求。截止2022年,DB-Engines公布的最新排名,Oracle数据库的受欢迎程度为全球第一。
发展历程
发展初期
1970年,IBM公司的研究员埃德加·泰德·科德(Edgarh Ted Cod)发表一篇论文——《大型共享数据库数据的关系模型》,在当时还是层次模型和网状模型的数据库产品占据市场主要地位的情况下,这篇论文拉开了关系型数据库软件革命的序幕。1977年,拉里·埃里森(Larry Ellison)与鲍勃·迈纳(Bob Miner)和埃德·奥茨(Ed Oates)在硅谷共同创办了一家名为“软件开发实验室”的软件公司(SDL),是Oracle公司的前身,奥茨看到科德的论文后与埃里森和迈纳商讨,共同筹划构建可商用的关系型数据库管理系统(RDBMS),并将这种商业数据库产品命名为Oracle。
1979年,甲骨文公司推出了世界上第一个基于SQL标准的关系数据库Oracle 2,可用于DEC公司的PDP-11计算机,是第一个商用的关系数据库,它是基于汇编语言开发的,整合了比较完整的SQL实现,其中包括子查询、连接及其它特性,但是软件不稳定,缺少事务处理这样的重要功能。
编程语言的发展
随着高级语言的发展,1983年3月,Oracle公司发布了由c语言开发的Oracle 3,使得Oracle有了一个关键的特性——可移植性。还推出了SQL语句和事务处理的“原子性”——SQL语句要么成功,要么全部失败,事务处理要么全部提交,要么全部回滚。1984年,Oracle公司发布了Oracle 4,增加了读一致性,可以确保用户在查询期间看到一致的数据。1985年,Oracle公司发布了Oracle 5。成为首批可以在Client/Server模式下运行RDBMS产品,这意味着运行在桌面客户机上的商务应用程序能够通过网络访问数据库服务器,随后于1986年发布了Oracle 5.1版本,支持分布式查询,允许通过一次性查询访问存储在多个位置的数据。
1988年,发布了Oracle 6.0版本,推出了PL/SQL过程化SQL语言,包括条件处理、循环、分支、变量和错误处理,还引入了行级锁重要特性和联机热备份功能,使数据库能够在使用过程中创建联机的备份,增强了可用性。最终使得Oracle数据库在数据库市场确立主导地位的是于1992年发布基于Unix的Oracle 7版本,增加了许多新的特性,包括分布式事务处理功能、增强的管理功能、用于应用程序开发的新工具以及安全性方法,还有极强的网格能力以及系统易于扩充发展的优点。
随着面向对象语言的发展,1997年发布了Oracle 8版本,该版本支持面向对象的开发及新的多媒体应用,为支持Internet、网格计算等奠定了基础,开始具有同时处理大量用户和海量数据的特性。
网络系列的Oracle数据库
随后的1998年发布了Oracle 8i版本,i代表Internet,这个版本中添加了大量为支持Internet而设计的特性,还为数据库用户提供了Java支持,也成为了第一个完全整合了本地Java运行时环境的数据库,用Java就可以编写Oracle的存储过程。在2001年6月的Oracle Open World大会上,Oracle发布了Oracle 9i,该版本更加强调了对网络计算的支持,更适合于企业级高强度的网络计算,还有一个最重要的技术Real Appllication Clusters(RAC)——集群技术。
网格系列的Oracle数据库
Oracle公司着重了对网格发展,开启了grid(网格)版本历程,2003年,同样在Oracle Open World大会上发布了新版本Oracle 10g,g代表grid(网格),是第一个为网格计算而设计的数据库。可以从单一实例迁移到网格计算方式,无需更改一行代码,还具有独特的安全性,能够满足隐私,法规遵守和数据整合方面的需求,能够借助集群技术为用户提供不间断的可用性、可伸缩性和低成本的集群方式。
2007年Oralce公司全面创新,发布了Oracle 11g版本,根据用户的需求实现信息声明周期管理等多项创新,提高了系统性能的安全性。增加了RDID Tag、DICOM医学图像、3D空间等重要数据类型的支持,加强了对Binary XML的支持和性能优化。
云系列的Oracle数据库
随着云计算的发展,g版本之后开始了c版本的发展。2013年,Oracle 12c版本正式发布,c代表cloud,也就是云计算的意思,与上一个版本11g相比,该版本采用多租户管理的概念,通过可插拔式的结构实现数据库集群结构,共享操作系统和数据库,直接把数据库以云的方式提供给客户,也成为Oracle数据库架构最大的改变。2015年正式推出了Oracle商务智能12c(Oracle BI 12c),能够使企业在企业分析平台上混合任何数据,并对其进行可视化分析。2018年,Oracle 18c发布,该版本在功能上没有巨大变化,但是进行了全面渐进式改进,对性能、高可用性、多租户、安全性、数据仓库和开发等方面进行了提升和改进。2019年,Oracle 19c发布,该版本作为Oracle 12c和18c系列产品的长期支持产品,提供了最高级别的版本稳定性和最长时间的支持服务和错误修复帮助。该版本新增功能内容:静默模式下可以使用一些功能、增加了自动索引功能、内存中外部表的大数据和性能增强、定期清除闪回日志等
2021年,云中融合数据库Oracle 21c正式发布,新版本包含200多项全新创新,包括不可变区块链表、数据库内ECMAScript、原生JSON二进制数据类型、数据库内机器学习的AutoML、持久性内存存储,同时增强了内存、图形处理性能、数据库分表、多租户和安全性功能等。
2023年,Oracle 23c版本正式发布,Oracle 23c代号为“App Simple”,专注于通过声明预期结果(而不是手动编码)来简化数据专业人员、开发人员和数据用户与数据交互的方式。数据系统利用新的数据库技术(如JSON、关系二元视图和AI向量搜索)以及新的自然语言界面功能来生成解决方案。还引入了Raft Replication——筏复制,确保数据完整性和无缝操作,
版本历程
Oracle系统组成与结构
Oracle体系结构
Oracle是以数据为中心,建立在操作系统之上的,所有Oracle工具要访问数据,必须采用SQL和PL/SQL技术,经由Oracle核心处理这种SQL语句。可以用Oracle提供的各种工具:SQL*Plus、Oracle*Forms、Pro*C、Oracle*Menu、Oracle*ReportWriter等,来生成应用系统(由用户自己编写的各种应用系统),如人事管理系统和图书管理系统等,还包括Oracle本身提供的应用软件,如Oracle财务软件(Oracle Financials)、Oracle生产制造业软件(Oracle Manu facturing)等。
Oracle进程结构
进程是一种“控制的线索”,是多用户操作系统下协调多任务的一种机制,Oracle数据库是一种复杂的多用户系统,需要一整套完善的进程管理机制来控制整个系统的正常运作。
例程是Oracle的进程管理机制的核心,不管Oracle运行在哪种硬件平台或操作系统上,每个正在运行的Oracle数据库都有一个与之相联系的例程,Oracle启动后,会在内存中分配一片区域,称为系统全局区(SGA),同时Oracle启动后会产生一组后台进程,这二者结合在一起叫做Oracle例程,Oracle通过例程有效地管理数据库的数据,并为所有访问数据库的用户提供服务。
在多进程Oracle系统中,进程可以分为两种:用户进程与Oracle使用的服务进程、共享服务进程、调度进度及后台进程。
用户进程和服务器进程以及程序全局区构成了用户进程发布并执行SQL的用户环境。当用户连接到Oracle服务器时,Oracle便创建一个服务器进程与之交互,并代表该用户完成与Oracle数据库间的交互。程序全局区是用户专用的内存结构,存储该用户连续期间与SQL语句执行相关的信息。
Oracle关系系统组成
Oracle数据库由多个关系组成,包括表、视图、索引、序列、存储过程、触发器等。其中表是数据库的核心,存储了数据记录视图是对表数据的逻辑展现,索引提高了数据索的效率,序列用于生成唯一标识,存储过程是对一组SQL语句的封装,触发器则是对数据库操作的响应机制。这些关系之间相互作用,构成一个完整的数据库系统。而Oracle数据库的关键是怎样理解数据间的关系,以数据为中心,然后构造反映这些关系的信息库。
Oracle数据存储结构
Oracle数据类型
Oracle数据库的关键是怎样理解数据间的关系,以数据为中心,然后构造反映这些关系的信息库。在Oracle数据库中,数据按行存放在表中,一个行包含若干列,各列可以指定为一种数据类型,在存放表中每一列值的同时,存放一字节的长度参数和一字节的列标志,基本数据类型有:CHAR,NUMBER,DATE,LONG,RAW和LONG RAW,ROWID等。
基本数据类型
CHAR类型数据是字符型数据,作为变长的ASCII或EBCDIC字符串存储,可以用来存储字母数字字符,汉化的Oracle可以用来存储汉字,在建表时定义为char类型的列可以存放的字符的最大个数为240。
NUMBER数据类型是数字型数据,可以存放高至这样大的数,精度可达到38位数字,可以指定精度和标度,当指定的精度小于实际值长度时,会自动按实际数据长度存放。数值数据以变长格式存放,开头为幂次和符号字节,随后为数据字节。
DATE数据类型是日期型数据,存放在7个字节长的定长列中,日期的存放内容格式为:
LONG数据类型的列可存放长达65536个字符的变长字符串,LONG类型数据是一个无结构的数据字节组,LONG类型的列主要用于存放字符数组或较短的文档。定义为LONG的列可用在SELECT列表、SET语句、INSERT语句中。
RAW和LONG RAW数据类型用于表示ORACLE不加解释的面向字节的数据,主要用于存储二进制数据或字符串。RAW类似于CHAR数据,LONG RAW类似于LONG,区别在于RAW不对所存储的字节的含义作任何假定,用SQL.NET传送时,不会做任何转换,LONG RAW于LONG的区别也在于此。
ROWID是一个由ORACLE RDBMS系统负责定义更新、用户只能查询、与数据库中每一行相联系的一个逻辑列名,返回的内容是那一行的地址,ROWID的作用有:访问一个特定行、查看一个表需要多少块存储空间、获得行级锁定。数据库中不存放ROWID,不是数据的一列,不能对ROWID进行增删改查等操作。
Oracle数据库的存储结构可分为逻辑存储结构和物理存储结构,对于这两种存储结构,Oracle是分别进行管理的。逻辑存储结构是Oracle内部的组织和管理数据的方式,物理存储结构是Orale外部组织和管理数据的方式。
逻辑存储结构
Oracle在逻辑上将保存的数据划分为一个个小单元来进行存储和维护,更高一级的逻辑存储结构都是由这些基本的小单元组成的。逻辑结构类型按照尺寸从小到大分可分为:块(block)--\u003e区(extent)--\u003e段(segment)--\u003e表空间(tablespace)。其中,块是Oracle用来管理存储的最小单元,也是最小的逻辑存储结构,Oracle数据库在进行输入输出时,都是以块为单位进行读写操作的,块的大小是在创建数据库的时候决定的,之后不能修改。区是比块高一级的逻辑存储结构,由连续的块组成,是Oracle在进行存储空间的分配和回收的最小单位。段由多个区组成,这些区可以是连续的,也可以是不连续的。当用户在数据库中创建各种具有实际存储结构的对象时(保存有数据的对象),比如表、索引等,Oracle将为这些对象创建段。表空间:最高级的逻辑存储结构,数据库是由多个表空间组成的。常见的表空间有:数据表空间、系统表空间、回滚表空间和临时表空间。
物理存储结构
Oracle数据库逻辑上由一个或多个表空间组成,每个表空间在物理上由一个或多个数据文件组成,而每个数据文件是有数据块构成的。所以,逻辑上数据存放在表空间中,而物理上存储在表空间所对应的数据文件中。构成数据库的物理文件主要有:数据文件,存放数据库数据;控制文件,存放数据库的基本信息;重做日志文件,存档对数据的改变。
Oracle SQL和PL/SQL
SQL是操作关系型数据库的工具,其最显著特点是面向集合,使用SQL语言执行查询时,只需说明数据所满足的条件,不必说明数据的存储位置和如何遍历数据,常见的大型DBMS一般会对SQL语言加入过程性语言特征,对其功能进行扩展,从而在数据库中也可以进行编程,功能扩展后,Oracle的编程语言称为PL/SQL。
在PL/SQL块中,可以使用数据查询语言,数据操作语言和数据控制语言,但不能使用数据定义语言,具体说,就是在SQL块中可以使用SELECT、INSERT、UPDATE、DELETE、COMMIT、ROLLBACK,而不能使用CREATE、ALTER、DROP、GRANT、REVOKE。
在Oracle中,使用了称之为“专用SQL区”(Private SQL,Area)的工作区,用于执行SQL语句和存储处理信息,在PL/SQL中,有一种叫做游标(CURSOR)的专用SQL构造,可以快速存取它所存储的信息,PL/SQL由两种类型的游标:显示优先和隐式游标。PL/SQL为全部SQL DML语句隐式地定义一个游标,而对于返回多行的查询,为了单个地处理每一行,必须显式地定义一个游标。在PL/SQL块子程序或包的说明部分定义游标,给游标命名,并指定一查询,之后可用三种命令:OPEN、FETCH和CLOSE控制游标。
Oracle数据库的支持工具
SQL*Plus
SQL*PLUS是一个关于ORACLE RDBMS的即席、交互终端接口程序,在SQL*Plus环境下,可以使用的命令有两种:一种是SQL,另一种是SQL*Plus专用命令。利用SQL语言可完成数据定义、存储控制、数据操控、数据查询等功能;利用SQL*Plus专用命令可完成命令的编辑、存储和调入以及格式化报表等功能。
SQL*Forms
SQL*Forms是一个属于第四代语言的应用软件开发支持工具,它通过让用户快速开发基于屏幕格式(Form)的应用,提供一种直观、便捷、交互式操作数据库的手段。利用SQL*Forms,用户可运行已建立的Forms应用程序,通过操作一些功能键,完成对数据库的查询、更新、删除、插入和统计操作。SQL*Forms面向应用软件开发者的是一些窗口,窗口技术是ORACLE RDBMS所采用的技术之一。一个窗口是屏幕中一组逻辑相关的填入项、可供执行的操作和选择项集合。SQL*Forms提供多级窗口,进入某窗口是指系统打开这个窗口在屏幕上显示并可在该窗口进行工作。
SQL*Report
SQL*Report是一个报表生成工具,它包括两个实用程序,报表生成器程序(RPT)和报表正文格式化程序(RPF)。他们必须一起结合使用能够从数据库中提取数据,并以所希望的额形式产生包括数据库信息的报表。报表生成程序RPT通过SQL语句提取数据库信息,报表正文格式化程序RPT根据正文中所含的命令对这些信息进行格式化,一个报表程序大体由SELECT宏、体宏、头宏、足宏组成。对于报表程序的编制就是对报表中用到的变量进行说明,编制SELECT宏,体宏,头宏以及一些有特殊用途的宏,最后把它用REPORY语句链接起来。
SQL*Calc
SQL*Calc是一个供用户快速生成报表的第四代语言的应用开发支持工具,提供了操作ORACLE数据库、对数据进行统计计算和快速制表的有效手段。SQL*Calc的工作屏幕格式是表格形式的工作页,允许用户在屏幕上直接控制光标画表格线,并直接可以填写计算公式、SQL语句以及具体正文内容。利用SQL*Calc能够从数据库中查询所需的数据,在屏幕上进行修改,形成最终报表,并可以多种方式输出。SQL*Calc制表命令是树形结构。
SQL*Net
SQL*NET是Oracle公司的远程数据库访问包,在网络环境下实现客户机/服务器的连接与通信。SQL*NET采用TNS(透明网络底层)和符合工业标准的网络协议来连接客户机和服务器,并建立一个ORACLE会话,从TNS监听进程处接收与数据库连接的请求,并将控制传递给数据库服务器,建立并保持二者之间的信息转换。SQL*NET由V1和V2两个版本,较早的SQL*NET V1有两个部分,与ORACLE RDBMS和所有工具连接的SQL*NET组成部分、SQL*NET协议驱动程序。而在SQL*NET V2中,SQL*NET驱动程序已经重新设计,提供通用的网络操作,所有的通用网络操作和制定协议支持被TNS和ORACLE协议适配器所取代。
PRO*C
PRO*C、PRO*COBOL、PRO*Fortran等PRO*系列是甲骨文公司所提供的可编程接口产品,可以使用c语言等编程语言对ORACLE数据库中的数据进行操作,其中一种操作方法就是在C语言程序中嵌入SQL语句,所编写的程序叫做PRO*C程序,通过PRO*C程序可以方便实现特定表格的输出。
Oracle数据库定价和市场
定价
Oracle数据库有基于开发人员的Oracle Database 23c Free—Developer Release和用于商业的授权收费版本。Oracle数据库有两种授权许可模式,按处理器(Processor)数和按用户数(Named User Plus)。Named User Plus许可证是基于访问软件的用户数量,而Proseeor许可证基于安装软件的服务器中的处理器内核数量,其中用户数量和处理器数量是衡量许可证的单位。企业版中每个处理器至少需要25个Named User Plus许可证,标准版 2的每台服务器至少需要10个用户。
市场
早期Oracle数据库的市场份额一直处于领先的地位,而云计算颠覆了数据库的市场,许多公司围绕开源的数据库软件建立起管理系统,这导致了Oracle数据库的市场份额呈现下降的趋势。2020年,全球数据库市场规模达到648亿美元,其中Oracle数据库市场份额占比为24%,相较于上一年下降了3%。2021年,全球数据库市场规模达到了700亿美元,Oracle数据库的市场份额占比下降到了20.6%。2022年,全球数据库市场规模为833亿美元,而Oracle数据库在关系型数据库的市场占有率为30.2%。截止2023年11月3日,DB-Engines公布的排名显示,Oracle数据库的排名得分为全球第一,是最受欢迎的关系型数据库,相比2022年,Oracle数据库在关系型数据库的市场占比下降到28.6%,而在公有云中占有33.9%的市场份额。
Oracle数据库的实际应用
应用于医疗信息
随着计算机技术、数据库和网络技术的飞速发展,数字化信息已深入到社会的各个领域,医院也加快数字化建设步伐,尤其以数据库为核心的医院信息系统的不断发展更为显著。Oracle数据库的真正应用集群技术RAC为医院庞大的数据量和复杂的业务流程提供了强有力的支持,它是由两台或者两台以上同构计算机及共享存储设备构成,以提供强大的数据库处理能力以及容错能力,保障了持续的数据访问。同时,Oracle RAC还能根据医院业务需求的变化搞笑扩展以满足任何性能需求,还可将医院购置成本和操作复杂性降至最低。横向和纵向上的伸缩特性为其提供了一个可在任何方向上进行扩展的平台,可支持医院业务增长。应用系统的开发、管理及更改管理因此变得更为简单,从而降低了成本。
应用于国家统计局
国家统计局是国家重要信息汇总、信息处理的中枢机构,要与国务院各大委部及各省市信息系统交流信息,但其信息系统包含的机种多,有DEC、HP、CDC以及AT\u0026T等公司的机型,而Oracle数据库系统几乎可以使用任何计算机来建立可移植的基于SQL的应用系统,并且把不同计算机上的许多应用连接起来,形成功能强的分布式数据库环境,因此,国家统计局采用Oracle数据库产品为其信息系统服务。
应用于农业信息化
在大数据时代,农业信息化发展遇到了瓶颈。信息全球化使得农业的发展与传统农业相比发生了巨大的改变。Oracle数据库以分布式数据处理为中心,它可以提供集中、 开放、全面的信息管理系统。把Oracle数据库作用于农业的信息技术发展可以提高农业资源的管理与决策指挥。利用信息技术方法,把农业资源与环境中重要的数据快速、自动、高效地采集并且储存起来,通过发现问题、整理问题、分析问题,继而高效解决问题。通过与Oracle数据库相结合,发展出来的信息采集技术、模拟种植技术、资源处理技术为一体的技术手段。
参考资料
数据库.oracle.2023-10-17
什么是数据库?.oracle.2023-10-13
Oracle数据库发展史.清华大学出版社.2023-10-13
Oracle的发展史.清华大学出版社.2023-10-13
揭示 Oracle 全球分布式数据库的强大功能:Oracle 数据库 23c 的进步.oracle.2023-10-16
Oracle CloudWorld, Las Vegas — September 19, 2023.oracle.2023-11-03
2023年全球数据库软件行业发展现状分析 Oracle数据库管理系统全球排名第一【组图】.前瞻网.2023-11-02
Oracle Database 18c:现已在 Oracle 云和 Oracle 集成系统上推出.oracle.2023-10-16
Oracle Database Features.oracle.2023-10-16
甲骨文在Oracle云中推出新版Oracle数据库21c.中关村在线.2023-10-16
ORACLE数据库存储结构简介.oracle.2023-10-13
Oracle Database Free.oracle.2023-11-02
Oracle Database Enterprise Edition (On-Premises.oracle.2023-11-02
SIX ORACLE DATABASE LICENSING MODELS AND COSTS – 2023.redresscompliance.2023-11-03
Oracle Technology Global Price List.oracle.2023-11-03
OracleJustMadeItsDatabaseSoftwareFreeforDevelopers.fool.2023-11-03
数据库行业专题研究报告:行业信创最具弹性的是数据库.新浪看点.2023-11-03
Is Oracle's Database Dominance Being Eroded by Cloud-First Rivals? (msn.com).slashdot.2023-11-03
《全球数据库产业图谱(2022)》发布:2021年全球数据库市场规模约700亿美元.今日头条.2023-11-03
《数据库发展研究报告(2023)》:中国迈入第一梯队,数据库市场规模超400亿元.今日头条.2023-11-03
Top Databases to Use in 2022: What is The Right Database for Your Use Case?.towardsdatascience.2023-11-03
DB-Engines Ranking.db-engines.2023-11-03
Essential Oracle Statistics in 2023.zipdo.2023-11-03