Oracle表空间与数据文件的管理

上传人:无*** 文档编号:130820429 上传时间:2022-08-05 格式:DOC 页数:43 大小:670.50KB
收藏 版权申诉 举报 下载
Oracle表空间与数据文件的管理_第1页
第1页 / 共43页
Oracle表空间与数据文件的管理_第2页
第2页 / 共43页
Oracle表空间与数据文件的管理_第3页
第3页 / 共43页
资源描述:

《Oracle表空间与数据文件的管理》由会员分享,可在线阅读,更多相关《Oracle表空间与数据文件的管理(43页珍藏版)》请在装配图网上搜索。

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

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

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

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

5、辑存储单位。在一个Oracle数据库中,每个数据文件(Data files)可以而且只能属于一个表空间和一个数据库。数据文件实际上是存储模式对象数据的一个容器/仓库。在一个Oracle数据库中一般有两类表空间,他们是系统(SYSTEM)表空间和非系统(Non-SYSTEM)表空间。系统(SYSTEM)表空间是与数据库一起建立的,在系统表空间中存有数据字典,在系统表空间中还包含了系统还原(回滚)段。虽然在系统表空间中可以存放用户数据,但考虑到Oracle系统的效率和管理上的方便,在系统表空间上不应该存放任何用户数据。非系统(Non-SYSTEM)表空间可以由数据库管理员创建,在非系统表空间中存储

6、一些单独的段,这些段可以是用户的数据段,索引段,还原段,和临时段等。引入非系统表空间可以方便磁盘空间的管理,也可以更好地控制分配给用户磁盘空间的数量。引入非系统表空间还可以将静态数据和动态数据有效地分开,也可以按照备份的要求将数据分开存放。使用如下的命令创建一个非系统表空间:CREATE TABLESPACE表空间名DATAFILE子句MINIMUM EXTENT 正整数K|MBLOCKSIZE正整数KLOGGING|NOLOGGINGDEFAULT 存储子句ONLINE|OFFLINEPERMANENT|TEMPORARY区段管理子句段管理子句在这里对以上命令中的一些子句和选项给出进一步的解

7、释:表空间名:所要创建的表空间名。DATAFILE子句:组成所要创建的表空间的文件说明。MINIMUM EXTENT:表空间中所使用的每个EXTENT都必须是该参数所指定数的整数倍。BLOCKSIZE:为该表空间说明非标准块的大小。在使用这一子句之前,您必须先设置DB_CACHE_SIZE参数和DB_nK_CACHE_SIZE参数,而且该子句中所说明的正整数一定与DB_nK_CACHE_SIZE参数的设定相对应。LOGGING: 说明在该表空间中所有数据的变化都将写入重做日志文件中,这也是默认方式。NOLOGGING: 说明在该表空间中所有数据的变化不都写入重做日志文件中,NOLOGGING只

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

9、储子句。在这种表空间的管理方法中您可以按您的需要修改存储参数,所以存储管理比较灵活但系统的效率较低。还有如果使用这种表空间的管理方法,有时需要合并碎片。由于Oracle8.0对互联网的成功支持和它在其它方面的卓越表现使得Oracle的市场占有率急速地增加,同时Oracle数据库的规模也开始变的越来越大。这样在一个大型和超大型数据库中就可能有成百乃至上千个表空间。由于每个表空间的管理信息都存在数据字典中,也就是存在系统表空间中。这样系统表空间就有可能成为一个瓶颈从而使数据库系统的效率大大地下降。正是为了克服以上弊端,Oracle公司从它的Oracle8i开始引入了另一种表空间的管理方法,叫做本地

10、管理的表空间。本地管理的表空间其空闲EXTENTS是在表空间中管理的,它是使用位图(Bitmap)来记录空闲EXTENTS,位图中的每一位对应于一块或一组块,而每位的值指示空闲或分配。当一个EXTENT被分配或释放时,Oracle服务器就会修改位图中相应位的值以反映该EXTENT的新的状态。位图存放在表空间所对应的数据文件的文件头中。使用本地管理的表空间减少了数据字典表的竞争,而且当磁盘空间分配或收回时也不会产生回滚(还原),它也不需要合并碎片。在本地管理的表空间中您无法按您的需要来随意地修改存储参数,所以存储管理不像数据字典(系统)管理的表空间那样灵活但系统的效率较高。因为在本地管理的表空间

