分享

第一章 Oracle介绍

 月影斜 2010-05-08

 Oracle 10.2 概念 第一章 Oracle介绍

1、Oracle介绍

本章提供了针对Oracle数据库服务器的概述,包含以下主题

Oracle数据库体系结构

Oracle数据库特点

Oracle数据库应用开发

Oracle数据库体系结构

Oracle数据库是将数据作为基本处理单元的集合。数据库的目标是存储和取回关系型数据。数据库服务器是解决数据管理问题的核心。通常来说,一个服务器在一个多用户环境中可靠的管理大量的数据,所以许多用户可以同时访问同一数据。所有的这些以很高的性能完成。一个数据库服务器还能阻止未经授权访问和提供针对失败恢复的有效解决方案。

Oracle数据库是第一个针对企业网格运算设计的数据库,它提供了最灵活最低成本的管理信息和应用的方式。企业网格计算提供了基于工业标准的、模块化的存储和服务器的大池。在这种体系结构下,每个新系统可以从组件池中快速提供。因此没有必要关注负载峰值,因为计算能力可以根据需要很容易的添加或者在资源池中重新分配。

Oracle数据库包含物理架构和逻辑架构。因为物理架构和逻辑架构是分离的,所以可以在不影响逻辑存储架构访问的情况下管理数据的物理存储。

下面部分包含下列主题:

Oracle网格架构概述

应用程序架构概述

物理数据库结构概述

逻辑数据库机构概述

模式和通用模式对象

Oracle数据字典概述

Oracle实例概述

数据库访问概述

Oracle实用工具概述

Oracle网格架构概述

网格运算是一个新的IT架构,它创造出了更灵活、成本更低的企业信息系统。在网格架构下,独立的、模块化的硬件和软件组件的分组可以连接起来,并可以根据商业需求的改变来重新组织。

网格运算的目标是解决企业IT中的一些常见问题:应用竖井问题,会导致低利用率问题,零散的笨重系统问题,维护代价很高且很难改变,分散零碎的信息问题,它们无法企业内部作为一个整体来使用。

网格运算的优势:和其他运算模型相比,使用网格方式设计和实现的IT系统可以提供高质量的服务,更低的成本以及更大的灵活性。高质量的服务来源于去除了单点失败问题、健壮的安全基础和集中式协议驱动的管理。低成本来源于提高了资源使用效率和大大减少了管理和维护成本。在网格计算中,不存在针对特定任务分配一系列软件和硬件的现象,所有的资源都是池化的,可以按需分配,因而消除了设备使用低效和冗余设备的问题。网格运算还可以使用小型的单独的硬件组件,因而可以减少每个组件的成本,并可以根据需要更灵活的分配资源。

网格运算的定义

当你在池中处理特定特征的资源时,网格运算方式将类似IT资源的集合整体上作为一个单独的池。在标识单个系统和碎片信息问题上,网格运算在整体资源管理和独立资源控制的基础上获得了一个平衡。网格包含的资源如下:

¨ 基础:创建数据存储和程序执行环境的软件和硬件

¨ 应用程序:定义特定商业过程的程序逻辑和流程

¨ 信息:用来指导商业的所有类型数据的含义

网格运算的核心原则 网格运算和其他方式的运算比如大型机、客户端服务器系统,以及多层结构相比有两个独特的地方:虚拟化和可配置性

¨ 虚拟化:硬盘、应用组件、信息资源等这类单独的资源是按照资源类型被池化的,客户(人或者软件程序)可以抽象的调用它们。虚拟化意味着打破了客户和服务之间的资源的硬连接,可以在透明的给客户提供资源满足特定的需要。

¨ 可配置性:当客户通过虚拟层请求资源时,在后台一个特定的资源被标识为实现这个请求,然后这个资源被分配给这个客户。

信息、应用程序、基础设施这些资源虚拟化和配置方式针对资源的类型会有所不同,但是概念上是相同的。简单来说,每类资源在网格运算中获得的优势是不同的,但是所有的都具备高性能、低成本和升级灵活的特点。

基础设施网格:基础网格资源包括硬件资源和软件资源,硬件资源指存储、处理器、内存、网络设备等,软件资源是管理硬件的工具,比如数据库、存储管理、系统管理、应用服务器以及操作系统等。

虚拟化和可配置性意味着池化资源可以组织起来并按照协议分配给特定的客户。例如,一个协议可能对一个Web服务器分配足够的处理能力,因而它可以提供次级的处理时间。通过软件配置采取不同的方式来执行这个规则可以达到均衡所有客户请求的目的。

将基础资源看作一个单个的池并按照需求分配这些资源可以达到减少低效和冗余处理能力的目的从而节约成本。从整体上管理硬件和软件资源减少了工作成本和人为错误的机率。

跨多个不同的计算机的分布式计算和跨多个磁盘和磁盘组的分布式存储能能够避免单点失败问题。因此当一个单独组件失败,整个系统仍然保持可用。而且网格运算还能提供更多的选择,比如使用小型硬件组件如刀片服务器和低成本存储等,这些可以依次递减每个单独组件的成本,从而给企业提供更高的灵活性和更低的成本。

基础设施是网格运算的维度,它是最熟悉也最容易让人理解的,但是针对应用程序和信息来说也同样简单。

应用程序网格:网格中的应用程序资源是应用软件中的商务逻辑和流程控制的代码。他们可能是打包或定制程序,可能使用任何编程语言,反映任何级别的复杂程度。比如,软件从客户得到一个指令,发送一个确认,打印工资表校验、将特定客户的请求路由到特定的客户端的进程都是应用程序资源。

从历史上来看,应用程序逻辑曾经和用户接口代码、数据管理代码、进程或页面流程纠缠在一起,并且缺乏良好的接口定义,这些已经在大型应用程序上得到印证,很难修改并很难集成。

面向服务架构已经被看作是构建程序的超级模式,而且面向服务架构概念和网格运算的两个核心优势紧密相连。应用资源的虚拟化和可配置性包含将应用程序组件做为服务发布给多个客户使用,客户可能是人或者进程,接着将这些服务构建到更强大的商业流程中。

同样,网格运算对IT基础资源提供更好的重用性和更好的灵活性,网格运算将一系列应用逻辑看作一个资源,可以更好的重用应用程序功能,并在修改和构建新的组合应用时提供更好的灵活性。

不仅如此,将发布的服务集成起来的应用还能作为一个整体在商业上显示活动情况,因此进程是标准化的,可以跨地域、跨商务单位并且自动的提供端对端服务。这样通过不断提高的自动化和降低相异性可以构建更健壮的更低的成本商务过程。

信息网格:在基础设施和应用程序之后,网格运算的第三个维度是信息。今天,信息倾向于是跨组织的,所以很难将商业看作一个整体来回答顾客的基本问题。没有关于顾客是谁,想要购买什么的信息是没有意义的。

相反,网格计算将信息整体看作一个资源,和对待基础资源和应用程序资源一样,因而可以得到信息的潜在内容。信息网格包含企业中的所有数据,还包括数据定义的元数据。这些数据可能是结构化的、半结构化的和非结构化的,可以保存在任何位置,比如数据库、本地文件系统或者e-mail服务器,也可以被任何应用程序创建。

网格运算的核心优势针对信息和对基础设施和应用程序是一样的。基础网格检查网络的拥挤程度来控制多个服务器或者多个存储设备组合起来为单独的服务,而且也可以根据需要很容易的重新配置。一个面向服务的架构或者说应用程序网格使独立开发的服务或者应用程序资源能够合并为大型的商业过程,而且可以根据需要进行改变而不会终端组合应用的其他部分。同样,信息网格对信息资源和相关信息资源之间提供一种更好的利用信息之间固有联系的价值的方法,而且也可以根据条件改变来创建新的连接方式。

比如关系数据库是个早期的信息虚拟化技术。和它的前任网状数据库和层次数据模型不同,数据之间的所有的联系都是预先定义的,关系型数据库可以针对通用目的的信息资源的灵活访问途径。今天,XML对信息虚拟化走的更远,它通过标准的方式来使用元数据表达信息,这样就解除了创建和显示信息的应用程序和信息之间的硬关联。

信息配置技术包括数据队列、数据传播、复制、抽取-转换-加载(ETL),还有映射和清理工具来确保数据质量。一种数据中心的模式已经作为首选模式出现,它从多个活动数据源不停同步操作型数据来集中的保存,这既能保存分散控制的灵活性,也可以建立真实数据的单一来源。

网格运算单独工作很好,协同更佳:使用网格计算管理任何单个的IT资源,不论是基础设施、应用程序还是信息,即使其他资源不采用网格管理,企业都可以实现高质量、更灵活、更低成本。比如没有必要重写一个应用程序来针对基础设施网格来获益。也可能只发布一个应用程序网格或者一个面向服务架构,不需要修改信息管理的方式和硬件定义的方式。

上述现象是可能的,但是针对所有资源使用网格运算可以获得更大的收益。比如,在您可以根据单独服务的资源需求设置协议或者针对同一个组合程序中但是基础设施处理方式不同的服务(某些时候只能通过应用程序网格和基础设施网格集成才能实现)来设置协议的话,应用程序网格会变得更有价值。另外,通过集成更多的信息到真实的单一数据源来构建信息网格只有在基础设施设计为网格方式才能健壮,所以它可以跨越当一个计算机的界限。

Oracle 10g数据库的网格计算

在网格计算的远景大道上,企业需要真实的解决方案来支持他们迁移到更灵活更高效的IT架构。Oracle 10g数据库软件家族提供了大量网格核心技术的实现来帮助企业开始网格运算。Oracle在企业整体架构上发布网格计算功能,提供健壮的安装基础、集中式管理、容易理解的、功能强大的开发工具以及通用的访问方法。Oracle 10g数据库包括:

¨ Oracle 10g 数据库

