Oracle表空间与数据文件的管理(doc43页)_第1页
Oracle表空间与数据文件的管理(doc43页)_第2页
Oracle表空间与数据文件的管理(doc43页)_第3页
Oracle表空间与数据文件的管理(doc43页)_第4页
Oracle表空间与数据文件的管理(doc43页)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 表空间和数据文件的管理6.1 Oracle 引入逻辑结构的目的Oracle 数据库管理系统并没有像不少其它数据库管理系统那样直接地操作数据文件,而是引入一组逻辑结构。如图 6-1 所示。图 6-1图 6-1 的虚线左边为逻辑结构, 右边为物理结构。 与计算机原理或计算机操作系统中所讲的有些不同, 在 Oracle 数据库中, 逻辑结构为 Oracle 引入的结构, 而物理结构为操作系统所拥有的结构。曾有不少学生问过我同样的一个问题,那就是Oracle 为什么要引入逻辑结构呢?首先可能是为了增加Oracle 的可移植性。 Oracle 公司声称它的 Oracle 数据库是与 IT平台无关

2、的,即在某一厂家的某个操作系统上开发的 Oracle 数据库(包括应用程序等)可以几乎不加修改地移植到另一厂家的另外的操作系统上。 要做到这一点就不能直接操作数据文件,因为数据文件是跟操作系统相关的。其次可能是为了减少Oracle 从业人员学习的难度。 因为有了逻辑结构 Oracle 的从业人员就可以只对逻辑结构进行操作,而在所有的 IT 平台上逻辑结构的操作都几乎完全相同,至于从逻辑结构到物理结构的映射(转换)是由 Oracle 数据库管理系统来完成的。6.2 Oracle 数据库中存储结构之间的关系其实图 6-1 类似于一个Oracle 数据库的存储结构之间关系的实体关系图。如果读者学过实

3、体关系模型( E-R 模型)的话,从图 6-1 中可以很容易地得到 Oracle 数据库中存储结构之间的关系。为了帮助那些没有学过E-R 模型的读者理解图 6-1 ,也是为了帮助那些学过但已经忘的差不多了的读者恢复一下记忆,在下面对E-R模型和图6-1给出一些简单的解释。在图 6-1 中,园角型方框为实体,实线表示关系,单线表示一的关系,三条线(鹰爪)表示多的关系。于是可以得到:每个数据库是由一个或多个表空间所组成(至少一个) 。每个表空间基于一个或多个操作系统的数据文件(至少一个) 。每个表空间中可以存放有零个或多个段( Segment) 。每个段是由一个或多个区段( Extent )所组成

4、。每个区段是由一个或多个连续的 Oracle 数据块所组成。每个 Oracle 数据块是由一个或多个连续的操作系统数据块所组成。每个操作系统数据文件是由一个或多个区段( Extent )所组成。每个操作系统数据文件是由一个或多个操作系统数据块所组成。有关段,区段,和Oracle 数据块等我们在接下来的章节中要详细地介绍。6.3 表空间和数据文件之间的关系及表空间的分类通过前面的讨论可知: Oracle将数据逻辑地存放在表空间里,而物理地存放在数据文 件里。表空间(Tablespaces )在任何一个时刻只能属于一个数据库,但是反过来并不成立, 因为一个数据库一般都有多个表空间。每个表空间都是由