11、中,表空间的管理,如磁盘空间的分配与释放等已经不在需要操作数据字典了,所以系统表空间的瓶颈问题得到了很好的解决。因此Oracle公司建议用户创建的表空间应该尽可能地使用本地管理的表空间。在Oracle9i中本地管理的表空间为默认方式,但是在Oracle8i中数据字典(系统)管理的表空间为默认方式。6.5 创建数据字典管理的表空间曾有位著名的学者在一份非常出名的报纸上发表了一篇震撼了整个神州大地的文章,文章的题目是:“中国妇女解放运动的先驱潘金莲”。这篇文章一发表就在社会上引发了激烈的争论,真是“一石击起千层浪”。一位考古学的博士想利用统计学的方法科学地证明潘金莲到底是不是中国妇女解放的先驱。首

12、先他必须将大量的数据分门别类地存入数据库中。他找到了您让您在Oracle数据库方面帮他的忙。您决定首先要为这个项目创建一个名为jinlian(金莲)的表空间。为了平衡I/O,您决定该表空间将基于两个数据文件,它们分别是J:DISK2MOONJINLIAN01.DBF和J:DISK4MOONJINLIAN02.DBF,其大小都为50M(在实际中可能几百)。为了更有效地控制磁盘的存储分配,您决定使用数据字典管理的表空间。为了防止用户在创建对象时使用的EXTENT过小而产生过多的碎片,您决定最小的EXTENT为50K(MINIMUM EXTENT 50K)。当需要磁盘空间的自动分配时第一次分配为50

13、K(INITIAL 50K),第二次也为50K(NEXT 50K),所分配的最大磁盘空间为100个EXTENTS(MAXEXTENTS 100)。从第三次分配开始按如下的公式进行分配:NEXT * (1+PCTINCREASE/100)(n-2)。其中n为分配的次数。于是你发出了如例6-1的SQL语句来创建名为jinlian(金莲)的表空间。例6-1SQL CREATE TABLESPACE jinlian 2 DATAFILE J:DISK2MOONJINLIAN01.DBF SIZE 50 M, 3 J:DISK4MOONJINLIAN02.DBF SIZE 50 M 4 MINIMUM

14、EXTENT 50K EXTENT MANAGEMENT DICTIONARY 5 DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);表空间已创建。紧接着为了验证所创建的表空间是不是数据字典管理的,您使用了如例6-4的SQL查询语句。但为了使该语句的显示结果更清晰,您又使用了例6-2和例6-3的SQL*Plus命令对输出进行了格式化。例6-2SQLSET LINE 120例6-3SQL COL TABLESPACE_NAME FOR A15例6-4SQL SELECT tablespace_name, blo

15、ck_size, extent_management, segment_space_management 2 FROM dba_tablespaces;TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN- - - -SYSTEM 4096 DICTIONARY MANUALUNDOTBS 4096 LOCAL MANUALCWMLITE 4096 LOCAL MANUALDRSYS 4096 LOCAL MANUALEXAMPLE 4096 LOCAL MANUALINDX 4096 LOCAL MANUALTEMP 4096 LOCAL MANUALTO

16、OLS 4096 LOCAL MANUALUSERS 4096 LOCAL MANUALJINLIAN 4096 DICTIONARY MANUAL 已选择10行。 例6-4查询语句的结果表明表空间jinlian(金莲)确实是一个数据字典管理的表空间,因为extent_management列的显示结果为DICTIONARY。现在您可以使用如例6-5的SQL查询语句来验证其它的磁盘存储参数。例6-5SQL select tablespace_name, initial_extent, next_extent, 2 max_extents, pct_increase, min_extlen 3 f

17、rom dba_tablespaces;TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MAX_EXTENTS PCT_INCREASE MIN_EXTLEN- - - - - -SYSTEM 12288 12288 249 50 0UNDOTBS 65536 2147483645 65536CWMLITE 65536 2147483645 65536DRSYS 65536 2147483645 65536EXAMPLE 65536 2147483645 65536INDX 65536 2147483645 65536TEMP 1048576 104857

18、6 0 1048576TOOLS 65536 2147483645 65536USERS 65536 2147483645 65536JINLIAN 53248 53248 100 0 53248 已选择10行。 从例6-5查询语句的结果显示可以清楚地看出:所有的存储参数都是按您的要求设置的,因为INITIAL_EXTENT为50K(53248字节),NEXT_EXTENT也为50K(53248字节),MIN_EXTENT(MINIMUM EXTENT)也同样为50K(53248字节),最后MAX_EXTENTS(MAXEXTENTS)为100。此时您还应使用如例6-6的SQL查询语句来验证一

