Oracle表空间和数据文件的管理
基础概念:Oracle数据库、实例、用户、表空间、表之间的关系

基础概念:Oracle数据库、实例、用户、表空间、表之间的关系数据库:Oracle数据库是数据的物理存储。
这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。
其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。
可以看作是Oracle就只有一个大数据库。
实例:一个Oracle实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构(Memory Structures)组成。
一个数据库可以有n个实例。
用户:用户是在实例下建立的。
不同实例可以建相同名字的用户。
表空间:表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
数据文件(dbf、ora):数据文件是数据库的物理存储单位。
数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。
而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。
一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
注:表的数据,是有用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。
由于oracle的数据库不是普通的概念,oracle是有用户和表空间对数据进行管理和存放的。
但是表不是有表空间去查询的,而是由用户去查的。
因为不同用户可以在同一个表空间建立同一个名字的表!这里区分就是用户了!关系示意图:理解1:Oracle数据库可以创建多个实例,每个实例可以创建多个表空间,每个表空间下可以创建多个用户(同时用户也属于表空间对应的实例)和数据库文件,用户可以创建多个表(每个表随机存储在一个或多个数据库文件中),如下图:理解2:理解1MS有误。
实例下有和,授权访问,是管理的,经授权在中创建,随机存储到不同的中。
oracle下的数据库实例、表空间、用户及其表的区分

oracle下的数据库实例、表空间、⽤户及其表的区分完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。
1) 数据库是⼀系列物理⽂件的集合(数据⽂件,控制⽂件,联机⽇志,参数⽂件等);2) Oracle数据库实例则是⼀组Oracle后台进程/线程以及在服务器分配的共享内存区。
在启动Oracle数据库服务器时,实际上是在服务器的内存中创建⼀个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据⽂件。
Oracle有⼀个很⼤的内存快,成为全局区(SGA)。
⼀、数据库、表空间、数据⽂件1、数据库数据库是数据集合。
Oracle是⼀种数据库管理系统,是⼀种关系型的数据库管理系统。
通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。
也即物理数据、内存、操作系统进程的组合体。
我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:全局数据库名:就是⼀个数据库的标识,在安装时就要想好,以后⼀般不修改,修改起来也⿇烦,因为数据库⼀旦安装,数据库名就写进了控制⽂件,数据库表,很多地⽅都会⽤到这个数据库名。
启动数据库:也叫全局数据库,是数据库系统的⼊⼝,它会内置⼀些⾼级权限的⽤户如SYS,SYSTEM等。
我们⽤这些⾼级权限账号登陆就可以在数据库实例中创建表空间,⽤户,表了。
查询当前数据库名:select name from v$database;2、数据库实例⽤Oracle官⽅描述:实例是访问Oracle数据库所需的⼀部分计算机内存和辅助处理后台进程,是由进程和这些进程所使⽤的内存(SGA)所构成⼀个集合。
其实就是⽤来访问和使⽤数据库的⼀块进程,它只存在于内存中。
就像Java中new出来的实例对象⼀样。
我们访问Oracle都是访问⼀个实例,但这个实例如果关联了数据库⽂件,就是可以访问的,如果没有,就会得到实例不可⽤的错误。
Oracle数据压缩和表空间大小的处理

4.扩展表空间,表空间扩展有两种方法:增加数据文件;调整当前数据文件的大小或扩展的大小。
(1)增加数据文件ALTER TABLESPACE TESTTBSADD DATAFILE 'D:/ora/datafile/users.ora' SIZE 500MAUTOEXTEND ONNEXT 50MMAXSIZE 2000M;增加了一个500M的数据文件,并且可以自动扩展到2G,每次扩展50M。
(2)增加当前数据文件的大小ALTER DATABASEDATAFILE 'D:/ora/datafile/users.ora'RESIZE 50000M;或者使用file_idALTER DATABASEDATAFILE 10RESIZE 50000M;(3)在使用过程中,如果想改变某个数据文件的最大大小,可以ALTER DATABASEDATAFILE 'D:/ora/datafile/users.ora'AUTOEXTEND ONMAXSIZE 10240M;---------------------------------------------------------------------------------- Oracle中压缩数据节省空间和提高速度添加时间:2007-4-22使用表压缩来节省空间并提高查询性能很多决策支持系统通常都涉及到存储于几个特大表中的大量数据。
随着这些系统的发展,对磁盘空间的需求也在快速增长。
在当今的环境下,存储着数百TB(太字节)的数据仓库已经变得越来越普遍。
为了帮助处理磁盘容量问题,在Oracle9i第2版中引入了表压缩特性,它可以极大地减少数据库表所需要的磁盘空间数量,并在某些情况下提高查询性能。
在本文中,我将向你说明表压缩是如何工作的,以及在构建和管理数据库时如何配置表空间。
我还将基于一些示例测试结构讨论一些性能问题,以帮助你了解使用表压缩预计能获得多大好处。
Oracle Storage

