Oracle数据库简介

1 Oracle数据库简介

本章提供了Oracle数据库的概述,包含以下部分:

关于关系数据库

每个组织都有必须存储和管理以满足其要求的信息。例如,公司必须为其员工收集和维护人力资源记录。此信息必须可供那些需要它的人。一个信息系统是用于存储和处理信息的正式系统。

信息系统可以是包含马尼拉文件夹的一组纸板箱以及如何存储和检索文件夹的规则。然而,目前大多数公司使用数据库来自动化其信息系统。数据库是作为一个单元被处理的信息的有组织的集合。数据库的目的是收集,存储和检索相关信息供数据库应用程序使用。

数据库管理系统(DBMS)

一个数据库管理系统(DBMS)是控制存储,组织,和检索数据的软件。通常,DBMS具有以下元素:

  • 内核代码

    此代码管理DBMS的内存和存储。

  • 元数据存储库

    此存储库通常称为数据字典

  • 查询语言

    此语言使应用程序能够访问数据。

一个数据库应用程序是一个软件程序,与数据库交互访问和操作的数据。

第一代数据库管理系统包括以下类型:

  • 分层

    一个层次型数据库以树形结构组织数据。每个父记录都有一个或多个子记录,类似于文件系统的结构。

  • 网络

    一个网络数据库类似于分层数据库,除了记录有许多对多,而不是一对多的关系。

前面的数据库管理系统以刚性,预定的关系存储数据。因为没有数据定义语言,改变数据的结构是困难的。此外,这些系统缺乏一种简单的查询语言,阻碍了应用程序的开发。

关系模型

在他的开创性的1970年的文章“A Relational Model of Data for Large Shared Data Banks”,EF Codd定义了一个基于数学集理论的关系模型。今天,最广泛接受的数据库模型是关系模型。

一个关系数据库是符合关系模型的数据库。关系模型有以下主要方面:

  • 结构

    良好定义的对象存储或访问数据库的数据。

  • 操作

    明确定义的操作使应用程序能够操作数据库的数据和结构。

  • 完整性规则

    完整性规则控制对数据库的数据和结构的操作。

关系数据库将数据存储在一组简单关系中。一个关系是一组元组。一个元组是一个无序的属性值。

一个是按行(元组)和列(属性)的形式的关系的一个二维表示。表中的每一行具有相同的列集合。关系数据库是在关系(表)中存储数据的数据库。例如,关系数据库可以在雇员表,部门表和工资表中存储关于公司雇员的信息。

也可以看看:

http://dl.acm.org/citation.cfm?id=362685  摘要并链接到Codd的文章

关系数据库管理系统(RDBMS)

关系模型是关系数据库管理系统(RDBMS)的基础本质上,RDBMS将数据移动到数据库中,存储数据,并检索它,以便它可以由应用程序操纵。RDBMS区分以下类型的操作:

  • 逻辑操作

    在这种情况下,应用程序指定需要什么内容。例如,应用程序请求员工姓名或向表中添加员工记录。

  • 物理操作

    在这种情况下,在RDBMS确定如何事情应该做,并且执行操作。例如,在应用程序查询表之后,数据库可以在将结果返回给用户之前使用索引来找到所请求的行,将数据读入存储器,以及执行许多其他步骤。RDBMS存储和检索数据,以便物理操作对数据库应用程序是透明的。

Oracle数据库是一个RDBMS。实现面向对象特性的RDBMS被称为用户定义类型,继承和多态性一个对象关系型数据库管理系统(ORDBMS) Oracle数据库已将关系模型扩展为对象关系模型,从而可以在关系数据库中存储复杂的业务模型。

Oracle数据库简史

