关闭

关闭

封号提示

内容

首页 ORACLE_train1.doc

ORACLE_train1.doc

ORACLE_train1.doc

上传者: Storm_Four 2011-10-20 评分 5 0 173 24 786 暂无简介 简介 举报

简介:本文档为《ORACLE_train1doc》,可适用于IT/计算机领域,主题内容包含ORACLE系统概述ORACLE系统概述ORACLE公司自年推出版本开始,系统具有分布数据库处理功能年推出版本,ORACLERDBMS(V)可带事务符等。

ORACLE系统概述ORACLE系统概述ORACLE公司自年推出版本开始,系统具有分布数据库处理功能年推出版本,ORACLERDBMS(V)可带事务处理选项(TPO),提高了事务处理的速度年推出了版本,在ORACLERDBMS中可带过程数据库选项(proceduraldatabaseoption)和并行服务器选项(parallelserveroption),称为ORACLE数据库管理系统它释放了开放的关系型系统的真正潜力。ORACLE的协同开发环境提供了新一代集成的软件生命周期开发环境可用以实现高生产率、大型事务处理及客户服务器结构的应用系统。协同开发环境具有可移植性支持多种数据来源、多种图形用户界面及多媒体、多民族语言、CASE等协同应用系统。、​ ORACLE系统.​ ORACLE产品结构及组成ORACLE系统是由以RDBMS为核心的一批软件产品构成其产品结构轮廓下图所示:.​ ORACLE系统特点ORACLE公司于年首先推出基于SQL标准的关系数据库产品可在多种硬件平台上运行(所括微机、工作站、小型机、中型机和大型机)支持很多种操作系统。用户的ORACLE应用可方便地从一种计算机配置移至另一种计算机配置上。ORACLE的分布式结构可将数据和应用驻留在多台计算机上而相互间的通信是透明的。年月ORACLE公司推出的ORACLE协同服务器数据库使关系数据库技术迈上了新台阶。根据IDG(国际数据集团)年全球UNIX数据库市场报告ORACLE占市场销售量。它之所以倍受用户喜爱是因为它有以下突出的特点:​ 支持大数据库、多用户的高性能的事务处理。ORACLE支持最大数据库其大小可到几百千兆可充分利用硬件设备。支持大量用户同时在同一数据上执行各种数据应用并使数据争用最小保证数据一致性。系统维护具有高的性能ORACLE每天可连续小时工作正常的系统操作(后备或个别计算机系统故障)不会中断数据库的使用。可控制数据库数据的可用性可在数据库级或在子数据库级上控制。​ ORACLE遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准。所以它是一个开放系统保护了用户的投资。美国标准化和技术研究所(NIST)对ORACLESERVER进行检验地与ANSIISOSQL标准的二级相兼容。​ 实施安全性控制和完整性控制。ORACLE为限制各监控数据存取提供系统可靠的安全性。ORACLE实施数据完整性为可接受的数据指定标准。​ 支持分布式数据库和分布处理。ORACLE为了充分利用计算机系统和网络允许将处理分为数据库服务器和客户应用程序所有共享的数据管理由数据库管理系统的计算机处理而运行数据库应用的工作站集中于解释和显示数据。通过网络连接的计算机环境ORACLE将存放在多台计算机上的数据组合成一个逻辑数据库可被全部网络用户存取。分布式系统像集中式数据库一样具有透明性和数据一致性。​ 具有可移植性、可兼容性和可连接性。由于ORACLE软件可在许多不同的操作系统上运行以致ORACLE上所开发的应用可移植到任何操作系统只需很少修改或不需修改。ORACLE软件同工业标准相兼容包括许多工业标准的操作系统所开发应用系统可在任何操作系统上运行。可连接性是指ORALCE允许不同类型的计算机和操作系统通过网络可共享信息。、​ ORACLE数据库系统的体系结构ORACLE数据库系统为具有管理ORACLE数据库功能的计算机系统。每一个运行的ORACLE数据库与一个ORACLE实例(INSTANCE)相联系。一个ORACLE实例为存取和控制一数据库的软件机制。每一次在数据库服务器上启动一数据库时称为系统全局区(SYSTEMGLOBALAREA)的一内存区(简称SGA)被分配有一个或多个ORACLE进程被启动。该SGA和ORACLE进程的结合称为一个ORACLE数据库实例。一个实例的SGA和进程为管理数据库数据、为该数据库一个或多个用户服务而工作。在ORACLE系统中首先是实例启动然后由实例装配(MOUNT)一数据库。在松耦合系统中在具有ORACLEPARALLELSERVER选项时单个数据库可被多个实例装配即多个实例共享同一物理数据库。.​ ORACLE实例的进程结构和内存结构)​ 进程结构进程是操作系统中的一种机制它可执行一系列的操作步。在有些操作系统中使用作业(JOB)或任务(TASK)的术语。一个进程通常有它自己的专用存储区。ORACLE进程的体系结构设计使性能最大。ORACLE实例有两种类型:单进程实例和多进程实例。单进程ORACLE(又称单用户ORACLE)是一种数据库系统一个进程执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以进程执行所以ORACLE的代码和用户的数据库应用是单个进程执行。在单进程环境下的ORACLE实例仅允许一个用户可存取。例如在MSDOS上运行ORACLE。多进程ORACLE实例(又称多用户ORACLE)使用多个进程来执行ORACLE的不同部分对于每一个连接的用户都有一个进程。在多进程系统中进程分为两类:用户进程和ORACLE进程。当一用户运行一应用程序如PRO*C程序或一个ORACLE工具(如SQL*PLUS)为用户运行的应用建立一个用户进程。ORACLE进程又分为两类:服务器进程和后台进程。服务器进程用于处理连接到该实例的用户进程的请求。当应用和ORACELE是在同一台机器上运行而不再通过网络一般将用户进程和它相应的服务器进程组合成单个的进程可降低系统开销。然而当应用和ORACLE运行在不同的机器上时用户进程经过一个分离服务器进程与ORACLE通信。它可执行下列任务:​ 对应用所发出的SQL语句进行语法分析和执行。​ 从磁盘(数据文件)中读入必要的数据块到SGA的共享数据库缓冲区(该块不在缓冲区时)。​ 将结果返回给应用程序处理。系统为了使性能最好和协调多个用户在多进程系统中使用一些附加进程称为后台进程。在许多操作系统中后台进程是在实例启动时自动地建立。一个ORACLE实例可以有许多后台进程但它们不是一直存在。后台进程的名字为:DBWR数据库写入程序LGWR日志写入程序CKPT检查点SMON系统监控PMON进程监控ARCH归档RECO恢复LCKn封锁Dnnn调度进程Snnn服务器每个后台进程与ORACLE数据库的不同部分交互。下面对后台进程的功能作简单介绍:DBWR进程:该进程执行将缓冲区写入数据文件是负责缓冲存储区管理的一个ORACLE后台进程。当缓冲区中的一缓冲区被修改它被标志为“弄脏”DBWR的主要任务是将“弄脏”的缓冲区写入磁盘使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用户进程弄脏未用的缓冲区的数目减少。当未用的缓冲区下降到很少以致用户进程要从磁盘读入块到内存存储区时无法找到未用的缓冲区时DBWR将管理缓冲存储区使用户进程总可得到未用的缓冲区。ORACLE采用LRU(LEASTRECENTLYUSED)算法(最近最少使用算法)保持内存中的数据块是最近使用的使IO最小。在下列情况预示DBWR要将弄脏的缓冲区写入磁盘:​ 当一个服务器进程将一缓冲区移入“弄脏”表该弄脏表达到临界长度时该服务进程将通知DBWR进行写。该临界长度是为参数DBBLOCKWRITEBATCH的值的一半。​ 当一个服务器进程在LRU表中查找DBBLOCKMAXSCANCNT缓冲区时没有查到未用的缓冲区它停止查找并通知DBWR进行写。​ 出现超时(每次秒)DBWR将通知本身。​ 当出现检查点时LGWR将通知DBWR在前两种情况下DBWR将弄脏表中的块写入磁盘每次可写的块数由初始化参数DBBLOCKWRITEBATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区DBWR从LUR表中查找另外一个弄脏缓冲区。如果DBWR在三秒内未活动则出现超时。在这种情况下DBWR对LRU表查找指定数目的缓冲区将所找到任何弄脏缓冲区写入磁盘。每当出现超时DBWR查找一个新的缓冲区组。每次由DBWR查找的缓冲区的数目是为寝化参数DBBLOCKWRITEBATCH的值的二倍。如果数据库空运转DBWR最终将全部缓冲区存储区写入磁盘。在出现检查点时LGWR指定一修改缓冲区表必须写入到磁盘。DBWR将指定的缓冲区写入磁盘。在有些平台上一个实例可有多个DBWR。在这样的实例中一些块可写入一磁盘另一些块可写入其它磁盘。参数DBWRITERS控制DBWR进程个数。LGWR进程:该进程将日志缓冲区写入磁盘上的一个日志文件它是负责管理日志缓冲区的一个ORACLE后台进程。LGWR进程将自上次写入磁盘以来的全部日志项输出LGWR输出:​ 当用户进程提交一事务时写入一个提交记录。​ 每三秒将日志缓冲区输出。​ 当日志缓冲区的已满时将日志缓冲区输出。​ 当DBWR将修改缓冲区写入磁盘时则将日志缓冲区输出。LGWR进程同步地写入到活动的镜象在线日志文件组。如果组中一个文件被删除或不可用LGWR可继续地写入该组的其它文件。日志缓冲区是一个循环缓冲区。当LGWR将日志缓冲区的日志项写入日志文件后服务器进程可将新的日志项写入到该日志缓冲区。LGWR通常写得很快可确保日志缓冲区总有空间可写入新的日志项。注意:有时候当需要更多的日志缓冲区时LWGR在一个事务提交前就将日志项写出而这些日志项仅当在以后事务提交后才永久化。ORACLE使用快速提交机制当用户发出COMMIT语句时一个COMMIT记录立即放入日志缓冲区但相应的数据缓冲区改变是被延迟直到在更有效时才将它们写入数据文件。当一事务提交时被赋给一个系统修改号(SCN)它同事务日志项一起记录在日志中。由于SCN记录在日志中以致在并行服务器选项配置情况下恢复操作可以同步。CKPT进程:该进程在检查点出现时对全部数据文件的标题进行修改指示该检查点。在通常的情况下该任务由LGWR执行。然而如果检查点明显地降低系统性能时可使CKPT进程运行将原来由LGWR进程执行的检查点的工作分离出来由CKPT进程实现。对于许多应用情况CKPT进程是不必要的。只有当数据库有许多数据文件LGWR在检查点时明显地降低性能才使CKPT运行。CKPT进程不将块写入磁盘该工作是由DBWR完成的。初始化参数CHECKPOINTPROCESS控制CKPT进程的使能或使不能。缺省时为FALSE即为使不能。SMON进程:该进程实例启动时执行实例恢复还负责清理不再使用的临时段。在具有并行服务器选项的环境下SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒检查是否需要或者其它进程发现需要时可以被调用。PMON进程:该进程在用户进程出现故障时执行进程恢复负责清理内存储区和释放该进程所使用的资源。例:它要重置活动事务表的状态释放封锁将该故障的进程的ID从活动进程表中移去。PMON还周期地检查调度进程(DISPATCHER)和服务器进程的状态如果已死则重新启动(不包括有意删除的进程)。PMON有规律地被呼醒检查是否需要或者其它进程发现需要时可以被调用。RECO进程:该进程是在具有分布式选项时所使用的一个进程自动地解决在分布式事务中的故障。一个结点RECO后台进程自动地连接到包含有悬而未决的分布式事务的其它数据库中RECO自动地解决所有的悬而不决的事务。任何相应于已处理的悬而不决的事务的行将从每一个数据库的悬挂事务表中删去。当一数据库服务器的RECO后台进程试图建立同一远程服务器的通信如果远程服务器是不可用或者网络连接不能建立时RECO自动地在一个时间间隔之后再次连接。RECO后台进程仅当在允许分布式事务的系统中出现而且DISTRIBUTED–TRANSACTIONS参数是大于。ARCH进程:该进程将已填满的在线日志文件拷贝到指定的存储设备。当日志是为ARCHIVELOG使用方式、并可自动地归档时ARCH进程才存在。LCKn进程:是在具有并行服务器选件环境下使用可多至个进程(LCKLCK……LCK)用于实例间的封锁。Dnnn进程(调度进程):该进程允许用户进程共享有限的服务器进程(SERVERPROCESS)。没有调度进程时每个用户进程需要一个专用服务进程(DEDICATEDSERVERPROCESS)。对于多线索服务器(MULTITHREADEDSERVER)可支持多个用户进程。如果在系统中具有大量用户多线索服务器可支持大量用户尤其在客户服务器环境中。在一个数据库实例中可建立多个调度进程。对每种网络协议至少建立一个调度进程。数据库管理员根据操作系统中每个进程可连接数目的限制决定启动的调度程序的最优数在实例运行时可增加或删除调度进程。多线索服务器需要SQL*NET版本或更后的版本。在多线索服务器的配置下一个网络接收器进程等待客户应用连接请求并将每一个发送到一个调度进程。如果不能将客户应用连接到一调度进程时网络接收器进程将启动一个专用服务器进程。该网络接收器进程不是ORACLE实例的组成部分它是处理与ORACLE有关的网络进程的组成部分。在实例启动时该网络接收器被打开为用户连接到ORACLE建立一通信路径然后每一个调度进程把连接请求的调度进程的地址给予于它的接收器。当一个用户进程作连接请求时网络接收器进程分析请求并决定该用户是否可使用一调度进程。如果是该网络接收器进程返回该调度进程的地址之后用户进程直接连接到该调度进程。有些用户进程不能调度进程通信(如果使用SQL*NET以前的版本的用户)网络接收器进程不能将如此用户连接到一调度进程。在这种情况下网络接收器建立一个专用服务器进程建立一种合适的连接。)、ORACLE内存结构ORACLE在内存存储下列信息:​ 执行的程序代码。​ 连接的会话信息​ 程序执行期间所需数据和共享的信息​ 存储在外存储上的缓冲信息。ORACLE具有下列基本的内存结构:​ 软件代码区​ 系统全局区,包括数据库缓冲存储区、日志缓冲区和共享池​ 程序全局区,包括栈区和数据区​ 排序区软件代码区用于存储正在执行的或可以执行的程序代码。软件区是只读可安装成共享或非共享。ORACLE系统程序是可共享的以致多个ORACLE用户可存取它而不需要在内存有多个副本。用户程序可以共享也可以不共享。系统全局区为一组由ORACLE分配的共享的内存结构可包含一个数据库实例的数据或控制信息。如果多个用户同时连接到同一实例时在实例的SGA中数据可为多个用户所共享所以又称为共享全局区。当实例起动时SGA的存储自动地被分配当实例关闭时该存储被回收。所有连接到多进程数据库实例的全部用户可自动地被分配当实例关闭时该存储被回收。所有连接到多进程数据库实例的全部用户可使用其SGA中的信息但仅仅有几个进程可写入信息。在SGA中存储信息将内存划分成几个区:数据库缓冲存储区、日志缓冲区、共享池、请求和响应队列、数据字典存储区和其它各种信息。程序全局区PGA是一个内存区包含单个进程的数据和控制信息所以又称为进程全局区(PROCESSGLOBALAREA)。排序区排序需要内存空间ORACLE利用该内存排序数据这部分空间称为排序区。排序区存在于请求排序的用户进程的内存中该空间的大小为适就排序数据量的大小可增长但受初始化参数SORTAREASIZER所限制。.​ ORACLE的配置方案所有连接到ORACLE的用户必须执行两个代码模块可存取一个ORACLE数据库实例:​ 应用或ORACLE工具:一数据库用户执行一数据库应用或一个ORACLE工具可向ORACLE数据库发出SQL语句。​ ORACLE服务器程序:负责解释和处理应用中的SQL语句。在多进程实例中连接用户的代码可按下列三种方案之一配置:​ 对于每一个用户其数据库应用程序和服务器程序组合成单个用户进程​ 对于每一个用户其数据库应用是由用户进程所运行并有一个专用服务器进程。执行ORACLE服务器的代码。这样的配置称为专用服务器体系结构​ 执行数据库应用的进程不同于执行ORACLE服务器代码的进程而且每一个服务器进程(执行ORACLE服务器代码)可服务于多个用户进程这样的配置称为多线索服务器体系结构。)​ USERSERVER进程相结合的结构在这种配置下数据库应用和ORACLE服务器程序是在同一个进程中运行该进程称为用户进程。这种ORACLE配置有时称为单任务ORACLE(singletaskORACLE)该配置适用于这样的操作系统它可在同一进程中的数据库应用和ORACLE代码之间维护一个隔离该隔离是为数据安全性和完整性所需。其中程序接口(programinterface)是负责ORACLE服务器代码的隔离和保护在数据库应用和ORACLE用户程序之间传送数据。)​ 使用专用服务器进程的系统结构使用专用服务器进程的ORACLE系统在两台计算机上运行。在这种系统中在一计算机上用户进程执行数据库应用而在另一台计算机上的服务器进程执行相应的ORACLE服务器代码这两个进程是分离的。为每个用户进程建立的不同的服务器进程称为专用服务器进程因为该服务器进程仅对相连的用户进程起作用。这种配置又称为两任务ORACLE。每一个连接到ORACLE的用户进程有一个相应的专用服务进程。这种系统结构允许客户应用是有工作站上执行通过网络与运行ORACLE的计算机通信。当客户应用和ORACLE服务器代码是在同一台计算机上执行时这种结构也可用。)​ 多线索服务器的系统结构多线索服务器配置允许许多用户进程共享很少服务器进程。在没有多线索服务器的配置中每一个用户进程需要自己的专用服务器进程。在具有多线索服务器的配置中许多用户进程连接到调度进程由调度进程将客户请求发送到一个共享服务器进程。多线索服务器配置的优点是降低系统开销增加用户个数。该系统中需要下列类型的进程:​ 网络接收器进程将用户进程连接到调度进程和专用服务器进程。​ 一个或多个调度进程​ 一个或多个共享服务器进程其中网络接收器进程等待新来的连接请求决定每一用户进程能否用共享服务器进程。如果可以使用接收器进程将一调度进程的地址返回给用户进程。如果用户进程请求一专用服务器该接收器进程将建立一个专用服务器进程将用户进程连接到该专用服务器进程。对于数据库客户机所使用的每种网络协议至少配置一个调度进程并启动它。当用户作一次调用时调度进程将请求放置在SGA的请求队列中由可用的共享服务器进程获取。共享服务器进程为完成每一个用户进程的请求作所有必要的数据库调用。当服务器完成请求时将结果返回到调度进程的队列然后由调度进程将完成的请求返回给用户进程。共享服务器进程:除共享服务器进程不是连接指定的用户进程外共享服务器进程和专用服务器进程提供相同的功能一个共享服务器进程在多线索服务器的配置中可为任何客户请求服务。一个共享服务器进程的SGA不包含有与用户相关的数据其信息可为所有共享服务器进程存取它仅包含栈空间、进程指定变量。所有与会话有关的信息是包含有SGA中。每一个共享服务器进程可存取全部会话的数据空间以致任何服务进程可处理任何会话的请求。对于每一个会话的数据空间是在SGA中分配空间。ORACLE根据请求队列的长度可动态地调整共享服务器进程。可建立的共享服务器进程将请求放到请求队列。一个用户请求是对数据库的一次程序接口调用为SQL语句。在SGA中请求队列对实例的全部调度进程是公用的。服务器进程为新请求检查公用请求队列按先进先出的原则从队列检出一个请求然后为完成该请求对数据库作必要的调用。共享服务器进程将响应放在调度进程的响应队列。每一个调度进程在SGA中有自己的响应队列每个调度进程负责将完成的请求回送给相应的用户进程。ORACLE运行)​ 使用专用服务进程的ORACLE的运行在这种配置下ORACLE运行过程如下:()​ 数据库服务器计算机当前正在运行ORACLE(后台进程)。()​ 在一客户工作站运行一个数据库应用(为用户进程)如SQL*PLUS。客户应用使用SQL*NETDRIVER建立对服务器的连接。()​ 数据库服务器计算机当前正运行合适的SQL*NETDRIVER该机上接收器进程检出客户数据库应用的连接请求并在该机上为用户进程建立专用服务器进程。()​ 用户发出单个SQL语句。()​ 专用服务器进程接收该语句在此处有两种方法处理SQL语句:​ 如果在共享池一共享SQL区中包含有相同SQL语句时该服务器进程可利用已存在的共享SQL区执行客户的SQL语句。​ 如果在共享池中没有一个SQL区包含有相同的SQL语句时在共享池中为该语句分配一新的共享SQL区。在每一种情况在会话的PGA中建立一个专用SQL区专用服务器进程检查用户对查询数据的存取权限。()如果需要服务器进程从数据文件中检索数据块或者可使用已存储在实例SGA中的缓冲存储区的数据块。()服务器进程执行存储在共享SQL区中的SQL语句。数据首先在SGA中修改由DBWR进程在最有效时将它写入磁盘。LGWR进程在在线日志文件中记录用户提交请求的事务。()如果请求成功服务器将通过网络发送一信息。如果请求不成功将发送相应的错误信息。()在整个过程中其它的后台进程是运行的同时注意需要干预的条件。另外ORACLE管理其它事务防止不同事务之间请求同一数据的竞争。)使用多线索服务器的ORACLE的运行在这种配置下ORACLE运行过程如下:()​ 一数据库服务器计算机运行使用多线索服务器配置的ORACLE。()​ 在一客户工作站运行一数据库应用(在一用户进程中)。客户应用合适的SQL*NET驱动器试图建立到数据库服务器计算机的连接。()​ 数据库服务器计算机当前运行合适的SQL*NET驱动器它的网络接收器进程检出用户进程的连接请求并决定用户进程如何连接。如果用户是使用SQL*NET版本该网络接收器通知用户进程使用一个可用的调度进程的地址重新连接。()​ 用户发出单个SQL语句()​ 调度进程将用户进程的请求放入请求队列该队列位于SGA中可为所有调度进程共享。()​ 一个可用共享服务器检验公用调度进程请求队列并从队列中检出下一个SQL语句。然后处理该SQL语句同前一()()和()。注意:会话的专用SQL区是建立在SGA中。()​ 一当共享服务器进程完成SQL处理该进程将结果放置发入该请求的调度进程的响应队列。()​ 调度进程检查它的响应队列并将完成的请求送回请求的用户进程。数据库结构和空间管理一个ORACLE数据库是数据的集合被处理成一个单位。一个ORACLE数据库有一个物理结构和一个逻辑结构。物理数据库结构(physicaldatabasestructure)是由构成数据库的操作系统文件所决定。每一个ORACLE数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。逻辑数据库结构是用户所涉及的数据库结构。一个ORACLE数据库的逻辑结构由下列因素决定:​ 一个或多个表空间​ 数据库模式对象(即表、视图、索引、聚集、序列、存储过程)逻辑存储结构如表空间(dataspace)、段(segment)和范围将支配一个数据库的物理空间如何使用。模式对象(schemaobject)用它们之间的联系组成了一个数据库的关系设计。)​ 物理结构()​ 数据文件每一个ORACLE数据库有一个或多个物理的数据文件(datafile)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:​ 一个数据文件仅与一个数据库联系。​ 一旦建立数据文件不能改变大小​ 一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据如果请求信息不在数据库的内存存储区内则从相应的数据文件中读取并存储在内存。当修改和插入新数据时不必立刻写入数据文件。为了减少磁盘输出的总数提高性能数据存储在内存然后由ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。()​ 日志文件每一个数据库有两个或多个日志文件(redologfile)的组每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改所以对数据库作的全部修改是记录在日志中。在出现故障时如果不能将修改数据永久地写入数据文件则可利用日志得到该修改所以从不会丢失已有操作成果。日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障ORACLE允许镜象日志(mirroredredolog)以致可在不同磁盘上维护两个或多个日志副本。日志文件中的信息仅在系统故障或介质故障恢复数据库时使用这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。()​ 控制文件每一ORACLE数据库有一个控制文件(controlfile)它记录数据库的物理结构包含下列信息类型:​ 数据库名​ 数据库数据文件和日志文件的名字和位置​ 数据库建立日期。为了安全起见允许控制文件被镜象。每一次ORACLE数据库的实例启动时它的控制文件用于标识数据库和日志文件当着手数据库操作时它们必须被打开。当数据库的物理组成更改时ORACLE自动更改该数据库的控制文件。数据恢复时也要使用控制文件。)​ 逻辑结构数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。()​ 表空间一个数据库划分为一个或多个逻辑单位该逻辑单位称为表空间(TABLESPACE)。一个表空间可将相关的逻辑结构组合在一起。DBA可利用表空间作下列工作:​ 控制数据库数据的磁盘分配。​ 将确定的空间份额分配给数据库用户。​ 通过使单个表空间在线或离线控制数据的可用性。​ 执行部分数据库后备或恢复操作。​ 为提高性能跨越设备分配数据存储。数据库、表空间和数据文件之间的关系如下图所示:DatabaseDTATAFILE(MB)DATAFILE(MB)DATAFILE(MB)DriverDriver。每个数据库可逻辑划分为一个或多个表空间。每一个表空间是由一个或多个数据文件组成该表空间物理地存储表空间中全部逻辑结构的数据。DBA可以建立新的表空间可为表空间增加数据文件或可删除数据文件设置或更改缺省的段存储位置。每一个ORACLE数据库包含有一个名为SYSTEM的表空间在数据库建立是自动建立。在该表空间中总包含有整个数据库的数据字典表。最小的数据库可只需要SYSTEM表空间。该表空间必须总是在线。表和存储的PLSQL程序单元(过程、函数、包和触发器)的全部存储数据是存储在SYSTEM表空间中。如果这些PLSQL对象是为数据库建的DBA在SYSTEM表空间中需要规划这些对象所需要的空间。表空间利用增加数据文件扩大表空间表空间的大小为组成该表空间的数据文件大小的和。DBA可以使ORACLE数据库中任何表空间(除SYSTEM表空间外)在线(ONLINE)或离线(OFFLINE)。表空间通常是在线以致它所包含的数据对数据库用户是可用的。当表空间为离线时其数据不可使用。在下列情况下DBA可以使其离线。。使部分数据不可用而剩余的部分允许正常存取。执行离线的表空间后备。为了修改或维护一应用使它和它的一组表临时不可用。包含有正在活动的回滚段的表空间不能被离线仅当回滚段不正在使用时该表空间才可离线。在数据字典中记录表空间的状态在线还是离线。如果在数据库关闭时一表空间为离线那么在下次数据库装配和重新打开后它仍然保持离线。当出现某些错误时一个表空间可自动地由在线改变为离线。通过使用多个表空间将不同类型的数据分开更方便DBA来管理数据库。ORACLE数据库中一表空间是由一个或多个物理数据文件组成一个数据文件只可与一个表空间想联系。当为一表空间建立一数据文件时ORACLE建立该文件分配指定的磁盘空间容量。在数据文件初时建立后所分配的磁盘不包含任何数据。表空间可以在线或离线。在ORACLE中还允许单独数据文件在线或离线。()​ 段、范围和数据块ORACLE通过段、范围和数据块逻辑数据结构可更细地控制磁盘空间的使用。段段(SEGMENT)包含表空间中一种指定类型的逻辑存储结构是由一组范围组成。在ORACLE数据库中有几种类型的段:数据段、牵引段、回滚段和临时段。数据段:对于每一个非聚集的表有一数据段表的所有数据存放在该段。每一聚集有一个数据段聚集中每一个表的数据存储在该段中。索引段:每一个索引有一索引段存储索引数据。回滚段:是由DBA建立用于临时存储要撤消的信息这些信息用于生成读一致性数据库信息、在数据库恢复时使用、回滚未提交的事务。临时段:当一个SQL语句需要临时工作区时由ORACLE建立。当语句执行完毕临时段的范围退回给系统。ORACLE对所有段的空间分配以范围为单位。范围一个范围(EXTENT)是数据库存储空间分配的一个逻辑单位它由连续数据块所组成。每一个段是由一个或多个范围组成。当一段中间所有空间已完全使用时ORACLE为该段分配一个新的范围。为了维护的目的在数据库的每一段含有段标题块(segmentheaderblock)说明段的特征以及该段中的范围目录。数据块数据块(datablock)是ORACLE管理数据文件中存储空间的单位为数据库使用的IO的最小单位其大小可不同于操作系统的标准IO块大小。数据块的格式:公用的变长标题表目录行目录未用空间行数据()​ 模式和模式对象一个模式(schema)为模式对象(scehmaobject)的一个集合每一个数据库用户对应一个模式。模式对象为直接引用数据库数据的逻辑结构模式对象包含如表、视图、索引、聚集、序列、同义词、数据库链、过程和包等结构。模式对象是逻辑数据存储结构每一种模式对象在磁盘上没有一个相应文件存储其信息。一个模式对象逻辑地存储在数据库的一个表空间中每一个对象的数据物理地包含在表空间的一个或多个数据文件中。表表(table)为数据库中数据存储的基本单位其数据按行、列存储。每个表具有一表名和列的集合。每一列有一个列名、数据类型、宽度或精度、比例。一行是对应单个记录的列信息的集合。视图一个视图(view)是由一个或多个表(或其他视图)中的数据的一种定制的表示是用一个查询定义所以可认为是一个存储的查询(storedquery)或是一个虚表(virtualtable)。视图可在使用表的许多地方使用。由于视图是由表导出的视图和表存在许多类似视图象表最多可定义列。视图可以被查询而在修改、插入或删除时具有一定的限制在视图上执行的全部操作真正地影响视图的基本表中的数据受到基本表的完整性约束和触发器的限制。视图与表不同一个视图不分配任何存储空间视图不真正地包含数据。由查询定义的视图相应于视图引用表中的数据。视图只在数据字典中存储其定义。引入视图有下列好处:。通过限制对表的行预定义集合的存取为表提供附加的安全性。隐藏数据复杂性。。为用户简化命令。为基本表的数据提供另一种观点。。可将应用隔离基本表定义的修改。用于不用视图无法表示的查询。。可用于保存复杂查询。聚集聚集(cluster)是存储表数据的可选择的方法。一个聚集是一组表将具有同一公共列值的行存储在一起并且它们经常一起使用。这些公共列构成聚集码。例如:EMP表各DEPT表共享DEPTNO列所以EMP表和DEPT表可聚集在一起聚集码的列为DEPTNO列该聚集将每个部门的全部职工行各该部门的行物理地存储在同一数据块中。索引索引(index)是与表和聚集相关的一种选择结构。索引是为提高数据检索的性能而建立利用它可快速地确定指定的信息。ORACLE索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。索引可建立在一表的一列或多列上一旦建立由ORACLE自动维护和使用对用户是完全透明的。索引是逻辑地和物理地独立于数据它们的建立或删除对表没有影响应用可继续处理。索引数据的检索性能几乎保持常数而当一表上存在许多索引时修改、删除和插入操作的性能会下降。索引有唯一索引和非唯一索引。唯一索引保证表中没有两行在定义索引的列上具有重复值。ORACLE在唯一码上自动地定义唯一索引实施UNIQUE完整性约束。组合索引是在表的某个列上所建立的一索引。组全索引可加快SELECT语句的检索速度在其WHERE子句中可引用组合索引的全部或主要部分。所以在定义中给出列的次序将经常存取的或选择最多的列放在首位。在建立索引时将在表空间自动地建立一索引段索引段空间分配和保留空间的使用受下列方式控制:索引段范围的分配常驻该索引段的存储参数控制。其数据块中未用空间可受该段的PCTFREE参数设置所控制。序列生成器序列生成器(sequencegenerator)产生序列号。在多用户环境下该序列生成器特别有用可生成各返回序列号而不需要磁盘IO或事务封锁。序列号为ORACLE整数最多可有个数字。一个序列定义指出一般信息:序列的名字、上升或下降、序列号之间间距和其它信息。对所有序列的确的定义以行存储在SYSTEM表空间中的数据字典表中所以所有序列定义总是可用。由引用序列号的SQL语句使用序列号可生成一个新的序列号或使用当前序列号。一旦在用户会话中的SQL语句生成一序列号该序列号仅为该会话可用。序列号生成是独立于表所以同一序列生成器可用于一个和多个表。所生成序列号可用于生成唯一的主码。同义词一个同义词(synonym)为任何表、视图、快照、序列、过程、函数或包的别名其定义存储在数据字典中。同义词因安全性和方便原因而经常使用可用于:​ 可屏蔽对象的名字及其持有者。​ 为分布式数据库的远程对象提供位置透明性。​ 为用户简化SQL语句。有两种同义词:公用和专用。一个公用同义词为命名为PUBLIC特殊用户组所持有可为数据库中每一个用户所存取。一个专用同义词是包含在指定用户的模式中仅为该用户和授权的用户所使用。杂凑杂凑(hashing)是存储表数据一种可选择的方法用以改进数据检索的性能。要使用杂凑就要建立杂凑聚集将表装入到该聚集。在骠凑聚集中的表行根据杂凑函数的结果进行物理学存储和检索。杂凑函数用于生成一个数值的分布该数值称为杂凑值它是基于指定的聚集码值。程序单元程序单元(programunit)是指存储过程、函数和包(PACKAGE)。一个过程和函数是由SQL语句和PLSQL语句组合在一起为执行某一个任务的一个可执行单位。一个过程或函数可被建立在数据库中存储其编译形式可由用户或数据库应用所执行。过程和函数差别在函数总返回单个值给调用者而过程没有值返回给调用者。包提供相关的过程、函数、变量和其它包结构封装起来并存贮在一起的一种方法允许管理者和应用开发者利用该方法组织如此的程序(routine),来提供更多的功能和提高性能。数据库链数据库链是一个命名的对象说明从一数据库到另一数据库的一路径(PATH)。在分布式数据库中对全局对象名引用时数据库链隐式地使用。三、数据库和实例的启动和关闭一个ORACLE数据库没有必要对所有用户总是可用数据库管理员可启动数据库以致它被打开。在数据库打开情况下用户可存取数据库中的信息。当数据库不使用时DBA可关闭它关闭后的数据库用户不能存取其信息。数据库的启动和关闭是非常重要的管理功能通过以INTERNAL连接到ORACLE的能力来保护。以INTERNAL连接到ORACLE需要有下列先决条件:该用户的操作系统账号具有使用INTERNAL连接的操作系统特权。对INTERNAL数据库有一口令该用户知道其口令。另外:当用户以INTERNAL连接时可连接到专用服务器而且是安全连接。.​ 数据库启动启动数据库并使它可用有三步操作:​ 启动一个实例​ 装配数据库​ 打开数据库)​ 启动一个实例启动一实例的处理包含分配一个SGA(数据库信息使用的内存共享区)和后台进程的建立。实例起动的执行先于该实例装配一数据库。如果仅启动实例则没有数据库与内存储结构和进程相联系。)​ 装配一数据库装配数据库是将一数据库与已启动的实例相联。当实例安装一数据库之后该数据库保持关闭仅DBA可存取。)​ 打开一数据库打开一数据库是使数据库可以进行正常数据库操作的处理。当一数据库打开所有用户可连接到该数据库用存取其信息。在数据库打开时在线数据文件和在线日志文件也被打开。如果一表空间在上一次数据库关闭时为离线在数据库再次打开时该表空间与它所相联的数据文件还是离线的。.​ 数据库和实例的关闭关闭一实例以及它所连接的数据库也有三步操作:)​ 关闭数据库数据库停止的第一步是关闭数据库。当数据库关闭后所有在SGA中的数据库数据和恢复数据相应地写入到数据文件和日志文件。在这操作之后所有联机数据文件和联机的日志文件也被关闭任何离线表空间中数据文件夹是已关闭的。在数据库关闭后但还安装时控制文件仍保持打开。)​ 卸下数据库停止数据库的第二步是从实例卸下数据库。在数据库卸下后在计算机内存中仅保留实例。在数据库卸下后数据库的控制文件也被关闭。)​ 停止实例停止数据库的最后一步是停止实例。当实例停止后SAG是从内存中撤消后台进程被中止。.​ 初始化参数文件在启动一个实例时ORACLE必须读入一初始化参数文件(initializationparameterfile)该参数文件是一个文本文件包含有实例配置参数。这些参数置成特殊值用于初始ORACLE实例的许多内存和进程设置该参数文件包含:​ 一个实例所启动的数据库名字​ 在SGA中存储结构使用多少内存​ 在填满在线日志文件后作什么​ 数据库控制文件的名字和位置​ 在数据库中专用回滚段的名字。四、数据字典的使用数据字典是ORACLE数据库的最重要的部分之一是由一组只读的表及其视图所组成。它提供有关该数据库的信息可提供的信息如下:​ ORACLE用户的名字​ 每一个用户所授的特权和角色​ 模式对象的名字(表、视图、快照、索引、聚集、同义词、序列、过程、函数、包及触发器等)​ 关于完整性约束的信息​ 列的缺省值​ 有关数据库中对象的空间分布及当前使用情况​ 审计信息(如谁存取或修改各种对象)​ 其它一般的数据库信息。可用SQL存取数据字典由于数据字典为只读允许查询。.​ 数据字典的结构数据库数据字典是由基本表和用户可存取的视图组成。基本表:数据字典的基础是一组基本表组成存储相关的数据库的信息。这些信息仅由ORACLE读和写它们很少被ORACLE用户直接存取。用户可存取视图:数据字典包含用户可存取视图可概括地方便地显示数据字典的基本表的信息。视图将基本表中信息解码成可用信息。.​ 数据字典的使用当数据库打开时数据字典总是可用它驻留在SYSTEM表空间中。数据字典包含视图集在许多情况下每一视图集有三种视图包含有类似信息彼此以前缀相区别前缀USER、ALL和DBA。​ 前缀为USER的视图为用视图是在用户的模式内。​ 前缀为ALL的视图为扩展的用户视图(为用户可存取的视图)。​ 前缀为DBA的视图为DBA的视图(为全部用户可存取的视图)。在数据库中ORACLE还维护了一组虚表记录当前数据库的活动这些表称为动态性能表。动态性能表不是真正的表许多用户不能存取DBA可查询这些表可以建立视图给其它用户授予存取视图权。五、事务管理.​ 事务一个事务为工作的一个逻辑单位由一个或多个SQL语句组成。一个事务是一个原子单位构成事务的全部SQL语句的结果可被全部提交或者全部回滚。一个事务由第一个可执行SQL语句开始以提交或回滚结束可以是显式的也可是隐式的(执行DDL语句)。在执行一个SQL语句出现错误时该语句所有影响被回滚好像该语句没有被执行一样但它不会引起当前事务先前的工作的丢失。.​ ORACLE的事务管理在ORACLE中一个事务是由一个可执行的SQL语句开始一个可执行SQL语句产生对实例的调用。在事务开始时被赋给一个可用回滚段记录该事务的回滚项。一个事务以下列任何一个出现而结束。​ 当COMMIT或ROLLBACK(没有SAVEPOINT子句)语句发出。​ 一个DDL语句被执行。在DDL语句执行前、后都隐式地提交。​ 用户撤消对ORACLE的连接(当前事务提交)。​ 用户进程异常中止(当前事务回滚)。)​ 提交事务提交一事务即将在事务中由SQL语句所执行的改变永久化。在提交前ORACLE已有下列情况:​ 在SGA的回滚段缓冲区已生成回滚段记录回滚信息包含有所修改值的老值。​ 在SGA的日志缓冲区已生成日志项。这些改变在事务提交前可进入磁盘。​ 对SGA的数据库缓冲区已作修改这些修改在事务真正提交之前可进入磁盘。在事务提交之后有下列情况:​ 对于与回滚段相关的内部事务表记录提交事务并赋给一个相应的唯一系统修改号(SCN)记录在表中。​ 在SGA的日志缓冲区中日志项由LGWR进程写入到在线日志文件这是构成提交事务的原子事务。​ 在行上和表上的封锁被释放。​ 该事务标志为完成。注意:对于提交事务的数据修改不必由DBWR后台进程立即写入数据文件可继续存储在SGA的数据库缓冲区中在最有效时将其写入数据文件。)​ 回滚事务回滚事务的含义是撤消未提交事务中的SQL语句所作的对数据修改。ORALCE允许撤消未提交的整个事务也允许撤消部分。在回滚整个事务(没有引用保留点)时有下列情况:​ 在事务中所有SQL语句作的全部修改利用相应的回滚段被撤消。​ 所有数据的事务封锁被释放。​ 事务结束。当事务回滚到一保留点(具有SAVEPOINT)时有下列情况:​ 仅在该保留点之后执行的语句被撤消。​ 该指定的保留点仍然被保留该保留点之后所建立的保留点被删除。​ 自该保留点之后所获取的全部表封锁和行封锁被释放但指定的保留点以前所获取的全部数据封锁继续保持。​ 该事务仍可继续。)​ 保留点保留点(savepoint)是在一事务范围内的中间标志经常用于将一个长的事务划分为小的部分。保留点可标志长事务中的任何点允许可回滚该点之后的工作。在应用程序中经常使用保留点例如一过程包含几个函数在每个函数前可建立一个保留点如果函数失败很容易返回到每一个函数开始的情况。在回滚到一个保留点之后该保持点之后所获得的数据封锁被释放。六、数据库触发器.​ 触发器介绍数据库触发器(databasetrigger)是存储在数据库中的过程当表被修改时它隐式地被激发(执行)。在ORACLE中允许在对表发出INSERT、UPDATE或DELETE语句时隐式地执行所定义的过程这些过程称为数据库触发器。触发器存储在数据库中并与所相关表分别存储。触发器仅可在表上定义。在许多情况中触发器用于提供很高级的专用数据库管理系统来补充ORACLE的标准功能。触发器一般用于:​ 自动地生成导出的列值​ 防止无效的事务​ 实施更复杂的安全性检查​ 在分布式数据库中实施跨越结点的引用完整性​ 实施复杂的事务规则​ 提供透明事件日志​ 提供高级的审计​ 维护同步表复制​ 收集关于存取表的统计。注意:数据库触发器与SQL*FORMS触发器之间的差别。数据库触发器是定义在表上存储在数据库中当对表执行INSERT、UPDATE或DELETE语句时被激发不管是谁或哪一应用发出。而SQL*FORMS触发器是SQL*FORM应用的部分仅当在指定SQL*FORMS应用中执行一个指定触发器点时才被激发。触发器和说明性完整性约束都可用于约束数据的输入但它们之间有一定区别:说明性完整性约束是关于数据库总是为“真”的语句。一个完整性约束应用于表中已有数据和操纵表的任何语句。而触发器约束事务不可应用于在定义触发器前已装入的数据所以它不能保证表中全部数据服从该触发器的规则。触发器实施瞬时约束即在数据改变时实施一约束。.​ 触发器的组成:一个触发器有三个基本部件:触发事件或语句、触发器的限制、触发器动作。触发事件或语句:为引起触发器激发的SQL语句是对指定表INSERT、UPDATE或DELETE语句。触发器限制:为一布尔表达式当触发器激发时该条件必须为TRUE。触发器的限制是用WHEN子句来指定。触发器的动作:为一个PLSQL块(过程)由SQL语句和PLSQL语句组成。当触发语句发出触发器的限制计算得TRUE时它被执行。在触发器动作的语句中可使用触发器的处理的当前行的列值(新值、老值)使用形式为:NEW列名引用新值OLE列名引用老值在定义触发器时可指定触发器动作执行次数:受触发语句影响每一行执行一次或是对触发语句执行一次。对每一触发语句可有四种类型触发器:行触发器:对受触发语句所影响的每一行行触发器激发一次。语句触发器:该类型触发器对触发语句执行一次不管其受影响行数。定义触发器可以指定触发时间指定激发器动作的执行相对于触发语句执行之后或之前。BEFORE触发器:该触发器执行触发器动作是在触发语句执行之前。AFTER触发器:该触发器执行触发器动作是在触发语句执行之后。一个触发器可处于两种不同的方式:使能触发器和使不能触发器。使能触发器:只要当触发语句发出触发器限制计算为TRUE这种类型的触发器执行其触发动作。使不能触发器:这种触发器即使其触发语句被发出触发器限制计算为TRUE也不执行触发器动作。触发器的源代码存储在数据库中在第一次执行时触发器的源代码被编译存储在共享池中。如果触发器从共享池中挤了再使用时必须再重新编译。七、分布处理和分布式数据库.​ 简介一个分布式数据库在用户面前为单个逻辑数据库但实际上是由存储在多台计算机上的一组数据库组成。在几台计算机上的数据库通过网络可同时修改和存取每一数据库受它的局部的DBMS控制。分布式数据库中每一个数据库服务器合作地维护全局数据库的一致性。在系统中的每一台计算机称为结点。如果一结点具有管理数据库软件该结点称为数据库服务器。如果一个结点为请求服务

精彩专题

职业精品

上传我的资料

热门资料

资料评价:

/ 22
所需积分:0 立即下载

意见
反馈

返回
顶部

Q