一、基本的Oracle存储结构:表空间与数据文件Oracle数据库中具有两种类型的存储:物理存储和逻辑存储。
上面的Oracle存储结构模型中,可以看出下列要素:∙每个数据库(Database)都必须由一个或多个表空间(Tablespace)组成。
每个表空间都必须属于并且只属于一个数据库。
∙每个表空间都必须由一个或多个数据文件(Datafile)组成。
每个数据文件都必须属于并且只属于一个表空间。
∙每个数据文件都必须由一个或多个操作系统块(Operation System Block)组成。
每个操作系统块都必须属于并且只属于一个数据文件。
∙每个表空间都可以包含一个或多个段(Segment)。
每个段都必须存在并且只能存在于一个表空间内。
∙每个段都必须由一个或多个区间(Extent)组成。
每个区间都必须属于并且只属于一个段。
∙每个区间都必须由一个或多个Oracle数据块(Oracle Block)组成。
每个Oracle 数据块都必须属于并且只属于一个区间。
∙每个区间都必须被定位并且只能定位在一个数据文件内。
数据文件中的空间可以被分配为一个或多个区间。
∙每个Oracle数据块都必须由一个或多个操作系统块组成。
每个操作系统块都可以是并且只能是一个Oracle数据块的部分。
1、物理存储结构物理结构是操作系统操作Oracle数据库时能够看见的结构。
1.1、Oracle数据文件数据文件由下列3部分组成:头部、区间(已分配的空间)以及空闲空间(未分配的空间)。
oracle16数据文件的头部(Header)将其标识为数据库的一部分,并且存储了该数据文件的细节,细节包括数据文件所属的表空间以及最后执行的检查点。
这样,Oracle就能够在启动时检查所有相关文件是否同步。
数据文件的剩余部分由区间和空闲空间组成,通过创建、删除和更改Oracle的段(Segment)逻辑存储组件就可以对这些剩余部分进行管理。
每个Oracle数据文件都只属于一个表空间。
Oracle-undo-表空间管理

Oracle-undo-表空间管理Oracle的Undo表空间管理是Oracle数据库中非常重要而又基础的管理工作之一。
因为数据库中的Undo表空间与事务有着紧密的联系,影响着数据库的性能和稳定性。
本文将对Oracle的Undo表空间管理进行详细介绍,包括Undo表空间的概念、作用、管理方法、优化等方面。
一、Undo表空间的概念Undo表空间是用来存储Oracle数据库中操作的回滚信息,主要的作用是进行事务的回滚和恢复。
在Oracle数据库中,事务的ACID属性可以保证数据的完整性和一致性,而Undo表空间就是为了保证事务的ACID属性而存在的。
在Oracle数据库中,Undo表空间分为两种类型:System Undo表空间和User Undo表空间。
系统Undo表空间是由系统自动创建的一个表空间,用于存储系统级的回滚信息,用户不能自己创建或删除该表空间。
而用户Undo表空间则是由用户自己创建的,用来存储用户级别的回滚信息,一个数据库中可以有多个用户Undo表空间。
二、Undo表空间的作用Undo表空间的作用非常重要,它主要用来完成以下几个方面的功能:1. 事务的回滚当某个事务需要回滚时,Oracle会将该事务所做的修改操作写入到Undo表空间中,然后撤销这些操作来回滚事务。
因此Undo表空间的存储能力和速度直接影响着Oracle数据库回滚事务的性能和效率。
2. 数据库恢复当数据库需要恢复时,Oracle会利用Undo表空间中的回滚信息将数据库恢复到特定的时间点。
因此Undo表空间存储的时间范围和存储能力对数据库恢复能力有着直接的影响。
3. MVCC机制在Oracle数据库中,MVCC(多版本并发控制)机制是一种用来实现并发控制的技术,它需要利用Undo表空间中的回滚信息来实现数据的版本控制。
当多个事务同时对一个数据进行操作时,Undo表空间就派上用场了。
三、Undo表空间的管理方法为了更好地管理Undo表空间,我们需要掌握以下几种管理方法:1. 创建Undo表空间在Oracle数据库中,可以通过语句CREATE UNDO TABLESPACE来创建Undo表空间。
Oracle数据库入门教程

