《[精选]Oracle数据库讲义(第四章)》由会员分享,可在线阅读,更多相关《[精选]Oracle数据库讲义(第四章)(43页珍藏版)》请在金锄头文库上搜索。
1、讲 义,Oracle数据库,2009.3,李明俊,第四章 Oracle数据库体系结构,本章内容,4.1 Oracle 数据库的逻辑结构 4.2 Oracle 数据库的物理结构 4.3 数据字典 4.4 Oracle的内存结构,4.1 Oracle 数据库的逻辑结构,从逻辑上看,Oracle数据库可以划分为表空间、段、区和块,以有效管理、存储、检索数据。,Oracle数据库结构,数据库,表空间,用户表空间,索引表空间,临时表空间,回退表空间,段,数据段,索引段,临时段,回退段,区,空闲区,使用区,数据文件,用户文件,索引文件,临时文件,回退文件,数据块,4.1.1 表空间(TABLESPACE)
2、 1表空间及其作用 逻辑上来说,Oracle数据库划分为表空间,一个表空间通常将相关的逻辑结构组织在一起。 一个数据库通常由一个或多个表空间组成,表空间可分为系统(SYSTEM)表空间和非系统表空间。 数据库的数据逻辑上存储在表空间上,实际上存储在表空间所对应的物理数据文件上。,2表空间类型 数据字典管理表空间Oracle8以下版本采用。 本地化管理表空间Oracle8i以上版本采用。 Oracle8i-Oracle9i Release 1两种方法都可采用。 Oracle9i Release2完全采用本地化管理表空间。 两种管理方法的区别: -数据字典管理表空间当空间需要扩充时必须通过 查询数
3、据字典来查找空闲块,对磁盘碎片不能自动合并。 -本地化管理表空间使用位图的方法查找空闲空间,产生的磁盘碎片可以自动合并。 目前安装的数据库是Oracle9i Release2版,可通过查询DBA_TABLESPACES了解表空间的状态。,表空间,用户表空间,系统表空间,数据库,磁盘 驱动器1,磁盘 驱动器2,数据文件1,数据文件2,数据文件3,一个表空间中的数据文件的个数与操作系统有关,一般来说是1022个;一个数据库中的数据文件的最大个数是65533。 使用CREATE DATABASE或CREATE CONTROLFILE语句中的MAXDATAFILES参数会限制每一个数据库的数据文件个数
4、。 数据库的表空间个数没有限制,但数据库只允许65533个数据文件,一个表空间至少有一个数据文件,因此数据库的表空间数不能超过65533个。,数据库管理员(DBA)可利用表空间完成下列工作: 控制数据库数据的磁盘分配。 将确定的空间份额分配给数据库用户。 通过使单个表空间联机或脱机,控制数据的可用性。 执行部分数据库后备或恢复操作。 为提高性能,跨越设备分配数据存储。,3建立表空间,下列命令建立一个表空间的格式: CREATE TABLESPACE tablespace DATAFILE datafile SIZE nnnM 【autoxtend on next nnnM maxsize nn
5、nnM | unlimited】 EXTENT MANAGEMENT LOCAL UNIFORM SIZE nnnM | AUTOALLOCATE; tablespace表空间 datafile -数据文件 autoxtend on next文件空间自动增加 EXTENT MANAGEMENT LOCAL代表本地化表空间 UNIFORM 区大小相同 AUTOALLOCATE 区大小系统动态自动分配,下列命令建立一个USER_DATA本地化管理表空间,尺寸为100M。 CREATE TABLESPACE USER_DATA DATAFILE f:oracleoradatatestuserl_da
6、ta.dbf SIZE 100m autoxtend on next 100m maxsize 1000m EXTENT MANAGEMENT LOCAL UNIFORM size 500k; 其中: f:oracleoradatatestuserl_data.dbf SIZE 100m autoxtend on next 100m maxsize 1000m 是对数据文件的描述,而下面的子句是对表空间的描述。 EXTENT MANAGEMENT LOCAL UNIFORM size 500k;,下列命令建立一个USER_DATA本地化管理表空间,尺寸为300M, DATAFILE从句指定多个
7、数据文件,并用逗号隔开,以建立大容量的数据文件。 CREATE TABLESPACE USER_DATA DATAFILE f:oracleoradatatestuserl_data.dbf SIZE 100m autoxtend on next 100m maxsize 1000m, f:oracleoradatatestuser2_data.dbf SIZE 100m autoxtend on next 100m maxsize unlimited, f:oracleoradatatestuser3_data.dbf SIZE 100m EXTENT MANAGEMENT LOCAL UN
8、IFORM size 500k;,下列命令建立一个临时表空间,使用临时表空间可以使得排序操作更加有效,以改进性能。临时表空间内不能驻留永久数据。只能为临时段指定临时表空间。 Create temporary Tablespace TEMP2 Tempfile D:oracleoradatatestTemp01.dbf Size 500M EXTENT MANAGERMENT LOCAL Uniform Size 5M;,4修改表空间,1.修改表空间的数据文件,给表空间增加数据文件 ALTER TABLESPACE USER_DATA ADD DATAFILE f:oracleoradataus
9、er01.dbf SIZE 30M; 2.修改表空间的可用性,将表空间联机 ALTER TABLESPACE USER_DATA ONLINE; 3.修改表空间的非可用性,将表空间脱机 ALTER TABLESPACE APPL_DATA OFFLINE; 4.修改表空间管理只读模式 ALTER TABLESPACE USER_DATA READ ONLY; 5.修改表空间管理只读写模式 ALTER TABLESPACE USER_DATA READ WRITE;,5查询表空间信息,有关表空间的信息,可以查询DBA_TABLESPACES、DBA_DATA_FILES、DBA_FREE_SPA
10、CE、 V$TABLESPACE、 V$SORT_USAGE、V$DATAFILE等数据字典和视图。 DBA_TABLESPACES包含了数据库中所有表空间的信息(表空间名字、默认的存储参数、类型、状态、是否永久/临时等),而USER_TABLESPACES包含了用户拥有的表空间的信息。 查询DBA_DATA_FILES返回表空间数据文件信息(表空间名、表空间的 数据文件、数据文件尺寸),是否自动扩展设置信息。 SELECT FILE_NAME,TABLESPACE_NAME,BYTES, AUTOEXTENTSIBLE,MAXBYTES FROM DBA_DATA_FILES;,查询DBA_
11、FREE_SPACE返回所有表空间中可用的自由区,查询一个表空间总的自由空间; USER_FREE_SPACE显示当前用户拥有的表空间中的自由区。 SELECT TABLESPACE_NAME, SUM(BYTES) FREE_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME; 查询该视图从控制文件获得表空间名。 SELECT * FROM V$TABLESPACE;,V$DATAFILE ,这是动态性能视图,包含数据文件名字、尺寸、数据文件所在的表空间名、数据文件的状态(OFFLINE、 ONLINE 、READ WRITE 、READ O
12、NLY)。 其他视图 DBA_SEGMENTS、ALL_SEGMENTS、USER_SEGMENTS:包含段的类型、段的尺寸、表空间相关的存储参数。 DBA_EXTENTS、ALL_EXTENTS、 USER_EXTENTS:包含区的尺寸、与区相关的段和表空间信息。 DBA_TEMP_FILES:包含本地化管理的临时表空间的临时文件。 DBA_USERS:包含为用户指定的默认表空间和临时表空间。 V$TEMP_EXTENT_MAP:包含一个本地化管理的临时表空间的所有区的信息,6.UNDO表空间 UNDO表空间Oracle9i中引入的全新的概念,它自动对回 退段进行管理,当一个回退段不足时,一
13、个事务可以使用多个 回退段,Oracle会自动使用其他回退段,不终止事务的运行。,4.1.2 段(SEGMENT),段是表空间中指定类型的逻辑存储结构,是为表、索引等逻辑结构分配的区(extent)的集合。 Oracle的段主要有5种类型。 数据段:用于存储表、分区的数据。每建立一张表,就分配一个段。 索引段:存储索引数据。每建立一个索引,就分配一个索引段。 临时段:数据库执行排序或子查询时需要临时工作区,系统自动建立临时段,操作执行结束自动释放临时段。 回退段:当用户对数据库执行修改操作时,系统将修改前的数据存入回退段,在执行回退命令rollback时,回退段中的数据用于撤消所作的修改。,4
14、.1.3 区(EXTENT),区是分配空间的最小单位。一个区由一组连续的逻辑块组成。 一个段至少包含一个区。当一段中所有空间已使用完,Oracle为该段分配一个新的区。区的分配和回收是系统自动完成的。,4.1.4 块(BLOCK),块是Oracle内最小的逻辑单元,是I/O的最小单位。 一个数据块对应一个或多个操作系统物理块。 块的大小是在数据库建立时,使用参数DB_BLOCK_SIZE决定(系统缺省值为8K)。该参数在数据库建立后不能更改,除非重建数据库。,4.2 Oracle 数据库的物理结构,数据库的物理结构是数据库中操作系统文件的集合。,4.2.1 数据文件,数据文件有如下特点: 每个
15、数据库至少有一个数据文件。 每个数据文件只与一个表空间、一个数据库相关。 在数据库中建立的表、索引等对象只能存储在一个表空间中。但这些对象的物理存储可以在该表空间的不同数据文件上。一般的做法是将表数据与索引数据存放在不同的数据文件上,将回退信息与临时数据存放在不同的数据文件上。,对象1,对象2,对象3,表空间1,表空间2,数据文件1,数据文件2,数据文件3,对象4,对象5,创建数据文件,当建立一个表空间时,会建立相应的数据文件。如建立一300M的数据文件。 CREATE TABLESPACE APPL_DATA DATAFILE f:oracleoradatatestappl_data.dbf
16、 SIZE 300M; 也可以给已经存在的表空间增加数据文件。 ALTER TABLESPACE USERS ADD DATAFILE f:oracleoradatatestappl_data.dbf SIZE 25M; 查询数据文件 通过V$DATAFILE,V$TEMPFILE, DBA_DATA_FILES,DAB_EXTENTS等数据字典和视图可以查询数据文件的相应信息。例如查询数据文件中的状态,名字。其中system01.dbf文件的状态为system,表明该文件是系统表空间的一部分。,调整数据文件的尺寸 建立文件时设置AUTOEXTEND,使得数据文件尺寸自动扩展,或使用ALTER DATABASE设置自动扩展; CREATE TABLESPACE APPL_DATA DATAFILE f:oracleoradatatestappl_data.dbf SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 2000M; ALTER DATABASE DATAFILE f:oracleoradatatestappl_data.dbf AUTOEXT