19、下与文件有关的信息。例6-6SQL select file_id, file_name, tablespace_name 2 from dba_data_files 3 order by file_id; FILE_ID FILE_NAME TABLESPACE_NAME- - - 1 D:ORACLEORADATAORACLE9ISYSTEM01.DBF SYSTEM 2 D:ORACLEORADATAORACLE9IUNDOTBS01.DBF UNDOTBS 3 D:ORACLEORADATAORACLE9ICWMLITE01.DBF CWMLITE 4 D:ORACLEORADATAOR

20、ACLE9IDRSYS01.DBF DRSYS 5 D:ORACLEORADATAORACLE9IEXAMPLE01.DBF EXAMPLE 6 D:ORACLEORADATAORACLE9IINDX01.DBF INDX 7 D:ORACLEORADATAORACLE9ITOOLS01.DBF TOOLS 8 D:ORACLEORADATAORACLE9IUSERS01.DBF USERS 9 J:DISK2MOONJINLIAN01.DBF JINLIAN 10 J:DISK4MOONJINLIAN02.DBF JINLIAN 已选择10行。 从例6-6查询语句的结果显示可以清楚地看出:表

21、空间JINLIAN共有两个操作系统文件它们分别是J:DISK2MOONJINLIAN01.DBF和J:DISK4MOONJINLIAN02.DBF。最后您还应该利用操作系统工具,如NT资源管理器来验证一下真正的物理文件是否真的生成了。如例6-7所示。例6-7从例6-7的结果显示可以清楚地看出物理文件J:DISK2MOONJINLIAN.DBF确实已经生成,其大小也为50M。您还应该使用相同的方法验证表空间JINLIAN的另一个操作系统文件。6.6 创建本地管理的表空间接下来您决定还要为这个项目创建一个名为jinlian_index的索引表空间。该表空间只基于一个数据文件,其文件名是J:DISK

22、6MOONJINLIAN_INDEX.DBF,其大小为50M(在实际中可能为几百)。为了方便磁盘存储的管理,您决定使用本地管理的表空间(EXTENT MANAGEMENT LOCAL)。根据您的调查,您决定每个EXTENT的大小为1M(UNIFORM SIZE 1M)。于是您发出了如例6-8的DDL语句来创建名为jinlian_index的索引表空间。例6-8SQL CREATE TABLESPACE jinlian_index2 DATAFILE J:DISK6MOONjinlian_index.dbf 3 SIZE 50 M 4 EXTENT MANAGEMENT LOCAL 5 UNIF

23、ORM SIZE 1M;表空间已创建。紧接着为了验证所创建的表空间是不是本地管理的,您使用了如例6-9的查询语句。但为了使该语句的显示结果更清晰,您可能需要使用SQL*Plus命令对输出进行格式化。例6-9SQL SELECT tablespace_name, block_size, extent_management, segment_space_management 2 FROM dba_tablespaces 3 WHERE tablespace_name LIKE JIN%;TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN- - - -JINLI

24、AN 4096 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, min_extlen 3 from dba_tablespaces 4 WHERE tables

25、pace_name LIKE JIN%;TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MAX_EXTENTS PCT_INCREASE MIN_EXTLEN- - - - - -JINLIAN 53248 53248 100 0 53248JINLIAN_INDEX 1048576 1048576 2147483645 0 1048576从例6-10查询语句的结果显示可以清楚地看出:所有的存储参数都是按您的要求设置的,因为INITIAL_EXTENT为1M(1048576字节),NEXT_EXTENT也为1M(1048576字节),MIN_EXTENT也

26、同样为1M(1048576字节)。此时您还应使用如例6-11的查询语句来验证一下与文件有关的信息。例6-11SQL SELECT file_id, file_name, tablespace_name, autoextensible 2 FROM dba_data_files 3 WHERE file_id 5 4 order by file_id; FILE_ID FILE_NAME TABLESPACE_NAME AUT- - - - 6 D:ORACLEORADATAORACLE9IINDX01.DBF INDX YES 7 D:ORACLEORADATAORACLE9ITOOLS01.

27、DBF TOOLS YES 8 D:ORACLEORADATAORACLE9IUSERS01.DBF USERS YES 9 J:DISK2MOONJINLIAN01.DBF JINLIAN NO 10 J:DISK4MOONJINLIAN02.DBF JINLIAN NO 11 J:DISK6MOONJINLIAN_INDEX.DBF JINLIAN_INDEX NO 从例6-11查询语句的结果显示可以清楚地看出:表空间JINLIAN_INDEX只有一个操作系统文件,它是J:DISK6MOONJINLIAN_INDEX.DBF。最后您还应该利用操作系统工具,如NT资源管理器来验证一下真正的物

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

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