¨ Oracle 10g应用服务器

¨ Oracle 10g企业管理器

¨ Oracle 10g协同套件

虽然Oracle 10g的网格特征包含在上述产品列表中,下面的讨论集中在Oracle 10g数据库的网格计算能力

基础设施网格

¨ 服务器虚拟化:Oracle真正应用集群(RAC)使一个数据库在网格中多个集群节点中运行,将多个标准机器中的处理资源池化成为可能。Oracle在跨机器平衡负载的配置方面具备独特的灵活性,因为它是唯一一种不需要根据工作分区或分布数据的数据库技术。Oracle 10g Release 2软件在基于协议的均衡跨RAC实例方面得到了增强。

¨ 存储虚拟化:Oracle 10g数据库的特征Oracle自动存储管理(ASM)在数据库和存储之间提供了一个虚拟层,所以多个磁盘可以当作一个磁盘组处理,并且磁盘可以在数据库运行时动态增加或者移除。现有的数据会根据性能和调优的要求自动在现存磁盘上重新分布。在Oracle 10g Release 2中,ASM支持不同的软件版本的数据库访问同一个存储池。

¨ 网格管理:因为网格计算将多个服务器和磁盘池化,并将他们分配给不同应用目的。所以单独资源的最大程度上的自我管理和其他的管理功能集中化就非常重要。

Oracle 10g企业管理器的网格管理特征提供了管理组成一个逻辑组的多个系统的单一界面。网格控制器在网格中通过适当的软件堆栈来配置节点,并且集中的维护系统组的配置和安全设定。

网格管理的另一方面是如何兼顾高安全性和易维护性的管理用户标识。Oracle 10g标识管理器包含一个兼容LDAP的目录来委托管理,现在在Release 2中是联合标识管理器,所以一个单独的单点登陆功能可以跨安全区域进行安全共享。Oracle 10g标识管理器非常符合网格原则,通过单点登陆服务器实现了针对认证用户的中心应用,在这种情况下,基于委派的分布和联合控制的标识符来优化系统的维护和全部操作。

应用程序网格:

支持标准的Web服务。除了在Oracle 10g应用服务器中支持健壮的Web服务之外,Oracle 10g数据库还可以发布和支持Web服务。DML和DDL操作可以作为Web服务公布,而且数据库中的函数可以使一个Web服务看上去类似一个SQL行资源,能够使用强大的SQL工具来检索基于关系型数据和非关系型数据的WEB服务。

Oracle 10g 企业管理器提高了对面向服务架构的支持,包括监控和管理Web服务和其他管理员定义的服务、跟踪端对端性能和在问题发生时执行底层分析。

信息网格:

¨ 数据提供:信息的基础是数据,当客户无论在哪里需要它都需要提供。比如,用户可能是按地域分布的,这种情况下对数据的快速访问的重要性要高于访问同一资源。所以,数据必须在系统之间共享,可以接近实时也可以批量更新。Oracle的批量数据迁移工具是表空间传和数据泵。

对更细维度的数据共享,Oracle 10g数据库的流技术能够捕捉数据库事务的改变并传递它们,因而可以在更新发生之后保持两个或者更多数据库拷贝的同步。它也可以和传统的数据共享技术统一成为一个单独的技术,例如消息队列、复制、事件、数据仓库装载、通知和发布者/订阅者模式等。

¨ 数据管理集中化:Oracle 10g数据库提供通过SQL和XML查询的通用访问途径,管理所有类型的结构化、半结构化和非结构化的信息和按照它最优的方式展现、维护和查询数据。Oracle依赖传统的关系数据库架构本地实现了OLAP立方体、标准XML结构、地理空间数据和无限大小的文件管理,因而虚拟化了数据展现。综合这些数据类型使得创建在不同信息类型之间的连接和创建传统的关系数据库连接是一样的。

¨ 元数据管理:Oracle数据仓库构建器不仅仅是个传统的创建数据仓库的批量ETL工具。它执行规则来提高数据质量、使用模糊识别来客户数据不一致现象、使用统计分析来推断数据档案。在Oracle 10g Release 2中,使用Oracle的流特征将元数据管理能力从数据拉调度提升到数据事务界别推送的级别。

Oracle系列的企业数据中心产品(如Oracle客户数据中心)可以提供实时的操作信息源之间的同步,所以企业在保留分离的系统和应用程序的时候拥有真实的唯一数据来源,分离的系统或应用可能是打包程序、历史遗留程序或定制程序的集合。除数据清理和调度机制之外,Oracle还可以针对特定类型的信息如客户、财务和产品信息提供格式良好的模式,这些经验可以从以往多年构建企业应用程序的经验中获得。

¨ 元数据接口:Oracle 10g软件家族新增加了Oracle企业搜索产品。Oracle 10g企业搜索在企业内部搜索所有的数据源,不论公开还是秘密信息,比如数据库服务器、文档管理服务器、文件系统、Web站点、数据库和应用程序,然后从所有的相关资源中返回给定的搜索条件的搜索结果。爬虫和索引程序针对每个数据源采用了启发式特征来推断所有企业信息的元数据,这些可以针对任何查询返回最相关的结果。

应用程序架构概述

   使用数据库有两种通用方式:客户/服务器结构和多层结构。随着互联网计算在计算环境中越来越流行,许多数据库管理系统都移植到多层环境。

客户/服务器架构:

多处理器:使用多个处理器为一系列相关工作服务。分布式处理通过允许不同的处理器执行相关工作的不同部分来减少单个处理器的负载,进而在整体上提高系统的性能和处理能力。

一个Oracle数据库系统可以很容易在客户/服务器架构下分布式处理受益。在此架构下,数据库系统被分为两部分:前端或客户,和后端/服务器。

客户端

数据库应用程序的客户端负责将一个操作的请求提交给数据库服务器来执行。它负责请求、处理和展现服务器管理的数据。客户端工作站可以针对它的工作优化。比如,它不需要大的硬盘容量,或者它可以从图形处理能力上获益。

通常,客户端和数据库服务器在不同的计算机上运行,不过在PC上,通常很多客户端和服务器同时运行。

服务器端

服务器端运行Oracle软件,处理并发、共享的数据访问的功能请求。服务器接受和处理从客户端传送的SQL或者PL/SQL语句。管理这个服务器的计算机也可以根据它的任务进行优化,它需要大容量的磁盘和快速的处理器。

多层架构:应用服务器

一个多层架构包含下列组件:

一个客户端或者启动程序来开始一个操作

一个或多个应用服务器来执操作的一部分。一个应用服务器对客户端提供数据访问和执行部分查询处理,因而可以减轻一些数据库服务器的负载。它可以看作在客户端和多重服务器之间的接口,还能提供额外的安全性。

一个末端或者说数据库服务器来保存大部分操作使用的数据

这个架构需要应用服务器完成下列功能:

确认客户端如浏览器的认证

连接一个Oracle数据库服务器

为客户端执行请求的操作

如果启用了代理认证,那么客户端的标识会在整个连接的各个层保持

物理数据库结构概述

下面的部分阐述了Oracle数据库的物理数据库结构,包括数据文件、重做日志文件和控制文件。

数据文件:

每个Oracle数据库都包含一个或多个物理数据文件。数据文件包含所有的数据库数据。逻辑数据库结构中的数据如表、索引都物理存储在分配给这个数据库的数据文件上。

数据文件包含以下特征:

一个数据文件只能和一个数据库相关联

数据文件都有确定的特性集使他们在数据库空间耗尽的时候可以自动增长

一个或多个数据文件组成了一个数据库存储的逻辑单位叫表空间

    当在Oracle的缓存中进行通常的操作和存储时,数据文件上的数据根据需要会被读取,然后数据在内存中共享,当数据库后台数据库写进程(DBWn)被唤醒时会一次将所有的数据写入恰当的数据文件。

控制文件

每个Oracle数据库都有一个控制文件。一个控制文件包含描述数据库物理结构的条目。比如,它包含下列信息:

数据库名称

数据文件和重做日志文件的名字和位置

数据库的创建时间戳

Oracle可以多路复用控制文件,就是说可以同时维护多个控制文件的拷贝,避免控制文件中出现错误的现象。

每次一个Oracle实例启动的时候,它的控制文件会标识出数据库和重做日志文件,重做日志文件必须是打开的,这样Oracle才能继续启动。如果数据库的物理组成被修改(例如一个新的数据文件或重做日志文件被创建),然后Oracle会自动更新控制文件来反映这个变化。控制文件也用于数据库恢复。

重做日志文件:

每个Oracle数据库都有一套两个或多个重做日志文件。这些重做日志文件共同作为数据库的重做日志。一个重做日志由重做条目组成(也叫重做记录)。

重做日志的主要功能是记录所有的数据改变。如果一个错误造成修改数据没有写入数据文件中,那么这个改变可以从重做日志中获得,所以工作永远不会丢失。

为避免重做日志本身出现错误,Oracle允许多路复用日志,所以两个或多个重做日志的拷贝可以保存在不同的磁盘上。

在系统或媒体出问题造成数据库数据没有写入数据文件的时候,重做日志的信息可以用恢复数据库。例如,如果一个意外断电中断了数据库操作,这时内存中数据没有写入数据文件中,数据就丢失了,当重新加电数据库打开丢失的数据可以恢复。通过应用Oracle数据库数据文件的最近的重做日志信息,Oracle可以修复数据库到断电的时刻。

恢复操作中应用重做日志的操作叫做向前滚动。

归档日志文件

你可以启用自动归档重做日志的功能。Oracle在归档模式下会自动归档日志文件。

参数文件

Oracle建议创建一个服务器参数文件(SPFILE)作为维护初始化参数的动态定义手段。一个服务器参数文件允许你在服务器端磁盘文件数上保存和管理你的初始化参数。

警告和跟踪日志文件

