表空间

来源:互联网 发布:固守大数据 编辑:程序博客网 时间:2024/05/22 07:00

表空间是Oracle数据库中最大的逻辑存储结构,它与操作系统中的数据文件相对应,用于存储数据库中用户创建的所有内容。在Oracle中,除了基本表空间以外,还有临时表空间、大文件表空间、非标准数据块表空间和撤销表空间。基本表空间一般指用户使用的永久性表空间,用于存储用户的永久性数据;临时表空间用于存储排序或汇总过程中产生的临时数据;大文件表空间用于存储大型数据;非标准数据块表空间用于在一个数据库实例中创建数据块大小不同的表空间;撤销表空间用于存储事务的撤销数据,在数据恢复时使用。

基本表空间

在创建数据库时,Oracle会自动创建一系列表空间,例如system表空间。用户可以使用这些表空间进行数据操作。但是,在实际应用中,如果所有用户都使用系统自动创建的这几个表空间,将会严重影响I/O性能。因此,需要根据实际情况创建不同的表空间,这样既可以减轻系统表空间的负担,又可以使得数据库中的数据分布更清晰。

创建表空间

CREATE[TEMPORARY|UNDO] TABLESPACE tablespace_name[    DATAFILE|TEMPFILE 'file_name' SIZE size K|M [reuse]    [        AUTOEXTEND OFF|ON        [NEXT number K|M MAXSIZE UNLIMITED|number K|M]    ]    [,...]][MININUM EXTENT number K|M][BLOCKSIZE number K][ONLINE|OFFLINE][LOGGING|NOLOGGINE][FORCE LOGGING][DEFAULT STORAGE storage][COMPRESS|NOCOMPRESS][PERMANENT|TEMPORARY][    EXTENT MANAGEMENT DICTIONARY|LOCAL    [AUTOALLOCATE|UNIFORM SIZE number K|M]]   [SEGMENT SPACE MANAGEMENT AUTO|MANUAL];

语法说明如下:
(1)TEMPORARY|UNDO
指定表空间的类型。TEMPORARY表示创建临时表空间;UNDO表示创建撤销表空间;不指定类型,则表示创建的表空间为永久性表空间。
(2)tablespace_name
指定新表空间的名称
(3)DATAFILE|TEMPFILE ‘file_name’
指定与表空间相关联的数据文件。一般使用DATAFILE,如果是创建临时表空间,则需要使用TEMPFILE;filename指定文件名与路径。可以为一个表空间指定多个数据文件。
(4)SIZE size
指定数据文件的大小。
(5)REUSE
如果指定的数据文件已经存在,则使用REUSE关键字可以清除并重新创建该数据文件。如果文件已经存在,但是又没有指定REUSE关键字,则创建表空间时会报错。
(6)AUTOEXTEND OFF|ON
指定数据文件是否自动扩展。OFF表示不自动扩展;ON表示自动扩展。默认情况下为OFF。
(7)NEXT number
如果指定数据文件为自动扩展,则NEXT子句用于指定数据文件每次扩展的大小。
(8)MAXSIZE UNLIMITED|number
如果指定数据文件为自动扩展,则MAXSIZE子句用于指定数据文件的最大大小。如果指定UNLIMITED,则表示大小无限制,默认为此选项。
(9)MININUM EXTENT number
指定表空间中的盘区可以分配到最小的尺寸。
(10)BLOCKSIZE number
如果创建的表空间需要另外设置其数据块大小,而不是采用初始化参数db_block_size指定的数据块大小,则可以使用此子句进行设置。此子句仅适用于永久性表空间。
(11)ONLINE|OFFLINE
指定表空间的状态为在线(ONLINE)或离线(OFFLINE)。如果为ONLINE,则表空间可以使用;如果为OFFLINE,则表空间不可使用。默认为ONLINE。
(12)LOGGING|NOLOGGING
指定存储在表空间中的数据库对象的任何操作是否产生日志。LOGGING表示产生;ONLOGGING表示不产生。默认为LOGGING。
(13)FORCE LOGGING
此选项用于强制表空间中的数据库对象的任何操作都产生日志。将忽略LOGGING或NOLOGGING子句。
(14)DEFAULT STORAGE storage
指定保存在表空间中的数据库对象的默认存储参数。当然,数据库对象也可以指定自己的存储参数。