当前版本的Oracle数据库是30多年创新开发的结果。Oracle数据库发展的亮点包括:

  • 成立Oracle

    1977年,Larry Ellison,Bob Miner和Ed Oates开始了顾问软件开发实验室,后者成为了Relational Software,Inc.(RSI)。1983年,RSI成为Oracle系统公司,后来成为Oracle公司。

  • 第一种市售RDBMS

    1979年,RSI引入了Oracle V2(版本2)作为第一个基于SQL的RDBMS,这是关系数据库历史上的一个里程碑事件。

  • Oracle数据库的便携版本

    Oracle版本3于1983年发布,是第一个在大型机,小型机和PC上运行的关系数据库。数据库用C编写,使数据库能够移植到多个平台。

  • 增强并发控制,数据分发和可扩展性

    版本4引入了多版本读一致性版本5,1985年发布,支持客户端/服务器计算和分布式数据库系统。版本6对磁盘I / O,行锁定,可伸缩性以及备份和恢复带来了增强。此外,版本6引入了PL / SQL语言的第一个版本,这是SQL的专有过程扩展。

  • PL / SQL存储程序单元

    Oracle7,1992年发布,引入了PL / SQL 存储过程触发器

  • 对象和分区

    Oracle8作为对象关系数据库于1997年发布,支持许多新的数据类型。此外,Oracle8支持对大表进行分区。

  • 互联网计算

    Oracle8 i Database于1999年发布,为互联网协议和Java的服务器端支持提供本机支持。Oracle8 i是为互联网计算设计的,使数据库能够部署在多层环境中。

  • Oracle真正应用集群(Oracle RAC)

    Oracle9 i Database在2001年引入了Oracle RAC,允许多个实例同时访问单个数据库。此外,Oracle XML数据库(Oracle XML DB)引入了存储和查询XML的能力。

  • 网格计算

    Oracle数据库10g在2003年引入了网格计算。此版本使组织能够通过构建基于低成本商品服务器网格基础设施来虚拟化计算资源。一个关键的目标是使数据库自我管理和自我调整。Oracle自动存储管理(Oracle ASM)通过虚拟化和简化数据库存储管理帮助实现了这一目标。

  • 可管理性,可诊断性和可用性

    2007年发布的Oracle Database 11 g引入了许多新功能,使管理员和开发人员能够快速适应不断变化的业务需求。适应性的关键是通过整合信息和尽可能使用自动化来简化信息基础设施。

也可以看看:

http://www.oracle.com/technetwork/issue-archive/2007/07-jul/o4730-090772.html  这篇文章总结了Oracle数据库的发展

架构对象

RDBMS的一个特征是物理数据存储与逻辑数据结构的独立性。在Oracle数据库中,数据库模式是逻辑数据结构或模式对象的集合数据库模式由数据库用户拥有,并且与用户名具有相同的名称

模式对象是用户创建的结构,它们直接引用数据库中的数据。数据库支持许多类型的模式对象,其中最重要的是表和索引。

模式对象是一种类型的数据库对象某些数据库对象(如配置文件和角色)不驻留在模式中。

也可以看看:

“模式对象简介”

表描述了诸如雇员的实体。您可以使用表名(例如employees,和列集)定义表。通常,在创建表时,为每个分配一个名称,一个数据类型和一个宽度。

表是一组行。列标识由表描述的实体的属性,而标识实体的实例。例如,雇员实体的属性对应于雇员ID和姓氏的列。行标识特定员工。

您可以选择为表的每个列指定规则。这些规则称为完整性约束一个例子是NOT NULL完整性约束。此约束强制列在每行中包含一个值。

索引

一个指数是一个可选的数据结构,可以在一个表中的一个或多个列创建。索引可以提高数据检索的性能。在处理请求时,数据库可以使用可用索引来有效地定位请求的行。当应用程序经常查询特定行或行范围时,索引很有用。

索引在逻辑上和物理上独立于数据。因此,您可以删除并创建对表或其他索引没有影响的索引。删除索引后,所有应用程序都将继续运行。

也可以看看:

“索引概述”

数据访问

DBMS的一般要求是遵守数据访问语言的公认行业标准。

结构化查询语言(SQL)