每个服务器和后台进程都会能够写入相关联的跟踪文件。当一个进程检测到一个内部错误,它会将错误信息转储到跟踪文件。某些写入跟踪文件的信息是针对数据库管理员,而其他的信息是针对Oracle支持服务。跟踪文件信息还可以用来调整应用程序和实例。

警告文件和警告日志是特殊的跟踪文件。数据库的警告日志按时间记录消息和错误记录。

备份文件

恢复一个文件就是使用一个备份文件代替它。比较有代表性的是在媒体失败或用户错误损坏或删除了原始文件时需要重新恢复文件。

用户管理的备份和恢复需要您在实际恢复备份文件之前实际测试一下备份的恢复。

服务器管理的备份和恢复管理着备份进程比如备份调度以及恢复进程比如在恢复需要的时候应用正确的备份等。

逻辑数据库结构概述

逻辑存储结构包括数据块、区段、段,使用它们Oracle可以精密的控制磁盘空间的使用。

表空间

数据库将逻辑存储的单位称为表空间,它将相关的逻辑结构组织起来。比如表空间通常将所有的应用程序对象放在一起来简化某些管理工作。

每个数据库逻辑上包含一个或多个表空间,每个表空间会明确的创建一个或多个数据文件来物理存储表空间中的所有逻辑结构。表空间的数据文件大小总和就是表空间的总存储量。

每个Oracle数据库都包含一个SYSTEM表空间和SYSAUX表空间。Oracle在数据库创建时自动创建它们。系统默认会创建小文件表空间,也就Oracle表空间的传统类型。SYSTEM和SYSAUX表空间都是小文件表空间。

Oracle还可以创建大文件表空间。这种方式允许Oracle包含由单个大文件组成的表空间,而不是多个小文件组成的表空间。Oracle数据库因而可以利用64位系统的能力来创建和管理超大文件。这样做的结果是Oracle数据库可以扩展到8E(百万兆,相当于1024*1024*1024GB)字节的级别。在Oracle管理文件下,大文件表空间使得数据文件对于用户来说完全透明。换句话说,你是在表空间上执行操作而不是数据文件上执行操作

在线和离线表空间

一个表空间可以是在线(可访问)的,也可以是离线(不可访问)的。通常表空间都是在线的,所以用户可以访问表空间上的信息,有时表空间会被离线这样会使得数据库的一部分不可用但不影响剩余部分的可用性。这使得很多管理工作执行起来更容易。

Oracle数据块

Oracle保存数据的最小粒度是数据块。一个数据块对应物理数据库上的磁盘空间一定数量的字节。标准块的大小由初始化参数DB_BLOCK_SIZE指定。另外,您可以定义其他5个块大小。数据库都以数据块为单位使用和分配空闲的数据库空间。

区段

下一个逻辑数据库空间的粒度是区段。一次分配的空间大小就是一个区段,它由特定数目的连续的数据块组成,用来保存特定类型的信息。

区段之上的逻辑数据库存储单位是段。一个段是针对一个特定的逻辑结构分配的一系列区段。下表描述了不同类型的段。

描述

数据段

每个非聚集表拥有一个数据段。所有的表数据保存在数据段的区段中。

对于分区表,每个分区有一个数据段。

每个聚集都有一个数据段。聚集中的每个表的数据都保存在聚集的数据段中。

索引段

每个索引都有一个索引段保存全部数据。

每个分区索引,每个分区都有一个索引段

临时段

当一个SQL语句需要一个临时数据库区域完成执行时Oracle会创建一个临时段。当语句执行完毕,系统会回收临时段的区段等候将来使用。

回滚段

如果你在自动回滚段管理模式下工作,数据库服务器会管理回滚空间使用的表空间。Oracle建议你使用自动回滚管理。

早期版本的Oracle使用回滚段来保存回滚信息。回滚段的信息可以用来数据库恢复时产生读一致的数据库信息和回滚未提交的事务。

针对回滚段的空间管理是复杂的,Oracle不赞成这种方式。这本书讨论回滚表空间方式的管理回滚;它降低了管理回滚段空间的复杂性,使得你只要控制回滚被覆盖之前要保留多长时间就可以了。

Oracle使用一个SYSTEM回滚段来执行系统事务。只存在一个SYSTEM回滚段,并且在创建数据库时自动创建,并在实例启动的时候总是在线。没有提供任何的手段来管理SYSTEM回滚段。

当段的现存区段满了之后Oracle会动态分配空间。换句话说,当一个段的区段都被使用之后,Oracle会针对这个段分配另外一个区段。因为区段是根据实际情况分配的,所以一个段中的区段在磁盘上可能是不连续的。

模式和通用模式对象概述

一个模式是数据对象的集合。一个模式被同名的数据库用户拥有。模式对象是直接指向数据库数据的逻辑结构。模式对象包括表、视图和索引这些结构(表空间和模式之间没有联系)。同一模式的对象可以在不同的表空间上,同一个表空间可能包含多个模式的对象。

在下面的部分某些最常用的模式对象的定义

表是一个Oracle数据库的基本数据存储单位。数据库表包含所有用户访问的数据。每个表包含列和行。一个表包含雇员数据库,例如可以有一个叫雇员号码的字段,这一列的每一行数据都是雇员的号码。

索引

索引是关联表的可选结构。创建索引可以提高数据检索的性能。如同本手册的索引可以帮助快速定位特定的信息一样,一个Oracle索引提供了一个访问表数据的途径。

当处理一个请求时,Oracle可以使用部分或者所有的可用索引来高效的定位请求行。在应用程序经常访问表的一部分行(例如所有薪水大于1000美元的雇员)或一个特定行是非常有用的。

索引在表的一列或多列上创建。索引创建之后,Oracle会自动维护和使用它。对用户来说,修改表数据(比如增加新行、更新行、删除行)会自动、透明的反映到相关索引。

视图

视图是一个或多个表或其他视图的数据的定制表示。一个视图可以看作是保存好的查询。视图并不包含实际数据。但是他们从他们依赖的表取得数据,如果视图还指向视图,就指向视图依赖表的数据,以此类推

和表类似,视图可以有限制的被查询、更新、插入和删除数据。在视图上执行的所有操作都影响视图的基表。

视图可以通过限制对预先定义的表的行和列的访问来提供额外的安全级别。它们还可以隐藏数据复杂性和保存复杂的查询。

聚集

聚集是一个或多个物理存储在一起的表的组合,这些表共享公用的列并经常一起被访问。因为相关行物理存储在一起的,所以可以提高磁盘访问时间

和索引一样,聚集不会影响应用程序设计。一个表是否是聚集的一部分对用户和应用程序来说是透明的。聚集表存储的数据和非聚集表存储的数据一样通过SQL访问。

同义词

一个同义词是任何表、视图、实体化视图、序列、存储过程、函数、类型、Java类模式对象、用户定义对象类型或者另外一个同义词的别名。因为一个同义词仅是一个别名,它并不像数据字典中定义的那样需要存储空间。

Oracle数据字典概述

每个Oracle数据库都有一个数据字典。一个Oracle数据字典是一系列用做数据库的只读参考的表和视图。例如,一个数据字典保存了数据库的逻辑和物理结构的信息。一个数据字典还保存下列信息:

Oracle数据库的有效用户

关于数据库的表的完整性约束的信息

一个模式对象分配的空间大小和使用了多少空间

一个数据字典在数据库创建的同时创建。为随时准确反映数据库的状态,Oracle针对特定的动作比如数据库结构被修改会自动更新数据字典。数据库依赖数据字典来记录、核实和管理后续工作。例如,在数据库操作过程中,Oracle读取数据字典来核实模式对象是否存在以及用户是否有足够的访问权限。

Oracle实例概述

一个Oracle数据库服务器由一个Oracle数据库和一个Oracle实例组成。每次数据库启动时,会分配一块叫系统全局区(SGA)的内存和启动一些Oracle后台进程。这些内存缓存和后台进程合起来就叫做一个Oracle实例。

真正应用集群:多实例系统

某些硬件架构(例如共享磁盘系统)使多台计算机可以共享数据、软件或外围设备。真正应用集群(RAC)利用类似的结构来共享一个物理数据库的多个实例。对多数应用程序来说,RAC允许在多台计算机上的用户以更高的性能访问单个数据库。

一个Oracle数据库服务器使用内存结构和进程来管理和访问数据库。所有的内存结构都在构建数据库系统的计算机的主存里。进程是在这些计算机里的主存里的一些任务。

实例内存结构

Oracle创建和使用内存结构来完成一些任务。例如,内存存储了正在执行的程序代码和用户共享的数据。Oracle基本的两个内存结构是系统全局区(SGA)和程序全局区(PGA)。下面的部分会详细解释他们。

系统全局区

系统全局区(SGA)是一个共享内存区域,保存了一个Oracle实例的数据和控制信息。实例启动的时候会分配SGA,实例管理的时候会释放SGA。每个实例都有它自己的SGA.

连接Oracle数据库的用户共享SGA中的数据。为获得最佳的性能,SGA应该尽可能的大,这样在内存(当然是真正的内存)中保存尽可能多的数据,最小化磁盘I/O。

SGA存储的信息被划分为几类内存结构,包括数据库缓存(Database buffers)、重做日志缓冲区(redo log buffer)和共享池(shared pool)。

SGA的数据库缓存(Database Buffer Cache of the SGA)

数据库缓存保存了最近使用的数据块。实例中的这一系列数据库缓存是database buffer cache。Buffer cache包括修改的和没有修改的数据。因为最近(经常是最经常)使用数据保存在内存中可以最小化磁盘I/O,进而提高性能。

SGA的重做日志缓冲区(Redo Log Buffer)

重做日志缓冲区保存重做条目(数据库的修改日志)。重做日志缓冲区中的重做条目会写入一个在线重做日志。如果数据库恢复必要时可以使用这个文件。重做日志的大小是固定的。