Oracle数据库入门教程Oracle数据库是目前世界上广泛应用的一种关系型数据库管理系统。
它具有高性能、高稳定性和高安全性的特点,在各种规模的企业和组织中被广泛使用。
本文将介绍Oracle数据库的基本概念、安装和配置、SQL语句以及常用管理工具等内容,帮助读者快速入门Oracle数据库。
一、Oracle数据库基本概念1. 数据库:数据库是一个有组织的数据集合,通过数据库管理系统(DBMS)进行管理和访问。
Oracle数据库是一种关系型数据库管理系统,使用表格来存储数据。
2. 实例:实例是Oracle数据库在内存中运行的副本。
每个实例对应一个特定的数据库,负责连接管理、内存管理、进程管理和数据缓存等。
3. 表空间:表空间是Oracle数据库中用来管理存储空间的逻辑结构,用于存储表、索引、数据文件等对象。
4. 数据文件:数据文件是Oracle数据库中用来存储实际数据的物理文件。
5.表:表是数据库中最基本的数据存储单位,由行和列组成。
6.列:列是表中的一个字段,用于存储不同类型的数据。
7.行:行是表中的一条记录,包含了不同列的数据。
二、Oracle数据库安装和配置2.配置实例:安装完成后,通过配置文件对实例进行配置,包括设置实例名、监听器端口、字符集等参数。
3.创建表空间:使用SQL语句创建需要的表空间,指定数据文件存储路径和大小等参数。
4.创建用户:通过SQL语句创建数据库用户,为用户分配合适的权限。
三、SQL语句1.创建表:使用CREATETABLE语句创建表,指定列的名称、数据类型以及约束等。
2.插入数据:使用INSERTINTO语句插入数据,指定表名和要插入的数据。
3.更新数据:使用UPDATE语句更新数据,指定表名、列名和要更新的值。
4.删除数据:使用DELETEFROM语句删除数据,指定表名和删除条件。
5.查询数据:使用SELECT语句查询数据,可以使用WHERE子句指定查询条件。
6.排序数据:使用ORDERBY子句对查询结果进行排序。
oracle数据库表空间扩容方法

一、概述数据库管理是企业信息系统中极为重要的一环,而Oracle数据库作为业界优秀的关系型数据库管理系统,通常被广泛应用于企业级应用中。
在数据库管理中,表空间是一个很重要的概念,它用于管理数据库中的数据存储。
随着数据量的增加,表空间可能会出现空间不足的情况,因此扩容表空间变得至关重要。
本文将介绍几种扩容Oracle数据库表空间的方法。
二、从数据文件角度扩容表空间1. 增加数据文件当表空间中的数据文件即将满的时候,可以通过增加数据文件的方式来扩容表空间。
具体操作步骤如下:1) 在Oracle数据库中使用“alter tablespace 表空间名 add datafile 新数据文件名 size 新数据文件大小”命令来增加数据文件;2) 通过以上操作,可以为表空间增加数据文件,并使表空间的空间得到扩容。
2. 自动扩展在表空间创建的时候,可以选择启用自动扩展功能。
当表空间中的数据文件空间不足时,可以自动扩展表空间的空间大小。
具体操作步骤如下:1) 在创建表空间的时候,使用“autoextend on”选项来启用自动扩展功能;2) 当表空间中的数据文件空间不足时,系统会自动扩展表空间的空间大小。
三、从段角度扩容表空间1. 移动段移动段是一种有效的扩容表空间的方法。
通过移动段,可以将表或索引从原有的表空间移动到具有足够空间的表空间中,从而实现表空间的扩容。
具体操作步骤如下:1) 使用“alter table 表名 move tablespace 新表空间名”命令来将表移动到新的表空间;2) 使用“alter index 索引名 rebuild tablespace 新表空间名”命令来将索引移动到新的表空间。
2. 压缩段通过压缩段的方式,可以释放表空间中的空闲空间,从而实现表空间的扩容。
具体操作步骤如下:1) 使用“alter table 表名enable row movement”命令来启用行移动功能;2) 使用“alter table 表名shrink spacepact”命令来压缩表,释放表空间中的空闲空间。
oracle表空间自增长机制