5、一个或多个操作系统的数据文件所 组成,但是一个操作系统的数据文件只能属于一个表空间。表空间可以被进一步划分成一些更小的逻辑存储单位。在一个Oracle数据库中,每个数据文件(Data files )可以而且只能属于一个表空间和一个数据库。数据文件实际上是存 储模式对象数据的一个容器 /仓库。在一个Oracle数据库中一般有两类表空间,他们是系统(SYSTEM表空间和非系统(Non-SYSTEM 表空间。系统(SYSTEM表空间是与数据库一起建立的,在系统表空间中存有数据字典,在系统 表空间中还包含了系统还原(回滚)段。虽然在系统表空间中可以存放用户数据,但考虑到Oracle系统的效率和管理上的

6、方便,在系统表空间上不应该存放任何用户数据。非系统(Non-SYSTEM表空间可以由数据库管理员创建,在非系统表空间中存储一些单独的段,这些段可以是用户的数据段,索引段,还原段,和临时段等。 引入非系统表空间可以方便磁盘空间的管理,也可以更好地控制分配给用户磁盘空间的数量。引入非系统表空间还可以将静态数据和动态数据有效地分开,也可以按照备份的要求将数据分开存放。使用如下的命令创建一个非系统表空间:CREATE TABLESPACE空间名DATAFILE 子句MINIMUM EXTENT正整数K|MBLOCKSIZE正整数K LOGGING|NOLOGGING DEFAULT存储子句 ONLIN

7、E|OFFLINE PERMANENT|TEMPORARY 区段管理子句 段管理子句 在这里对以上命令中的一些子句和选项给出进一步的解释: 表空间名:所要创建的表空间名。DATAFILE子句:组成所要创建的表空间的文件说明。MINIMUM EXTENT表空间中所使用的每个EXTENTS必须是该参数所指定数的整数倍。BLOCKSIZE为该表空间说明非标准块的大小。在使用这一子句之前,您必须先设置 DB_CACHE_SIZE数和DB_nK_CACHE_SIZE数,而且该子句中所说明的 正整数一定与DB_nK_CACHE_SIZ珍数的设定相对应。LOGGING说明在该表空间中所有数据的变化都将写入重

8、做日志文件中,这也是默认方式。NOLOGGING说明在该表空间中所有数据的变化不都写入重做日志文件中,NOLOGGING只影响一些DML和DDL命令。DEFAUL存储子句:说明所有在该表空间中所创建的对象的默认存储参数。OFFLINE说明该表空间在创建后立即被置为脱机,即不能使用。 还有一些其它的子句和选项我们将在后续的章节中陆续地介绍。6.4 表空间中的磁盘空间管理在 Oracle8.0 和更早的版本中所有表空间中的磁盘空间管理都是由数据字典来管理的。在这种表空间的管理方法中所有的空闲区由数据字典来统一管理。每当区段被分配或收回时, Oracle 服务器将修改数据字典中相应的(系统)表。在数

9、据字典(系统)管理的表空间中所有的EXTENTS勺管理都是在数据字典中进行的,而且每一个存储在同一个表空间中的段可以具有不同的存储子句。 在这种表空间的管理方法中您可以按您的需要修改存储参数, 所以存储管理比较灵活但系统的效率较低。 还有如果使用这种表空间的管理方法, 有时需要合并碎片。 由于 Oracle8.0 对互联网的成功支持和它在其它方面的卓越表现使得Oracle 的市场占有率急速地增加, 同时 Oracle 数据库的规模也开始变的越来越大。 这样在一个大型和超大型数据库中就可能有成百乃至上千个表空间。 由于每个表空间的管理信息都存在数据字典中, 也就是存在系统表空间中。 这样系统表空

10、间就有可能成为一个瓶颈从而使数据库系统的效率大大地下降。正是为了克服以上弊端, Oracle 公司从它的 Oracle8i 开始引入了另一种表空间的管理方法,叫做本地管理的表空间。本地管理的表空间其空闲EXTENTS1在表空间中管理的,它是使用位图(Bitmap)来记录空闲EXTENTS位图中的每一位对应于一块或一组块,而每位的值指示空闲或分配。当一 个EXTENTt分配或释放时,Oracle服务器就会修改位图中相应位的值以反映该EXTENTS新的状态。位图存放在表空间所对应的数据文件的文件头中。使用本地管理的表空间减少了数据字典表的竞争, 而且当磁盘空间分配或收回时也不会产生回滚(还原) ,

11、它也不需要合并碎片。在本地管理的表空间中您无法按您的需要来随意地修改存储参数, 所以存储管理不像数据字典 (系统) 管理的表空间那样灵活但系统的效率较高。因为在本地管理的表空间中, 表空间的管理, 如磁盘空间的分配与释放等已经不在需要操作数据字典了,所以系统表空间的瓶颈问题得到了很好的解决。因此Oracle 公司建议用户创建的表空间应该尽可能地使用本地管理的表空间。在Oracle9i 中本地管理的表空间为默认方式,但是在Oracle8i 中数据字典(系统)管理的表空间为默认方式。6.5 创建数据字典管理的表空间曾有位著名的学者在一份非常出名的报纸上发表了一篇震撼了整个神州大地的文章, 文章的题

12、目是: “中国妇女解放运动的先驱潘金莲” 。 这篇文章一发表就在社会上引发了激烈的争论,真是“一石击起千层浪” 。一位考古学的博士想利用统计学的方法科学地证明潘金莲到底是不是中国妇女解放的先驱。 首先他必须将大量的数据分门别类地存入数据库中。 他 找到了您让您在Oracle 数据库方面帮他的忙。您决定首先要为这个项目创建一个名为 jinlian( 金莲 ) 的表空间。为了平衡I/O ,您决定 该 表 空 间 将 基 于 两 个 数 据 文 件 , 它 们 分 别 是 J:DISK2MOONJINLIAN01.DBF 和 J:DISK4MOONJINLIAN02.DBF ,其大小都为 50M (

13、在实际中可能几百M)。为了更有效地控 制磁盘的存储分配, 您决定使用数据字典管理的表空间。 为了防止用户在创建对象时使用的EXTENTS小而产生过多的碎片,您决定最小的EXTENT 50K ( MINIMUMEXTENT50K)。当需要磁盘空间的自动分配时第一次分配为 50K( INITIAL 50K ) ,第二次也为 50K( NEXT 50K) , 所分配的最大磁盘空间为 100 个 EXTENT(S MAXEXTENTS 10)0。从第三次分配开始按如下的公式进行分配: NEXT * (1+PCTINCREASE/100) (n-2) 。其中 n 为分配的次数。于是你发出了如例6-1的S

14、QL语句来创建名为jinlian(金莲)的表空间。例 6-1SQL CREATE TABLESPACE jinlian2 DATAFILE J:DISK2MOONJINLIAN01.DBF SIZE 50 M,3 J:DISK4MOONJINLIAN02.DBF SIZE 50 M4 MINIMUM EXTENT 50K EXTENT MANAGEMENT DICTIONARY5 DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);表空间已创建。紧接着为了验证所创建的表空间是不是数据字典管理的,您使用了如例6-

15、4的SQL查询语句。但为了使该语句的显示结果更清晰,您又使用了例6-2和例6-3的SQL*Plus命令对输出进行了格式化。例6-2SQLSET LINE 120例6-3SQL COL TABLESPACE_NAME FOR A15例6-4SQL SELECT tablespace_name, block_size, extent_management, segment_space_management6 FROM dba_tablespaces;TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMENSYSTEM4096 DICTIONARY MANUALUND

16、OTBS4096LOCALMANUALCWMLITE4096LOCALMANUALDRSYS4096 LOCAL MANUALEXAMPLE4096LOCALMANUALINDX4096 LOCAL MANUALTEMP4096LOCALMANUALTOOLS4096LOCALMANUALUSERS4096LOCALMANUALJINLIAN4096DICTIONARY MANUAL已选择10行。例6-4查询语句的结果表明表空间jinlian(金莲)确实是一个数据字典管理的表空间,因为extent_management列的显示结果为 DICTIONARY现在您可以使用如例6-5的SQL查询语句

17、来验证其它的磁盘存储参数。例6-5SQL select tablespace_name, initial_extent, next_extent,2 max_extents, pct_increase, min_extlen3 from dba_tablespaces;TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MAX_EXTENTS PCT_INCREASE MIN_EXTLENSYSTEM1228812288249500UNDOTBS65536214748364565536CWMLITE65536214748364565536DRSYS655362

18、14748364565536EXAMPLE65536214748364565536INDX65536214748364565536TEMP104857610485760 1048576TOOLS65536214748364565536USERS65536214748364565536JINLIAN5324853248100053248已选择10行。从例6-5查询语句的结果显示可以清楚地看出:所有的存储参数都是按您的要求设置的,因为 INITIAL_EXTENT 为 50K (53248 字节),NEXT_EXTENTL为 50K (53248 字节), MIN_EXTENTMINIMUMEXT

19、ENT也同小丰为 50K(53248 字节),最后 MAX_EXTENTS(MAXEXTENTS) 为100。此时您还应使用如例6-6的SQL查询语句来验证一下与文件有关的信息。例6-6SQL select file_id, file_name, tablespace_name2 from dba_data_files3 order by file_id;FILE_ID FILE_NAMETABLESPACE_NAME1 D:ORACLEORADATAORACLE9ISYSTEM01.DBF SYSTEM2 D:ORACLEORADATAORACLE9IUNDOTBS01.DBF UNDOTB

20、S3 D:ORACLEORADATAORACLE9ICWMLITE01.DBF CWMLITE4 D:ORACLEORADATAORACLE9IDRSYS01.DBF DRSYS5 D:ORACLEORADATAORACLE9IEXAMPLE01.DBF EXAMPLE6 D:ORACLEORADATAORACLE9IINDX01.DBF INDX7 D:ORACLEORADATAORACLE9ITOOLS01.DBFTOOLS8 D:ORACLEORADATAORACLE9IUSERS01.DBFUSERS9 J:DISK2MOONJINLIAN01.DBFJINLIAN10 J:DISK4

21、MOONJINLIAN02.DBFJINLIAN已选择10行。从例6-6查询语句的结果显示可以清楚地看出:表空间JINLIAN共有两个操作系统文件它们分别是 J:DISK2MOONJINLIAN01.DBF 和 J:DISK4MOONJINLIAN02.DBF 。最后您还应 该利用操作系统工具,如NT资源管理器来验证一下真正的物理文件是否真的生成了。如例6-7所示。例6-7从例6-7的结果显示可以清楚地看出物理文件J:DISK2MOONJINLIAN.DBF确实已经生成,其大小也为50Mo您还应该使用相同的方法验证表空间JINLIAN的另一个操作系统文件。6.6创建本地管理的表空间接下来您决定

22、还要为这个项目创建一个名为jinlian_index 的索引表空间。该表空间只基于一个数据文件,其文件名是J:DISK6MOONJINLIAN_INDEX.DBF,其大小为 50M (在实际中可能为几百M)。为了方便磁盘存储的管理,您决定使用本地管理的表空间(EXTENTMANAGEMENT LOCA醒据您的调查,您决定每个EXTENT勺大小为1M (UNIFORM SIZE 1M。于是您发出了如例 6-8的DDL语句来创建名为jinlian_index 的索引表空间。例6-8SQL CREATE TABLESPACE jinlian_index2 DATAFILE J:DISK6MOONji

23、nlian_index.dbf3 SIZE 50 M4 EXTENT MANAGEMENT LOCAL5 UNIFORM SIZE 1M;表空间已创建。紧接着为了验证所创建的表空间是不是本地管理的,您使用了如例 6-9的查询语句。但 为了使该语句的显示结果更清晰,您可能需要使用SQL*Plus命令对输出进行格式化。例6-9SQL SELECT tablespace_name, block_size, extent_management, segment_space_management6 FROM dba_tablespaces7 WHERE tablespace_name LIKE JIN%

24、;TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMENJINLIAN4096 DICTIONARY MANUALJINLIAN_INDEX 4096 LOCAL MANUAL例6-9查询语句的结果表明表空间JINLIAN_INDEX确实是一个本地管理的表空间,因为extent_management列的显示结果为 LOCAL现在您可以使用如例6-10查询语句来验证其它的磁盘存储参数。例 6-10SQL select tablespace_name, initial_extent, next_extent,2 max_extents, pct_increase,

25、 min_extlen3 from dba_tablespaces4 WHERE tablespace_name LIKE JIN%;TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MAX_EXTENTS PCT_INCREASE MIN_EXTLENJINLIAN5324853248100053248JINLIAN_INDEX 10485761048576 21474836450 1048576从例6-10查询语句的结果显示可以清楚地看出:所有的存储参数都是按您的要求设置的,因为 INITIAL_EXTENT 为 1M (1048576 字节),NEXT

26、_EXTENT为 1M (1048576 字节), MIN_EXTEN他同牛羊为1M( 1048576字节)。此时您还应使用如例 6-11的查询语句来验证一 下与文件有关的信息。例 6-11SQL SELECT file_id, file_name, tablespace_name, autoextensible2 FROM dba_data_files3 WHERE file_id 54 order by file_id;FILE_ID FILE_NAMETABLESPACE_NAME AUT6 D:ORACLEORADATAORACLE9IINDX01.DBF INDX YES7 D:OR

27、ACLEORADATAORACLE9ITOOLS01.DBFTOOLSYES8 D:ORACLEORADATAORACLE9IUSERS01.DBFUSERSYES9 J:DISK2MOONJINLIAN01.DBFJINLIANNO10 J:DISK4MOONJINLIAN02.DBFJINLIANNO11 J:DISK6MOONJINLIAN_INDEX.DBFJINLIAN_INDEX NO从例6-11查询语句的结果显示可以清楚地看出:表空间 JINLIAN_INDEX只有一个操作 系统文件,它是 J:DISK6MOONJINLIAN_INDEX.DBF。最后您还应该利用操作系统工具,如

28、 NT资源管理器来验证一下真正的物理文件是否真的生成了。如例6-12所示。例 6-12从例6-12的结果显示可以清楚地看出:物理文件J:DISK6MOONJINLIAN_INDEX.DBF确实已经生成,其大小也为50 Mo6.7还原表空间还原表空间是 Oracle9i刚刚引入的,它是用来自动地管理还原(回滚)数据的 。在这 一节只对还原表空间给一个简单的介绍,后面有专门的一章来详细地介绍这方面的内容。还原表空间是用来存储还原段的,在还原表空间中不能包含任何其它的对象。还原表空间中的区段(Extents )是由本地管理的,而且在创建还原表空间的SQL语句中只能使用 DATAFILE和 EXTEN

29、T MANAGEMEN向。接下来您想为潘金莲项目的数据单独创建一个还原表空间,它的名为 jinlian_undo , 它所基于的操作系统文件名为 J:DISK7MOONjinlian_undo.DBF ,其大小为20Mo于是就可 以使用如例6-13的SQL语句来创建所需的还原表空间了。例 6-13SQL CREATE UNDO TABLESPACE jinlian_undo2 DATAFILE J:DISK7MOONjinlian_undo.DBF3 SIZE 20 M;表空间已创建。现在您可能想查看一下您所创建的还原表空间jinlian_undo到底是数据字典管理还是本地管理的。可以使用如例

30、6-14的SQL询语句来获取相关的信息。例 6-14SQL SELECT tablespace_name, block_size, extent_management, segment_space_management2 FROM dba_tablespaces3 WHERE tablespace_name LIKE JIN%;TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMENJINLIAN4096 DICTIONARY MANUALJINLIAN_INDEX4096 LOCALMANUALJINLIAN_UNDO4096 LOCAL MANUAL例6-1

31、4的查询结果表明:还原表空间jinlian_undo 是本地管理的,因为 extent_management列的显示结果为 LOCAL之后您当然也想确认一下表空间jinlian_undo到底是不是还原表空间。因此您可以使用如例6-15的SQL查询语句。例 6-15SQL SELECT tablespace_name, status, contents4 FROM dba_tablespaces5 WHERE tablespace_name LIKE JIN%;TABLESPACE_NAME STATUS CONTENTSJINLIAN ONLINE PERMANENTJINLIAN INDEX

32、 ONLINE PERMANENTJINLIAN_UNDO ONLINE UNDO例6-15的查询结果表明:表空间 jinlian_undo确实为还原表空间,因为 contents歹U的显示结果为UNDO6.8 临时表空间临时表空间是作为排序操作使用的。当在用户的SQL语句中使用了诸如ORDEBY,GROUPBY子句时Oracle服务器就需要对所选取的数据进行排序,这时如果排序的数据量很大内存的排序区(在PGA中)就可能装不下,因此 Oracle服务器就要把一些中间的排序结果写到 磁盘上,即临时表空间中。当用户的SQL语句中经常有大规模的多重排序而内存的排序区不 够时,使用临时表空间就可以改进

33、数据库的效率。临时表空间可以由多个用户共享,在其中不能包含任何永久对象。临时表空间中的排序段是在实例启动后当有第一个排序操作时创建的,排序段在需要时可以通过分配EXTENTS来扩展并一直可以扩展到大于或等于在该实例上所运行的所有排序活动的总和。当创建临时表空间时,必须使用标准数据块。另外 Oracle还推荐使用本地管理的表空 间。接下来您想为潘金莲项目的数据单独创建一个临时表空间,它的名为 jinlian_temp , 它所基于的操作系统文件名为 J:DISK8MOONjinlian_temp.DBF ,其大小为10Mo您在创建 该临时表空间之前,想看一看在数据库中究竟有多少个表空间以及它们的

34、状态,于是您首先使用如例6-16的SQL*Plus格式化命令,之后发出了如例 6-17的SQL查询语句。例 6-16SQL col tablespace_name for a15例 6-17SQL select tablespace_name, status, contents2 from dba_tablespaces;TABLESPACE_NAME STATUS CONTENTSSYSTEMONLINEPERMANENTUNDOTBSONLINEUNDOCWMLITEONLINEPERMANENTDRSYS ONLINE PERMANENTEXAMPLEONLINEPERMANENTIND

35、X ONLINE PERMANENTTEMPONLINETEMPORARYTOOLSONLINEPERMANENTUSERSONLINEPERMANENTJINLIANONLINEPERMANENTJINLIAN_INDEX ONLINE PERMANENTJINLIAN_UNDO ONLINE UNDO已选择12行。例6-17查询语句的显示结果表明:在该数据库中只有一个临时表空间,该表空间的名为TEMP,因为只有该表空间的 CONTENTS的值为TEMPORARY为了得到临时表空间和对应的数据文件,您可以使用数据字典v$tablespace 和v$tempfile 。于是您使用了如例 6-1

36、9带有两个表连接的 SQL查询语句,但为了使显示的结果更加清晰您首先使用了如例6-18的SQL*Plus格式化命令例 6-18SQL col file for a50例 6-19SQL SELECT f.file#, t.ts#, File, Tablespace3 FROM v$tempfile f, v$tablespace t4 WHERE f.ts# = t.ts#;FILE# TS# FileTablespace1 6 D:ORACLEORADATAORACLE9ITEMP01.DBF TEMP例6-19查询语句的显示结果表明:6号(TS# 6)表空间TE

37、MF对应的数据文件为D:ORACLEORADATAORACLE9ITEMP01.DBFC件号为 1 (FILE#为 1)。现在您就可以使用如 例6-20的SQL语句来创建所需的临时表空间了。例 6-20SQL CREATE TEMPORARY TABLESPACE jinlian_temp2 TEMPFILE J:DISK8MOONjinlian_temp.dbf3 SIZE 10 M4 EXTENT MANAGEMENT LOCAL5 UNIFORM SIZE 2 M;表空间已创建。接下来您应该使用如例6-21 ,例6-22 ,和例6-23的SQL查询语句来验证一下该表空间是否已经建立,它是

38、否为临时表空间,以及它所对应的数据文件是否也被创建等。例 6-21SQL select tablespace_name, status, contents6 from dba_tablespaces7 where tablespace_name LIKE JIN%;TABLESPACE_NAME STATUS CONTENTSJINLIAN ONLINE PERMANENTJINLIAN_INDEX ONLINE PERMANENTJINLIAN_TEMP ONLINE TEMPORARYJINLIAN_UNDO ONLINE UNDO 例 6-22SQL SELECT f.file#, t.

39、ts#, File, Tablespace, 2 FROM v$tempfile f, v$tablespace t8 WHERE f.ts# = t.ts#;FILE# TS# FileTablespace1 6 D:ORACLEORADATAORACLE9ITEMP01.DBF TEMP2 12 J:DISK8MOONJINLIAN_TEMP.DBFJINLIAN_TEMP例 6-23 SQL SELECT tablespace_name, block_size, extent_management,2 segment_space_management, min

40、_extlen3 FROM dba_tablespaces4 WHERE tablespace_name LIKE JIN%;TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN MIN_EXTLENJINLIAN4096 DICTIONARY MANUAL 53248JINLIAN_INDEX4096 LOCALMANUAL1048576JINLIAN_TEMP4096 LOCALMANUAL2097152JINLIAN_UNDO4096 LOCALMANUAL65536例6-21 ,例6-22,和例6-23的查询语句显示结果表明: 您已经成功地创建了临时

41、表空 间jinlian_temp 。最后您还应该利用操作系统工具,如 NT资源管理器来验证一下临时表空 间所对应的物理文件是否真的生成了。本地管理的临时表空间是基于临时数据文件( temp files ),这些文件与普通的数据文 件非常相似,但它们还具有如下的特性:临时数据文件的状态不能置为只读。不能将临时数据文件重新命名。临时数据文件总是置为 NOLOGGING态。不能使用ALTER DATABASE令创建临时数据文件。 以只读方式运行的数据库需要临时数据文件。介质恢复是不能恢复临时数据文件的。另外,为了优化某一临时表空间中排序的效率,应该将UNIFORMSIZE设为 SORT_AREA_S

42、IZE PGM排序区的大小)参数的整数倍。5 .9默认临时表空间默认临时表空间是在 Oracle9i开始引入的。如果在创建一个数据库时没有设定默认临 时表空间,那么任何一个用户如果在创建他时没有使用TEMPORARY TABLESPACE,他就将使用SYSTEM1空间作为排序区。这将使SYSTEM1空间碎片化,从而使数据库系统的效率 下降。如果在创建一个数据库时没有设定默认临时表空间,Oracle服务器将把SYSTEM1空间是默认临时表空间的报警信息写入报警文件。因此说明一个数据库范围的默认临时表空间可以消除使用系统(SYSTEM表空间对临时数据进行排序的现象,从而提高数据库系统的效率。默认临

43、时表空间即可以在创建数据库时一起创建,也可以在数据库创建之后建立。在创建数据库的同时创建默认临时表空间要使用CREAT由ATABAS命令,在数据库创建之后改变默认临时表空间要使用ALTER DATABASE令。在数据库创建期间建立默认临时表空间的方法在以后的章节中介绍。首先可以利用数据字典 DATABASE_PROPERTIESg如例6-27的查询语句来得到当前的 默认临时表空间。为了使显示清晰,您应该首先使用如例6-24 ,例6-25 ,和例6-26的SQL*Plus格式化命令。例 6-24SQL COL PROPERTY_NAME FOR A25例 6-25SQL COL PROPERTY

44、_VALUE FOR A16例 6-26SQL COL DESCRIPTION FOR A38例 6-27SQL SELECT *2 FROM DATABASE_PROPERTIES3 WHERE PROPERTY_NAME LIKE DEFAULT%;PROPERTY_NAME PROPERTY_VALUE DESCRIPTIONDEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace例6-27的查询语句显示结果表明:表空间TEM师当前的默认临时表空间。随着潘金莲 项目的不断进展,有关该项目的数据处理也变得越来越频繁,

45、为了提高该项目的数据处理的速度,您决定将 jinlian_temp临时表空间设为默认临时表空间。于是您发出了如例6-28命令。例 6-28SQL ALTER DATABASE2 DEFAULT TEMPORARY TABLESPACE jinlian_temp;数据库已更改。接下来您可以使用如例6-29的SQL查询语句来验证现在的默认临时表空间是否为jinlian_temp 。例 6-29SQL SELECT *3 FROM DATABASE_PROPERTIES4 WHERE PROPERTY_NAME LIKE DEFAULT%;PROPERTY_NAME PROPERTY_VALUE D

46、ESCRIPTIONDEFAULT_TEMP_TABLESPACE JINLIAN_TEMP Name of default temporary tablespace当不再处理金莲项目数据时,请别忘了将默认临时表空间再改回为TEM时空间。此时您应该使用如例6-30的命令。例 6-30SQL ALTER DATABASE2 DEFAULT TEMPORARY TABLESPACE temp;数据库已更改。最后您还是应该使用如例6-31的SQL查询语句来验证一下现在的默认临时表空间是否为 temp。例 6-31SQL SELECT *3 FROM DATABASE_PROPERTIES4 WHER

47、E PROPERTY_NAME LIKE DEFAULT%;PROPERTY_NAME PROPERTY_VALUE DESCRIPTIONDEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace在结束这一节之前,最后介绍一下在默认临时表空间上的一些限制。首先默认临时表空间不能被删除,除非有一个新的可以使用的默认临时表空间。也就是必须先使用ALTERDATABASE一新的临时表空间设置为默认临时表空间,之后才能删除旧的(默认)临时表 空间。使用旧的(默认)临时表空间的用户被自动地赋予新的默认临时表空间。因为默认临时表空间

48、必须是临时 (TEMPORARY)空间或者是系统 (SYSTEM表空间,所以 不能将默认临时表空间改为一个永久表空间。也不能将默认临时表空间设置为脱机。(在接下来的几节中我们将介绍这些操作。)6.10设置表空间为脱机一个表空间的正常状态是联机(Online )状态,此时数据库用户可以访问该表空间中的数据。然而,有时数据库管理员需要将某一表空间设置为脱机状态,以进行数据库的维护。 其维护工作包括:在数据库处在打开状态下移动数据文件在数据库处在打开状态下恢复一个表空间或一个数据文件执行对表空间的脱机备份(虽然对表空间可以进行联机备份)使数据库的一部分不可以被访问,而其它的部分可以被正常地访问当一个

49、表空间被设置为脱机状态时,该表空间上的数据是不可以访问。如果用户试图访问该表空间上的数据就会收到出错信息。当一个表空间被设置为脱机状态时或重新被设置为联机状态时,Oracle会把这一事件记录在数据字典和控制文件中,也会记录在报警文件中。如果当数据库被关闭时,某一表空间为脱机状态,那么当数据库被加载(MOUNT和重新打开时该表空间仍保持为脱机状态。并不是所有的表空间都可以被设置为脱机状态,以下的表空间不能被设置为脱机状态:系统(SYSTEM表空间上面有活动的还原/回滚段的表空间默认临时表空间假设JINLIAN数据表空间出了些问题,需要对它进行维护。于是要将它的状态设为脱机。 但为了慎重起见您先使

50、用了如例 6-32和例6-34的SQL询语句以获取该表空间和它对应的 数据文件现在的状态。例 6-32SQL select tablespace_name, status, contents2 from dba_tablespaces3 where tablespace_name LIKE JIN%;TABLESPACE_NAME STATUS CONTENTSJINLIAN ONLINE PERMANENTJINLIAN_INDEX ONLINE PERMANENTJINLIAN_TEMP ONLINE TEMPORARYJINLIAN_UNDO ONLINE UNDO例 6-33SQL c

51、ol name for a55例 6-34SQL SELECT file#, name, status4 FROM v$datafile5 WHERE file# = 8;FILE# NAMESTATUS8 D:ORACLEORADATAORACLE9IUSERS01.DBFONLINE9 J:DISK2MOONJINLIAN01.DBFONLINE10 J:DISK4MOONJINLIAN02.DBFONLINE11 J:DISK6MOONJINLIAN_INDEX.DBFONLINE12 J:DISK7MOONJINLIAN_UNDO.DBFONLINE从例6-32和例6-34的查询结果显

52、示可以看出: 表空间JINLIAN以及与它相对应的两个 数据文件 J:DISK2MOONJINLIAN01.DBF 和 J:DISK4MOONJINLIAN02.DBF 都处在联机状 态。此时您就可以使用如例 6-25的命令将表空间JINLIAN置为脱机状态。例 6-25SQL ALTER TABLESPACE jinlian OFFLINE;表空间已更改。接下来您应该验证一下以上命令是否成功。可以使用了如例 6-36和例6-37的查询语句以获取该表空间和它对的数据文件现在的状态。例 6-36SQL select tablespace_name, status, contents2 from

53、dba_tablespaces3 where tablespace_name LIKE JIN%;TABLESPACE_NAME STATUS CONTENTSJINLIAN OFFLINE PERMANENTJINLIAN_INDEX ONLINE PERMANENTJINLIAN_TEMP ONLINE TEMPORARYJINLIAN_UNDO ONLINE UNDO例 6-37SQL SELECT file#, name, status4 FROM v$datafile5 WHERE file# = 8;FILE# NAMESTATUS8 D:ORACLEORADATAORACLE9I

54、USERS01.DBFONLINE9 J:DISK2MOONJINLIAN01.DBFOFFLINE10 J:DISK4MOONJINLIAN02.DBFOFFLINE11 J:DISK6MOONJINLIAN_INDEX.DBFONLINE12 J:DISK7MOONJINLIAN_UNDO.DBFONLINE从例6-36和例6-37的查询结果显示可以看出: 表空间JINLIAN以及与它相对应的两个 数据文件 J:DISK2MOONJINLIAN01.DBF 和 J:DISK4MOONJINLIAN02.DBF 都已经处在脱机 状态。这说明例 6-25的命令已经成功地执行。当维护工作结束后,

55、您就应该尽快地使用如例6-38的命令将表空间 JINLIAN置回为联机状态。例 6-38SQL ALTER TABLESPACE jinlian ONLINE;表空间已更改。接下来您应该验证一下以上命令是否成功。您可以使用如例 6-39和例6-40的查询语句以获取该表空间和它对的数据文件现在的状态。例 6-39SQL select tablespace_name, status, contents2 from dba_tablespaces3 where tablespace_name LIKE JIN%;TABLESPACE_NAME STATUS CONTENTSJINLIAN ONLINE PERMANENTJINLIAN_INDEX ONLINE PERM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论