SGA的共享池(Shared Pool)

共享池包含共享内存结构,比如共享SQL区。一个共享SQL区是用来处理提交给数据库的非重复的SQL语句。一个共享SQL区包含对应语句的解析树和执行计划的信息。执行同一语句的多个应用程序可以使用同一个共享内存区,这样可以节省共享内存给其他用户使用。

语句句柄或游标

游标是一个私有SQL区域的名字或者句柄,这个区域保存语句执行的解析陈述和其他的信息。(Oracle访问接口(OCI)叫这些为语句句柄)虽然大部分Oracle用户依赖Oracle实现的自动游标处理,但可编程的游标接口还是可以让应用程序设计人员对游标进行更多的控制。

例如在预编译的应用开发中,一个游标是对于程序员可见的命名资源,所以可以用来执行特定的内嵌到应用程序内部的SQL语句。

程序全局区(PGA)

程序全局区是一个服务器进程的一块包含数据和控制信息的内存缓存。当一个服务器进程启动的时候Oracle会创建一个PGA。PGA中的信息依赖于Oracle的配置。

Oracle后台进程

一个Oracle数据库使用内存结构和进程来管理和访问数据库。计算机主存中的所有内存结构组成了数据库系统。进程是在计算机内存中运行的任务。

下面讨论的体系特点使Oracle数据库可以支持:

多用户可以同时访问同一个数据库

多用户、多应用程序并发数据库系统需要的高性能

    Oracle为每个实例创建一系列后台进程。Oracle后台进程增强了其他Oracle每个用户进程对应的多个程序的处理能力。

    存在很多后台进程,每个Oracle实例可以使用多个后台进程。

进程体系结构

一个进程是一个线程控制器”或者操作系统内部运行一系列步骤的一个机制。某些操作系统使用进程或任务。一个进程通常拥有私有的内存区域并在其中运行。

一个Oracle数据库服务器有两个类型的进程:用户进程和Oracle进程。

用户进程(客户端进程)

用户进程可以由某些应用程序(比如OCI或OCCI程序)的软件代码或者一个Oracle工具(比如企业管理器)创建和维护。用户进程还通过程序接口和服务进程连接,下面的部分会说到这部分内容。

Oracle进程

Oracle进程是响应其他进程请求为其他进程执行功能的进程。

Oracle创建服务器进程来处理连接的进程的请求。一个服务器进程和用户进程通信并且和Oracle交互来执行连接的用户进程的请求。例如,一个用户查询的数据不在SGA的数据库缓存(database buffers)中,然后相关的数据库进程从数据文件上的适当的数据块读入SGA中。

Oracle可以配置针对每个服务器进程的用户进程数量。在专用服务器中,一个服务器进程针对单个用户进程来处理请求。在共享服务器中,多个用户进程共享少数服务器进程,这样可以减少服务器进程的数量和增加可用系统资源的大小。

在某些系统中,用户进程和服务器进程是分开的,在另外的系统中它们合并为一个单独的进程。如果系统使用专用服务器或者如果用户和服务器进程在不同的计算机上运行,这时候用户进程和服务器进程必须是分开的。客户端/服务器系统分开了用户和服务器进程并在不同的计算机上运行它们。

数据库访问概述

这部分描述了Oracle网络服务,还包括启动数据库。

网络连接

Oracle网络服务是Oracle关于网络通讯协议的交互机制,能够减轻分布式处理和分布式数据库的难度。

通讯协议定义了数据在网络上传播和接受方法。Oracle网络服务支持所有主要的网络协议通讯,包括TCP/IP,HTTP,FTP和WebDAV。

通过Oracle网络服务,应用程序开发人员不需要关心数据库应用程序的网络通讯问题。如果使用一个新的协议,然后数据库管理员做一些小的调整,应用程序不需要调整就可以继续工作了。

Oracle Net是Oracle网络服务的一个组件,在客户端应用程序和Oracle数据库服务器之间创建网络会话。一旦一个网络会话被创建,Oracle Net作为客户端程序和数据库服务器之间的中转。它在客户端程序和数据库服务器之间创建和维护连接并在它们之间交换消息。Oracle Net存在于网络中的每台计算机上,所以可以完成上述工作。

启动数据库

启动数据库并在系统范围内可用的三个步骤:

1. 启动实例

2. mount数据库

3. 打开数据库

一个数据库管理员可以使用SQL PLUS的STARTUP命令或者企业管理器来执行这些步骤。当Oracle启动一个实例,它读取服务器参数文件(SPFILE)或者初始化参数文件来确定初始化参数值。然后它分配SGA和创建后台进程。

Oracle如何工作

下面的例子描述了Oracle执行的最基本的操作。它涉及的Oracle配置是用户进程和相关服务器进程在不同的计算机上(通过网络连接)。

1. 一个实例已经在运行Oracle的计算机上启动(通常叫做主机或数据库服务器)。

2. 运行一个应用程序的计算机(本地计算机或者客户工作站)在一个用户进程中运行应用程序并针对用户进程创建专用服务器进程。

3. 服务器运行适当的Oracle网络服务器驱动程序。服务器检测到应用程序的连接请求并针对用户进程创建专用服务器进程。

4. 用户运行一个SQL命令并提交事务。例如,用户修改表中某行的名字。

5. 服务器进程接收到命令,检查共享池中包含类似SQL命令的任何共享SQL区域。如果找到一个共享内存SQL区域,然后服务器进程检查用户是否具备访问请求数据的权限,是否已经存在SQL共享区域用来执行命令。如果没有找到,会为了这个命令分配新的共享内存区域,然后就可以解析和执行这个SQL了。

6. 服务器进程从实际的数据文件(表)或SGA中已经存在的数据中得到任何必要的数据。

7. 服务器进程修改系统全局区的数据。DBWn进程在效率最高的时候永久的修改磁盘上的块。事务提交之后,LGWR进程立刻在重做日志文件中记录这个事务。

8. 如果事务成功执行,服务器进程通过网络给客户端应用程序发送一个消息。如果不成功,会传输一个错误信息。

9. 在整个过程中,其他的后台进程也在运行,观察需要干预的情况。另外,数据库服务器管理其他用户的事务阻止事务间请求同一数据的竞争。

Oracle组件概述

Oracle提供了几个数据传输、数据维护和数据库管理的工具,包括数据泵导入和导出、SQL *Loader和LogMiner。

Oracle数据库特征

这部分包括下列主题

¨ 可测量性和性能特征概述

¨ 易管理特征概述

¨ 数据库备份和恢复特征概述

¨ 高可用性概述

¨ 商业只能特性概述

¨ 目录管理特性概述

¨ 安全特性概述

¨ 数据完整性和触发器概述

¨ 信息集成特征概述

可测量性和性能特性概述

Oracle包括几个软件机制来执行下面的信息管理系统必须的重要功能:

¨ 多用户系统数据并发最大化

¨ 数据必须以一致的方式读写。用户查看或修改的数据在用户操作完这个数据之前是不能被其他用户改变的。

¨ 多用户的数据库系统需要最大生产率的高性能

这里包含下列内容

¨ 并发

¨ 读一致性

¨ 锁机制

¨ 数据库停顿

¨ 真正应用集群

¨ 便携性

并发

多用户数据库系统的一个主要问题是如何控制并发性,就是多个用户同时访问同一数据。没有足够的并发控制,数据可能不能恰当的更新或修改,进而破坏数据完整性。

一个管理数据并发的办法是使用户依次等待。数据库管理系统的目的是减少这些这些等待,所以等待对于每个用户来说都是不存在或者可以忽略的。所有的数据操纵语言命令尽可能的智能执行,当前进程之间的破坏性交互是完全禁止的。破坏性的交互指的是不正确的数据更新或者数据结构的错误更改。数据完整性和性能是需要兼顾的。

Oracle通过使用几个不同类型的锁和多版本一致模型来解决上述问题。这些特性依赖于事务概念。应用程序设计人员的责任是确认事务完全采用了这些并发和一致性特性。

读一致性

Oracle支持的度一致性支持下列功能:

¨ 确保语句看到的一系列数据在一个时间点上保持一致性,并在语句执行期间保持不变(语句级读一致性)

¨ 确保数据的读取用户不需要等待同一数据的写入和读取

¨ 确保数据写入不需要等待同一数据的读

¨ 确保只有在并发环境中更新同一行时才需要写入等待

理解Oracle读一致性的实现的最简单方法就是想象每个用户操作数据库的私有拷贝,因而就是多版本模型。

读一致性、撤销记录、和事务

为管理多版本一致性模型,Oracle必须在一个表同时被读写的时候创建一系列的读一致性数据。当发生一个更新时,更新改变的原始记录保存在数据库的撤销记录中。在更新还处在未提交的情况下,之后的任何查询这个数据的用户看到的是原始记录。Oracle在SGA中保存当前信息,在撤销记录中保存原始信息,这就构成了一个表数据针对查询的一致性场景。

只有当一个事务提交,事务的修改才会永久化。在用户进程提交之后的语句只能看到已经提交的事务所有的修改。

事务是Oracle提供一致性策略的核心。提交或未提交SQL语句的单元如下:

¨ 在读者的角度标识读一致性场景的起点。

¨ 控制其他数据库的读写进程何时能看到本事务修改的数据

只读事务

默认Oracle确保语句级的度一致性。单个查询返回的一系列数据都是基于某一个时间点的一致性。尽管如此,在某些情况下,你可以要求事务级的读一致性。在这个功能下,单个事务运行的多个查询都是基于同一个时间点的一致性,所以事务中的查询看不到在此期间提交的事务做的修改。如果你想针对多个表运行大量查询并且不做任何更新,你可以采用一个只读事务。

锁机制