30、SQL SELECT tablespace_name, block_size, extent_management, segment_space_management 2 FROM dba_tablespaces 3 WHERE tablespace_name LIKE JIN%;TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN- - - -JINLIAN 4096 DICTIONARY MANUALJINLIAN_INDEX 4096 LOCAL MANUALJINLIAN_UNDO 4096 LOCAL MANUAL例6-14的查询结果表明:还原表空

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

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

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

34、SQL*Plus格式化命令,之后发出了如例6-17的SQL查询语句。例6-16SQL col tablespace_name for a15例6-17SQL select tablespace_name, status, contents 2 from dba_tablespaces;TABLESPACE_NAME STATUS CONTENTS - - -SYSTEM ONLINE PERMANENTUNDOTBS ONLINE UNDO CWMLITE ONLINE PERMANENTDRSYS ONLINE PERMANENTEXAMPLE ONLINE PERMANENTINDX ON

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

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

37、明:6号(TS#为6)表空间TEMP所对应的数据文件为D:ORACLEORADATAORACLE9ITEMP01.DBF,文件号为1(FILE#为1)。现在您就可以使用如例6-20的SQL语句来创建所需的临时表空间了。例6-20SQL CREATE TEMPORARY TABLESPACE jinlian_temp 2 TEMPFILE J:DISK8MOONjinlian_temp.dbf 3 SIZE 10 M 4 EXTENT MANAGEMENT LOCAL 5 UNIFORM SIZE 2 M;表空间已创建。接下来您应该使用如例6-21,例6-22,和例6-23的SQL查询语句来验证

38、一下该表空间是否已经建立,它是否为临时表空间,以及它所对应的数据文件是否也被创建等。例6-21SQL select tablespace_name, status, contents 2 from dba_tablespaces 3 where tablespace_name LIKE JIN%;TABLESPACE_NAME STATUS CONTENTS - - -JINLIAN ONLINE PERMANENTJINLIAN_INDEX ONLINE PERMANENTJINLIAN_TEMP ONLINE TEMPORARYJINLIAN_UNDO ONLINE UNDO 例6-22S

39、QL SELECT f.file#, t.ts#, f.name File, t.name Tablespace 2 FROM v$tempfile f, v$tablespace t 3 WHERE f.ts# = t.ts#; FILE# TS# File Tablespace - - - - 1 6 D:ORACLEORADATAORACLE9ITEMP01.DBF TEMP 2 12 J:DISK8MOONJINLIAN_TEMP.DBF JINLIAN_TEMP例6-23SQL SELECT tablespace_name, block_size, extent_management

40、, 2 segment_space_management, min_extlen 3 FROM dba_tablespaces 4 WHERE tablespace_name LIKE JIN%;TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN MIN_EXTLEN- - - - -JINLIAN 4096 DICTIONARY MANUAL 53248JINLIAN_INDEX 4096 LOCAL MANUAL 1048576JINLIAN_TEMP 4096 LOCAL MANUAL 2097152JINLIAN_UNDO 4096 LOCAL M

41、ANUAL 65536例6-21,例6-22,和例6-23的查询语句显示结果表明:您已经成功地创建了临时表空间jinlian_temp。最后您还应该利用操作系统工具,如NT资源管理器来验证一下临时表空间所对应的物理文件是否真的生成了。本地管理的临时表空间是基于临时数据文件(temp files),这些文件与普通的数据文件非常相似,但它们还具有如下的特性: 临时数据文件的状态不能置为只读。 不能将临时数据文件重新命名。 临时数据文件总是置为NOLOGGING状态。 不能使用ALTER DATABASE命令创建临时数据文件。 以只读方式运行的数据库需要临时数据文件。 介质恢复是不能恢复临时数据文件

42、的。另外,为了优化某一临时表空间中排序的效率,应该将UNIFORM SIZE设为SORT_AREA_SIZE(PGA中排序区的大小)参数的整数倍。6.9 默认临时表空间默认临时表空间是在Oracle9i开始引入的。如果在创建一个数据库时没有设定默认临时表空间,那么任何一个用户如果在创建他时没有使用TEMPORARY TABLESPACE子句,他就将使用SYSTEM表空间作为排序区。这将使SYSTEM表空间碎片化,从而使数据库系统的效率下降。如果在创建一个数据库时没有设定默认临时表空间,Oracle服务器将把SYSTEM表空间是默认临时表空间的报警信息写入报警文件。因此说明一个数据库范围的默认临

43、时表空间可以消除使用系统(SYSTEM)表空间对临时数据进行排序的现象,从而提高数据库系统的效率。默认临时表空间即可以在创建数据库时一起创建,也可以在数据库创建之后建立。在创建数据库的同时创建默认临时表空间要使用CREATE DATABASE命令,在数据库创建之后改变默认临时表空间要使用ALTER DATABASE命令。在数据库创建期间建立默认临时表空间的方法在以后的章节中介绍。首先可以利用数据字典DATABASE_PROPERTIES使用如例6-27的查询语句来得到当前的默认临时表空间。为了使显示清晰,您应该首先使用如例6-24,例6-25,和例6-26的SQL*Plus格式化命令。例6-2

44、4SQL COL PROPERTY_NAME FOR A25例6-25SQL COL PROPERTY_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 DESCRIPTION- - -DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace 例6-27的查询语句显示

45、结果表明:表空间TEMP为当前的默认临时表空间。随着潘金莲项目的不断进展,有关该项目的数据处理也变得越来越频繁,为了提高该项目的数据处理的速度,您决定将jinlian_temp临时表空间设为默认临时表空间。于是您发出了如例6-28命令。例6-28SQL ALTER DATABASE 2 DEFAULT TEMPORARY TABLESPACE jinlian_temp;数据库已更改。接下来您可以使用如例6-29的SQL查询语句来验证现在的默认临时表空间是否为jinlian_temp。例6-29SQL SELECT * 2 FROM DATABASE_PROPERTIES 3 WHERE PRO

46、PERTY_NAME LIKE DEFAULT%;PROPERTY_NAME PROPERTY_VALUE DESCRIPTION- - -DEFAULT_TEMP_TABLESPACE JINLIAN_TEMP Name of default temporary tablespace 当不再处理金莲项目数据时,请别忘了将默认临时表空间再改回为TEMP表空间。此时您应该使用如例6-30的命令。例6-30SQL ALTER DATABASE 2 DEFAULT TEMPORARY TABLESPACE temp;数据库已更改。最后您还是应该使用如例6-31的SQL查询语句来验证一下现在的默认临时

47、表空间是否为temp。例6-31SQL SELECT * 2 FROM DATABASE_PROPERTIES 3 WHERE PROPERTY_NAME LIKE DEFAULT%;PROPERTY_NAME PROPERTY_VALUE DESCRIPTION- - -DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace 在结束这一节之前,最后介绍一下在默认临时表空间上的一些限制。首先默认临时表空间不能被删除,除非有一个新的可以使用的默认临时表空间。也就是必须先使用ALTER DATABASE将一新的临时表空间设

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

49、个表空间或一个数据文件 执行对表空间的脱机备份(虽然对表空间可以进行联机备份) 使数据库的一部分不可以被访问,而其它的部分可以被正常地访问当一个表空间被设置为脱机状态时,该表空间上的数据是不可以访问。如果用户试图访问该表空间上的数据就会收到出错信息。当一个表空间被设置为脱机状态时或重新被设置为联机状态时,Oracle会把这一事件记录在数据字典和控制文件中,也会记录在报警文件中。如果当数据库被关闭时,某一表空间为脱机状态,那么当数据库被加载(MOUNT)和重新打开时该表空间仍保持为脱机状态。并不是所有的表空间都可以被设置为脱机状态,以下的表空间不能被设置为脱机状态: 系统(SYSTEM)表空间

50、上面有活动的还原/回滚段的表空间 默认临时表空间假设JINLIAN数据表空间出了些问题,需要对它进行维护。于是要将它的状态设为脱机。但为了慎重起见您先使用了如例6-32和例6-34的SQL查询语句以获取该表空间和它对应的数据文件现在的状态。例6-32SQL select tablespace_name, status, contents 2 from dba_tablespaces 3 where tablespace_name LIKE JIN%;TABLESPACE_NAME STATUS CONTENTS - - -JINLIAN ONLINE PERMANENTJINLIAN_INDE

51、X ONLINE PERMANENTJINLIAN_TEMP ONLINE TEMPORARYJINLIAN_UNDO ONLINE UNDO 例6-33SQL col name for a55例6-34SQL SELECT file#, name, status 2 FROM v$datafile 3 WHERE file# = 8; FILE# NAME STATUS - - - 8 D:ORACLEORADATAORACLE9IUSERS01.DBF ONLINE 9 J:DISK2MOONJINLIAN01.DBF ONLINE 10 J:DISK4MOONJINLIAN02.DBF

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!