SQL是一种基于集合的声明性语言,它为RDBMS(如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的功能。

也可以看看:

第7章“SQL”

PL / SQL和Java

PL / SQL是Oracle SQL的过程性扩展。PL / SQL与Oracle数据库集成,使您能够使用所有Oracle数据库SQL语句,函数和数据类型。您可以使用PL / SQL控制SQL程序的流程,使用变量和编写错误处理过程。

PL / SQL的主要优点是将应用程序逻辑存储在数据库本身中的能力。 一个PL / SQL过程函数是一个模式对象,由一组SQL语句和其他PL / SQL结构的,组合在一起,存储在数据库中,并运行作为一个单位来解决特定问题或执行一组相关任务。服务器端编程的主要优点是内置功能可以部署在任何地方。

Oracle数据库还可以存储用Java编写的程序单元。Java存储过程是一种发布到SQL并存储在数据库中供一般使用的Java方法。您可以从PL / SQL中的Java和Java程序调用现有的PL / SQL程序。

事务管理

Oracle数据库设计为多用户数据库。数据库必须确保多个用户可以同时工作,而不会破坏彼此的数据。

交易

RDBMS必须能够对SQL语句进行分组,以便它们全部提交,这意味着它们应用于数据库,或者全部回滚,这意味着它们将被撤消。一个事务是包含一个或多个SQL语句的逻辑工作,原子单位。

说明交易的需要是从储蓄账户到支票账户的资金转移。传输由以下单独操作组成:

  1. 减少储蓄帐户。

  2. 增加支票帐户。

  3. 将事务记录在事务日志中。

Oracle数据库保证所有三个操作成功或失败作为一个单元。例如,如果硬件故障阻止事务中的语句执行,则其他语句必须回滚。

事务是将Oracle数据库与文件系统分开设置的功能之一。如果您执行更新多个文件的原子操作,并且如果系统中途失败,则文件将不一致。相反,事务将Oracle数据库从一个一致状态移动到另一个。事务的基本原则是“全有或全无”:原子操作作为一个整体成功或失败。

也可以看看:

第十章“交易”

数据并发

多用户的RDBMS的要求是控制并发,这是相同的数据的多个用户同时访问。如果没有并发控制,用户可能会不当地更改数据,从而影响数据完整性例如,一个用户可以更新行,而不同的用户同时更新它。

如果多个用户访问相同的数据,那么管理并发性的一种方法是使用户等待。然而,DBMS的目标是减少等待时间,因此它不存在或可忽略。修改数据的所有SQL语句必须尽可能少的干扰。必须避免破坏性交互,即不正确地更新数据或更改基础数据结构的交互。

Oracle数据库使用锁来控制对数据的并发访问。一个是防止访问共享资源的交易之间的破坏性相互作用的机制。锁定帮助确保数据完整性,同时允许最大并发访问数据。

数据一致性

在Oracle数据库中,每个用户必须查看数据的一致视图,包括用户自己的事务和其他用户的已提交事务所做的可见更改。例如,数据库不能允许脏读,当一个事务发生由另一个并发事务发生的未提交的更改时,会发生脏读

Oracle数据库总是 强制执行语句级读取一致性,这保证单个查询返回的数据提交并与单个时间点保持一致。根据事务隔离级别,此点是语句打开的时间或事务开始的时间。闪回查询功能使您能够显式指定此时间点。

数据库还可以为事务中的所有查询提供读取一致性,称为事务级读取一致性在这种情况下,事务中的每个语句都会看到来自同一时间点(即事务开始的时间点)的数据。

Oracle数据库架构

一个数据库服务器的关键是信息管理。通常,服务器在多用户环境中可靠地管理大量数据,使得用户可以同时访问相同的数据。数据库服务器还防止未经授权的访问,并为故障恢复提供有效的解决方案。

数据库和实例

Oracle数据库服务器由数据库和至少一个数据库实例(通常简称为实例)组成。因为实例和数据库是如此紧密连接,所以术语Oracle数据库有时用于指代实例和数据库。在最严格的意义上,术语具有以下含义:

  • 数据库

    数据库是一组位于磁盘上的文件,用于存储数据。这些文件可以独立于数据库实例存在。

  • 数据库实例

    实例是管理数据库文件的一组内存结构。该实例由称为系统全局区域(SGA)的共享内存区域和一组后台进程组成实例可以独立于数据库文件存在。

图1-1显示了一个数据库及其实例。对于与实例的每个用户连接,应用程序由客户端进程运行每个客户端进程与其自己的服务器进程相关联。服务器进程有自己的专用会话存储器,称为程序全局区(PGA)

图1-1 Oracle实例和数据库

图1-1的描述如下
“图1-1 Oracle实例和数据库”的描述

可以从物理和逻辑角度来考虑数据库。物理数据是在操作系统级别可查看的数据。例如,操作系统实用程序如Linux lsps可以列出数据库文件和进程。逻辑数据(如表)仅对数据库有意义。SQL语句可以列出Oracle数据库中的表,但操作系统实用程序不能。

数据库具有物理结构逻辑结构因为物理和逻辑结构是分开的,所以可以在不影响对逻辑存储结构的访问的情况下管理数据的物理存储。例如,重命名物理数据库文件不会重命名其数据存储在此文件中的表。

数据库存储结构

关系数据库的基本任务是数据存储。本节简要介绍Oracle数据库使用的物理和逻辑存储结构。

物理存储结构

物理数据库结构是存储数据的文件。执行SQL命令CREATE DATABASE时,将创建以下文件:

  • 数据文件

    每个Oracle数据库都有一个或多个物理数据文件,其中包含所有数据库数据。逻辑数据库结构(如表和索引)的数据物理存储在数据文件中。

  • 控制文件

    每个Oracle数据库都有一个控制文件控制文件包含指定数据库物理结构的元数据,包括数据库名称以及数据库文件的名称和位置。

  • 联机重做日志文件

    每个Oracle数据库都有一个联机重做日志,这是一组两个或多个联机 重做日志文件联机重做日志由重做条目(也称为重做记录)组成,记录对数据所做的所有更改。

许多其他文件对于Oracle数据库服务器的运行很重要。这些文件包括参数文件和诊断文件。备份文件和归档重做日志文件是对备份和恢复很重要的脱机文件。

逻辑存储结构

本节讨论逻辑存储结构。以下逻辑存储结构使Oracle数据库能够细粒度控制磁盘空间使用:

  • 数据块

    在最细粒度级别,Oracle数据库数据存储在数据块中。一个数据块对应于磁盘上的特定字节数。

  • 范围

    一个程度是逻辑上连续的数据块的一个特定号码,在一个单一的分配得到的,用于存储一个特定类型的信息。

  • 细分

    一个是一组分配给一个用户对象(例如,表或索引),盘区还原数据,或临时数据。

  • 表空间

    数据库分为称为空间的逻辑存储单元表空间是段的逻辑容器。每个表空间至少包含一个数据文件。

数据库实例结构

Oracle数据库使用内存结构和进程来管理和访问数据库。所有存储器结构存在于构成RDBMS的计算机的主存储器中。

当应用程序连接到Oracle数据库时,它们将连接到数据库实例。实例服务应用程序通过除了SGA之外分配其它存储器区域,并且除后台进程之外还启动其他进程。

Oracle数据库进程

一个过程是在一个操作系统,可以运行一系列步骤的机构。某些操作系统使用术语作业任务线程为了讨论的目的,线程相当于一个进程。Oracle数据库实例具有以下类型的进程:

  • 客户端进程

    创建并维护这些进程以运行应用程序或Oracle工具的软件代码。大多数环境具有用于客户端进程的单独的计算机。

  • 后台进程

    这些过程合并了由每个客户端进程运行的多个Oracle数据库程序处理的函数。后台进程异步执行I / O并监视其他Oracle数据库进程,以提供更高的并行性,从而获得更好的性能和可靠性。

  • 服务器进程

    这些进程与客户端进程通信,并与Oracle数据库进行交互以满足请求。

Oracle进程包括服务器进程和后台进程。在大多数环境中,Oracle进程和客户端进程在单独的计算机上运行。

也可以看看:

第15章“过程架构”
实例内存结构

Oracle数据库创建和使用内存结构,用于程序代码的内存,用户共享的数据和每个连接用户的私有数据区。以下内存结构与实例相关联:

  • 系统全局区域(SGA)

    SGA是一组共享内存结构,包含一个数据库实例的数据和控制信息。SGA组件的示例包括缓存的数据块和共享的SQL区域。

  • 计划全球领域(PGA)

    PGA是包含用于服务器或后台进程的数据和控制信息的存储器区域。访问PGA是进程独有的。每个服务器进程和后台进程都有自己的PGA。

    也可以看看:

    第14章“内存架构”

应用和网络架构

为了充分利用给定的计算机系统或网络,Oracle数据库使处理能够在数据库服务器和客户端程序之间分割。运行RDBMS的计算机处理数据库服务器的职责,而运行应用程序的计算机处理数据的解释和显示。

应用程序架构

应用程序体系结构是指数据库应用程序连接到Oracle数据库的计算环境。两个最常见的数据库体系结构是客户端/服务器和多层。

客户端/服务器体系结构中,客户端应用启动对要在数据库服务器上执行的操作的请求。服务器运行Oracle数据库软件,并处理并发,共享数据访问所需的功能。服务器接收和处理来自客户端的请求。

在传统的多层架构中,一个或多个应用服务器执行部分操作。应用程序服务器包含大部分应用程序逻辑,提供对客户端的数据的访问,并执行一些查询处理,从而减轻数据库的负载。应用程序服务器可以充当客户端和多个数据库之间的接口,并提供额外的安全级别。

面向服务的架构(SOA)是一种多层架构,其中应用程序功能被封装在服务中SOA服务通常实现为Web服务。Web服务可通过HTTP访问,并基于基于XML的标准,如Web服务描述语言(WSDL)和SOAP

Oracle数据库可以充当传统多层或SOA环境中的Web服务提供程序。

也可以看看:

网络架构

Oracle Net Services是数据库和网络通信协议之间的接口,用于促进分布式处理和分布式数据库。通信协议定义了在网络上传输和接收数据的方式。Oracle Net Services支持所有主要网络协议(包括TCP / IP,HTTP,FTP和WebDAV)上的通信。

Oracle Net是Oracle Net Services的一个组件,用于建立和维护从客户端应用程序到数据库服务器的网络会话。在建立网络会话后,Oracle Net作为客户端应用程序和数据库服务器的数据信使,在它们之间交换消息。Oracle Net可以执行这些作业,因为它位于网络中的每台计算机上。

Net Services的一个重要组件是Oracle Net Listener(称为侦听器),它是在数据库服务器或网络中其他位置运行的单独进程。客户端应用程序可以向侦听器发送连接请求,该侦听器管理对数据库服务器的这些请求的流量。当建立连接时,客户端和数据库直接通信。

配置Oracle数据库来处理客户端请求的最常见方法是:

  • 专用服务器架构

    每个客户端进程连接到专用服务器进程。在客户端会话期间,服务器进程不会被任何其他客户端共享。每个新会话都分配了一个专用的服务器进程。

  • 共享服务器体系结构

    数据库使用多个会话的共享进程池。客户端进程与分派器通信,该分派器是使得许多客户端能够连接到相同的数据库实例而不需要每个客户端的专用服务器进程的进程。

也可以看看:

Oracle数据库文档路线图

本节说明如何阅读本手册以及它在整个Oracle数据库文档集中的位置。

对于新用户,Oracle数据库文档库似乎令人望而生畏。不仅有超过175个手册,而且这些手册中有许多是几百页的长。但是,文档设计具有特定的访问路径,以确保用户能够尽可能高效地找到他们需要的信息。

文档集分为三个层或组:基本,中间和高级。用户从基本组(Oracle数据库2天DBAOracle数据库2天开发人员指南或本手册)中的手册开始,继续到中间组(2天+系列)中的手册,最后到高级手册,其中包括文档集的其余部分。

基本组

对Oracle数据库不熟悉的技术用户首先从基础组中阅读一个或多个手册,从封面到封面。该组中的每个手册设计为在两天内阅读。除本手册外,基本组包括:

  • Oracle数据库2天DBA

    本手册是一个基于任务的DBA快速入门,教您如何执行日常数据库管理任务。它教您如何执行保持数据库可操作所需的所有常见管理任务,包括如何执行基本故障排除和性能监视活动。

  • Oracle数据库2天开发人员指南

    本手册是一个基于任务的数据库开发人员快速入门指南,介绍如何通过SQL和PL / SQL使用Oracle数据库的基本功能。

基本组中的手册是密切相关的,这反映在交叉引用的数量。例如,Oracle数据库概念经常向用户发送2天手册,以了解如何基于一个概念执行任务。2天的手册经常引用的Oracle数据库概念的有关任务的概念背景。

中间组

从基本组开始的下一步是中间组。此组中的手册带有前缀“ 2 Day +”的前缀,因为它们展开并承担2天手册中包含的信息。这些手册涵盖的主题比基本手册更深入,或涵盖特别感兴趣的主题。表1-1所示2天+手册分为DBA和开发人员手册。

高级组

从中间组开始的下一步是高级组。这些手册适用于需要有关特定主题的详细信息的专家用户,这些信息可以通过2天+手册提供。高级组中的基本参考手册包括:

高级指南太多,无法在此部分列出。表1-2列出了大多数专家DBA和开发人员一次或多次使用的指南。

特定用户所需的其他高级指南取决于该用户的责任区域。例如,安全人员自然会参考“ Oracle数据库安全指南”

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值