Oracle还使用锁来控制数据并发访问。当更新信息时,数据服务器保持信息的锁直到更新提交为止。在那之前,没有其他用户可以对锁定信息进行修改。这个确保了系统的数据完整性。

Oracle是唯一提供行级别非升级的锁。不像其他数据服务器,可升级锁覆盖一组行或者整个表,Oracle总是在更新时只锁定行信息。因为Oracle在实际行本身保存了锁的信息,Oraclek可以锁定无限的行但是用户却可以并发工作,而不会受到无谓的耽搁。

自动锁

Oracle的锁是自动执行的,不需要用户手工启动。SQL语句根据事实需要而按需求启动隐含的锁。Oracle锁管理器自动在行级别锁定表数据。通过在行级别锁定表数据,可以最小化对同一数据的竞争。

Oracle锁管理器根据产生锁的操作类型维护几个不同类型的行锁。两个基本类型的锁是互斥锁和共享锁。只有一个互斥锁可以放在一个资源上(比如一行或一个表);虽然如此,某些共享也可以放置在单个资源上。共享锁和互斥锁都允许对锁定资源的查询操作,但是拒绝其他类型的操作(比如更新和删除)。

手动锁

在某些环境下,一个用户可能覆盖默认锁。Oracle允许手动覆盖行级(首先查询一行并在后续的命令中修改它)和表级自动锁特性。

静默数据库

数据库管理员有时候需要隔离非数据库管理员的操作,就是说隔离非数据库管理员的事务、查询和PL/SQL命令。隔离的一个办法是关闭数据库,然后以限制模式打开数据库。你也可以在不打扰用户的情况下进入静默数据库状态。在静默状态下,数据库管理员可以安全的执行非DBA用户不能同时执行操作的特定操作。

真正应用集群

真正应用集群(RAC)由运行在多个集群计算机的多个Oracle实例组成,这些实例通过一个所谓内部连接的方式彼此通讯。RAC使用集群软件来访问一个构建在共享磁盘上的共享数据库。RAC通过合并这些多个内部互联的计算机的处理能力来提供系统冗余、近乎线性的可量测性和高可用性。RAC对OLTP和数据仓库环境都提供充分的优势,所有的系统和应用程序都可以高效的使用集群环境。

你可以升级RAC环境的应用程序来适应增长中的数据处理需求,而不需要修改应用程序节点。当你增加类似节点或存储的资源,RAC这些资源上扩展处理能力超越单个组件的限制。

便携性

Oracle提供跨越所有主要平台的独一无二的便携性,确保你的应用可以改变平台而无需修改应用程序。这是因为Oracle代码基础就是跨平台的,所以你可以拥有跨越所有平台的特性,对于所有应用程序来说是完全透明的。因为这个便携性,你可以很容易的根据需求的改变升级到一个更强大的服务器上。

易管理性概述

管理一个Oracle数据库系统的人被称为数据库管理员(DBA),负责创建Oracle数据库,确保他们平稳运转,以及监控它们的使用。除了Oracle提供的一些警告和建议信息,Oracle还提供下列特性:

自我管理的数据库

Oracle数据库提供高水平的自我管理功能,将DBA日常工作自动化减少了空间、内存和资源管理的复杂性。Oracle数据库自管理特性包括下列内容:自动回滚段管理、动态内存管理、Oracle管理文件、平均恢复时间、空闲空间管理、多个块大小以及恢复管理器(RMAN)。

Oracle企业管理器

企业管理器是一个系统管理工具,提供了集中管理你的多样化环境的集成解决方案。企业管理器包含一个图形控制台、Oracle管理服务器、Oracle智能代理、通用服务和管理工具,对管理Oracle产品提供了综合的系统管理平台。

从企业管理控制台这个客户端接口,你可以执行下列任务:

管理整个Oracle环境,包括数据库、应用服务器、应用程序和服务。

诊断、更改和调整多个数据库

多个系统不同时间间隔的任务调度

通过网络监控数据库情况

管理多个网络节点和多个位置运行的服务

和其他管理员共享任务

相关目标一起分组从而减少管理任务的难度

启动Oracle集成和第三方工具

定制企业管理器管理员的显示

SQL *Plus

SQL *Plus是一个录入和运行特定数据库命令的工具。它可以用来运行SQL语句、PL/SQL块,以及许多额外的任务。

自动存储管理

自动存储管理简化和自动化了数据文件、控制文件和日志文件的分布。数据库文件会跨越可用磁盘自动分布,数据库存储在存储配置改变时会自动均衡负载。它通过数据库文件镜像来提供冗余,通过跨越当前可用磁盘的方式来分布数据库文件从而提高性能。当存储配置修改时,数据库存储的重新均衡功能会自动运行。

调度

为帮助简化任务管理,Oracle针对复杂的调度需求提供了大量的功能。Oracle在DBMS_SCHEDULER包内提供一组函数和过程。这些功能整体叫调度程序,它们可以被任何PL/SQL程序调用。

调度程序允许数据库管理员和应用开发人员控制何时何地不同的任务在数据库环境中运行。比如,数据库管理员可以调度和监控数据库维护工作,比如备份或者数据仓库每天晚上数据的抽取和装载。

数据库资源管理

传统上来说,操作系统负责控制系统内包括Oracle数据库在内的不同应用程序的资源管理。数据库资源管理器通过控制数据库内正在运行的调度程序来控制不同会话之间的资源分布。通过控制哪个会话可以运行以及可以运行多长时间,数据库资源管理器可以确保资源分布可以满足经营目标和计划指令。

数据库的备份和恢复特性概述

在任何数据库系统中,系统或硬件失败的可能性始终存在。如果一个失败发生并影响到了数据库,那么数据库必须可以恢复。失败之后的目标是确保所有已经提交的事务结果在恢复的数据库中同样存在,还有就是可以尽可能快的返回日常操作,最大限度的减少失败对用户的影响。

Oracle提供了下列不同的集中机制:

针对不同类型失败的数据库恢复

适合任何情形的恢复操作

运行时备份和恢复操作,不影响系统的工作进行

失败类型

某些条件下Oracle数据库的操作会中断。下表描述了几个最常见的失败类型:

失败

描述

用户错误

需要一个数据库能够恢复到错误发生前的一个时间点。例如,一个用户可能无意中删除了表。为确保从用户错误中恢复并且适应其他特定的恢复需求,Oracle提供了精确的时间点恢复。例如,如果用户无意中删除了一个表,数据库可以将这个实例恢复到表删除的时候。

语句失败

Oracle程序中正在处理的语句中包含一个逻辑失败时。当发生语句级失败时,这个语句所做的任何操作都自动被Oracle撤销,用户重新获得控制权限。

进程失败

当一个访问Oracle的用户进程发生失败时,比如一个异常连接中断和进程终止。后台进程(进程监控进程,PMON)自动检测到失败的用户进程,回滚用户进程没有提交的事务,并释放这个进程正在使用的任何资源。

实例失败

在实例无法继续工作时发生。实例失败可能来源于硬件问题,比如断电或者软件问题比如操作系统失败。当发生实例失败时,系统全局区中缓存的数据没有写入到数据文件中。

实例失败之后,Oracle会自动执行实例恢复。如果RAC环境中的一个实例失败,那么其他实例会为这个实例失败恢复重做信息。在一个单实例数据库中或者一个RAC数据库中所有实例全部失败时,Oracle会在你启动数据库时自动应用所有重做信息。

媒体(磁盘)失败

在数据库的操作需要读写硬盘上的文件发生的错误。一个通常的例子是磁盘磁头损坏,这会导致磁盘驱动器上的所有文件丢失。

这种类型的磁盘失败会影响不同的文件,包括数据文件、重做日志文件和控制文件。而且因为数据库实例不能持续工作了,系统全局区中的数据库缓存的数据不能永久的写入数据文件。

一个磁盘失败需要你重建丢失的文件然后进行媒体恢复。和实例恢复不同,媒体恢复必须用户干预。媒体恢复会更新重建数据文件所以它们中的信息可以恢复早磁盘失败前的最近时间,内存中的已经提交的数据由于失败会丢失。

Oracle提供了针对所有可能类型的硬件错误的完全媒体恢复方案,甚至包括磁盘错误。这些提供的选项可以使数据库完全恢复或者之恢复到特定时间点。

如果磁盘失败时某些数据文件损坏,而数据库大部分还正常运行,相应的表空间可以单独恢复而数据库可以保持对外服务。因而数据库的损害部分可以恢复,数据库没有损害的部分对正常的客户还是可用的。

恢复使用的结构

Oracle针对实例或磁盘失败提供的完全恢复使用了几个结构:重做日志、回滚记录、控制文件和数据库备份。

重做日志

数据库内存中的修改数据在没有写入数据文件之前由一系列的文件保护,它们就是重做日志文件。重做日志由在线重做日志和归档重做日志组成。

在线重做日志是一系列两个或多个记录数据库生成的所有修改记录的在线重做日志文件,包括已提交和未提交的修改。重做条目先在系统全局区的重做日志缓冲区中临时保存,然后后台进程(LGWR)将重做条目依次写入一个在线重做日志文件中。LGWR持续的写入重做条目,而且在每次用户进程提交一个事务时写入每个提交的记录。

在线重做日志写满时可以在重用之前采用手动或者自动归档的方式创建归档重做日志。下面两种模式可以启动或者关闭归档功能:

ARCHIVELOG:写满的在线重做日志文件在循环重用之前被归档

NOARCHIVELOG:写满的在线重做日志文件不归档

在ARCHIVELOG模式下,数据库可以从实例和磁盘失败中完全恢复。数据库还可以在打开对用户可用的情况下回退。即使如此,维护归档日志还是需要额外的管理工作。

如果数据库在NOARCHIVELOG模式下,数据库只能从实例失败中完全恢复,不能从磁盘失败中恢复。而且数据库只能在完全关闭的情况下才能备份。因为没有归档重做日志产生,数据库管理员不需要额外的工作。

