Oracle体系结构-基础部分_第1页
Oracle体系结构-基础部分_第2页
Oracle体系结构-基础部分_第3页
Oracle体系结构-基础部分_第4页
Oracle体系结构-基础部分_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章

Oracle体系结构ORACLE如同人体-它有哪些部分组成呀?每个部分负责什么呀?本章内容一、物理结构二、逻辑结构三、内存结构四、数据库实例与进程五、数据字典一、物理结构Oracle数据库文件包括数据文件、日志文件、控制文件、配置文件。1、数据文件用来存储数据库中的全部数据,如数据库表中的数据和索引数据。通常为后缀名为.dbf格式的文件。每个Oracle可以有一个或多个数据文件,一个数据文件只能属于一个数据库。每个数据文件又由若干物理块组成;一个或多个数据文件组成表空间;2、日志文件(重做日志文件)用于记录数据库所做的全部变更(如增加、删除、修改),以便在系统发生故障时,用它对数据库进行恢复。名字通常为Log*.dbf格式。3、控制文件用于打开和存取数据库。是较小的二进制文件,记录了数据库的物理结构,如:数据库名、数据库的数据文件和日志文件的名字和位置等信息。名字通常为Ctr*.ctl格式,如CtrlCIMS.ctl。控制文件中的内容只能够由Oracle本身来修改。每个数据库必须至少拥有一个控制文件。一个数据库也可有多个控制文件,但是一个控制文件只能属于一个数据库。4、配置文件:是一个ASCII文本文件,记录Oracle数据库运行时的一些重要参数。名字通常为initsid*.ora格式,如:initCIMS.ora,SID相当于它所控制的数据库的标识符。每个Oracle数据库和实例都有它自己惟一的init.ora文件。二、Oracle的逻辑结构逻辑结构描述了数据库从逻辑上如何来存储数据块中的数据。包括表空间、段、区、数据块和模式对象。逻辑结构支配一个数据库如何使用系统的物理空间,模式对象及其之间的关系则描述关系数据库之间的设计。一个数据块从逻辑上是由一个或多个表空间组成,表空间是数据块中物理编组的数据仓库,每个表空间由段构成,段由一组区组成,一个区由连续的数据块组成。1、表空间表空间分类:Oracle中除了用户创建的存放数据对象的数据表空间外,还有以下类型的表空间:1)System表空间(SystemTableSpace)2)回滚表空间(RollBackTableSpace)3)临时表空间(TempTableSpace)系统表空间(SystemTableSpace):是每个Oracle数据库必须具备部分,安装时自动建立,存放表空间名称、表空间所含数据文件等管理数据库自身所需信息;如:数据字典、存储过程、包、函数和触发器定义、系统回滚段、数据库对象定义,用户过程等。每个Oracle数据库必须至少有个默认表空间。系统表空间只保存属于数据库自身的相关数据,用户对象和数据保存在非系统表空间中。临时表空间(TempTableSpace):是Oracle用于存储实例运行过程中产生的所有临时数据,如执行SQL语句产生的临时表;类似于数据库白板或草稿纸,记录数据和进行的操作。可以有多个临时表空间;无临时表空间将使用(SystemTableSpace)回滚表空间(RollBackTableSpace)所有Oracle数据库都需要在一个地方保存恢复信息(Undo),用于存放回滚段(RollbackSegment)的表空间称为回滚或简称RBS。Oracle将不完整或临时中止的事务恢复的功能放在其核心功能中;2)表空间使用,在数据库中使用多个表空间具有如下优势:能将数据字典与用户数据分,避免因字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突。将回退数据与用户数据分离,避免因硬盘损坏而导致永久性数据丢失。将表空间数据文件分散保存到不同硬盘上,平均分布物理I/O操作。将某个表空间设置为脱机状态或联机状态,对数据库的一部分进行备份和恢复。将某个表空间设置为只读,将数据库的一部分设置为只读状态。为某种特殊用途专门设置一个表空间,比如临时表空间等,优化表空间的使用效率。更加灵活地为用户设置表空间限额。3)表空间中对象存储若表空间只对应一个数据文件,该表空间中所有对象都存储在此数据文件中。若表空间对应于多个数据文件,可将一个对象的数据存储在该表空间的任意一个数据文件中,也可将同一个对象的数据分布在表空间的多个数据文件中。2、段1)数据段数据段中保存表中记录。用CREATE语句创建表或簇时,Oracle自动创建数据段。Oracle中所有未分区的表都使用一个段来保存数据,而分区的表将为每个分区建立一个独立数据段。2)索引段在使用CREATEINDEX语句创建索引时,Oracle为一个索引或一个索引分区创建索引段。在Oracle数据库中每个未分区索引都有一个索引段保存索引中索引条目。对于一个分区索引,每个分区都有一个索引段保存它的数据。3)临时段当处理查询时,Oracle可能会需要使用到一些临时存储空间,用于临时保存解析过的查询语句以及在排序过程中产生的临时数据。Oracle会自动在专门用于存储临时数据的表空间为操作分配临时段。4)回退段:回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值),作用主要有以下几方面:事务回滚事务恢复读一致性3、区区是由很多连续的数据块组成的数据库存储空间。缺省情况下,数据库会使用表空间中存储的存储参数来管理他们的区。主要的几个存储参数:Initial:段建立时分配的第一个区的大小(单位:字节)Next:段内分配的下一个增量区大小(单位:字节)MaxExtents:分配给段的区总数。MinExtents:建立段时分配的区的总数,也就是段的最小区数量。PctEncrease:为段分配的每个增量区超过上一个区的百分比。Initrans:为初试数量的DML事务条目(并发访问数据块中的行)保留的预分配空间数量。Ntkxtrans:当多个事务同时访问同一数据块的行时,为数据块中每个DML事务的条目分配的空间。4、数据库块数据库块也称逻辑块或Oracle块,对应磁盘上一个或多个物理块,大小由初始化参数(db_block_size)在文件(init.ora)决定,典型大小是2k。Pckfree和Pctused两个参数用来优化数据块空间的使用。