此子句所设置的存储参数仅适用于数据字典管理的表空间。Oracle的管理形式主要分为数据字典管理管理形式与本地化管理形式。不过,Oracle 11g已经不再支持数据字典的管理形式。
(15)COMPRESS|NOCOMPRESS
指定是否亚索数据段中的数据。COMPRESS表示压缩;NOCOMPRESS表示不压缩。数据压缩发生在数据块层次中,以便压缩数据块内的行,消除列中的重复值。默认为COMPRESS。
对数据段中的数据进行压缩后,在检索数据时,Oracle会自动对数据进行解压缩。这个过程不会影响数据的检索,单数会影响数据的更新和删除。
(16)PERMANENT|TEMPORARY
指定表空间中数据对象的保存形式。PERMANENT表示持久保存;TEMPORARY表示临时保存。
(17)EXTENT MANAGEMENT DICTIONARY|LOCAL
指定表空间的管理方式。DICTIONARY表示采用数据字典的形式管理;LOCAL表示采用本地化管理形式管理。默认为LOCAL。
(18)AUTOALLOCATE|UNIFORM SIZE number
指定表空间中的盘区大小。AUTOALLOCATE表示盘区大小由Oracle自动分配,此时不能指定大小,UNIFORM SIZE number表示表空间中的所有盘区大小相同,都为指定值。默认为AUTOALLOCATE。
(19)SEGMENT SPACE MANAGEMENT AUTO|MANUAL
指定表空间中段的管理方式。AUTO表示自动管理方式;MANUAL表示手动管理方式。默认为AUTO。

例子:创建一个永久性表空间myspaceCREATE TABLESPACE myspaceDEFAFILE 'E:\app/Administrator/oradata\orcl\myspace.dbf'SIZE 20MAUTOEXTEND ON NEXT 5MMAXSIZE 100M;表空间已创建。

上述创建表空间myspace的语句中,指定了其对应的数据文件的名称及路径,数据文件初始大小为20MB,自动增长,每次增长大小为5MB,最大可为100MB。

例子:通过数据字典dba_tablespaces查看表空间myspace的部分属性SELECT tablespace_name, logging, allocation_type,extent_management, segment_space_managementFROM dba_tablespacesWHERE tablespace_name = 'MYSPACE';

在创建myspace表空间时,忽略了许多属性的设置,也就是采用了许多默认设置。通过上述结果可以对表空间的默认属性值有一定的了解。其中–
* logging字段:表示是否为表创建日志记录
* allocation_type字段:表示表空间的盘区大小的分配方式。字段值为system,则表示由Oracle系统自动分配,即为AUTOALLOCATE。
* extent_management字段:表示表空间盘区的管理方式
* segment_space_management字段:表示表空间中段的管理方式

在一个房间里面,存储了很多箱子,箱子里面可以存储物品。表空间可以看成房间,箱子可以看成数据文件,物品可以看成表。用户指定表空间也就是你希望把属于这个用户的表放在那个空间(表空间)里面。
表空间是一个虚拟的概念,可以无限大,但是需要由数据文件作为载体。

百度

表空间是数据库的的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存储在指定的表空间中。但主要存放的是表,所以称作表空间。
Oracle数据库中至少存在一个表空间,即SYSTEM的表空间。
第一步:建立表空间
在设计数据库的时候,首先需要设计表空间。需要考虑,是只建立一个表空间,还是需要建立多个表空间,以及各个表空间的存放位置、磁盘限额等等。
到底设计多少个表空间合理,没有统一的说法,这主要根据企业的实际需求去判断。如企业需要对用户进行磁盘限额控制的,则就需要根据用户的数量来设置表空间。当企业的数据容量比较大,而其又对数据库的性能有比较高的要求时,就需要根据不用类型的数据,设置不同的表空间,以提高其输入输出性能。
第二步:建立用户,并制定用户的默认表空间
在建立用户的时候,建议数据库管理员要指定用户的默认表空间。因为在利用CREATE语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表空间,这很不合理。
另外要注意,不同的表空间有不同的权限控制。用户对于表空间A具有完全控制权限,可能对于表空间B就只有查询权限,甚至连连接的权限都没有。合理为用户配置表空间的访问权限,也是提高数据库安全性的一个方法。

0 0