《华联学院面向移动商务数据库技术课件第12章管理表空间和数据文件》由会员分享,可在线阅读,更多相关《华联学院面向移动商务数据库技术课件第12章管理表空间和数据文件(29页珍藏版)》请在金锄头文库上搜索。
1、1第12章 管理表空间和数据文件 由于在物理上,数据库中的数据存储在数据文件中,而在逻辑上,数据库中的数据存储在表空间中。这也就意味着表空间与数据文件之间存在对应关系,对表空间的管理操作与对数据文件的管理操作密切相关。通过使用表空间,可以有效地部署不同类型的数据,加强数据管理,从而提高数据库运行性能。2本章知识要点: 掌握各种表空间的建立方法 掌握改变表空间状态的方法 掌握扩展表空间的方法 掌握管理数据文件的方法 掌握对UNDO表空间的管理312.1 建立表空间 在Oracle 11g中,当数据库管理员(DBA)创建数据库时,Oracle不仅会创建SYSTEM表空间,还会创建一些辅助表空间,如
2、UNDO表空间和默认临时表空间。为了简化表空间管理并提高性能,Oracle建议将不同类型的数据部署到不同表空间上。12.1.1 建立普通表空间 根据表空间对盘区的管理方式,表空间可以分为数据字典管理的表空间和本地化管理的表空单。数据字典表空间是传统的表空间类型,其主要用于早期的Oracle数据库版本中,它是通过数据字典对表空间中的盘区进行管理的。而本地管理表空间,则不再使用数据字典去寻找空闲空间,而使用位图的方法使用表空间中的数据块,从而避免使用SQL语句引起系统性能的下降。412.1.2 建立大文件表空间 一个大文件表空间中对应一个单一的数据文件或临时文件,但是文件可以达到4G个数据块大小。
3、理论上,当数据块大小为8K时,大文件表空间的数据文件最大可以达到32T字节;当数据块尺寸为32K时,那么大文件表空间的数据文件最大尺寸可以达到128T。在实际环境中,这还受到操作系统的文件系统的限制。5612.1.3 建立临时表空间 通过在表空间中分配临时存储空间,Oracle能够使带有排序等操作的SQL语句获得更高的执行效率。如果创建了专门的临时表空间,Oracle就可以不必在其他的表空间中为排序操作分配临时空间,这样不仅可以实现临时数据的集中化管理,而且还不会影响到其他表空间的使用效率。712.1.4 建立非标准块表空间 数据块的大小由参数DB_BLOCK_SIZE决定,并且在创建数据库后
4、不能再进行修改。为了优化I/O性能,Oracle系统允许不同的表空间使用不同大小的数据块,这样可以实现将大规模的表存储在由大数据块构成的表空间,而小规模的表则存储在由小数据块构成的表空间中。在创建非标准数据块的表空间时,用户需要显式使用BLOCKSIZE选项。12.2 维护表空间 对于数据库管理员而言,在创建各种表空间后,还需要经常维护护表空间,如改变表空间可用性和读写状态,改变表空间名称、备份和恢复表空间、删除不需要的表空间等。812.2.1 改变表空间可用性 当建立表空间时,表空间及其所有数据文件都处于ONLINE状态,此时该表空间及其数据文件是可以访问的。在多表空间数据库中,DBA可以通
5、过将某个表空间设置为脱机状态,可以使数据库的某部分暂时无法被用户访问。同时,数据库的其他表空间不会受到任何影响。相反地,也可以将某个处于脱机状态的表空间重新设置为联机状态,使用户能够重新访问其中的数据。91012.2.2 改变表空间读写状态 表空间可以是读写方式,也可以是只读方式。默认情况下,所有的表空间都是读写方式,任何具有配额并且具有适当权限的用户都可以写入表空间。但是如果将表空间设置为只读方式,则任何用户都无法向表空间写入数据,也无法修改表空间中已有的数据,这种限制与权限无关。1112.2.3 改变表空间名称 在Oracle 10g之前,表空间的名称是不能被修改的。在Oracle 11g
6、中,通过在ALTER TABLESPACE语句中使用RENAME子句,数据库管理员可以改变表空间的名称。例如,下面的语句将修改表空间BIG_TBS为BIG_FILE_TBS:SQL alter tablespace big_tbs rename to big_file_tbs;表空间已更改。12.2.4 设置默认表空间 在Oracle 10g前,建立数据库用户时,如果不指定其默认的表空间,则系统将使用SYSTEM表空间作为用户的默认表空间。从Oracle 11g中,使用ALTER DATABASE DEFAULT TABLESPACE语句可以设置数据库的默认表空间,这样当建立用户时,默认将使用
7、指定的表空间。 设置数据库默认表空间的示例如下:12SQL alter database default tablespace users;数据库已更改。12.2.5 删除表空间 在删除表空间时,Oracle仅仅是在控制文件和数据字典中删除与表空间和数据文件相关的信息,默认情况下,Oracle并不会在操作系统中删除相应的数据文件。因此,在成功执行删除表空间的操作后,需要手动删除操作系统中的数据文件。如果在删除表空间的同时要删除对应的数据文件,则必须显式地指定INCLUDING CONTENTS AND DATAFILES子句。1312.2.6 查询表空间信息 下表列出了各种包含有表空间信息的数
8、据字典和动态性能视图。14视图说明V$TABLESPACE包含从控制文件中获取的表空间名称和编号信息DBA_TABLESPACE包含数据库中所有表空间的描述信息DBA_SEGMENTS包含所有表空间中的段的描述信息DBA_EXTENTS包含所有表空间中的区的描述信息V$DATAFILE包含从控制文件中获取的数据文件的基本信息,包括它所属的表空间名称、编号等V$TEMPFILE包含所有临时数据文件的基本信息DBA_DATA_FILES包含数据文件以及所属表空间的描述信息DBA_TEMP_FILES包含临时数据文件以及所属表空间的描述信息V$TEMP_SPACE_POOL包含本地管理方式的临时表空
9、间的缓存信息V$TEMP_EXTENT_MAP包含本地管理方式的临时表空间中所有区的描述信息V$SORT_SEGMENT包含实例所创建的排序区的描述信息V$SORT_USER包含描述排序区的用户使用情况的信息1512.3 管理数据文件 数据文件在创建数据库或表空间时建立。当表空间创建后,DBA可以根据需要为表空间添加新的数据文件,或者更改已有数据文件的大小、名称和位置。1612.3.1 数据文件的管理策略 数据文件是物理上存储表空间数据的操作系统文件,在创建表空间的同时将为它建立数据文件。在创建表空间前,DBA不仅要考虑表空间的管理方式,还需要决定与表空间对应的数据文件的数量、大小以及位置。1
10、2.3.2 添加表空间数据文件 在创建表空间时,通常会预先估计表空间所需的存储空间大小,然后为它建立若干适当大小的数据文件。如果在使用过程中发现表空间存储空间不足,可以再为它添加新的数据文件,以增加表空间的总存储空间。1712.3.3 改变数据文件大小 除了为表空间增加新的数据文件外,另一种增加表空间的存储空间的方法是改变已经数据文件的大小。改变数据文件大小的方式一共两种:设置数据文件为自动增长;手动改变数据文件的大小。181912.3.4 改变数据文件的可用性 与表空间类似,联机的数据文件或临时数据文件也可以被设置为脱机状态。将数据文件设置为脱机状态时,不会影响到表空间的状态。但是反过来,将
11、表空间设置为脱机状态时,属于该表空间的数据文件将全部同时进入脱机状态。2012.3.5 改变数据文件名称和位置 改变数据文件的操作分为两种情况:要改变的数据文件属于同一个表空间;要改变的数据文件分别属于多个表空间。在这两种情况下,分别需要使用不同的语句进行操作。 1改变属于单独表空间的数据文件 2改变属于多个表空间的数据文件12.4 管理UNDO表空间 UNDO表空间用于存放UNDO数据。当执行DML操作时(INSERT、UPDATE和DELETE),Oracle会将这些操作的旧数据写入到UNDO段。在Oracle 9i前,管理UNDO段是使用回退段完成的。从Oracle 9i开始,管理UND
12、O数据不仅可以使用回退段,还可以使用UNDO表空间。因为规则和管理回退段比较复杂,所以Oracle 11g已经完全弃用回退段,并且使有UNDO表空间来管理UNDOW数据。2112.4.1 UNDO概述 UNDO数据也称为回退数据,它用于确保数据的一致性。当执行DML操作时,事务操作前的数据将被称为UNDO记录。UNDO段用于保存事务所修改数据的旧值,其中存储着被修改数据块的位置以及修改前的数据。2212.4.2 UNDO参数 常用的UNDO参数包括UNDO_MANAGEMENT、UNDO_TABLESPACE和UNDO_RETENTION。其中,UNDO_MANAGEMENT参数用于指定UND
13、O数据的管理方式。如果要使用自动管理模式,必须设置该参数为AUTO;如果使用手动管理模式,必须设置该参数为MANUAL。232412.4.3 建立UNDO表空间 使用自动UNDO管理模式时,必须建立并配置UNDO表空间。建立数据库后,还可以使用CREATE UNDO TABLESPACE语句建立UNDO表空间。需要注意,UNDO表空间专门用于存放UNDO数据,并且在UNDO表空间上不能建立任何数据对象。2512.4.4 修改UNDO表空间 与普通表空间一样,可以通过ALTER TABLESPACE语句对UNDO表空间进行修改。但是UNDO表空间的大部分设置都由Oracle本身自动进行管理,用户
14、对撤销表空间可以执行的操作主要包括: 添加新的数据文件 移动数据文件 修改数据文件的OFFLINE和ONLINE状态12.4.5 切换UNDO表空间 在数据库的运行过程中,可以切换使用另一个撤销表空间。由于UNDO_TABLESPACE是一个动态初始化参数,所以可以通过ALTER SYSTEM语句在实例运行过程中改变它的值,这样无须重新启动数据库就可以改变其所使用的撤销表空间。2612.4.6 设置UNDO记录保留的时间 UNDO_RETENTION参数也是一个动态参数,在实例运行过程中可以通过ALTER SYSTEM语句来修改。注意,撤销记录的保留时间以称为单位。例如,下面的语句设置保留的时
15、间为30分钟:27SQL alter system set undo_retention = 1800;系统已更改。SQL show parameter undo;NAME TYPE VALUE- - -undo_management string AUTOundo_retention integer 1800undo_tablespace string UNDOTBS0212.4.7 删除UNDO表空间 与普通表空间一样,利用DROP TABLSPACE语句可以删除UNDO表空间。例如,下面的语句将删除撤销表空间UNDOTBS01:28SQL drop tablespace undotbs0
16、1;表空间已删除。2912.4.8 查看UNDO表空间信息 由于UNDO表空间的重要性,Oracle专门提供了几个包含UNDO表空间信息的数据字典视图和动态性能视图。视图说明V$UNDOSTAT包含所有UNDO表空间的统计信息,用于对UNDO表空间进行监视和调整;DBA可以利用这个视图来估算UNDO表空间所需的大小,Oracle则利用这个视图来完成UNDO表空间的自动管理V$ROLLSTAT在自动UNDO管理方式下,可以利用该视图来查询关于UNDO表空间中的各个UNDO段的信息V$TRANSACTION包含关于各个事务所使用的UNDO段信息DBA_UNDO_EXTENTS通过该视图可以查询UNDO表空间中每个区所对应的事务的提交时间