9-Oracle数据库逻辑结构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第九讲数据库逻辑结构本章学习目标Oracle对逻辑存储结构和物理存储结构的管理是分别进行的,Oracle的逻辑存储结构能够适用于不同的操作系统平台和硬件平台。本章介绍Oracle数据库的逻辑结构,即表空间、扩展区、段和数据块的概念及管理方法。学习内容9.1数据库逻辑结构概述9.2数据块9.3扩展区9.4段9.5表空间及其管理9.1数据库逻辑结构概述9.1.1逻辑结构9.1.2逻辑结构与物理结构的对应关系表空间数据块扩展区段数据库数据文件数据存储单位数据块最小的逻辑存储单位,由多个操作系统块组成扩展区一组连续的数据块段有共同结构的一个或几个扩展区,数据对象(Table,Index,等)以段的形式存在表空间逻辑上用来保存各种段,物理上由多个操作系统文件组成。文件属于某个表空间的物理文件逻辑结构与物理结构的对应关系表空间段扩展区数据块数据文件操作系统块数据库从物理上看,一个数据库是由一到多个数据文件(datafile)组成;一个数据文件是由一到多个操作系统块(osblock)组成。从逻辑和物理存储结构的联系来看,一个表空间是由多个数据文件组成,一个数据文件是由多个扩展区组成,一个数据库块是由多个操作系统块组成。一个数据库块是Oracle最小的逻辑存储单位,一个操作系统块是进行I/O的最小单位。9.2数据块9.2.1数据块的概念与结构9.2.2块空间的使用及存储参数9.2.3行链接和行迁移行数据空闲空间块管理数据9.2.1数据块的概念与结构数据块(BLOCK)块头包含一般的块信息,如块的地址,所属段的类型等表目录包含数据区每行数据的地址行目录包含块中存储数据所属表的信息块管理数据的结构数据块概念小结数据块为Oracle分配、读或写的最小的存储单元,又称逻辑块或ORACLE块。一个数据块对应一个或多个从现有数据文件中分配的操作系统块,每个Oracle数据库的数据块大小由初始化参数db_block_size在创建数据库时指定。数据块的大小应该是操作系统块的整数倍,数据块大小的最大值取决于操作系统9.2.2块空间的使用及存储参数行数据PCTFREE=20%PCTUSED=40%空闲空间块管理数据空闲空间块空间的使用InsertsInsertsInsertsInserts1234PCTFREE=20PCTUSED=4080%80%40%PCTFREEPCTFREE参数给出保留空间的最小百分比,用于行的UPDATE操作。在遭遇到PCTFREE后,这块被填满且不能进行INSERT操作。PCTFREE的影响PCTFREE低高1、可把块填得较满2、易引起行迁移1、剩下多的空间给以后修改用2、需更多的块存数据3、易引起行链和重组数据的代价PCTUSED当块中数据加上头和目录数据的百分比小于PCTUSED时,可以插入数据。数据块(Block)的存储参数默认值:Pctfree10Pctfree,Pctused互相消涨,其和不超过100Pctused40Inittrans1或2单一块中最初活动的事务数Maxtrans255单一块中最大事务数常见的几种分配方案:大量Update操作Pcrfree20Pctused40大量Insert,Select,少量UpdatePctfree5Pctused60体积大的表,Select较多Pctfree5Pctused90仅仅用于查询的Pctfree09.2.3行链接和行迁移行链接发生于插入时行太长,数据块放不下,该行数据存放在该段的多个数据块中行迁移发生于修改时修改后行变长,空闲空间不够,该行数据被整个迁移到另一个数据块中。行迁移BeforeupdateAfterupdate9.3扩展区9.3.1扩展区的概念9.3.2扩展区的分配和释放9.3.3扩展区的参数设置9.3.1扩展区的概念一个区是一组连续的Oracle块。Oracle按区向段分配空间,当段创建后,它至少由一个区组成。区是Oracle存储分配的最小单位。一个区不能跨越数据文件,一个区只能惟一地属于一个数据文件。9.3.2扩展区的分配和释放下述情况下向段分配扩展区+段创建时+扩展时下述情况下从段释放扩展区+删除对象时(Drop)+清空数据时(Truncated)+自动改变大小时(仅对回滚段)9.3.3扩展区的参数设置Extent有关的参数initial最初分配的空间next下一步分配的空间数maxextents段生成时最大分配extent数Minextents段生成时最小分配extent数pctincrease增长率optimal尽量设小(缺省为空,仅用回滚段)表空间、表、索引、分区、快照、快照日志的存储参数默认值最小值Initial5个数据块2个数据块Next5个数据块1个数据块Minextents11Maxextents根据数据块大小而定1Pctincrease500推荐使用:大小一致的,增长率较低存储分配initial=next表空间的pctincrease1其它数据对象pctincrease0对象级的存储参数设置值覆盖表空间级的设置未在对象级设置存储参数,由表空间级的设置决定未在表空间级设置存储参数,由Oracle数据库级参数设置决定存储参数改变后,新的选项只针对未分配的extents有效。存储参数的设定规则9.4段9.4.1段的概念9.4.2段的分类9.4.3查询段信息9.4.1段的概念段是为表空间内特定逻辑存储结构分配的空间。例如分配给表的所有存储空间是一个段。段无法跨越表空间,但是段可以跨越属于一个表空间的多个数据文件。每个段由一个或多个区组成。DBA_SEGMENTS中保存段的有关信息9.4.2段的分类数据段一个数据段可存放一个未经分区的表或聚簇,也可以存放表的一个分区。索引段保存索引中的索引条目临时段存放排序操作中生成的临时表的数据回滚段存放事务所修改数据的旧值,当进行回退操作或实例失败时使用。9.4.3查询段信息DBA_SEGMENTS–一般信息–OWNERSEGMENT_NAME–SEGMENT_TYPE–TABLESPACE_NAME–大小–EXTENTS–BLOCKS–存储参数–INITIAL_EXTENT–NEXT_EXTENT–MIN_EXTENTS–MAX_EXTENTS–PCT_INCREASE获得已用子段的信息DBA_EXTENTS–标识信息–OWNER–SEGMENT_NAME–EXTENT_ID–位置和大小–TABLESPACE_NAME–FILE_ID–BLOCK_ID(该区的第一个块的块号)–BLOCKS检查空闲子段的信息DBA_FREE_SPACE–位置和大小–TABLESPACE_NAME–FILE_ID–BLOCK_ID(该文件自由段的第一个块号)–BLOCKS(该自由段占用的块数)9.5表空间及其管理9.5.1表空间的概念9.5.2表空间分类9.5.3表空间的存储管理方式9.5.4表空间管理9.5.1表空间的概念从逻辑上看,数据库中的数据存储在表空间中,而从物理上看,则是存储在与表空间对应的数据文件中。在一个表空间中可以有多个同它有关联的数据文件,但一个数据文件只能属于一个表空间,表空间的大小是它所对应的数据文件大小的总和。9.5.2表空间分类系统表空间在创建数据库时,Oracle将会创建SYSTEM表空间。所有数据词典对象都存储在这一表空间中。一般不放用户的数据,但是用户脚本,如过程,函数,包等却是保存在数据字典中的。非系统表空间(1)临时表空间:存放用户的排序等临时数据,临时段占有的空间会在下次系统启动的时候全部被释放(2)回滚段表空间:临时存放修改前的数据(3)用户表空间:一般是由用户建立,来存取用户数据(包括索引)的表空间。多个表空间的优势将数据字典与用户数据分离开来,避免由于字典对象和用户对象保存在同一个数据文件中而产生的I/O冲突。将回退数据与用户数据分离开来,避免由于硬盘损坏而导致永久性的数据丢失。将表空间的数据文件分散保存到不同的硬盘上,平均分布物理I/O操作。能够将某个表空间设置为脱机状态或联机状态,以便对数据库的一部分进行备份和恢复。能够将某个表空间设置为只读状态,从而将数据库的一部分设置为只读状态。能够为某种特殊用途专门设置一个表空间,比如临时表空间等,以优化表空间的使用效率。能够更加灵活地为用户设置表空间限额9.5.3表空间的存储管理方式字典管理方式表空间的扩展区管理信息保存在system表空间的数据字典中,称为“字典管理方式”。本地管理方式在本地管理的表空间中,每个数据文件内都维护一个位图,以了解该数据文件内块的空闲或使用状态,被称为“本地管理方式”。9.5.4表空间管理9.5.4.1创建表空间9.5.4.2修改表空间9.5.4.3删除表空间9.5.4.4表空间及数据文件信息查询9.5.4.5注意问题9.5.4.1创建表空间创建字典管理表空间创建本地管理表空间创建临时表空间创建字典管理表空间CREATETABLESPACEtestspaceDATAFILE‘f:\orcl\testspace1.dbf'SIZE100M,‘f:\orcl\testspace2.dbf'SIZE100MDEFAULTSTORAGE(INITIAL128KNEXT128KMINEXTENTS1MAXEXTENTSUNLIMITEDPCTINCREASE0)EXTENTMANAGEMENTDICTIONARY;CREATETABLESPACEuser_dataDATAFILE‘f:\orcl\user_data_01.dbf'SIZE500MEXTENTMANAGEMENTLOCALUNIFORMSIZE10M;创建本地管理表空间不能指定createtablespace的defaultstorage和minimumextent子句。所有段的初始区和后续区可以具有统一的大小(UNIFORM),也可以由Oracle来自动决定后续区的大小和增加方式(AUTOALLOCATE)。创建临时表空间如果没有为数据库用户指定一个专门的临时表空间,这些临时数据在默认情况下将存储在system表空间中,这样做的结果是会占用system表空间的存储空间,并且频繁地分配和释放临时段会在system表空间中产生大量的存储碎片,从而影响整个数据库的性能。为了避免在system表空间内存储临时数据,DBA应当在数据库中创建一个专门用来存储临时数据的临时表空间,创建字典管理的临时表空间createtablespacetempdatafile‘f:\orcl\temp01.dbf’size300Mdefaultstorage(initial2Mnext2Mpctincrease0maxextentsunlimited)extentmanagementdictionarytemporary;创建本地管理的临时表空间createtemporarytablespacetemptempfile‘f:\orcl\temp_01.dbf’size500Mextentmanagementlocaluniformsize10M;9.5.4.2修改表空间改变表空间存储设置改变表空间状态改变表空间尺寸重定位数据文件改变表空间存储设置使用命令altertablespace命令来改变表空间的缺省存储定义AlterTABLESPACEtablespace{minimumextentinteger[k|m]|defaultstorage_clause}例1:将表空间中区的最小尺寸定义为2Maltertablespaceapp_dataminimumextent2m;例2:将表空间的缺省存储参数定义为第一个区大小2M,第二个区大小2M,每个段最多分配999个区altertablespaceapp_datadefaultstorage(initial2mnext2mmaxextents999);改变表空

1 / 75
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功