PCTFREE:块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此上限时,新的数据将不能再插入到此块中;

PCTUSED:指定块中数据使用空间的最低百分比;5、模式对象Oracle数据库的模式对象包括表、视图、序列、同义词、索引、触发器、存储过程等。三、内存结构系统全局区、软件代码区、程序全局区和排序区。1、系统全局区(SGA):是实例的主要部分SGA是内存结构的主要组成部分,是Oracle为一个实例分配的一组共享内存缓冲区,保存着Oracle系统与所有数据库用户的共享信息,包括数据维护、SQL语句分析,重做日志管理等。数据块缓冲区存放Oracle系统最近从数据文件中读取的数据块。又称用户数据高速缓冲区,为所有与该实例相链接的用户进程所共享。容量受物理容量限制。在Oracle9i中,缓存大小可直接由初始化参数DB_ACHESIZE指定,该参数可以直接以KB字节或MB字节为单位来设置数据库缓存大小。字典缓冲区字典缓冲区用于保存数据字典中的行。数据字典缓冲区也通过最近最少使用(LRU)算法来管理。大小由数据库内部管理。字典缓存区是SQL共享池的一部分,共享池的大小(以字节为单位)由数据库文件init.ora中的Shared_pool_size参数来设置。重做日志缓冲区对数据库进行修改的任何事务(Transaction)在记录到重做日志之前都必须首先放到重做日志缓冲区(RedoLogBuffer.)中。重做日志缓冲区是专为此开辟的一块内存区域,重做日志缓存中的内容将被LGWR后台进程随时写入重做日志文件。共享SQL池(SharedSQLPool)相当于程序高速缓冲区,所有的用户程序都存放在共享SQL池中。包括库高速缓存、数据字典高速缓存和服务器控制结构。共享池大小取决于init.ora文件参数Shared_pool_size,以字节为单位用户必须将该值设得足够大,以确保有足够可用空间来装载和存储PL/SQL块和SQL语句。Java池:Java池为Java命令提供语法分析多缓冲池:缓冲池把大数据集与其他的应用程序分开,以减少它们争夺数据块缓冲区内相同的资源。可在SGA中创建多个缓冲池。2、程序全局区PGA(ProgramGlobalArea,PGA)是单个Oracle进程使用的内存区域,不属于实例的内存结构。含有单个进程工作时需要的数据和控制信息,PGA是非共享的,只有服务进程本身才能够访问它自己的PGA区。3、排序区排序区存在于请求排序的用户进程的内存中,由于排序需要内存空间,Oracle利用该内存排序数据,这部分空间称为排序区。该空间的大小为适应排序数据量的大小,可增长,但受初始化参数:Sort_area_sizer所限制。4、软件代码区:用于存储正在执行的或可以执行的程序代码。是只读,可安装成共享或非共享。Oracle系统程序是共享的,多个Oracle用户可存取它,无需在内存有多个副本。用户程序可以共享也可以不共享。四、数据库实例与进程1、Oracle数据库实例数据库是指物理上的数据库文件或逻辑上的数据库结构。基于之上管理和控制物理数据库的软件系统,称为数据库管理系统(DBMS)。数据库实例是指软件系统中用来访问数据库文件集的存储结构以及后台进程的集合,它是存取和控制数据库的软件机制。2、进程进程又称任务,一个进程执行一组操作,完成一个特定的任务。对Oracle数据库管理系统来说,进程由用户进程、服务器进程和后台进程所组成。进程与程序的区别在于前者是一个动态概念,后者是一个静态实体;程序仅仅是指令的有序集合,而进程则强调执行过程。进程可以动态地创建,完成任务后即会消亡。用户进程当用户运行一个应用程序时,系统就为它建立一个用户进程。用户进程执行的是一个应用程序或Oracle工具程序的代码,以完成用户所指定的任务。用户进程不是实例。服务器进程服务器进程处理与应用程序相连的用户进程的请求,它与用户进程相通讯,为相连的用户进程的Oracle请求服务。3、后台进程Oracle的后台进程主要包括:SMON——系统监控进程(SystemMonitor)PMON——进程监控进程(Processmonitor)DBWR——数据库写进程LGWR——日志文件写进程ARCH——归档进程(Archiverprocess)RECO——恢复进程LCKN——封锁进程进程名功能数据库书写进程DBWR将修改过的数据块写回到数据文件日志书写进程LGWR将重做日志记录写回到联机日志文件系统监视进程SMON执行崩溃恢复和联合自由空间进程监视进程PMON查看进程是否过早断开,释放任何容纳的锁,并处理任何其它必要的清除任务检查点进程CKPT定期检查数据库归档进程ARCH将已写满的联机日志文件复制到归档日志文件队列监视进程QMON管理消息队列恢复进程RECO在分布式数据库中恢复失败的事务Oracle典型后台进程功能五、数据字典数据字典是Oracle数据库的核心组件,对用户是只读类型表和视图组成。保存着关于数据库系统本身以及其中存储的所有对象的基本信息数据库对象中所有框架对象的定义,如表、视图、索引、群集、同义词、序列、过程、函数、包、触发器等框架对象如何分配和使用空间列默认值完整性约束信息安全信息,如用户、权限、角色审计信息数据字典表和视图均保存在系统表空间1、数据字典的结构一个数据字典包括基础表,动态性能视图及数据字典视图。数据字典视图又包含ALL视图,USER视图和DBA视图。1)基础表存储相关数据库信息的表,这些数据库的信息包括表、索引、约束,以及所有其他数据库对象结构的信息。它们属于SYS用户,通过运行SQL脚本来创建(在数据库创建时自动发生)。是Oracle系统的核心。只有Oracle才能写和读取这些表。基础表中的存储的信息通常是经过加密处理的。大部分数据字典基础表的名称中都包含“$”等特殊字符。2)动态性能视图在操作过程中,Oracle维护了一种“虚拟”表的集合,记录当前数据库的活动。这些表称为动态性能表。SYS拥有动态性能表,其名字都是以V_$开头的。在这些表上面创建的视图被称为动态性能视图(dynamicperformanceview)。可为这些视图创建公共同义词,同义词名称以V$开头。3)ALL视图包含了用户查询表时可以访问的所有对象的信息。4)USER视图前缀为USER,每个数据库用户都拥有一套属于自己的USER视图。在USER视图中包含了该用户模式下所有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论