每个组织都有其必须存储和管理的信息,以满足其需求。 例如,公司必须收集和维护其雇员的人力资源纪录。 此信息对需要它的人必须是可用的。
信息系统是一个正式的系统,用于存储和处理信息。信息系统可能是一组文件柜, 其中包含许多文件夹,以及如何存储和检索文件夹的规则。 但是,大多数公司现在使用数据库来自动化其信息系统。 数据库是信息的一个有组织的集合, 被作为一个整体来看待。 数据库的目的是收集、 存储、和检索相关的信息, 以供数据库应用程序使用。
数据库管理系统 (DBMS) 是一种软件,用于控制对数据的存储、组织和检索。
通常,一个 DBMS 具有以下元素:
- 内核代码
此代码为 DBMS 管理内存和存储。 - 元数据的存储库
此存储库通常称为数据字典。 - 查询语言
此语言使应用程序能够访问数据
数据库应用程序是一个与数据库进行交互,以访问和操作其数据的软件程序。
第一代的数据库管理系统包括以下类型:
- 层次型
层次数据库把数据组织在树状结构中。 每个父记录有一个或多个子记录,类似于文件系统的结构。 - 网络型
网络数据库类似于层次数据库,但有一个区别,即记录之间是多对多的关系,而不是一对多的关系。
前面所述的数据库管理系统按照严格的、 预定义的关系存储数据。 由于不存在任何数据定义语言,更改数据结构是很困难的。 同时,这些系统缺乏一种简单的查询语言, 则阻碍了应用程序的开发。
E.F.Codd 在他 1970 年发表的论文《大型共享数据库数据的关系模型》中,定义了一个基于数学集合理论的关系模型。 目前,最广泛接受的数据库模型就是关系模型。
关系数据库是一个符合关系模型的数据库。 关系模型有以下主要方面:
- 结构
定义良好的对象, 用于存储或访问数据库的数据。 - 操作
清楚定义的操作, 使应用程序可以处理数据库中的数据和结构。 - 完整性规则
完整性规则用于管理在数据库中的数据和结构上的操作。
关系数据库将数据存储在一组简单的关系中。 关系是一个元组的集合。 一个元组是一些属性值的无序的集合。
表是一个关系的二维表示,关系由行 (元组) 和列 (属性) 的形式构成。表中的每一行具有相同的列集。 关系数据库是一个将数据存储在关系(表)中的数据库。 例如,关系数据库可以在一个雇员表、 部门表和薪金表中存储有关公司雇员的信息。
关系模型是关系数据库管理系统 (RDBMS) 的基础。 RDBMS 将数据移入数据库、在数据库中存储和检索数据,以便应用程序能对其进行操作。
RDBMS 区分下列两种类型的操作:
- 逻辑操作
在这种情况下,由应用程序指定需要哪些内容。 例如,应用程序请求一个雇员的姓名,或向表中添加一个雇员记录。 - 物理操作
在这种情况下, 由 RDBMS 确定如何操作,并执行该操作。 例如,应用程序对表发出查询后,数据库可能会使用索引来查找请求的行、将数据读入内存,并执行许多其他步骤,最后向用户返回一个结果。由 RDBMS 存储和检索数据,因此物理操作对于数据库应用程序是透明的。
Oracle 数据库是一个 RDBMS。 实现了面向对象特征(比如用户定义类型、继承、和多态性)的 RDBMS, 被称为对象-关系数据库管理系统(ORDBMS)。 Oracle 数据库已经将关系模型扩展为对象-关系模型,使其可以在关系数据库中存储复杂的业务模型。
Oracle 数据库的发展简史
Oracle 数据库的当前版本是超过 30 年的创新发展的结果。
Oracle 数据库发展过程中的重要事件包括:
- 创立 Oracle 公司
1977 年, 拉里 · 埃利森、 鲍勃·穆勒、和爱德·奥茨成立了“软件开发实验室”咨询公司,其后又叫做“关系软件” (RSI)公司,1983 年, RSI 公司成为 Oracle 系统公司, 再后来又成为 Oracle 公司。
- 第一个商用 RDBMS
1979 年, RSI 公司发布了 Oracle V2 (版本 2),这是第一个商用的基于 SQL 的 RDBMS,它是关系数据库发展史中的一个里程碑事件。 - 可移植版本的 Oracle 数据库
Oracle 版本 3 发布于 1983 年,是第一个可以同时在大型机、 小型机、和个人电脑上运行的关系数据库。 该数据库用 C 语言编写,使其可以被移植到多种平台上。 - 并发控制、 数据分发、和可扩展性等增强功能
版本 4 引入了多版本读一致性。版本 5 发布于 1985 年,支持客户端/服务器计算和分布式数据库系统。 版本 6 增强了磁盘 I/O、行锁定、可扩展性、以及备份和恢复。并且,版本 6 推出了 PL/SQL 语言第一版,这是专门针对 SQL 的过程化扩展。 - PL/SQL 存储程序单元
Oracle7 发布于 1992 年,引入了 PL/SQL 存储过程和触发器。 - 对象和分区
Oracle8 发布于 1997 年, 作为一种对象-关系数据库,支持许多新的数据类型。 此外, Oracle8 支持对大型表进行分区。 - 因特网计算
Oracle8i 数据库发布于 1999 年,提供了互联网协议的原生支持,和服务器端的 Java 支持。 Oracle8i 是为因特网计算而设计的, 这使得数据库可以在多层环境中部署。 - Oracle 真正应用集群 (Oracle RAC)
Oracle9i 数据库在 2001 年引入了 Oracle RAC, 使得多个实例可以同时访问单个数据库。 此外, Oracle XML 数据库 (Oracle XML DB) 引入了存储和查询 XML 的能力。 - 网格计算
Oracle 数据库 10g 在 2003 年引入了网格计算。 此版本使得各个公司可以通过构建基于低成本服务器的网格基础设施, 来虚拟化计算资源。 一个关键的目标是使数据库可以自我管理和自我优化。 Oracle 自动存储管理 (Oracle ASM) 通过虚拟化和简化数据库存储管理, 有助于实现这一目标。 - 可管理性、 可诊断性、和可用性
Oracle 数据库 11g,发布于 2007 年,引入了大量的新功能,使管理员和开发人员可以快速适应不断变化的业务需求。 这种适应性的关键,在于通过整合信息和尽可能使用自动化,以简化信息基础架构。 - 接入云端
2013 年发布的 Oracle Database 12c 是为云而设计的,具有新的多租户架构、内存列存储和对 JSON 文档的支持。Oracle Database 12c 帮助客户更有效地利用其IT资源,同时不断降低成本,提高用户的服务水平。
RDBMS 的特点之一,是物理数据存储与逻辑数据结构的独立性。
在 Oracle数据库中, 数据库模式是逻辑数据结构或模式对象的集合。 数据库模式由一个数据库用户拥有,并与用户名具有相同的名称。
模式对象是用户创建的结构,它直接引用数据库中的数据。 数据库支持多种类型的模式对象,其中最重要的是表和索引
模式对象是数据库对象的一种类型。有些数据库对象,如概要文件和角色,并不驻留在模式中。
表描述一个实体,例如雇员。
使用一个表名(如 employees)和一个列集来定义表。 一般地,当你创建表时,你应该给出每一列的列名、数据类型、和列宽。
表是一些行的集合。列标识实体的属性,而行标识实体的实例。例如,雇员实体的属性对应雇员 ID 列和姓氏列。行标识一个特定的雇员。
您可以选择性地指定规则:完整性约束,为每个列。例如,“NOT NULL”即是一个完整性约束。 此约束强制每一行中的该列都包含一个值。
索引是一个可选的数据结构,您可以在表中的一个或多个列上创建索引。 索引可以提高数据检索的性能。
在处理一个请求时,数据库可以使用可用索引有效地找到请求的行。 当应用程序经常查询某一特定行或特定范围的行时,索引很有用。
索引在逻辑上和物理上都独立于数据。 因此,可以删除和创建索引,而对表或其它索引没有任何影响。 在删除索引后,所有应用程序可以继续运行。
对 DBMS 的一个一般要求,是要遵循公认的行业标准数据访问语言。
SQL 是一种基于集合的声明性语言,提供一个到关系数据库(如 Oracle 数据库)的接口。
过程化语言(如 C)描述的是怎么做, SQL 作为非过程化的语言,它描述的是应做些什么。 用户可以指定他们所希望的结果(例如,最新的雇员名单),而不是如何获得它。
SQL 是关系数据库的ANSI 标准语言。在 Oracle 数据库中对数据所作的所有操作,都使用 SQL 语句来执行。 例如,您可以使用 SQL 来创建表,并查询和修改表中的数据。
SQL 语句可以认为是一种很简单、但功能强大的计算机程序或指令。 用户指定他们想要的结果(例如,员工的名字),而不是如何派生它。SQL 语句是一个字符串或 SQL 文本,例如:
SELECT first_name, last_name FROM employees;
SQL 语句使您可以执行以下任务:
- 查询数据
- 插入、更新和删除表中的行。
- 创建、替换、更改和删除对象
- 控制对数据库及其对象的访问
- 保证数据库的一致性和完整性
SQL 用一种统一的语言了完成了所有上述任务。 Oracle SQL 是 ANSI 标准的一种实现。 Oracle SQL 支持许多标准 SQL 之外的扩展功能
PL/SQL 和 Java
PL/SQL 是 Oracle SQL 的过程化扩展。
PL/SQL 与 Oracle 数据库集成,使您能够使用所有的 Oracle 数据库的 SQL 语句、 函数、和数据类型。 您可以使用 PL/SQL 来控制 SQL 程序流程、使用变量、以及编写错误处理程序。
PL/SQL 的主要优点,是能够将应用程序逻辑存储在数据库本身之中。 过程或函数是一个模式对象,它包含一组 SQL 语句和一些其他的 PL/SQL 结构,共同组合在一起,存储在数据库中, 并作为一个单元来运行,以解决特定的问题,或执行一组相关的任务。 服务器端编程的主要好处,是内置功能可以在任意位置部署。
Oracle 数据库还可以存储用 Java 编写的程序单元。 一个 Java 存储过程是一个发布到 SQL 的 Java 方法,被存储在数据库中用于一般用途。 您可以在 Java 中调用 PL/SQL 程序,或在 PL/SQL 中调用 Java 程序。
Oracle 数据库被设计为多用户数据库。 数据库必须确保多个用户可以同时工作,而不会损坏彼此的数据。
事务是包含一条或多条SQL语句的逻辑原子工作单元。
RDBMS 必须能够对 SQL 语句进行分组,以将它们一起提交,将其应用于数据库; 或者将它们全部回滚,将其全部撤消。
举一个需要使用事务的例子,将资金从一个储蓄帐户转账到一个支票帐户。这笔转账由以下几个单独的操作组成:
- 从储蓄帐户中扣除资金。
- 将资金增加到支票帐户。
- 在事务日志中记录该事务。
Oracle 数据库确保将所有三个操作作为一个单元来处理, 要么全部成功,要么全部失败。 例如, 如果硬件故障阻止了事务中的某个语句的执行,那么其他语句必须回滚。
事务是 Oracle 数据库有别于文件系统的特征之一。 如果您执行一个原子操作,更新了几个文件,但是系统在处理过程中失败,那么文件将处于不一致状态。 相比之下,事务则会将 Oracle 数据库从一个一致状态转移到另一个一致状态。 事务的基本原则是, "要么全做,要么全都不做": 一个原子操作作为一个整体,要么都成功,要么都失败。
对多用户 RDBMS 的一个要求是并发控制,即多个用户同时访问同一数据。
如果没有并发控制,则用户可能会不正确地更改数据,并影响数据完整性。例如,一个用户可能企图更新一行,而另一个不同的用户同时也在更新它。
如果多个用户访问相同的数据,那么管理并发的其中一种方法,就是让用户等待。而 DBMS 的目标却是减少等待时间,甚至于感觉不到等待的存在,或其等待时间可以少到忽略不计。 所有修改数据的 SQL 语句必须尽可能做到互不干扰。那些具有破坏性的交互性操作,可能会不正确地更新数据,或不正确地更改基础数据结构,必须予以避免。
Oracle 数据库使用锁来控制对数据的并发访问。 锁是一种机制,可以防止多个事务在访问共享资源时的相互破坏作用。锁有助于确保数据的完整性,同时允许对数据的最大并发访问。
在 Oracle 数据库中,每个用户必须看到数据的一致视图,包括用户自己的事务以及其他用户已提交的事务所做出的更改。
例如,数据库必须防止脏读,若一个事务看到另一个并发事务未提交的更改,即是这种情况。
Oracle 数据库始终强制执行语句级读取的一致性,保证单个查询所返回的数据是已提交的,并与某个时间点一致。基于不同的事务隔离级别,这个时间点要么是语句被打开时,要么是事务开始时。闪回查询功能使您能够显式指定此时间点。
数据库也可以为整个事务中的所有查询提供读一致性,这叫事务级读一致性。在这种情况下, 事务中的每一个语句看见的都是同一个时间点的数据,这个时间点也就是事务开始之时。
Oracle 数据库体系结构
数据库服务器是信息管理的关键。
通常,服务器可靠地管理多用户环境中的大量数据,以便使用户可以同时访问这些相同的数据。 数据库服务器还可防止未经授权的访问,并为故障恢复提供有效的解决方案。
Oracle 数据库服务器包括一个数据库和至少一个数据库实例 (通常是指只有一个实例)。
因为实例和数据库是如此的紧密关联, Oracle 数据库这个术语有时既指实例,也指数据库。这个术语在严格意义上具有以下含义:
- 数据库
数据库是一组文件,位于磁盘,用于存储数据。 这些文件可以独立于数据库实例存在。 - 数据库实例
实例是管理数据库文件的一组内存结构。 该实例包含一个叫做系统全局区 (SGA) 的共享内存区和一组后台进程。 实例可以独立于数据库文件而存在。
下图显示了一个数据库和它的实例。对连接到实例的每个用户,客户端进程运行应用程序。每个客户端进程都具与它自己的服务器进程相关联。服务器进程有自己的私有会话内存区,称为程序全局区 (PGA)。
尽管从严格意义上说,Oracle数据库是一组物理结构(文件和内存结构),但是应用程序可以与单个物理数据库中的多个逻辑数据库交互,或者与分布在多个物理数据库中的单个逻辑数据库交互。
多租户体系结构
多租户体系结构允许 Oracle 数据库成为多租户容器数据库(CDB)。
非cdb是不能包含 PDBs 的传统 Oracle 数据库。CDB 是一个物理数据库,包含 0 个、1 个或多个用户创建的可插入数据库。可插入数据库(PDB)是模式、模式对象和非模式对象的可移植集合,在 Oracle Net 客户端看来,这些对象和非 CDB 一样。
多租户体系结构的优点
多租户体系结构解决了传统非 CDB 体系结构带来的许多问题。
大型企业可能使用数百或数千个数据库,通常运行在多个物理服务器上的不同平台上。现代服务器能够处理比以前更重的工作负载。数据库可能只使用服务器硬件容量的一小部分。这种方法既浪费硬件资源,又浪费人力资源。
通过将独立计算机上的多个物理数据库合并为单个计算机上的单个数据库,多租户体系结构提供了以下好处:
- 降低硬件成本
- 更容易和更快速地移动数据和代码
- 更容易管理和监视物理数据库
- 数据和代码的分离
- PDB 管理员(只管理她或他被授予特权的 PDBs)和 CDB 管理员(管理整个 CDB)之间的职责分离
可管理性的优点包括:
- 通过拔掉和插入 PDBs,更容易升级数据和代码
- 在将 PDBs 插入生产 CDB 之前,使用 PDBs 进行开发可以更容易地进行测试
- 能够将单个 PDB 闪回到以前的 SCN
- 能够在 PDB 级别为内存和 I/O 设置性能限制
- 能够在应用程序容器中安装、升级和管理主应用程序容器,该容器是一组插入到公共应用程序根的 PDBs
数据库整合
数据库整合是将数据从一个或多个非 CDBs 转移到 CDB 的一般过程。
从 Oracle 数据库 12c 开始,必须以 CDB 或非 CDB 的形式创建数据库。您可以将传统的非 CDB 作为 PDB 插入CDB。PDB/非 CDB 兼容性保证意味着 PDB 的行为与从连接 Oracle Net 的客户机看到的非 CDB 相同。
下图显示了两个独立的非 CDBs:hr 和 sales。每个非 CDB 都有自己的内存和数据库文件集,并驻留在自己的计算机上。每个非 CDB 都有自己的专用用户应用程序。
下图显示了合并到名为 MYCDB 的 CDB 中的相同数据。
物理上,MYCDB 是一个 Oracle 数据库。MYCDB 有一个数据库实例(尽管在 Oracle RAC 中可能有多个实例)和一组数据库文件,就像非 cdb 一样。
MYCDB 包含两个 PDBs:hrpdb 和 salespdb。如图 1-3 所示,这些 pdb 显示在各自的应用程序中,就像在数据库整合之前一样。要管理 CDB 本身或其中的任何 PDB,CDB 管理员可以连接到 CDB 根,它是所有 PDBs 所属的模式、模式对象和非模式对象的集合。
应用程序容器
从 Oracle Database 12c Release 2(12.2) 开始,应用程序容器是一个可选的用户创建的容器,用于存储一个或多个应用程序模型的数据和元数据。
应用程序(也称为应用程序模型)是存储在应用程序根中的一组公共数据和元数据的命名集。例如,应用程序模型可能包括一组 PDBs 常见的表、视图、用户帐户和 PL/SQL 包的定义。
在某些方面,应用程序容器在 CDB 中充当特定于应用程序的 CDB。一个应用程序容器,如 CDB 本身,可以包含多个应用程序 PDBs,并允许这些 PDBs 共享元数据和数据。
例如,SaaS 部署可以为单独的客户使用多个应用程序 PDBs,每个客户共享应用程序元数据和数据。例如,在下面的图中,sales_app 是应用程序根目录中的应用程序模型。名为 cust1_pdb 的应用程序只包含客户 1 的销售数据,而名为 cust2_pdb 的应用程序只包含客户 2 的销售数据。插入、拔下、克隆和其他 pdb 级操作可用于单个客户的 PDBs。
分片体系结构
Oracle 分片是一种基于跨多个 Oracle 数据库的数据的横向划分的数据库扩展技术。应用程序将数据库池感知为单个逻辑数据库。
对于 OLTP 应用程序来说,分片的主要优点包括线性可伸缩性、故障控制和地理数据分布。分片非常适合在云中部署。与实现切分的 NoSQL 数据存储不同,Oracle 分片提供了分片的好处,而不会牺牲企业 RDBMS 的功能。
在分片架构中,每个数据库驻留在专用服务器上,具有自己的本地资源——CPU、内存、flash 或磁盘。这种配置中的每个数据库都称为一个分片。所有这些分片组成一个逻辑数据库,称为分片数据库(SDB)。
水平分区涉及跨分片数据库表,以便每个分片包含具有相同列但行子集不同的表。以这种方式分割的表也称为切分表。
下图显示了一个横切三个碎片的切分表。
一个用例是跨多个物理数据库分发客户帐户数据。例如,ID 为 28459361 的客户可以查找他的记录。下图显示了一个可能的架构。客户请求通过连接池路由,其中分片主管(网络侦听器)将请求定向到包含所有客户行的适当的分片。
一个数据库可以从物理和逻辑这两个角度来考察。
物理数据是在操作系统级别可查看的数据。 例如,使用操作系统实用程序,如 Linux ls 和 ps,可以列出数据库文件和进程。 而象表这样的逻辑数据只在数据库层面有意义。 SQL 语句可以列出 Oracle 数据库中的表,但操作系统实用程序却不能。
数据库具有物理结构和逻辑结构。 因为物理结构和逻辑结构是分开的,因此对物理数据存储的管理,不会影响对逻辑存储结构的访问。 例如,重命名物理数据库文件并不会重命名表,尽管其数据存储在此文件中。
物理存储结构
物理数据库结构即是那些存储数据的文件。
当您执行 SQL 命令 CREATE DATABASE,会创建下列文件:
- 数据文件
每个 Oracle 数据库都有一个或多个物理数据文件,其中包含数据库的所有数据。数据库的逻辑数据结构,如表和索引,在物理上存储在这些数据文件中。 - 控制文件
每个 Oracle 数据库都有一个控制文件。 控制文件包含指定数据库物理结构的元数据,包括数据库名称,及数据库文件的位置和名称等。 - 联机重做日志文件
每个数据库都有一个联机重做日志,它包含两个或更多联机重做日志文件。 一个联机重做日志由许多重做项组成(也称为重做记录),以记录对数据所做的所有更改。
很多其他文件对 Oracle 数据库服务器的正常运行也是很重要的。 这些文件包括参数文件和诊断文件。 备份文件和归档重做日志文件是用于备份和恢复的重要的脱机文件。
逻辑存储结构
逻辑存储结构使得 Oracle 数据库可以按更细的粒度控制磁盘空间的使用:
本部分讨论逻辑存储结构:
- 数据块
在最细的粒度级别, Oracle 数据库将数据存储在数据块中。 一个数据块对应于磁盘上的特定数目的字节。 - 扩展区
扩展区是一定数目的逻辑上连续的数据块,在单次分配中获得,用于存储特定类型的信息。 - 段
段是为用户对象 (例如一个表或索引)、回滚数据、或临时数据等分配的一组扩展区。 - 表空间
数据库由称为表空间的逻辑存储单位组成。 表空间是段的逻辑容器。 每个表空间至少包含一个数据文件。
Oracle 数据库使用内存结构和进程,来管理和访问数据库。 所有内存结构都存在于构成关系数据库的计算机主内存中。
当应用程序连接到 Oracle 数据库时,他们也连接到一个数据库实例。 实例为该程序服务,为其分配除 SGA 之外的其他内存区,并启动除后台进程之外的其他进程。
Oracle 数据库进程
进程是操作系统的一种机制,用于运行一系列步骤。 有些操作系统使用工作、 任务、或线程等术语。
就本主题而言,线程等价于进程。 Oracle 数据库实例具有以下类型的进程:
- 客户端进程
这些进程被创建和维护,主要用来运行应用程序代码或 Oracle 工具。 多数环境中都由单独的计算机来运行客户端进程。 - 后台进程
这些进程整合了多种功能,以避免为每个客户端进程运行多个 Oracle 数据库程序。 后台进程以异步方式执行 I/O 操作,并监控其他数据库进程,以提供更大的并行度,达到更好的性能和可靠性。 - 服务端进程
这些进程与客户端进程通信,并与 Oracle 数据库进行交互,以完成客户端请求。
Oracle 进程包括服务器进程和后台进程。 在大多数的环境中, Oracle 进程和客户端进程在不同的计算机上运行。
实例内存结构
Oracle 数据库创建和使用内存结构有几个目的,例如,用于在多个用户之间共享程序代码和数据的内存,以及用于每个已连接用户的私有数据区域。
以下是与实例相关的内存结构:
- 系统全局区(SGA)
SGA 是一组共享的内存结构,包含一个数据库实例的数据和控制信息。例如,SGA 组件包括数据块缓存和共享 SQL 区域。从 Oracle Database 12c Release 1(12.1.0.2) 开始,SGA 可以包含一个可选的 in - memory 列式存储 (IM Column Store),它允许数据以柱状格式填充到内存中。 - 程序全局区(PGA)
PGA 是一个内存区域,其中包含某个服务器进程或后台进程的数据和控制信息。 PGA 只由专有的过程访问。 每个服务器进程和后台进程都有其自己的 PGA。
为了充分利用一个特定的计算机系统或网络,数据库把任务在数据库服务器和客户端程序之间分开处理。 运行关系数据库的计算机负责处理数据库服务器,而运行应用程序处理的计算机负责解释和显示数据。
应用程序体系结构
应用程序体系结构是指一个数据库应用程序连接到 Oracle 数据库的计算环境。最常见的两种数据库体系结构是客户端/服务器体系结构和多层体系结构。
客户端/服务器体系结构
在客户端/服务器体系结构中,客户端应用程序发起一个将在数据库服务器上执行操作的请求。服务器运行 Oracle 数据库软件,并处理并发、 共享数据访问所需的功能。 服务器接收并处理来自客户端的请求。
在传统的多层体系结构中,由一个或多个应用程序服务器执行部分(由传统 C/S 服务器执行的)操作。
多层体系结构
在多层架构中,一个或多个应用服务器执行部分操作。应用程序服务器包含大部分应用程序逻辑,为客户机提供对数据的访问,并执行一些查询处理。通过这种方式,减轻在数据库上的负载。应用程序服务器可以作为客户机和多个数据库之间的接口,并提供额外的安全级别。
面向服务的体系结构 (SOA) 是一种多层体系结构,应用程序的功能被封装在服务中。 SOA 服务通常是作为 Web 服务实现的。 Web 服务可通过HTTP 访问,并基于 XML 标准,如 Web 服务描述语言 (WSDL) 和 SOAP。
Simple Oracle Document Access (SODA) 是 SOA 的一种改进,它使您能够访问存储在数据库中的数据。SODA 是为无模式应用程序开发而设计的,不需要了解关系数据库特性或 SQL 和 PL/SQL 等语言。您可以在 Oracle 数据库中创建和存储文档集合,检索和查询它们,而不需要知道文档是如何存储的。用于 REST 的 SODA 使用具象状态传输(representational state transfer, REST)架构风格来实现 SODA。
Oracle 网络服务结构
Oracle 网络服务是数据库与网络通信协议之间的接口,它对分布式处理和分布式数据库很有用。
通信协议定义了数据在网络上被传输和接收的方式。Oracle 网络服务支持所有主要的网络通信协议,包括 TCP/IP、 HTTP、FTP 、和 WebDAV
Oracle Net 是 Oracle 网络服务的一个组件, 用于建立和保持一个客户端应用程序到数据库服务器的网络会话。 网络会话建立后, Oracle Net 作为客户端应用程序和数据库之间的数据传递员,在它们之间交换消息。 Oracle Net 之所以可以执行这些工作,是因为它位于网络中的每台计算机上。
网络服务的一个重要组成部分是 Oracle 网络监听器(简称监听器),它是一个单独的进程,运行在数据库服务器上,或在网络中的其它地方。 客户端应用程序可以发送连接请求到监听器,而监听器管理这些发送到数据库服务器的请求的流量。 当一个连接建立之后,客户端和数据库进行直接通信,而不再需要监听器的参与。
为服务客户端请求,最常见的两种配置 Oracle 数据库的方式是:
- 专用服务器体系结构
每个客户端进程连接到一个专用的服务器进程。 在与客户端的会话期间,服务器进程不可以被任何其他客户端共享。 Oracle 会为每个新会话分配一个专用的服务器进程。
- 共享服务器体系结构
数据库使用一个用于多个会话的共享进程池。 客户端进程与一个调度器通信,调度器是一个进程,它使大量的客户端能够连接到同一数据库实例,而无需为每个客户端建立一个专用的服务器进程。
Oracle 数据库文档路线图
文档设计了特定的访问路径,确保用户能够尽可能高效地找到他们所需的信息
文档集分为三个层次或组: 基本、中级、和高级。 用户可以从基本组开始(《Oracle 数据库 2 日 DBA》、 《Oracle 数据库 2 日开发者指南》、或本手册),然后继续推进到中级组 (2 日 + 系列),最后是高级手册,即文档集的其余部分。
Oracle 数据库文档:基本组
新的 Oracle 数据库技术用户,从基本组中的一个或多个手册开始,从头到尾的阅读。 在此组中的每个手册被设计为在两天内看完。
除本手册外,基本组还包括下表所示的手册。
手册 | 描述 |
数据库管理员(DBA)负责Oracle数据库的整体操作。基于任务的快速启动指南教DBA如何使用Oracle Enterprise Manager Database Express (EM Express)执行日常的数据库管理任务。这本手册教DBA如何执行所有的常见管理任务,以保持数据库可操作,包括如何执行基本的故障排除和性能监测活动。 | |
这本基于任务的快速启动指南,解释了如何通过 SQL 和 PL/SQL 使用数据库的基本功能。 |
基本组的几本手册是密切相关的,这可以从大量存在的交叉引用看出来。例如, Oracle 数据库概念经常将用户引导到 2 日手册,以了解如何执行一项基于某个概念的任务。 针对某一任务, 2 日手册经常引用《Oracle 数据库概念》中的概念性背景知识。
Oracle 数据库文档:中级组
基本组的下一步是中级组。
在此组中的手册带有“2 日+”前缀,因为他们扩展和承袭了 2 日手册中包含的信息。“2 日+”手册相比包括基本手册而言,讨论的主题更加深入,或者更加侧重问题的某些特殊方面。这些手册适用于不同的读者:
- 数据库管理员
《Oracle Database 2 Day + Performance Tuning Guide》是一个快速入门指南,描述如何使用Oracle Diagnostics Pack、Oracle tuning Pack和Oracle Enterprise Manager Cloud Control (Cloud Control)提供的特性执行日常数据库性能调优任务。 - 数据库开发
《Oracle Database 2 Day + Java Developer’s Guide》帮助您理解用于构建 Java 应用程序的所有 Java 产品。该手册解释了如何在示例 Web 应用程序的数据库(OJVM)中使用 Oracle JDBC thin 驱动程序、通用连接池(Universal Connection Pool, UCP)和 Java。
Oracle 数据库文档:高级组
高级组手册供专家用户使用,它们相比 2 日 + 手册而言,提供了针对有关特定主题的更详细的信息。
下表列出了高级组的基本参考手册。
手册 | 描述 |
本手册是关于 Oracle SQL 的权威信息来源。 | |
本手册是关于初始化参数、 数据字典视图、动态性能视图、等待事件和后台进程的权威 | |
介绍 Oracle 数据库服务器自带的 PL/SQL 包。您可以在创建应用程序或创建自己的存储过程时使用提供的包。 |
由于高级指南数目过多,不能一一列举。下表列出了大多数 Oracle dba 专家使用的指南。
手册 | 描述 |
本手册解释了如何执行创建和配置数据库、维护和监视数据库、创建模式对象、调度作业和诊断问题等任务。 | |
介绍如何使用默认数据库特性配置 Oracle 数据库的安全性。 | |
本手册描述如何使用 Oracle 数据库工具来优化数据库性能。本指南还描述了创建数据库的最佳性能实践,包括与性能相关的参考信息。 | |
本手册描述 SQL 处理、优化器、执行计划、SQL 操作符、优化器统计信息、应用程序跟踪和 SQL advisor。 | |
本手册解释了如何备份、恢复和恢复 Oracle 数据库,对数据库文件的备份执行维护,以及在存储系统之间传输数据。 | |
《Oracle Real Application Clusters Administration and Deployment Guide》 | 本手册解释如何安装、配置、管理和故障排除 Oracle RAC 数据库。 |
下表列出了大多数Oracle专家开发人员使用的指南。
手册 | 描述 |
本手册解释如何开发应用程序或将现有应用程序转换为在 Oracle 数据库环境中运行。该手册解释了应用程序设计的基本原理,并描述了在 SQL 和 PL/SQL 中开发的基本概念。 | |
本手册描述 PL/SQL 语言的所有方面,包括数据类型、控制语句、集合、触发器、包和错误处理。 | |
描述如何在 Oracle 数据库中开发、加载和运行 Java 应用程序。 | |
《Oracle Database SecureFiles and Large Objects Developer’s Guide》 | 说明如何使用大型对象(lob)、SecureFiles lob 和数据库文件系统(DBFS)开发新的应用程序。 |
特定用户需要的其他高级指南取决于该用户的职责范围。