Oracle数据库

义项:关系数据库管理系统
Oracle数据库

Oracle数据库是甲骨文公司(Oracle Corporation)开发的关系数据库管理系统(Relational Database Management System, RDBMS),1979 年以 Oracle 2 的形式发布,被视为最早实现商品化的关系型数据库产品之一[1]。它以结构化查询语言(SQL)作为统一的数据访问接口,并通过事务、并发控制与多版本读取一致性等机制保证数据完整性。该产品长期用于金融、电信、制造等行业的核心业务系统,是商用数据库中的重要代表[1]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

Oracle数据库是甲骨文公司推出的关系数据库管理系统,属于服务器端软件,由管理数据的实例和存放数据的数据库文件两部分构成[2]。它的数据组织建立在关系模型之上,用户以表、行、列的形式描述实体及其属性,并通过完整性约束对列施加取值规则。

在甲骨文的产品体系中,Oracle数据库属于服务器产品,与开发工具、应用软件并列;同一服务器可创建多个彼此隔离的数据库,每个数据库拥有自己的数据文件、控制文件与日志文件。该产品支持在多种操作系统与硬件平台上运行,早期即以跨平台可移植性作为主要特征之一[3]。

原理

从体系结构看,Oracle服务器可抽象为内存结构、进程结构与存储结构三部分:实例是内存池与后台进程的集合,数据库是磁盘上的文件集合,用户必须经由实例访问数据。内存中最重要的部分是系统全局区(System Global Area, SGA),它在实例启动时分配、关闭时释放,内含数据库缓冲区缓存、日志缓冲区、共享池等组件[2]。

存储结构分为物理与逻辑两层。物理层包括存放表和索引的数据文件、记录数据库结构与状态的控制文件,以及记录数据变更的重做日志文件;逻辑层由大到小依次为表空间、段、区和数据块,一个表空间对应一到多个数据文件,数据块是读写的最小单位[4]。

后台进程负责把内存中的变更落到磁盘:数据库写入进程(DBWR)定期把缓冲区中的脏数据块写回数据文件,日志写入进程(LGWR)在提交等时机把重做记录写入重做日志文件,检查点进程更新文件头以保持同步,系统监视器(SMON)与进程监视器(PMON)分别承担实例恢复和异常清理[5]。

所有对数据的操作都通过SQL语句完成,SQL是关系数据库的ANSI标准语言,属于声明式语言,用户只需说明想要的结果而不必描述过程;甲骨文在此基础上提供过程化扩展PL/SQL,可把应用逻辑以存储过程、函数的形式保存在数据库内并由服务器执行。

在并发与一致性方面,事务被定义为包含一条或多条SQL语句的原子工作单元,其中的语句要么全部提交、要么全部回滚,从而把数据库从一个一致状态移动到另一个一致状态。多个会话同时访问同一数据时,系统通过并发控制与行级锁定避免相互破坏,并在查询期间向用户提供一致的数据视图[1]。

发展历程

1979 年,甲骨文发布 Oracle 2,这是最早实现商品化的关系数据库管理系统之一,最初在数字设备公司的PDP-11机器上以汇编语言开发[1]。1983 年 3 月发布的 Oracle 3 改用C语言编写,产品由此具备可移植性,并引入了SQL语句与事务处理的原子性以及非阻塞查询[1]。

1984 年 10 月的 Oracle 4 增加读取一致性,使查询过程始终看到一致的数据;1985 年的 Oracle 5 成为较早支持客户机/服务器模式的版本,其 5.1 版还支持分布式查询[1]。1988 年的 Oracle 6 引入行锁定、多处理器支持、PL/SQL和联机事务处理能力;1992 年面向UNIX的 Oracle 7 采用多线程服务器体系结构,并加入分布式事务处理等选件[1]。

1997 年 6 月发布的 Oracle 8 支持面向对象开发与Java,可执行SQL3标准,使构造大型应用系统成为可能[1]。此后甲骨文陆续推出 9i、10g、11g 等版本,其中 10g 与 11g 是国内使用较广的两代产品[6]。

Oracle 12c 引入可插拔数据库机制,把架构分为容器数据库(CDB)与可插拔数据库(PDB),一个容器内可容纳多个 PDB,它们共享控制文件与日志文件,这一设计与云计算的多租户需求相对应[7]。2024 年 5 月,原定名为 23c 的版本以 Oracle Database 23ai 正式发布,重点加入AI向量搜索、JSON关系二元视图等面向生成式AI的功能[8][9]。

在企业层面,甲骨文 2009 年完成对Sun微系统的收购,从而一并获得MySQL的管理权[10]。云计算方向上,甲骨文推出自治数据库(Autonomous Database),以自动化方式完成配置、调优、打补丁与扩缩容等运维工作[11]。

应用

Oracle数据库的典型场景是需要高并发事务与严格一致性的联机事务处理系统,例如银行账务、保险核心业务、电信计费与制造业的ERP系统[1]。在分析型场景中,基于同一技术栈的自治数据仓库承担报表与商业智能查询,甲骨文称其可弹性伸缩且无需数据库管理员介入[11]。

部署形态上,除本地机房外,该数据库还以云服务方式提供,并通过与亚马逊云科技、微软Azure、谷歌云的合作在多家公有云环境中运行,支持Real Application Clusters集群与向量检索等功能[12]。2024 年起,甲骨文以生成式开发(GenDev)为名,把JSON二元视图、向量搜索与低代码工具APEX组合成面向AI应用的开发基础设施[9]。

局限

成本是该产品被广泛提及的限制。其许可按处理器核心数计价,企业版的多项高级功能另需单独购买选件,维保费用按年收取,规模较大的部署年度支出可观[13]。许可结构较为复杂,若授权数量与实际部署不符,会带来额外的合规与财务风险。

与授权模式相关的是厂商绑定问题。应用深度使用PL/SQL存储过程、触发器以及DBMS_*系列内置包后,迁移到其他数据库往往需要重写大量代码,部分内置包在其他平台上没有等价实现[14]。这类依赖使组织的技术选择空间受到限制,也提高了替换工程的周期与费用[15]。

运维与使用门槛同样构成局限。产品安装配置步骤较多,组件与参数体系庞大,对内存和计算资源占用较高,规模较小的项目往往难以承担相应的服务器投入。横向扩展主要依赖集群与共享存储方案,扩容成本较高,纵向扩展则受单机能力上限约束。

此外,甲骨文的部分许可条款对性能基准的公开发布设有附加条件,第三方难以在未获许可的情况下公布对比测试结果,这在一定程度上影响了外部独立评估的可得性[16]。

参见

  • SQL —— Oracle数据库统一的数据定义与查询语言,也是关系数据库的ANSI标准。

  • PL/SQL —— 甲骨文在SQL之上提供的过程化扩展,用于在数据库内编写存储过程与触发器。

  • MySQL —— 另一款主流关系数据库,其管理权在2009年随Sun公司一同并入甲骨文。

  • 事务 —— 保证一组SQL语句全部生效或全部撤销的原子工作单元。

  • 表空间 —— Oracle数据库中承载段与数据文件的逻辑存储容器。

  • 自治数据库 —— 甲骨文推出的自动化云数据库服务,可自动完成调优与补丁管理。

词条评价
词条统计

浏览次数:0 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:54:43Z

历史版本

本条目引用的词条
SQL PL/SQL MySQL 事务 表空间 自治数据库