回滚记录

回滚记录保存在回滚表空间上。Oracle使用回滚数据有几个不同的目的,包括访问未提交事务改变的块的前映像。在Oracle恢复过程中,Oracle先应用重做日志中的所有修改记录,然后使用回滚信息回滚所有没有提交的事务。

控制文件

控制文件包含数据库的文件结构信息和LGWR写入的当前日志序列码。在通常的恢复过程中,控制文件中的信息指示恢复操作的自动过程。

数据库备份

因为磁盘失败可能会物理损害一个或多个文件,媒体恢复需要从数据库的最近的操作系统备份中重建损坏的文件。你可以用恢复管理器(RMAN)来备份数据库文件或者操作系统工具备份。RMAN是一个管理备份和恢复操作的Oracle组件,可以用来创建数据库文件(数据文件、控制文件、归档重做日志文件等)的备份,还可以从备份中重建和恢复数据库。

高可用特性概述

为提供近乎不间断服务而配置的计算机环境就是常说的高可用系统。这些系统大多拥有冗余的硬件和软件,所以在失败时系统也可以使用。设计良好的高可用系统可以避免单点失败问题。

当事故发生时,失败转移进程会将失败组件上的执行的处理转移到备份组件上。这个进程会重新管理系统范围的资源,恢复不完全或失败的事务,在最短的时间内(微妙级别)重建系统达到正常状态。系统可用性越高,对客户来说失败转移越透明。

Oracle提供了一些工具和特性在非计划停机和计划停机的情况下都能提供高可用特性。这些包括快速启动故障恢复、真正应用集群(RAC)、恢复管理器(RMAN)、备份和恢复解决方案、Oracle闪回、分区、Oracle Data Guard、LogMiner、重做日志文件的多路复用。这些可以任意组合使用来满足特定高可用的需要。

商业智能特性的概述

下面的内容描述了几个商业智能特性。

数据仓库

一个数据仓库是以查询分析为目的的关系数据库,不同于平常的事务处理型数据库。它通常包含来源于事务数据的历史数据,并且还可以包括来自于其他数据源的数据。它将分析负载和事务负载分离,使一个机构可以合并多个数据源的数据。

除具备关系数据库的特性外,一个数据仓库环境还包括抽取、传输、转换和装载解决方案(ETL)、在线分析处理引擎(OLAP)、客户端分析工具和其他的负责收集数据并发布给商业用户的应用程序。

抽取、转换和装载(ETL)

你必须有规则的装载你的数据仓库,因而可以方便的用于商业分析的目的。为这个目的,来源于一个或多个操作型系统的数据必须被抽取和拷贝到数据仓库里。从源系统中抽取数据和导入数据仓库的过程通常叫做ETL,这代表抽取、转换和装载。

实体化视图

一个实体化视图提供了一种保存查询结果到另外的模式对象的表数据的访问途径。普通视图不包含任何数据和不占有任何存储空间,一个实体化视图包含基于一个或多个基表或视图的查询的行结果。一个实体化视图可以保存在基表的同一个数据库中,也可以保存在不同的数据库中。

一个实体化视图保存在基表相同的数据库中可以通过查询重写提高查询效率。查询重写是Oracle自动将访问原始表的SQL查询改写为使用实体化视图的技术,这样Oracle或应用程序的最终用户可以明显的提高查询反应时间。查询重写在数据仓库环境中尤其有用。

数据仓库的位图索引

典型的数据仓库环境拥有大量的数据和特定的查询,而不是底层的并发数据操纵语言(DML)事务。对于这样的应用程序,位图索引提供如下功能:

减少很大一部分特定查询的反应时间

比其他索引技术减少存储需求

较少CPU和较低内存的硬件条件下获得令人惊异的性能

在并发执行数据管理语言(DML)和装载时高效的维护

使用传统的B树索引来大表全面索引的话会造成高昂的空间占用,因为索引会是表数据的几倍大。典型的位图索引只是表索引数据的一小部分而已。

表压缩

为减少磁盘和内存(特别是缓存 Buffer Cache)的使用,你可以在数据库中按照压缩格式保存表和分区表。这样只读操作的性能会更好。表压缩还能加快查询速度。还有就是CPU负载也会比较低。

并发执行

当Oracle并行方式运行SQL语句时,单个SQL语句同时由多个处理器执行。通过将必须的工作分成几部分在多个处理器之间运行命令的方式,比单个处理器运行SQL的速度快得多。这叫做并发执行或者并发处理。

并发执行可以显著的减少大型数据库中数据密集型操作的反应时间,因为在单个Oracle系统中处理过程分成几部分而由多个CPU同时处理。

分析型SQL

Oracle在数据库中提供了很多执行分析型操作的很多SQL语句。包括分级、移动平均数、累积和、比率报表和周期性比较。

OLAP能力

应用程序开发人员可以使用SQL的在线分析处理(OLAP)功能来生成标准的特定的报表。针对额外的分析功能,Oracle提供了多维度计算、预测、模型和预测脚本。这些帮助开发人员构建复杂的分析和计划应用程序,比如销售和市场分析、企业预算和财务分析、需求计划系统。数据可以保存关系表或者多维对象之中。

Oracle在线分析处理对关系型平台提供了以前只存在于多维数据库中的计算和分析能力。另外它还提供了JAVA OLAP API,适合进行在Internet上提供分析能力的应用程序开发。和其他OLAP和RDBMS混合的技术不同,Oracle OLAP不是将数据从关系型数据方式转换到多维数据方式的多维数据库。相反,它是一个具备OLAP能力的关系型数据库。这样Oracle对多维数据库提供了Oracle数据库的可测量性、易访问性、安全性、易管理性和高可用性。为在Internet上服务的分析应用设计的Java OLAP API提供了产品级的数据访问。

数据挖掘

当Oracle数据挖掘中,数据从来没有离开数据库,包括数据、数据展现、模型构建、模型计分结果都保存在数据库中。这使得Oracle为应用开发人员将数据库应用程序和数据挖掘集成起来提供了坚实的基础。这方面有些典型的例子,如数据挖掘在呼叫中心、自动取款机(ATM)、企业风险管理(ERM)和商业计划等应用程序中使用。如模型构建、测试和计分这些数据挖掘功能通过一个Java API实现。

分区

分区支持将非常大的表和索引分为更小和更容易管理的叫做分区的多个部分。SQL查询和DML命令不需要调整就可以访问分区表。虽然如此,定义分区之后,DDL命令可以直接访问和操作单独的分区,当然也可以访问整个表和索引。这样分区可以简化大数据库对象的管理。另外,分区对于应用程序是完全透明的。

分区对很多不同的类型应用都非常有用,尤其对管理大量数据的应用程序。OLTP系统可以受益于管理方面和可用性方面的提升,而数据仓库系统可以在性能和易管理性上受益。

内容管理特性概述

Oracle包含很多数据类型来处理所有的Internet的多种条目,比如关系型数据、对象关系混合型数据、XML、文本、音频、视频、图像和维度数据。这些数据类型都是数据库的内部类型。都可以通过SQL查询,单个SQL语句可以包括任何数据类型。

Oracle中的XML数据

可扩展标记语言(XML)是标识和描述Web数据的标准方式。Oracle XML数据库将XML作为数据库的内部类型。Oracle XML数据库提供了从关系表创建XML文档的简单办法。任何SQL查询的结果都可以自动转化为XML文档。Oracle还包括针对Java和C++的一系列的工具,可以简化创建XML文档的任务。

Oracle包含五个XML开发包,或者叫XDK,它们分别是针对Java,C,C++,PL/SQL,Java Beans。每个都有标准的组件、工具和功能。

大对象(LOB)

大对象数据类型包含BLOB、CLOB、NCLOB和BFILE,可以用来保存和操作大容量的非结构化二进制或字符格式数据(如文本、图像、视频、声音文件)。他们提供了对数据高效、随机和分段访问功能。

Oracle文本

Oracle文本可以对任何文本和文本内容进行索引从而快速增加、并发访问信息。Oracle Text允许在SQL语句中混合使用数据库搜索来进行文本搜索。能够查找基于文档文本内容、元数据和属性的能力使得Oracle可以对所有的数据管理采取单点集成。

Oracle超级搜索

Oracle超级搜索可以让你索引和搜索网站、数据库表、文件、邮件列表、Oracle应用服务器门户和用户定义的数据源。因此,你可以使用Oracle超级搜索构建不同类型的搜索应用程序。

Oracle interMedia

Oracle interMedia 提供了一系列的服务来开发、部署集成了包含图片、音频、视频的传统、Web和无线应用程序。多媒体条目可以在Oracle直接存储和管理,或者Oracle可以将元数据和外部引用一起索引,这样就可以高效的访问保存在数据库之外的媒体条目了。

Oracle空间

Oracle包括内置的空间特性让你可以使用数据库的强大能力来保存、索引和管理位置条目(资产、建筑、公路、地块、销售区域等等)以及查询位置联系。Oracle空间特性还增加更高级的空间特性,比如线性引用支持和坐标系系统。

安全特性概述

Oracle包括安全特性来控制数据库如何访问和使用。比如,如下安全机制:

阻止非认证数据库访问

阻止非认证模式对象访问

用户操作审核

数据库用户和同名的模式相关联。默认情况下,每个数据库用户在对应的模式中创建和拥有所有对象的访问权限。

数据库安全可以分为两类:系统安全和数据安全。

系统安全包含控制系统级别的数据库访问和使用的机制。例如,系统权限包括:

有效用户的名字/密码组合

用户模式对象的可用磁盘空间大小

一个用户的资源限制

系统安全机制检查是否一个用户有权访问数据库、是否数据库审计在运行、一个用户可以执行哪些系统操作。

数据安全性包括在模式对象级别上对数据库的访问和使用机制。例如,数据安全包括

