Oracle逻辑存储结构.ppt
第二篇,体系结构篇,5.1 Oracle数据库系统结构,Oracle数据库的存储结构分为物理存储结构和逻辑存储结构物理存储结构主要用于描述Oracle数据库外部数据的存储,即在操作系统中如何组织和管理数据逻辑存储结构主要描述Oracle数据库内部数据的组织和管理方式。逻辑存储结构从用户角度描述数据的组织形式物理存储结构是逻辑存储结构在物理上的、可见的、可操作的、具体的体现形式,物理结构,Oracle数据库物理结构,逻辑结构,Oracle数据库逻辑结构,数据库,数据表,索引,存储过程,数据表,索引,存储过程,Oracle 数据库系统结构由数据库实例和物理存储结构组成。,7-12周 周二7-8节 上机 信息楼三楼 大软作业课本P93 第1题(1)(3)P94第2题(1)(2)(3),复习 Oracle数据库系统结构,Oracle数据库的存储结构分为物理存储结构和逻辑存储结构物理存储结构主要用于描述在操作系统中如何组织和管理数据,逻辑存储结构从用户角度描述数据的组织形式,数据库,数据表,索引,存储过程,第6章 逻辑存储结构,本章内容,Oracle逻辑存储结构概述表空间数据块区段,6.1 逻辑存储结构概述,逻辑存储结构数据块:BLOCK 数据库中最小的I/O单元区:EXTENT 由若干连续的数据块组成,是数据库中最小的存储分配单元段:SEGMENT 由若干区组成,存储相同类型数据表空间:TABLESPACE 由若干段组成,是最大的存储逻辑单元,所有表空间构成数据库,6.2 表空间,6.2.1 表空间概述1.表空间的概念Oracle数据库在逻辑上可以划分为一系列的逻辑空间,每一个逻辑空间就可以称为一个表空间。一个数据库由有一个或多个表空间构成,不同表空间用于存放不同应用的数据。一个表空间对应一个或多个数据文件,数据文件大小决定了表空间的大小。一个数据文件只能从属于一个表空间。,数据表,索引,存储过程,表空间是数据库对象的容器,一个数据库对象只能存储在一个表空间中,但可以存储在该表空间所对应的一个或多个数据文件中。数据库、表空间、数据文件、数据库对象之间的关系,数据库对象7,2.表空间的分类(1)系统表空间 SYSTEM 表空间,主要存储:数据库的数据字典;PL/SQL程序的源代码和解释代码;数据库对象的定义等不应把用户数据放在SYSTEM表空间中SYSAUX表空间 辅助系统表空间在通常情况下,不允许删除、重命名及传输SYSAUX表空间。,(2)非系统表空间 撤销表空间 专门进行回滚信息的自动管理由回滚段构成,不包含其他信息由UNDO_TABLESPACE初始化参数设置临时表空间进行临时数据管理,会话结束时自动释放在创建用户时,为用户指定默认临时表空间,通常不使用SYSTEM表空间作为临时表空间用户表空间 保存用户数据建议为每个用户建立独立表空间,事务的结束方式,事务:是一组数据库操作的集合,由一组相关的SQL语句组成事务结束方式1.提交:用户执行COMMIT命令或系统自动提交。事务所作的修改写入数据库文件,释放占用资源2.回滚:用户执行ROLLBACK命令 事务中所有的操作被取消,数据库恢复到事务开始之前的状态,释放占用资源,(3)大文件表空间与小文件表空间 大文件表空间是指一个表空间只包含一个大数据文件,该文件的最大尺寸为128TB或32TB系统默认创建的表空间称为小文件表空间,可以包含最多1024个数据文件,3.表空间的管理方式根据表空间中数据区的管理方式不同,表空间分为字典管理方式和本地管理方式字典管理方式表空间使用数据字典来管理存储空间的分配当进行区的分配与回收时,Oracle将对数据字典中的信息进行更新字典管理方式将渐渐被淘汰。,数据字典,数据字典是在数据库创建过程中创建的,保存了数据库的系统信息以及数据库中所有对象的信息,是数据库系统运行的基础数据字典由一系列表和视图构成,这些表和视图对于所有的用户都是只读的只有Oracle系统才可以对数据字典进行管理与维护在Oracle数据库中,所有数据字典表和视图都属于存储于SYSTEM表空间中,本地管理方式区的分配和管理信息都存储在表空间本身的数据文件中,而与数据字典无关。表空间在每个数据文件中维护一个“位图”结构,用于记录表空间中所有区的分配情况区在分配与回收时,Oracle将对数据文件中的位图进行更新,不会产生回滚信息或重做信息。,表空间本地管理方式的优势:由于在区分配与回收过程中不需要对数据字典进行访问能够避免表空间存储管理操作中的递归现象能够在保留可查询性同时,将整个数据库设置为只读状态。简化了表空间的存储管理降低了用户对数据字典的依赖性。不存在磁盘碎片问题,4.表空间管理策略系统表空间用于存储Oracle自身数据,建议将所有的用户数据保存到其他表空间中将数据字典与用户数据分离。将回滚数据与用户数据分离。将表空间的数据文件保存到不同的硬盘上为不同的应用创建独立的表空间。能够将表空间设置为脱机状态或联机状态。能够将表空间设置为只读状态。能够为某种特殊用途专门设置一个表空间。能够更加灵活地为用户设置表空间配额。,6.2.2 表空间的管理(本地管理方式),创建表空间修改表空间表空间的备份删除表空间大文件表空间的管理 表空间信息查询利用OEM管理表空间,利用OEM创建表空间,管理属性页存储表空间,创建表空间,1 使用语句创建表空间,表空间名称不能超过30个字符,必须以字母开头,可以包含字母、数字以及一些特殊字符(如#、_、$)等;表空间的类型 普通表空间、临时表空间和撤销表空间;,(1).创建永久(普通)表空间,CREATE TABLESPACE语句,包含子句:设定表空间的数据文件DATAFILE表空间的管理方式 EXTENT MANAGEMENT 取值为LOCAL(默认)或DICTIONARY。区的分配方式 AUTOALLOCATE(默认)或UNIFORM SIZE段的管理方式 SEGMENT SPACE MANAGEMENT 取值为MANUAL或AUTO(默认),本地管理,数据字典,自动分配,定制分配,手动管理,自动管理,语句形式:Create Tablespace 表空间名Datafile 文件名Size 整数K|MReuseExtent Management LocalAutoallocate|Uniform Size 整数K|MSegment Space Management Manual|Auto;,例2.为ORCL数据库创建一个本地管理永久性的表空间ORCLTBS02,数据文件为E:ORACLEORCLTBS02_1.DBF大小为10M,区定制分配,每个区大小为512K,段采用手动管理方式。CREATE TABLESPACE ORCLTBS02 DATAFILEE:ORACLEORCLTBS02_1.DBF SIZE 10MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 512KSEGMENT SPACE MANAGEMENT MANUAL;,例1.为ORCL数据库创建一个本地管理永久性的表空间ORCLTBS01,数据文件为E:ORACLEORCLTBS01_1.DBF 大小为20M,区自动扩展,段采用自动管理方式CREATE TABLESPACE ORCLTBS01 DATAFILE E:ORACLEORCLTBS01_1.DBF SIZE 20M;,例3.为ORCL数据库创建一个本地管理永久性的表空间ORCLTBS03,数据文件为E:ORACLEORCLTBS03_1.DBF大小为50M,区自动扩展,段采用手动管理方式。CREATE TABLESPACE ORCLTBS03 DATAFILEE:ORACLEORCLTBS03_1.DBF SIZE 50M SEGMENT SPACE MANAGEMENT MANUAL;,(2)创建临时表空间,使用CREATE TEMPORARY TABLESPACE 语句创建临时表空间用TEMPFILE子句设置临时数据文件。需要注意的是临时表空间中区的分配方式只能是UNIFORM,而不能是AUTOALLOCATE,例5,为ORCL数据库创建一个本地管理临时表空间ORCLTEMP1,数据文件为D:ORACLEORCLTEMP1_1.DBF 大小20M,每个区大小为16M。CREATE TEMPORARY TABLESPACE ORCLTEMP1 TEMPFILE D:ORACLEORCLTEMP1_1.DBF SIZE 20M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;,临时表空间组将一个或多个临时表空间构成一个表空间组。当将临时表空间组作为数据库或用户的默认临时表空间时,用户就可以同时使用该表空间组中所有的临时表空间。临时表空间组不需要显式创建,为临时表空间组指定第一个临时表空间时隐式创建,当临时表空间组中最后一个临时表空间删除时而隐式地删除。,(3)创建撤销表空间,数据库回滚信息保存在回滚段中,撤销表空间专门用于回滚段的自动管理。如果数据库中没有创建撤销表空间,那么将使用SYSTEM表空间来自动管理回滚段。那么一个实例只能使用一个撤销表空间,可以通过参数UNDO_TABLESPACE来指定如果要使用撤销表空间对数据库回滚信息进行自动管理,则必须将初始化参数UNDO_MANAGEMENT设为AUTO。,使用CREATE UNDO TABLESPACE语句创建撤销表空间在该语句中只能指定DATAFILE和EXTENT MANAGEMENT LOCAL两个子句。例7,为ORCL数据库创建一个撤销表空间ORCLUNDO01,数据文件为E:ORACLEORCLUNDO1_1.DBF大小为20MCREATE UNDO TABLESPACE ORCLUNDO01 DATAFILE E:ORACLEORCLUNDO1_1.DBF SIZE 20M;,2.修改表空间,可以对表空间进行下列修改操作:扩展表空间 修改表空间可用性 修改表空间读/写性 设置默认表空间 表空间重命名 注意不能将本地管理的永久性表空间转换为本地管理的临时表空间,也不能修改本地管理表空间中段的管理方式。,(1)扩展表空间,为表空间添加新数据文件为永久表空间添加新的数据文件 ALTER TABLESPACEADD DATAFILE为临时表空间添加新的临时数据文件 ALTER TABLESPACE ADD TEMPFILE例8,为ORCL数据库的ORCLTBS01表空间添加一个大小为10 MB的新数据文件。ALTER TABLESPACE ADD DATAFILEE:ORACLEORCLTBS01_2.DBF SIZE 10M;,ORCLTBS01,改变已有数据文件的大小ALTER DATABASE DATAFILE RESIZE例10,将ORCL数据库的ORCLTBS01表空间的数据文件E:ORACLEORCLTBS01_2.DBF 大小增加到20 MB。ALTER DATABASE DATAFILEE:ORACLEORCLTBS01_2.DBF RESIZE 20M;,改变数据文件的扩展方式如果为数据文件指定了AUTOEXTEND ON选项,当数据文件被填满时会自动扩展。可以在创建新数据文件时设定,也可以通过修改已有数据文件设定例11,将ORCL数据库的ORCLTBS01表空间的数据文件E:ORACLEORCLTBS01_2.DBF修改为自动扩展,每次扩展5 MB空间,文件最大为100 MB。ALTER DATABASE DATAFILE E:ORACLEORCLTBS01_2.DBF AUTOEXTEND ON NEXT 5M MAXSIZE 100M;,无限制UNLIMITED,总结:扩展表空间,为表空间添加新数据文件ALTER TABLESPACEADD DATAFILEALTER TABLESPACE ADD TEMPFILE改变已有数据文件的大小ALTER DATABASE DATAFILE RESIZE改变数据文件的扩展方式AUTOEXTEND ON NEXT MAXSIZE在CREATE TABLESPACEALTER TABLESPACE ADDALTER DATABASE等语句中使用,练习,为ORCL数据库的ORCLTBS01表空间添加一个大小为20 MB的新数据文件E:ORACLEORCLTBS01_3.DBF,并且设为自动扩展,每次扩展10M,最大无限制ALTER TABLESPACE ORCLTBS01 ADD DATAFILE E:ORACLEORCLTBS01_3.DBF SIZE 20M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED;,(2)修改表空间可用性,当表空间处于联机ONLINE状态时,用户可以对其进行访问,离线状态OFFLINE的表空间是不能进行数据访问的,所对应的所有数据文件也都处于脱机状态。语法 ALTER TABLESPACEONLINE|OFFLINESYSTEM表空间,撤销表空间表,临时表空间必须是联机状态例12,将ORCLTBS01表空间设为脱机ALTER TABLESPACE ORCLTBS01 OFFLINE;,ONLINE,(3)修改表空间读写性,表空间可以是读写方式,也可以是只读方式ALTER TABLESPACE READ ONLY|READ WRITE表空间只有满足下列要求才可以转换为只读状态:表空间处于联机状态;表空间中不能包含任何活动的回退段;如果表空间正在进行联机数据库备份,不能将它设置为只读状态。例如,ALTER TABLESPACE ORCLTBS01 READ ONLY;,(4)设置默认表空间,创建用户时,用户默认的永久表空间为USERS表空间,默认临时表空间为TEMP表空间。设置数据库的默认表空间ALTER DATABASE DEFAULT TABLESPACE 设置数据库的默认临时表空间ALTER DATABASE DEFAULT TEMPORARY TABLESPACE 例16,将ORCLTBS01表空间设置为ORCL数据库的默认表空间ALTER DATABASE DEFAULT TABLESPACE ORCLTBS01;,(5)表空间重命名,ALTER TABLESPACERENAME TO在重命名表空间时该表空间ID号并没有修改如果该表空间是数据库默认表空间,那么重命名后仍然是数据库的默认表空间。不能重命名SYSTEM和SYSAUX表空间不能重命名处于脱机状态或部分数据文件处于脱机状态的表空间。例19,将表空间ORCLTBS01重命名为NEWTBALTER TABLESPACE ORCLTBS01 RENAME TO NEWTB;,3.表空间的备份,对表空间进行联机备份。基本步骤为:将表空间设置为备份模式ALTER TABLESPACEBEGIN BACKUP在操作系统中备份表空间所对应的数据文件结束表空间的备份模式ALTER TABLESPACEEND BACKUP,Oracle数据库服务器,图形客户端,Web企业管理器,SQL*PLUS,PL/SQL Developer,作业1(1),(3)数据库,表空间,数据文件以及数据库对象之间的关系,数据库,表空间1,表空间n,数据文件1,数据文件n,数据库对象,复习:创建永久(普通)表空间,CREATE TABLESPACE语句,包含子句:设定表空间的数据文件DATAFILE表空间的管理方式 EXTENT MANAGEMENT 取值为LOCAL(默认)或DICTIONARY。区的分配方式 AUTOALLOCATE(默认)或UNIFORM SIZE段的管理方式 SEGMENT SPACE MANAGEMENT 取值为MANUAL或AUTO(默认),本地管理,数据字典,自动分配,定制分配,手动管理,自动管理,语句形式:Create Tablespace 表空间名Datafile 文件名Size 整数K|MReuseExtent Management LocalAutoallocate|Uniform Size 整数K|MSegment Space Management Manual|Auto;,作业 2(1)使用SQL命令创建一个本地管理方式下自动分区管理的表空间USERTBS1,其对应的数据文件大小为20MBcreate tablespace usertbs1 Datafile(2)使用SQL命令创建一个本地管理方式下的表空间USERTBS2,要求每个分区的大小为512KB create tablespace usertbs2 datafile D:testusertbs2.dbf size 20M uniform size 512k;,D:testusertbs1.dbf,size 20M;,复习:扩展表空间,为表空间添加新数据文件ALTER TABLESPACEADD DATAFILE改变已有数据文件的大小ALTER DATABASE DATAFILE RESIZE改变数据文件的扩展方式AUTOEXTEND ON NEXT MAXSIZE在CREATE TABLESPACEALTER TABLESPACE ADDALTER DATABASE等语句中使用,(3)修改USERTBS1表空间的大小,将该表空间的数据文件改为自动扩展方式,最大值为100MB alter database datafile D:testusertbs1.dbf autoextend on maxsize 100M;,4.删除表空间,DROP TABLESPACE INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTSSYSTEM和SYSAUX表空间不能删除一旦表空间删除,里面的数据将永久丢失如果表空间中的数据正在使用或者含有未提交的事务,则不能删除,一并删除里面的内容和数据文件,删除涉及其他表空间的外键,例23,删除ORCL数据库的ORCLUNDO01表空间及其所有内容,同时删除其所对应的数据文件,以及其他表空间相关的参照完整性约束DROP TABLESPACE ORCLUNDO01 INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;,(6)表空间信息查询,V$TABLESPACE:从控制文件中获取的表空间名称和编号信息DBA_TABLESPACES:数据库中所有表空间的信息DBA_FREE_SPACE:所有表空间中空闲区的信息DBA_DATA_FILES:数据文件及其所属表空间信息,查询表空间基本信息 SELECT TABLESPACE_NAME,EXTENT_MANAGEMENT,ALLOCATION_TYPE,CONTENTSFROM DBA_TABLESPACES;查询表空间数据文件信息 SELECT FILE_NAME,BLOCKS,TABLESPACE_NAME FROM DBA_DATA_FILES;,6.3 数据块(BLOCK),1.数据块的概念Oracle数据块是数据库中最小的逻辑存储单元,也是I/O操作的最小单元由一个或者多个操作系统块组成分为标准块和非标准块,标准块在数据库创建时DB_BLOCK_SIZE 参数大小设置,不可更改,2 数据库块结构,标题表目录行目录,插入新的行或更新,保存行数据,3 数据块的管理,对块的管理主要是对块中可用存储空间的管理,确定保留多少空闲空间,避免产生行链接、行迁移。行链接 插入数据时,如果行的长度大于块的大小,就需要使用多个块存放行信息。,数据,行迁移 数据更新时,如果更新后的数据长度大于块长度,Oracle会将整行的数据从原数据块迁移到新的数据块中。,更新数据,更新数据,原数据,对块的管理分为自动和手动两种。本地管理方式的表空间,如果段的管理方式设置为AUTO,则采用自动方式管理块。设为MANUAL为手动管理。通过为段设置PCTFREE和PCTUSED两个参数来控制数据块中空闲空间的使用。,PCTFREE指定块中必须保留的用于更新的最小空闲空间比例。当数据块的空闲空间百分率低于PCTFREE时,此数据块被标志为USED,此时在数据块中只可以进行更新,而不能插入。PCTUSED 指定可以向块中插入数据时,块已使用的最大空间比例。当数据块使用空间低于PCTUSED时,此块标志为FREE,进行插入,PCTUSED=40,数据,PCTFREE=20,=20%,20%,数据,=40%,数据,40%,数据,INITRANS可以同时对此数据块进行DML操作的事务的个数。MAXTRANS可以同时对此数据块进行DML操作的最多事务的个数。在数据库中,每一行都有一个物理地址ROWID,由18位十六进制数字组成,1.区的概念区由一系列连续的数据块构成的逻辑存储单元区是存储空间分配与回收的最小单位。当创建一个数据库对象时,Oracle为对象分配若干个区。2.区的管理(1)区的分配本地管理的表空间中,用AUTOALLOCATE选项自动进行区的分配通过表空间UNIFORM选项,指定所有区具有统一大小,,6.4 区,(2)区的回收通常区将一直保留在段中,不论区中的数据块是否被使用。只有当段所属的对象被删除时,段中所有的区才会被回收。如果在创建回滚段时指定了OPTIMAL关键字,Oracle会定期回收回滚段中未使用的区。,6.5.1 段的概述段是由一个或多个区组成的逻辑存储单元。段是表空间的组成单位通常一个数据库对象只拥有一个段,一个段至少包含一个区段的类型:数据段,索引段,临时段,回滚段,6.5 段,数据段数据段用来存储表或簇的数据,可以细分为表数据段、索引表数据段、分区表数据段及簇数据段四种。索引段用来存放索引信息,主要包括存储ROWID和索引键。索引段与表段可以放到处于不同物理位置的表空间中,临时段当用户进行排序查询时,如果在指定的内存无法完成排序,Oracle将自动从用户默认的临时表空间中指派临时段进行排序。会话结束,数据将从临时段中自动删除。回滚段回滚段用于保存数据库的回滚信息。一个事务只能使用一个回滚段存放它的回滚信息,但是一个回滚段可以存放多个事务的回滚信息。回滚段可以动态创建和撤销。,Transaction rollback(事务回滚),Transaction recovery(数据库恢复),Undo segment回滚段,Read consistency(读一致性),Flashback query(闪回查询),6.5.2 回滚段,1.回滚段的作用,2 回滚段的种类,系统回退段创建数据库时系统自动在SYSTEM表空间中创建一个“SYSTEM”系统回退段。该回退段只用于系统事务的回退处理。非系统回退段用户可以创建非SYSTEM回退段,用于用户事务的回退处理。,3 回滚段的管理,自动撤销管理将初始化参数UNDO_MANAGEMENT设置为AUTO,则启动自动撤销管理方式数据库运行时的回滚信息就由撤销表空间自动管理。手动撤销管理(逐渐淘汰)将数据库初始化参数UNDO_MANAGEMENT设置为MANUAL,则需要手动进行撤销管理,DBA以手动方式对回滚段进行管理。,4 回滚段的查询,DBA_ROLLBACK_SEGS:包含所有回滚段信息,包括回滚段的名称、所属表空间;DBA_SEGMENTS:包含数据库中所有段的信息,Oracle数据库的逻辑结构,数据表,索引,存储过程,表空间的分类(1)系统表空间(2)非系统表空间撤销表空间 临时表空间 用户表空间 创建普通表空间Create Tablespace 表空间名Datafile 文件名Size 整数K|MReuseExtent Management LocalAutoallocate|Uniform Size 整数K|MSegment Space Management Auto|Manual;,数据文件,本地管理,区的管理,段的管理,SYSTEM SYSAUX,例3.为ORCL数据库创建一个本地管理永久性的表空间ORCLTBS03,数据文件为E:ORACLEORCLTBS03_1.DBF大小为50M,区自动扩展,段采用手动管理方式。CREATE TABLESPACE ORCLTBS03 DATAFILEE:ORACLEORCLTBS03_1.DBF SIZE 50M SEGMENT SPACE MANAGEMENT MANUAL;,