Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。[2]

Oracle Database
Logo of Oracle Co
開發者甲骨文公司
初始版本1979
穩定版本
21c[1]在维基数据编辑(2021年1月13日,21個月前)
编程语言C
操作系统跨平台
类型關聯式資料庫管理系統
许可协议专有软件
网站www.oracle.com/database/ 编辑维基数据

劳伦斯·埃里森和他的朋友,之前的同事Bob Miner英语Bob MinerEd Oates英语Ed Oates在1977年建立了软件开发实验室咨询公司(SDL,Software Development Laboratories)。SDL开发了Oracle软件的最初版本。Oracle的名称来自于埃里森在Ampex工作时参加的一个由中央情报局创建的项目的代码名称。[3]

實體和邏輯結構

一個Oracle資料庫系統是以一個由字母和數字组成的系統識別碼(SID, Site ID)來做唯一性的區別[4]—包含了至少一個應用程式的實例,和資料儲存設備。一個實例(instance)是由一個實例數字(或是一個啟動ID:SYS.V_$DATABASE.ACTIVATION#)表示—包含了一個作業系統程序的集合和與儲存設備進行交談的內部結構。典型的程序有PMON(the process monitor程序監看器)和SMON(the system monitor系統監看器)。

Oracle資料庫的用户設計到了SGA(System Global Area系统全局领域)服务器端内存结构。SGA保存了缓存信息比如数据缓冲区,SQL命令,和用户信息。在存储之外,数据库由保存了数据变更历史的在线恢复日志。进程可以把在线的恢复日志转换成存档的日志(离线恢复日志),给数据回复和再生提供了基础。

如果Oracle数据库管理员实现了Oracle RAC(Real Application Clusters真正应用集群),那么在不同的服务器上的多个实例,隶属于一个中央磁盘阵列。这个方案提供了一些优点,比如更高的效率、扩展性和冗余。然而,这样会导致系统更复杂,因此许多站点并不使用RAC。在10g版本中,网格计算引进了共享资源,这样一个实例可以使用(例如)网格中另一个节点的CPU资源。

Oracle数据库管理系统可以保存并运行自己的存储程序和函数。PL-SQL(Oracle公司的专有的SQL扩展语言),或面向对象语言Java可以调用那些代码对象或者编写这些代码。

存储

Oracle关系型数据库管理系统从逻辑上把数据保存在表空间内,在物理上以数据文件的形式存储。表空间可以包含多种类型的内存区段,例如数据区段(Data Segment)、索引区段(Index Segment)等等。区段相应的由一个或多个扩展(extent)组成。扩展由相连的数据区块组成。数据区块是数据存储的基本单元。

Oracle数据库管理系统通过存储在SYSTEM表空间内的信息来跟踪数据存储。SYSTEM表空间包含了数据字典—以及(默认的)索引集群。数据字典包含了一个保存了所有数据库中用户对象的信息的。从8i版本开始,Oracle开始支持本地管理表空间,即把空间管理信息保存在它们自己的信头的位图中而不是SYSTEM表空间内。

磁盘文件