哪个用户有权限访问特定的模式对象和模式对象上允许每个用户执行的特定类型的操作。

每个模式对象动作都要审核

加密数据来阻止没有认证的用户使用其他方式访问到数据

安全机制

Oracle数据库提供了自动权限控制,意思是基于权限来限制信息的访问。用户允许访问一个模式对象必须给它分配适当的权限。适当的特权用户可以任意的给其他用户分配权限。

Oracle使用下列几个工具来管理数据库安全:

身份验证来确认使用你的网络、数据库和应用程序的实体标识

授权进程来限制访问和动作,限制连接用户的标识和角色

对表或行的对象的访问限制

安全策略

数据库审计

数据完整性和触发器

数据必须服从特定的商业规则,比如数据库管理员或者应用开发人员的要求。例如,假定一个商业规则要求inventory表的sale_discount列的行不能包含大于9的数字类型的值。如果一个Insert和Update语句试图违反这个完整性规则,然后Oracle必须回滚无效语句,给应用程序返回一个错误。Oracle提供完整性约束和数据库触发器来管理数据完整性规则。

完整性约束

一个完整性约束是表中一列的定义商业规则的声明。一个完整性约束是关于表数据的声明,并且总是正确的,符合下列规则:

如果要针对一个表创建一个完整性约束,但表中已有的数据不符合约束,这个约束无法建立。

一个约束建立之后,任何DML语句的结果违反了完整性约束,然后语句被回滚,返回一个错误。

完整性约束是定义在一个表上,而且作为表的定义的一部分保存在数据字典中,所以所有的数据库应用程序都遵循相同的规则。当一个规则修改之后,只需要在数据库级别上修改一次,不需要对每个应用程序修改多次。

Oracle支持下列的完整性约束:

NOT NULL:表列中不允许空值(空条目)

UNIQUE KEY:在一列或者多列中不允许重复

PRIMARY KEY:在一列或多列中不允许重复或者空值

FOREIGN KEY:要求一列或者多列的每一个值等于相关表的UNIQUE或者PRIMARY KEY的值。FOREIGN KEY完整性约束还定义了引用完整性操作,就是说如果引用数据修改了,Oracle要对依赖数据做同样的事情。

CHECK:不允许不符合逻辑表达式的约束

Key

Key在多种类型的完整性约束中使用。一个Key是包含在特定类型完整性约束定义的一列或多个列。Key描述了关系数据库中不同的表和列之间的关系。Key的个体值叫做key values。

不同类型的key包含:

Primary key:在表的PRIMARY KEY约束定义中包含的列或者多个列。一个Primary key的值唯一的标识了表中的行。每个表中只能定义一个主键。

Unique key:UNIQUE约束定义中包含的一列或者多列

Foreign key:引用完整性约束定义中包含的一列或者多列

Referenced key:被同表或异表外键引用的unique key或者primary key。

触发器

触发器是由PL/SQL,Java或者C写成的过程,只要表或视图改变、某些用户操作或者某些数据库系统操作这些动作发生时,触发器就会启动。

触发器扩展了Oracle提供高度定制的数据库管理系统的能力。例如,一个触发器可以在商业繁忙的时候拒绝对表的DML操作。

信息集成特性概述

一个分布式系统就是多个系统彼此无缝连接的一个网络。分布式环境中的每个系统都叫做一个节点。用户直接连接的系统叫本地系统。用户连接的另外的任何系统都叫做远程系统。一个分布式环境允许应用程序从本地和远程系统访问和交换数据。所有的数据都可以同时访问和修改。

分布式SQL

一个同类型的分布式数据库系统是位于一个或多个计算机上的两个或者多个Oracle数据库网络。分布式SQL使得应用程序和用户可以同时访问和修改多个数据库,就如同在访问和修改单个数据库那么容易。

一个Oracle分布式数据库系统对用户来说是完全透明的,对用户来说它看起来就如同一个单独的Oracle数据库。机构可以利用这个分布式SQL的特点来让他们的Oracle数据库看起来如同一个数据库,这样可以降低分布式系统的复杂性。

用户可以使用Oracle的数据库链接来访问远程数据库的对象。一个本地用户不需要成为远程数据库的用户就可以访问针对远程数据库的一个数据库链。

位置透明

位置透明指的是数据的物理位置对于用户和应用来说是透明的。例如,一个连接了多个数据库的表数据的视图提供了位置透明性,因为视图的用户不需要知道数据的真正来源。

SQL和事务透明性

Oracle提供了查询、更新和事务透明。例如,像SELECT、INSERT、UPDATE和DELETE这些标准的SQL命令工作起来就好像它们在一个非分布式的数据库环境中。另外应用程序也使用标准的SQL语句COMMIT、SAVEPOINT和ROLLBACK来控制事务。Oracle通过两步提交机制来确保分布式环境中的数据完整性。

分布式查询优化

分布式查询优化降低了在分布式环境中一个事务获得远程表引用的数据时站点之间的数据传输量。

Oracle

Oracle流可以在数据库内或者数据库间使用数据流传播或者管理数据、事务和事件。流路由发布信息到预定目的地。当用户需求改变时,可以在不牺牲现有功能的情况下很容易的实现一个新的Oracle流功能。

Oracle流提供了一些列功能来让用户可以控制:什么信息放入流、流如何流转或者从一个节点路由到另一个节点、流流转到每个节点时发生什么事情以及流如何中断。通过指定流中这些要素的配置,用户可以满足特定的需求,如消息队列或数据复制等。

捕获

Oracle流可以捕获所有指定的事件并把它们保存在数据移动区域。诸如DML和DDL之类的数据库事件可以通过挖掘重做日志文件来明确的捕获。可以事先明确确定哪些规则是必须要捕获的。

数据移动

数据移动区域是一个提供保存和管理捕获事件的服务队列。数据库表的改变作为逻辑改变记录(LCR)的格式保存在数据移动区域中,直到订户读取了它们。LCR数据移动提供了一个安全的数据等候区域,还包括LCR数据的审计和跟踪。

数据消费

数据移动区域的消息是供应用引擎使用的,包括针对数据库的改变或者应用程序收到的改变。一个灵活的应用引擎允许使用标准或者定制的应用功能。支持显式的离开队列使得应用开发人员可以使用Oracle流来可靠的交换消息。可以通过改变Oracle流的修改捕捉和传播的特性在数据改变时通知应用程序。

消息队列

Oracle流高级队列构建在灵活的Oracle流基础之上。它提供了统一的处理事件的框架。在队列中可以捕捉应用程序、工作流或者重做日志或者数据库触发器触发的事件。这些事件可以以不同的方式处理。它们可以自动应用到用户定义的函数或者数据库表操作,也可以显式的离开队列或者发送通知给处理程序。这些事件可以在任意阶段传递。如果处理程序在不同的数据库中,事件会自动传输到合适的数据库中。这些时间的操作可以自动审核,操作历史可以按照用户指定的时间保存。

数据复制

复制是在两个或更多数据库中维护数据库对象。Oracle流提供了强大的复制特性来保持分布式对象的多个拷贝之间的同步。

Oracle流自动确定哪些信息是相关的,并在需要的时候共享这些信息。这些活跃的信息共享包括捕捉和管理数据库中包括DML改变的数据的这类事件和传输这些事件到其他数据库和应用。数据改变可以直接应用到复制数据库中,也可以调用用户定义的过程来在不同的数据库中执行其他的操作,比如,保存在一个阶段表中等待一个数据仓库的装载。

Oracle流是一个开放的信息共享解决方案,支持在Oracle和非Oracle系统中的多种类型的复制。通过一个透明网关,Oracle数据库中的DML改变可以应用到非Oracle平台。

Oracle流可以完全取代实体化视图或者快照,它们可以维护可更新、只读或者时间点的数据拷贝。它们可以包含一个表的全拷贝或者主表中符合一定选择条件的自定义子集。可能存在多层实体化视图,一个实体化视图是另一个是实体化视图的子集。实体化视图可以定期更新或者通过相关主表的事务一致批量更新来刷新。

Oracle的透明网关和通用连接

Oracle透明网关和通用连接口将Oracle的分布式特性扩展到非Oracle系统。Oracle可以和非Oracle数据源、非Oracle消息队列系统、和非SQL应用程序一起工作,确保可以和其他供应商的产品和技术协作。

它们将第三方的SQL语句、数据字典和数据类型翻译为Oracle格式,因而使得非Oracle数据存储看起来像一个远程的Oracle数据库。这些技术使得公司可以无缝集成所有的系统,并在公司整体上提供统一的视图。

Oracle透明网关和通用连接可以用来用分布式SQL进行同步访问,还可以通过Oracle流来进行异步访问。将透明网关引入Oracle流环境使得Oracle数据库的数据可以复制到非Oracle数据库中。

通用连接是一个通用的解决方案,而Oracle透明网关是个针对非Oracle系统进行特定编码的个性化程序。

Oracle数据库应用程序开发

SQL和PL/SQL组成了Oracle应用程序开发的核心。不仅仅大多数企业级后端运行SQL,而且Web应用程序也使用SQL(像JDBC使用java包装SQL)来访问数据库,企业应用集成也是从SQL查询中生成XML,资料库也是构建在SQL表之上。它是个简单、广泛认同的统一数据模型。不仅在许多应用中单独使用,还在直接从Java(JDBC)、Oracle调用接口(OCI)、Oracle C++调用接口(OCCI)或者XML SQL工具(XSU)中执行。存储包、过程和触发器可以用PL/SQL或者Java写成。

这章包含下列内容

Oracle SQL概述

PL/SQL概述

应用程序接口(API)概述

事务概述

数据类型概述

全球化概述

Oracle SQL概述

SQL(发音SEQUEL)是定义和操纵数据库的编程语言。SQL数据库是关系型数据库,意味着数据按照一系列简单的关系保存。

