您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > oracle讲义04
Oracle讲义姓名:舒志新Email:shuzx1981@gmail.com本章目标为什么必须理解体系结构Oracle9i数据库体系结构Oracle9i物理结构Oracle9i逻辑结构Oracle9i内存结构Oracle9i内存参数改变Oracle9i实例的进程结构Oracle9i数据库体系结构这一部分中的内容并不涉及任何具体的Oracle操作,而是包括对整个Oracle数据库系统的体系结构和基础理论的详细介绍。也许在学习这一部分内容时会感到比较枯燥,但请记住,这些知识对于一名合格的DBA来说是必需的,它对全面深入地掌握Oracle数据库系统的特征与功能是至关重要的。对于初学者来说,体系结构与基本理论的学习由于会涉及到大量新的概念和术语,初次接触这些内容会感到有些吃力,直接开始学习Oracle的基本管理操作和应用程序编写,似乎可以获得更明显的学习效果。但是,就好像泥瓦匠与土木工程师的区别一样,如果仅仅是学习如何在工地中建造房屋,充其量只能成为一名熟练的泥瓦匠,而土木工程师与泥瓦匠的区别就在于他对技术理论的深入掌握。相信你的目的并不是仅仅成为一位Oracle数据库操作员,而是要成为一位合格的Oracle数据库DBA,那么,你现在就需要从掌握理论开始。这就是因为你已经对Oracle系统的整体架构有了一定的理解,可以从更高的角度来学习具体操作。事实上,许多DBA的实际学习经验表明,首先学习Oracle数据库的理论知识,比直接从学习数据库操作入手能获得更加良好的学习效率。如果在阅读过程中无法完全理解本部分中的内容,也没有关系,现在你所做的只是初步记忆,获得对概念的初步认识即可。当进入后面其它各部分后,如果遇到相关的具体操作问题,可以回头重读本部分中关于这些问题的理论解释,相信这样可以获得更加深入的理解。Oracle存储结构数据库的主要功能是保存数据,实际上可以将数据库看做是存储数据的容器。数据库的存储结构也就是数据库存储数据的方式。Oracle数据库的存储结构分为逻辑存储结构与物理存储结构两个相互独立但又密切相关的部分。逻辑存储结构主要用于描述在Oracle内部的组织和管理数据的方式,而物理存储结构利用描述在Oracle外部,即操作系统中组织和管理数据的方式。Oracle对逻辑存储结构和物理存储结构的管理是分别进行的,两者之间不直接影响。因此Oracle的逻辑存储结构能够适用于不同的操作系统平台和硬件平台,而不需要考虑物理实现方式。通过本章的学习,你将会对Oracle数据库的物理和逻辑存储方式有一个基本的认识,理解两种存储方式的基本概念与结构组成,并且对于块、区、段、表空间,以及数据文件、控制文件、重做日志文件等Oracle基本组件的概念和工作机制有一个初步的认识。1、逻辑存储结构概术逻辑存储结构是Oracle数据库存储结构的核心内容。无论是执行日常管理操作、数据库的备份与恢复,还是进行性能优化,DBA对必须对数据库的逻辑存储结构有清晰的理解。在本节中,将深入讨论Oracle数据库逻辑存储结构的组成方式与工作机理。1.1逻辑结构单元类型a、块块是Oracle用来管理存储空间的最基本单元,也是最小的逻辑存储单元,Oracle数据库在进行输入输出操作时,都是以块为单位进行逻辑读写的操作的。如果你已有一些计算机操作系统的相关知识,这时一定会联想到操作系统中的块。Oracle块与操作系统块有十分密切的关系——一个Oracle块由一个或多个操作系统块组成,也就是说,Oracle块的大小必须是操作系统块大小的整倍数。Oracle块的大小在数据库创建时决定,以后不能再更改。b、区区是比块高一级的逻辑存储结构,区由一系列连续的块组成,当用户在数据库中新建一个表,并且向表中插入数据时,Oracle需要在表空间中为这个表分配存储空间。Oracle并不是一个块一个块地进行存储空间分配的,而是将多个连续的块一次性分配给表对象,这些连续的块在回收存储空间时也是一起回收,它们就组成了一个区。简单地说,Oracle在进行存储空间分配、回收和管理时是以块为基本单位的。c、段段是比区更高一级的逻辑存储结构。段由多个区组成,这些区可以是连续的,也可以是不连续的。当用户在数据库中创建各种具有实际存储结构的对象时(保存有数据的对象),比如表、索引等,Oracle将成为这些对象创建段,对象的数据将全部保存在它的段中,一般情况下一个对象只拥有一个段。段有很对种类型,不同类型的数据库对象拥有不同类型的段。比如,表所对应的段称为数据段,索引所对应的段称为索引段。每个段在创建时都会分配一定指定数目的初始区,当段中初始区的存储空间都使用完后,Oracle将继续为段分配新的区。D、表空间表空间是最高一级的逻辑存储结构,数据库就是若干个表空间组成的。段以及它所包含的表空间中,如SALB销售表空间,HR人力资源管理表空间等。这样对数据库进行划分能够保证各个应用之间的数据相互独立。每个数据库都由一个或多个表空间组成,在创建数据库时会自动创建一个默认的SYSTEM表空间。2、逻辑结构单元关系块、区、段和空间之间的关系可以通过下面这个比喻形象地说明:块可以看作为一张张空白的纸,多张纸订成一本可以看作为区。当需要记录数据时,得到的是一个空白的本子,我们将在这个本子的每一页上记录数据,如果本子全部写满,则需要获得另一个新的空白本子,写满数据的本子将放在一个文件袋中,这个文件袋就是段。多个文件将被放入一个文件柜中,这个文件柜就是表空间。而整个数据库正是由多个文件柜组成的,每个文件柜中存放的是与某一特定类型应用相关的所有文件。注意:表空间虽然属于数据库逻辑存储结构的范畴,但它与数据库物理存储结构有着相对比较密切的关系,因此在本章中将表空间放在数据库物理存储结构中介绍。除了上述四种逻辑存储结构之外,还有一种对象虽然不是严格意义上的存储结构,但本书也将它归入数据逻辑存储结构,这就是“模式”。在Oracle中,模式是一个十分重要的概念。模式是一组数据库对象的集合,它属于一个数据库用户。模式并不是直接与表空间、段、区等逻辑存储结构产生联系,而是包含表、索引、视图、同义词、存储过程、触发器等数据库对象。2、块的管理a、块的概念块是Oracle用来管理存储空间的最小的单元,也是数据库执行输入输出操作时的最小单位。相对应地,操作系统执行输入输出操作的最小单位为一个操作系统块的大小。在操作系统中,执行的I/O操作以操作系统块为单位,这种I/O操作被称为“物理I/O”。而在Oracle中,执行的I/O操作都是以块为单位的,因此这种I/O操作被称为“逻辑I/O”。Oracle块的大小是操作系统块大小的整倍数。以WindowsNT/2000操作系统为例,NTFS格式的硬盘分区一般具有4KB大小的操作系统块,因此Oracle块的大小可以是4KB、8KB等。注意:一定要分清Oracle块和操作系统块的区别。b、块的结构块的标准大小由初始化参数DB_BLOCK_SIZE指定,具有标准大小的块被称为标准块。Oracle9i支持在同一个数据库中使用多种大小的块,与标准块大小不同的块被成为非标准块。块结构的组成对于块的内部存储结构,需要掌握它的基本结构和存储空间管理。在块中可以存储各种类型的数据,如表数据、索引数据、簇数据等。无论块中存放的是何种类型的数据,块都具有相同的结构,如图显示的是一个Oracle块的基本结构。•块头部块头部中包含块的一般属性信息,如块的物理地址、块所属的段的类型(如数据段、索引段、回退段等)。•表目录如果块中存储的数据是表数据(表中的一行或多行记录),则在行目录中保存这些记录的相关信息,比如ROWID等。块头部、表目录和行目录共同组成块的块头部信息(Overhead)。块头部信息区中并不存放实际的数据库数据,它的地位类似于硬盘逻辑分区中的文件分配表(FAT)。如果头部信息损坏,整个块将失效,块中存储的数据将丢失。头部信息区中某些部分的大小是固定的,某些部分的大小是变化的,它的总大小介于84-107B之间。比如,在创建表时,可以为它设置INITRANS与MAXTRNS两个存储参数。这两个存储参数的功能是指定所允许的并发操作这个表的事务数目。每当一个事务访问表中某个数据块时,事务将会在相应的数据块的头部信息区中保存一个条目,用于标记该事务正在使用这个数据块。当头部信息区中由于存储事务条目的空间用尽后,在当前使用这个数据块的事务终止之前,Oracle不允许任何其它事务再访问这个数据块。块的存储区空闲空间是块中尚未使用的存储空间。向块中写入新的数据会减少块中的空闲空间。另外,修改块中已有的数据也有可能会减少块中的空闲空间。比如,在某个数据块中保存有一条记录,原谅该记录中某个字段为NULL,执行UPDATE语句修改后该字段不再为NULL,这时块中的空闲空间将减少。提示:如果在执行NPDATE操作时块中具有足够的空闲空间,则记录仍然能够完整地保存在一个块中;否则这些操作会申请使用新的块,从而导致一条记录被存放在多个不相邻的块中,产生记录链接现象,这会降低数据库的查询性能。最大程度地避免在数据库中产生过多的记录链接,是数据库性能优化的重要目标之一。关于记录链接的问题我们后面还会进行详细讨论。行空间行空间是块中已经使用的空间。在行空间中保存数据库对象的数据,比如表中的一行或多行记录,索引中的多个索引条目等。空闲空间和行空间共同构成块的存储区,空闲空间和行空间的总和既是块的总容量。3、块的存储空间管理对于DBA来说,针对块的管理工作主要是对块中的可用存储空间进行管理。简单地说,既是确定在块中必须保留多少空闲空间,以避免在执行UPDATE等操作时由于块中的空闲空间不足,而产生记录链接等不利于数据库性能的现象。块的存储空间管理能够以自动和手工两种方式进行。如果在创建表空间时用的是本地管理方式,并且当段的存储空间管理方式设置为AUTO,Oracle将自动管理表空间中所有块的空闲存储空间。否则,DBA可以通过为段设置PCEFREE和PCTUSED两个存储参数,通过手工方式来管理块的空闲存储空间。以自动管理块的存储空间具有不少优点,比如易于操作、更适用于多实例数据库等,但在很多情况下,DBA仍然需要使用手工方式来管理块的存储空间。因为在手工管理方式下,DBA能够更加精确地根据当前应用的特点来调整数据库的存储特性。此外,自动管理方式也是手工管理方式的基础上实现的,理解手工管理方式的基本原理对于DBA来说也是必要的。下面我们将详细介绍PCEFREE和PCTUSED两个参数对块的空闲存储空间的控制机制。提示:这部分内容如果你现在无法完全理解,可以只做大致的浏览。当在本书后面学习到表空间,表以及索引的具体管理操作时,你再结合这一部分进行阅读,就能够获得对块的存储空间管理的深入理解。手工方式管理块存储空间将使用到两个存储参数:PCTFREE和PCTRSED。在创建表空间或表时,如果在CREATE语句中设置了PCTFREE和PCTUSED参数。就可以控制新建的表空间或表中所以块的存储空间管理方式。此外,也可以在表、索引等数据库对象创建之后再修改它们的PCTFREE和PCTUSEE参数。下面分别对PCTFREE和PCTRSED参数的工作机制进行介绍。提示:PCTFREE和PCTRSED参数适用于表空间与段。之所以能够对表、索引等对象设置PCTFREE和PCTRSED参数,是因为它们都具有独立的段结构。•PCTFREE参数PCTFREE参数用于指定块中必须保留的最小空闲空间比例。之所以要为块保留一些空闲空间,是因为在对块中存储的数据进行修改时(UPDATE操作),有可能会需要更多的存储空间。这时如果块中存储空间不足,就必须分配新的块。这样就会产生记录链接现象(本来可以存储在一个块中的一行记录被存储到了两个块中),因此Oracle必须读取多个块才能获得一条完整的记录,这样会影响到表的I/O性能。PCTFREE参数指定的是一个百分数,比如:PCTFREE20在这种情况下,指定的表空间或段中所有的块都会保留20%的存储空间,以防
本文标题:oracle讲义04
链接地址:https://www.777doc.com/doc-13089 .html