Oracle表空间自增长机制1. 概述在Oracle数据库中,表空间(tablespace)是用于存储数据和索引的逻辑结构。
它可以包含一个或多个数据文件(datafile),而数据文件则是物理上存储数据的文件。
为了有效地管理存储空间,Oracle提供了自增长机制,使得表空间可以根据需要自动增加或减少存储容量。
本文将详细介绍Oracle表空间自增长机制的原理、配置和管理方法。
2. 自增长类型Oracle表空间的自增长机制主要有两种类型:自动扩展和手动扩展。
2.1 自动扩展当表空间中的数据文件达到其最大大小时,Oracle会自动扩展该数据文件。
自动扩展可以通过设置表空间的最大大小(MAXSIZE)来限制。
当数据文件达到最大大小时,Oracle会创建一个新的数据文件,并将新写入的数据分配给新的数据文件。
自动扩展还可以通过设置增量大小(INCREMENT BY)来控制每次扩展的大小。
例如,如果设置增量大小为100M,则每次扩展时会新增100M的存储容量。
2.2 手动扩展除了自动扩展外,用户还可以手动地对表空间进行扩展。
手动扩展可以通过执行ALTER TABLESPACE语句来实现。
手动扩展时,可以指定增加的数据文件的大小和位置。
Oracle会在指定位置创建一个新的数据文件,并将新写入的数据分配给新的数据文件。
3. 配置表空间自增长要配置表空间的自增长机制,需要使用ALTER TABLESPACE语句。
下面是一些常用的配置选项:3.1 设置最大大小可以使用以下语法设置表空间的最大大小:ALTER TABLESPACE tablespace_name MAXSIZE size;其中,tablespace_name是要配置的表空间名称,size是最大大小(例如1G、100M等)。
3.2 设置增量大小可以使用以下语法设置表空间的增量大小:ALTER TABLESPACE tablespace_name AUTOEXTEND ON NEXT size;其中,tablespace_name是要配置的表空间名称,size是增量大小(例如100M、1G等)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章表空间和数据文件的管理6.1 Oracle引入逻辑结构的目的Oracle数据库管理系统并没有像不少其它数据库管理系统那样直接地操作数据文件,而是引入一组逻辑结构。
如图6-1所示。
图6-1图6-1的虚线左边为逻辑结构,右边为物理结构。
与计算机原理或计算机操作系统中所讲的有些不同,在Oracle数据库中,逻辑结构为Oracle引入的结构,而物理结构为操作系统所拥有的结构。
曾有不少学生问过我同样的一个问题,那就是Oracle为什么要引入逻辑结构呢?首先可能是为了增加Oracle的可移植性。
Oracle公司声称它的Oracle数据库是与IT 平台无关的,即在某一厂家的某个操作系统上开发的Oracle数据库(包括应用程序等)可以几乎不加修改地移植到另一厂家的另外的操作系统上。
要做到这一点就不能直接操作数据文件,因为数据文件是跟操作系统相关的。
其次可能是为了减少Oracle从业人员学习的难度。
因为有了逻辑结构Oracle的从业人员就可以只对逻辑结构进行操作,而在所有的IT平台上逻辑结构的操作都几乎完全相同,至于从逻辑结构到物理结构的映射(转换)是由Oracle数据库管理系统来完成的。
6.2 Oracle数据库中存储结构之间的关系其实图6-1类似于一个Oracle数据库的存储结构之间关系的实体-关系图。
如果读者学过实体-关系模型(E-R模型)的话,从图6-1中可以很容易地得到Oracle数据库中存储结构之间的关系。
为了帮助那些没有学过E-R模型的读者理解图6-1,也是为了帮助那些学过但已经忘的差不多了的读者恢复一下记忆,在下面对E-R模型和图6-1给出一些简单的解释。
在图6-1中,园角型方框为实体,实线表示关系,单线表示一的关系,三条线(鹰爪)表示多的关系。
于是可以得到:每个数据库是由一个或多个表空间所组成(至少一个)。
每个表空间基于一个或多个操作系统的数据文件(至少一个)。
每个表空间中可以存放有零个或多个段(Segment)。
每个段是由一个或多个区段(Extent)所组成。
每个区段是由一个或多个连续的Oracle数据块所组成。
每个Oracle数据块是由一个或多个连续的操作系统数据块所组成。
每个操作系统数据文件是由一个或多个区段(Extent)所组成。
每个操作系统数据文件是由一个或多个操作系统数据块所组成。
有关段,区段,和Oracle数据块等我们在接下来的章节中要详细地介绍。
6.3 表空间和数据文件之间的关系及表空间的分类通过前面的讨论可知:Oracle将数据逻辑地存放在表空间里,而物理地存放在数据文件里。
表空间(Tablespaces)在任何一个时刻只能属于一个数据库,但是反过来并不成立,因为一个数据库一般都有多个表空间。
每个表空间都是由一个或多个操作系统的数据文件所组成,但是一个操作系统的数据文件只能属于一个表空间。
表空间可以被进一步划分成一些更小的逻辑存储单位。
在一个Oracle数据库中,每个数据文件(Data files)可以而且只能属于一个表空间和一个数据库。
数据文件实际上是存储模式对象数据的一个容器/仓库。
在一个Oracle数据库中一般有两类表空间,他们是系统(SYSTEM)表空间和非系统(Non-SYSTEM)表空间。
系统(SYSTEM)表空间是与数据库一起建立的,在系统表空间中存有数据字典,在系统表空间中还包含了系统还原(回滚)段。
虽然在系统表空间中可以存放用户数据,但考虑到Oracle系统的效率和管理上的方便,在系统表空间上不应该存放任何用户数据。
非系统(Non-SYSTEM)表空间可以由数据库管理员创建,在非系统表空间中存储一些单独的段,这些段可以是用户的数据段,索引段,还原段,和临时段等。
引入非系统表空间可以方便磁盘空间的管理,也可以更好地控制分配给用户磁盘空间的数量。
引入非系统表空间还可以将静态数据和动态数据有效地分开,也可以按照备份的要求将数据分开存放。
使用如下的命令创建一个非系统表空间:CREATE TABLESPACE表空间名[DATAFILE子句][MINIMUM EXTENT 正整数[K|M]][BLOCKSIZE正整数[K]][LOGGING|NOLOGGING][DEFAULT 存储子句][ONLINE|OFFLINE][PERMANENT|TEMPORARY][区段管理子句][段管理子句]在这里对以上命令中的一些子句和选项给出进一步的解释:表空间名:所要创建的表空间名。
DATAFILE子句:组成所要创建的表空间的文件说明。
MINIMUM EXTENT:表空间中所使用的每个EXTENT都必须是该参数所指定数的整数倍。
BLOCKSIZE:为该表空间说明非标准块的大小。
在使用这一子句之前,您必须先设置DB_CACHE_SIZE参数和DB_nK_CACHE_SIZE参数,而且该子句中所说明的正整数一定与DB_nK_CACHE_SIZE参数的设定相对应。
LOGGING:说明在该表空间中所有数据的变化都将写入重做日志文件中,这也是默认方式。
NOLOGGING:说明在该表空间中所有数据的变化不都写入重做日志文件中,NOLOGGING 只影响一些DML和DDL命令。
DEFAULT存储子句:说明所有在该表空间中所创建的对象的默认存储参数。
OFFLINE:说明该表空间在创建后立即被置为脱机,即不能使用。
还有一些其它的子句和选项我们将在后续的章节中陆续地介绍。
6.4 表空间中的磁盘空间管理在Oracle8.0和更早的版本中所有表空间中的磁盘空间管理都是由数据字典来管理的。
在这种表空间的管理方法中所有的空闲区由数据字典来统一管理。
每当区段被分配或收回时,Oracle服务器将修改数据字典中相应的(系统)表。
在数据字典(系统)管理的表空间中所有的EXTENTS的管理都是在数据字典中进行的,而且每一个存储在同一个表空间中的段可以具有不同的存储子句。
在这种表空间的管理方法中您可以按您的需要修改存储参数,所以存储管理比较灵活但系统的效率较低。
还有如果使用这种表空间的管理方法,有时需要合并碎片。
由于Oracle8.0对互联网的成功支持和它在其它方面的卓越表现使得Oracle的市场占有率急速地增加,同时Oracle数据库的规模也开始变的越来越大。
这样在一个大型和超大型数据库中就可能有成百乃至上千个表空间。
由于每个表空间的管理信息都存在数据字典中,也就是存在系统表空间中。
这样系统表空间就有可能成为一个瓶颈从而使数据库系统的效率大大地下降。
正是为了克服以上弊端,Oracle公司从它的Oracle8i开始引入了另一种表空间的管理方法,叫做本地管理的表空间。
本地管理的表空间其空闲EXTENTS是在表空间中管理的,它是使用位图(Bitmap)来记录空闲EXTENTS,位图中的每一位对应于一块或一组块,而每位的值指示空闲或分配。
当一个EXTENT被分配或释放时,Oracle服务器就会修改位图中相应位的值以反映该EXTENT的新的状态。
位图存放在表空间所对应的数据文件的文件头中。
使用本地管理的表空间减少了数据字典表的竞争,而且当磁盘空间分配或收回时也不会产生回滚(还原),它也不需要合并碎片。
在本地管理的表空间中您无法按您的需要来随意地修改存储参数,所以存储管理不像数据字典(系统)管理的表空间那样灵活但系统的效率较高。
因为在本地管理的表空间中,表空间的管理,如磁盘空间的分配与释放等已经不在需要操作数据字典了,所以系统表空间的瓶颈问题得到了很好的解决。
因此Oracle公司建议用户创建的表空间应该尽可能地使用本地管理的表空间。
在Oracle9i中本地管理的表空间为默认方式,但是在Oracle8i中数据字典(系统)管理的表空间为默认方式。
6.5 创建数据字典管理的表空间曾有位著名的学者在一份非常出名的报纸上发表了一篇震撼了整个神州大地的文章,文章的题目是:“中国妇女解放运动的先驱-潘金莲”。
这篇文章一发表就在社会上引发了激烈的争论,真是“一石击起千层浪”。
一位考古学的博士想利用统计学的方法科学地证明潘金莲到底是不是中国妇女解放的先驱。
首先他必须将大量的数据分门别类地存入数据库中。
他找到了您让您在Oracle数据库方面帮他的忙。
您决定首先要为这个项目创建一个名为jinlian(金莲)的表空间。
为了平衡I/O,您决定该表空间将基于两个数据文件,它们分别是J:\DISK2\MOON\JINLIAN01.DBF和J:\DISK4\MOON\JINLIAN02.DBF,其大小都为50M(在实际中可能几百M)。
为了更有效地控制磁盘的存储分配,您决定使用数据字典管理的表空间。
为了防止用户在创建对象时使用的EXTENT过小而产生过多的碎片,您决定最小的EXTENT为50K(MINIMUM EXTENT 50K)。
当需要磁盘空间的自动分配时第一次分配为50K(INITIAL 50K),第二次也为50K(NEXT 50K),所分配的最大磁盘空间为100个EXTENTS(MAXEXTENTS 100)。
从第三次分配开始按如下的公式进行分配:NEXT * (1+PCTINCREASE/100)(n-2)。
其中n为分配的次数。
于是你发出了如例6-1的SQL语句来创建名为jinlian(金莲)的表空间。
例6-1SQL> CREATE TABLESPACE jinlian2 DATAFILE 'J:\DISK2\MOON\JINLIAN01.DBF' SIZE 50 M,3 'J:\DISK4\MOON\JINLIAN02.DBF' SIZE 50 M4 MINIMUM EXTENT 50K EXTENT MANAGEMENT DICTIONARY5 DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);表空间已创建。
紧接着为了验证所创建的表空间是不是数据字典管理的,您使用了如例6-4的SQL查询语句。
但为了使该语句的显示结果更清晰,您又使用了例6-2和例6-3的SQL*Plus命令对输出进行了格式化。
例6-2SQL>SET LINE 120例6-3SQL> COL TABLESPACE_NAME FOR A15例6-4SQL> SELECT tablespace_name, block_size, extent_management, segment_space_management2 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 MANUALTOOLS 4096 LOCAL MANUALUSERS 4096 LOCAL MANUALJINLIAN 4096 DICTIONARY MANUAL已选择10行。