SQL语句

Oracle数据库中信息的所有操作都通过SQL语句执行。一个SQL语句是一个SQL文本的字符串。一个语句必须和下面的完全的SQL句子相符合:

Select last_name,department_id from employees;

只有完整的SQL语句才能成功运行。一个句子片段,如下所示,会产生一个错误提示需要更多的文本:

Select last_name

一个SQL语句可以认为是非常简单但是却功能强大的计算机程序或者指令。SQL语句可以分为下列几类:

数据定义语言(DDL)语句

数据操纵语言(DML)语句

事务控制语句

会话控制语句

系统控制语句

嵌入SQL语句

数据定义语言(DDL)语句

这些语句创建、修改、维护和删除模式对象。DDL语句还包括一些权限语句,如允许一个用户给其他用户分配权限来访问数据库或者数据库内特定的对象。

数据操纵语言(DML)语句

这些语句操纵数据。例如,查询、插入、更新和修改表中的行数据都是DML操作。最通用的SQL语句是SELECT语句,它负责从数据库中获得数据。锁定一个表或视图并且检查SQL语句的执行计划也是DML操作。

事务控制语句

这些语句管理DML语句造成的改变。他们使得一个用户可以将一组改变合并成一个逻辑事务。例子中包括COMMIT,ROLLBACK和SAVEPOINT。

会话控制语句

这些语句允许一个用户控制当前会话的属性,包括启用或者撤销角色以及修改语言设置。这两个会话控制语句是ALTER SESSION和SET ROLE。

系统控制语句

这些语句修改Oracle数据库实例的属性。仅有一个系统控制语句,就是ALTER SYSTEM。它让用户可以修改设定,比如共享服务器的最小值、杀死会话、和执行其他任务等。

嵌入SQL语句

这些语句和DDL、DML、事务控制语句一起组成一个过程语言程序,比如Oracle预编译程序用到的。相关例子包括OPEN、CLOSE、FETCH和EXECUTE等语句。

PL/SQL概述

PL/SQL是Oracle的过程语言,是SQL语言的扩展。PL/SQL在SQL语言简单和灵活的基础上增加了结构化语言的过程功能,如IF.....THEN....,WHILE和LOOP。

当设计数据库应用程序时,设想下列使用保存好的PL/SQL的优点:

PL/SQL代码可以保存在数据库中,这样可以减少应用和数据库之间的网络传输,所以可以提高应用和系统性能。甚至当PL/SQL不是存储在数据库中,应用可以发送PL/SQL块到数据库,也比单独的SQL语句要好,因而可以减少网络传输。

可以通过存储的PL/SQL代码控制数据访问权限,在这种情况下,PL/SQL用户只有在应用开发人员允许的情况下才能访问数据,除非被分配了另外的访问权限。

PL/SQL块可以从应用发送到数据库来运行复杂的操作,不需要大量的网络传输。

Oracle支持PL/SQL服务器页面,所以您的程序逻辑可以直接从你的Web页面来执行。

下面的部分描述了可以在数据库中定义和存储的PL/SQL程序单位。

PL/SQL程序单位

程序单位包括存储过程、函数、包、触发器和自主事务。

过程和函数是将SQL和PL/SQL语句组织起来作为一个解决特定问题或者执行一系列相关任务的单位。他们在数据库中创建并以编译格式保存,可以由用户或者数据库应用程序运行。

过程和函数是类似的,区别在于函数总是返回给用户一个单值,而过程没有返回值。

包组织相关的过程、函数、变量和其他的结构为一个单位保存在数据库中。他们提供过了更多的功能(比如全局的包变量可以声明并在包内任何过程中使用)。他们还能提升性能(例如,保重的所有的对象都只解析、编译和在内存中装载一次)。

JAVA概述

Java是一种高效的面向对象编程的应用级别语言。Oracle提供了所有类型的JDBC驱动,提升了Java应用程序对数据库的访问。Java存储过程从权限控制来说是轻便和安全的,允许非Java和遗留应用程序透明的执行Java。

应用程序接口(API)概述

Oracle数据库开发人员拥有一大堆选择来开发应用程序,如C、C++、Java、COBOL、PL/SQL和Visual Basic。所有的语言都具备数据库的整个功能。所有的语言标准Oracle也支持。开发人员可以选择他们最熟练或者对特定任务最适合的语言。例如一个应用程序可能可能在服务器端使用Java创建动态Web页面,使用PL/SQL来实现保存在数据库中的存储过程,使用C++在中间层实现计算密集型逻辑。

Oracle调用接口(OCI)是Oracle数据库的一个C语言访问API。它支持所有的Oracle数据库特性集,比如OCCI、ODBC,Oracle  JDBC类型2的驱动等等都是构建在OCI之上。OCI提供了强大的功能来构建高性能、安全、伸缩性强和容错性好的应用程序。OCI还可以用在数据库核心组件需要的数据访问上,比如分布式数据库访问。OCI允许一个应用开发人员使用C函数调用来访问Oracle数据库服务器和控制商业逻辑执行的每个部分。OCI以动态运行库的方式暴露在外,负责标准的数据库访问和获取数据功能,它可以直接被应用程序调用。

Oracle C++调用接口(OCCI)是个C++API,允许你使用面向对象的特性、本地类、C++语言的方法来访问Oracle数据库。OCCI接口类似于JDBC接口。OCCI构建在OCI之上,使用一个面向对象的规范来提供OCI的强大和性能。

开放数据库连接(ODBC),是个数据库访问接口,允许您连接到数据库,然后针对数据库准备和运行SQL语句。通过和ODBC驱动联合使用,一个应用程序可以访问包括保存在类似Excel的电子表格中的数据。

Oracle提供了一些基于COM编程语言的数据访问方法,如Visual Basic和ASP。这些包括Oracle Object for OLE和Oracle Provider for OLE DB。Oracle还提供通过Oracle Data Provider for .NET的.NET数据访问。Oracle还支持OLE DB.NET和ODBC.NET。

Oracle还系统Pro*系列的预编译器,允许你嵌入SQL和PL/SQL到你的C、C++或者COBOL应用程序中。

事务概述

一个事务是单个用户运行的一个或者多个SQL语句组成的一个逻辑单位。Oracle的事务标准符合ANSI/ISO SQL标准,一个事务在用户的第一个执行SQL语句开始。在那个用户显式的提交或者回滚之后结束。

事务使得用户的数据修改如同事务中SQL语句逻辑分组那样的确保一致性。一个事务应该由一个逻辑单位的工作所有必须部分组成,不能多也不能少。所有引用的表的数据在事务开始之前和事务结束之后是完全一致的。事务应该只由使得数据修改一致性SQL语句组成。

设想一个银行数据库。当一个银行客户从储蓄账号向活期帐户转账时,事务由3个单独的操作组成:在储蓄帐户中减,在活期帐户中加,在事务日志中记录日志。

结款(事务)包括在一个帐户中增加(一个SQL语句),在一个帐户中减(一个SQL语句)在一个日志中记录事务(一个SQL语句)。所有的动作应该一起失败或者一起成功。存入不能在没有取出的情况下提交。其他的非相关操作,如对一个帐户的新的存取,不能包含在这个结款事务中。这类语句应该在其他的事务中。

Oracle必须确保所有3个SQL语句按照正常的顺序执行维护帐户的工作。当某些事情阻止了事务中某个语句的执行(比如硬件错误),然后事务中的其他语句必须撤销。这叫做回滚。如果在任何一个更新时发生了错误,那么任何更新都被撤销。

提交和撤销事务

构成事务的SQL语句产生的改变只能被提交或者回滚。当一个事务提交和回滚之后,下一个事务从下一个SQL语句开始。

提交一个事务使得事务中所有数据操纵语句造成的改变持久化。一个事务中SQL语句产生的改变只有在事务提交之后,其他的用户语句才能见到修改结果。

撤销一个事务会撤销事务中任何SQL语句产生的改变。事务回滚之后,影响的数据保持不变,就如同这个事务的SQL语句从来没有运行过。

保存点(Savepoints)

保存点将许多SQL语句分成很多小部分。使用保存点,你可以任意的在一个长事务中标记你的工作。这给了你一个选择,以后可以在事务中回滚从事务的当前点到以前的声明保存点的所有工作。

数据类型概述

SQL语句中的每一列的值和约束都有一个数据类型,它和一个特定存储格式、约束和有效值范围关联。当你创建按了一个表,你必须执行每个列的数据类型。

Oracle提供下列内建的数据类型:

字符数据类型(Character)

数字数据类型(Numeric)

时间数据类型(DATE)

大对象数据类型(LOB)

RAW和LONG RAW数据类型

ROWID和UROWID数据类型

新的数据类型可以在内建数据类型和任何之前创建的对象类型、对象引用和聚集类型上创建。模式中的用户定义的元数据类型对于SQL、PL/SQL,JAVA和其他的发布接口可用。

一个对象类型和内建的本地SQL数据类型不同,它是用户定义的,还定义内在的持久性数据(属性)和相关行为(方法)。对象类型是真实世界实体的抽象,例如采购单。

对象类型和相关的面向对象特性,比如变长数列和嵌套表,提供了高水平的组织和访问数据库中数据的方式。在对象层的底部,数据仍然以表和列的方式保存,但是你可以基于真实世界实体(如客户和销售单)的基础上工作,例如这使得数据有意义。不用考虑表和列,当你查询数据库时,你可以简单的选择一个客户。

全球化概述

Oracle可以部署在世界的任何地方,一个单独的Oracle数据库实例可以全球访问。展现给每个用户的信息都按照客户的地区来决定语言和格式规范。

全球化开发包(GDK)简化了开发过程,减少了针对多种语言市场的因特网应用程序的开发费用。GDK使得单个程序针对世界上任何语言的文本工作。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多