表空间(TableSpace)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表空间(TableSpace)
我们知道Oracle数据库真正存放数据的是数据⽂件(Data File),oracle表空间(tablespace)实际上是⼀个逻辑的概念,在物理上是并不存在的,那么把⼀组data files捻在⼀起就成为⼀个表空间。
表空间属性:
⼀个数据库可以包含多个表空间,⼀个表空间只能属于⼀个数据库
⼀个表空间包含多个数据⽂件,⼀个数据⽂件只能属于⼀个表空间
表空间可以划分成更细的逻辑存储单元:
Oracle数据库的存储空间结构:
从逻辑的⾓度来看,⼀个数据库(database)下⾯可以分多个表空间(tablespace);⼀个表空间下⾯有可以分多个段(segment);⼀个数据表要占⼀个段(segment),⼀个索引也要占⼀个段(segment)。
⼀个段(segment)由多个区间(extent)组成,那么⼀个区间⼜由⼀组连续的数据块(data block)组成,这连续的数据块是在逻辑上是连续的,有可能是物理逻辑上是分散
那么从物理的⾓度上看,⼀个表空间由多个数据⽂件组成,数据⽂件是实实在在存在的磁盘⽂件,这些⽂件是由oracle数据库操作系统的block组成的
Segment(段):段是指占⽤数据⽂件空间的通称,或数据库对象使⽤的空间的稽核;段可以由表段、索引段、回滚段、临时段、和⾼速缓存段等。
Extent(区间):分配给对象的任何连续块就叫区间;区间也叫扩展,因为当它⽤完已经分配的区间后,再有新的记录插⼊就必须在分配新的区间(即扩展⼀些块);⼀旦区间分配某个对象(表,索引或簇),则该区间就不能再分配给其它的对象
1,查看表空间的名称及⼤⼩
select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name
2、查看表空间物理⽂件的名称及⼤⼩
select tablespace_name,
file_id,
file_name,
round(bytes / (1024*1024), 0) total_space
from dba_data_files
order by tablespace_name;
select tablespace_name,
file_id,
file_name,
round(bytes / (1024*1024), 0) total_space
from dba_temp_files
order by tablespace_name;
3、查看表空间的使⽤情况
select sum(bytes) / (1024 * 1024) as free_space, tablespace_name
from dba_free_space
group by tablespace_name;
SELECT * from DBA_TEMP_FREE_SPACE;
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间⼤⼩(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使⽤空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,
2),
'990.99') "使⽤⽐",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最⼤块(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 4 DESC;
4、查看/修改Database的Default Temporary Tablespace
SELECT PROPERTY_NAME, PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE
PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;
5,--查看表空间是否具有⾃动扩展的能⼒
SELECT T.TABLESPACE_NAME,
D.FILE_NAME
D.AUTOEXTENSIBLE,
D.BYTES,
D.MAXBYTES,
D.STATUS
FROM DBA_TABLESPACES T, DBA_DATA_FILES D
WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME
ORDER BY TABLESPACE_NAME, FILE_NAME;
当数据库刚建⽴起来,系统会建⽴⼀个叫做SYSTEM的系统的TableSpace,存放SYS,SYSTEM等User重要的系统数据(ex:数据字典与预存储程序等)建⽴oracle User时,不指定预设的TableSpace,则此User则会以System TableSpace 作为预设的TableSpace,这造成管理上的混乱与严重的效能问题,这是必须注意的
TableSpace的类型:Permanent、Undo、Temporary
Permanent TableSpace:创建给AP使⽤的都是。
⾥⾯的对象的⽣命周期不会随着交易或者⽤户的session结束⽽消失
Undo TableSpace:是兄⽤的特殊的tablespace,⽤来取代过去的rollback segement的机制,主要的功能是提供⽤户修改数据未commit之前的read consistency的功能以及rollback交易的功能。
也因为undo tablespace主要是取代过去的rollback segement的机制,所以不能存放其他种类的segement。
只能是local managed。
创建undo 类型的表空间:
create undo tablespace undo1 datafile '/oracle/product/oradata/ora10/paul01.dbf' size 20m;
Temporary Tablespace:
Temporary Tablespace也是系统⽤的特殊的Tablespace。
当使⽤者需要做排序时,有时就会使⽤Temporary Tablespace,因此⾥⾯的Segement的⽣命周期都很短,可能交易结束或者User的Session结束就会消失。
每个系统都必须要有⼀个预设的Temporary Tablespace(Default Temporary Tablespace),The DEFAULT TEMPORARY TABLESPACE clause of the CREATE DATABASE statement creates a default temporary tablespace for the database. 如果没有Default Temporary Tablespace,Create User的时候⼜忘了指定使⽤哪个Temporary Tablespace,会以SYSTEM tablespace来当作Temporary Tablespace
以下列出⼏个Temporary Tablespace的特性:
1. Temporary Tablespace是NOLOGGING模式,因此若数据库损毁,做Recovery不需要恢复Temporary Tablespace。
2. Temporary最好是使⽤Local managed Tablespace
3. 若使⽤local managed模式,UNIFORM. SIZE参数最好是Sort_Area_Size的参数,这样效能⽐较好。
4. Uniform. size预设1024K,⽽Sort_area_size预设是512K
5. Temporary Tablespace不能使⽤local managed的AUTOALLOCATE参数。
创建临时表空间:
create temporary tablespace temp datafile '/oracle/product/oradata/ora10/paul01.dbf' size 20m extent management local uniform size 4m;
TableSpace的Extent空间管理:Local Managed与Dictionary Managed
Local Managed与Dictionary Managed最主要的分别,在于空间管理⽅式的不同。
Local managed的管理⽅式是让每个TableSpace⾃⼰利⽤bitmaps去管理他⾃⼰的空间,⽽Dictionary Managed则是利⽤SYSTEM TableSpace的数据字典来做空间管理。
这两者最⼤的不同在于Local managed⼤⼤的改善了Oracle做空间管理(例如:产⽣新的Exten或释放Extent...等)时,抢夺SYSTEM TableSpace资源的问题。
所以Oracle从8i以后已经朝Local managed的⽅向去⾛了,所以我们应该尽量使⽤Local managed的⽅式才对
Local managed tablespace:
1. Local managed使⽤bitmaps做空间管理。
2. bitmaps中每个bit代表⼀个data block或者⼀堆相邻的data block(extent)
3. 从10g开始,SYSTEM Tablespace预设使⽤local managed-->Oracle建议使⽤local managed的证据。
4. 假如SYSTEM TableSpace是local managed,那么其他TableSpace必须是local managed。
5. 若没指定使⽤local managed或者dictionary managed,则预设使⽤local managed。
6. 使⽤local managed可以增进效能,因为减少了SYSTEM TableSpace的效能竞争。
7. 使⽤local managed则不需要做空间缝合(loalescing),因为相邻的不同⼤⼩的extent,辨识extent使⽤状态的bits也在⼀起,Oracle可以直接使⽤这些相邻的extent。
不需要先进⾏缝合才可以使⽤。
这也可以增进部份效能。
local managed的extent空间管理(Extent Management):AUTOALLOCATE与UNIFORM
AUTOALLOCATE与UNIFORM这两个参数,是⽤来设定Local managed的extent⼤⼩的参数。
AUTOALLOCATE是让Oracle⾃⼰来决定extent的⼤⼩;⽽UNIFORM则是强制规定TableSpace中extent的为固定的⼤⼩。
通常若明确的知道extent必须多⼤,才会使⽤UNIFORM,使⽤UNIFORM的好处是每个extent的⼤⼩都相同,不会产⽣空间破碎的问题。
但是如果⽆法预知extent必须多⼤,使⽤AUTOALLOCATE会⽐较好,让Oracle⾃⼰决定使⽤extent的⼤⼩,可以⽐较符合实际的需求,因此会⽐较节省空间,但是这可能会产⽣部分空间破碎的问题。
使⽤AUTOEXTENT,Oracle会使⽤的extent⼤⼩为64k、
1M、8M、64M。
根据系统上使⽤的结果,99.95%的extent都是使⽤64k、只有少部分使⽤1M的extent,所以其实破碎的情况不严重,使⽤AUTOALLOCATE在系统上其实就够⽤了。
想知道你的TableSpace所使⽤的Extent有⼏种,
请⽤下列的语法:
Select bytes,count(*) from dba_extents where tablespace_name='your_tablespace_name' group by bytes;
Select tablespace_name,bytes, count(*)
from dba_extents
group by bytes,tablespace_name;
Local managed中的Segment的空间管理(Segment Space Management ):AUTO与MANUAL
Tablespace中的Segment的空间管理上,可以设置的参数为AUTO与MANUAL。
MANUAL是使⽤我们熟悉的PCTUSED、FREELISTS、FREELIST GROUPS的⽅式来管理Segment中的data block;⽽AUTO则是使⽤bitmaps来管理data block。
使⽤AUTO来管理的话,以往create tablespace或create table时设定的storage的参数设定都不需要再设定了,因为data block的管理已经是bitmaps了,不再是free list了。
如果没有特别的需求话,使⽤AUTO会⽐使⽤MANUAL有更好的空间利⽤率,与效能上的提升。
1、创建表空间
创建表空间的完整命令:
Create [undo] tablespace <ts_name>
datafile <file_spec1> [,<file_spec2>]
mininum extent <m> k|m
blocksize <n> [k]
logging clause
force logging
default storage_clause
online | offline
permanent | temporary
extent_manager_clause
segment_manager_clause
解析:
1)、undo指定系统将创建⼀个回滚表空间
2)、tablespace指定表空间名称
3)、datafile指定数据⽂件的路径、名称、⼤⼩及⾃增长状况:具体形如
'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' size 50M autoextend on next 10M maxsize 500M,
也可以指定on为off,就没有后⾯的递增和最⼤尺⼨了,也可以在maxsize后⾯指定最⼤尺⼨unlimited说明表空间⽆限⼤。
4)、mininum extent <m> k|m指出在表空间的extent的最⼩值,这个参数可以减少空间碎⽚,保证在表空间的extent是这个数值的整数倍;
5)、blocksize <n>[k]设置块的⼤⼩,如果要设置这个参数,必须设置成db_block_size的整数倍;
6)、logging cluse指⽰这个表空间上所有⽤户对象的⽇志属性,缺省是logging;
7)、force logging指⽰表空间进⼊强制⽇志模式。
此时系统将记录表空间上对象的所有改变,除了临时段的改变。
这个参数⾼于logging参数中的nologging选项;
8)、default storage_clause声明缺省的存储⼦句;
9)、online|offline指定表空间状态;
10)、permanent| temporary指出表空间的属性,是永久表空间还是临时表空间。
永久表空间存放的是永久对象,
临时表空间存放的是session⽣命期中存在的临时对象。
这个参数⽣成的临时表空间创建后⼀直都是字典管理,不能使⽤extent management local选项。
如果要创建本地管理表空间,必须使⽤create temporary tablespace。
声明了这个参数就不能声明block size。
11)、extent_manager_clause说明表空间如何管理extent。
⼀旦声明了这个⼦句,就只能通过移植的⽅式改变这些参数。
如果希望表空间本地管理的话,声明local选项。
本地管理表空间是通过位图管理的。
Autoallocate说明表空间⾃动分配extent,⽤户不能指定extent的⼤⼩。
只有9.0以上的版本具有这个功能。
Uniform说明表空间的范围的固定⼤⼩,缺省是1M。
不能将本地管理的数据库的SYSTEM表空间设置成字典管理。
ORACLE推荐使⽤本地管理表空间。
如果没有设置这个⼦句,oracle会进⾏默认设置。
如果初始化参数compatible⼩于9.0.0,那么系统创建字典管理表空间,如果⼤于9.0.0,那么按如下设置:
如果没有指定default storage_clause,oracle创建⼀个⾃动分配的本地管理表空间;否则如果指定了mininum extent,
那么oracle判断mininum extent、initial、next是否相等,以及pctincrease是否为0,
如果满⾜这2个条件,oracle吃醋昂就⼀个本地管理表空间,extent size是initial,
如果不满⾜,那么oracle将创建⼀个⾃动分配的本地管理表空间;
如果没有指定mininum extent,那么oracle判断initial和next是否相等,以及pctincrease是否为0,
如果满⾜这2个条件,那么oracle创建⼀个本地管理表空间并制定uniform,否则oracle将创建⼀个⾃动分配的本地管理表空间。
(本地管理表空间只能存储永久对象。
如果你声明了local,则不能声明default storage_clause,mininum extent,temporary);
12)、segment_management_clause : segment space management auto。
2、表空间的状态:
Tablespace的状态有3种:ONLINE、OFFLINE、READ ONLY。
ONLINE是正常⼯作的状态,OFFLINE状态下,是不允许访问数据的,
SYSTEM tablespace和DEFAULT temp tablespace是不能被OFFLINE的,且带有active undo segments的tablespace也不能被OFFLINE。
切换ONLINE和OFFLINE状态的命令是alter tablespace <ts_name> offline/online。
当状态变成READ-ONLY时,会产⽣⼀个checkpoint,此时数据只能读不能写,但是可以drop对象,相关命令是alter tablespace <ts_name> read only和alter tablespace <ts_name> read write。
3、表空间的存储设置
修改tablespace和datafiles的存储设置。
这项⼯作是指修改tablespace的⼤⼩和datafile的存放位置。
在修改tablespace的⼤⼩之前,我们需要先知道tablespac的当前存储情况。
可以⽤下⾯的SQL语句实现:
SELECT a.tablespace_name,
a.bytes bytes_used,
rgest,
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) percent_used
FROM (SELECT tablespace_name, SUM(bytes) bytes
FROM Dba_Data_Files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) bytes, MAX(bytes) largest
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC;
上⾯这条SQL语句中,有2条⼦查询,第⼀条取得的是表空间的总字节数,第⼆条取得的是表空间中余下的字节数,最终得到的结果是已经使⽤的字节数和百分⽐。
修改tablespace的⼤⼩,主要是通过datafile的⼤⼩来实现的,修改datafile的⼤⼩⼜有3种⽅法:
1)、使数据⽂件⾃增长;
2)、改变数据⽂件⼤⼩;
3)、添加数据⽂件。
使数据⽂件⾃增长:表DBA_DATA_FILES中有⼀个字段AUTOEXTENSIBLE与这个⽅法对应,它指⽰数据⽂件是否⾃增长,也就是数据⽂件不能满⾜存储需求时,是否⾃动增加⼤⼩来满⾜需求。
先运⾏下列命令创建⼀个datafile⼤⼩为5M的表空间—TEST:create tablespace test datafile
'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' size 5M;这个时候,AUTOEXTENSIBLE是no,也就是数据⽂件的⼤⼩是固定的,不会⾃增长(当然,我们也可以在创建命令中加⼊指令设置⾃增长)。
下⾯我们⼿动来修改数据⽂件为⾃增长:alter database datafile
'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' autoextend on next 5M maxsize 50M;这条命令将TEST.DBF数据⽂件设置为按5M⼤⼩进⾏⾃增长,最⼤为50M。
(临时表空间⽤alter database tempfile...,下同)
改变数据⽂件⼤⼩:以前⾯的数据⽂件为例,我想将数据⽂件设置为100M⼤⼩,可以执⾏命令:
alter database datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' resize 100M;
添加数据⽂件:这应该是最好的⼀种⽅式,便于管理。
以TEST表空间为例,添加数据⽂件的命令如下:
alter tablespace test add datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF' size 5M autoextend on next 5M maxsize 50M;
这条命令就直接指定了数据⽂件⾃增长。
除了修改表空间的⼤⼩,存储设置中还可以进⾏的⼀项⼯作就是移动数据⽂件。
移动数据⽂件有2种⽅法,⼀种是使⽤alter tablespace命令,⼀种是使⽤alter database命令。
使⽤alter tablespace移动数据⽂件前,需要先将表空间OFFLINE,然后⽬标数据⽂件必须存在(也就是将需要移动的数据⽂件复制到⽬的地)。
以将数据⽂件TEST01.DBF移动到上⼀层⽬录为例。
先执⾏命令:alter tablespace test offline;然后将TEST01.DBF复制到上⼀级⽬录,再执⾏命令:
alter tablespace test rename datafile E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF' to 'E:\oracle\product\10.2.0\oradata\TEST01.DBF';
然后再将表空间ONLINE就可以了:alter tablespace test online;。
使⽤alter database移动数据⽂件时,同样,⽬标数据⽂件必须存在(原⽂件的副本),且数据库需要处于MOUNTED状态。
第⼀种⽅法,已经将数据⽂件移动到了⽗⼀级⽬录,下⾯再将它移回来。
先关闭数据库:
shutdown immediate;
然后启动数据库,
启动选项为mount:startup mount;
然后执⾏移动命令:
alter database rename file 'E:\oracle\product\10.2.0\oradata\TEST01.DBF' to 'E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF';
再打开数据库:alter database open
报错了:
ORA-01113:⽂件7需要介质恢复
ORA-01110:数据⽂件7:’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’,细节还不明⽩,只知道数据库认为这个数据⽂件收到破坏,需要使⽤备份、⽇志信息来恢复。
这本来是个⽐较严重的问题,但是在这个实例中,还是很好解决的,执⾏命令:
recover datafile ’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’。
提⽰完成介质恢复,再打开数据库:alter database open;⼀切就正常了。
4、删除表空间
删除表空间,使⽤命令drop tablespace <ts_name>。
但是有3个选项需要注意:
INCLUDING CONTENTS:指⽰删除表空间中的segments;
INCLUDING CONTENTS AND DATAFILES:指⽰删除segments和datafiles;
CASCADE CONSTRAINTS:删除所有与该空间相关的完整性约束条件。
Drop tablespace test INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
需要注意的是SYSTEM表空间以及具有active segments的表空间是⽆法删除的。
a)TableSpace管理准则
1、使⽤多个TableSpace
* ⽤户数据与数据字典数据分离,减少竞争
* 应⽤程序之间的数据分离,防⽌某个TableSpace脱机后对多个程序造成影响
* 不同磁盘驱动器上存储数据,减少I/O竞争
* 回滚段数据与⽤户数据分离,防⽌单磁盘故障造成数据永久丢失
* 可以控制单个TableSpace脱机,提供更⾼的整体可⽤性
* 为特定类型数据库使⽤保留TableSpace,可优化TableSpace的使⽤
* 可以备份单独的TableSpace
2、指定表空间默认的存储参数
为TableSpace设置合适的参数,下⽂中详细介绍。
3、为⽤户指定表空间限额
可以有效控制TableSpace的⼤⼩,限制⽤户权限防⽌发⽣意外。
b)创建TableSpace
1、创建本地管理TableSpace
Oracle创建的TableSpace默认均是本地管理的,明确的表述应该是:
在CREATE TABLESPACE 语句中EXTENT MANAGEMENT ⼦句中指定LOCAL。
然后可以⽤AUTOALLOCATE 选项(默认)来使Oracle⾃动管理盘区CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
也可以使⽤⼀个指定⼤⼩(UNIFORM SIZE)的同意盘区来管理该TableSpace
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
如果未指定盘区⼤⼩,则默认为1M,说明数据⽂件⾄少要⼤于1MB
注:如果TableSpace被期望⽤于包含需要不同盘区⼤⼩和拥有很多盘区的⼤⼩变动的对象,那选择AUTOALLOCATE是最好的选择。
AUTOALLOCATE是⼀种管理TableSpace的简便⽅法,只是有可能会对⼀些空间造成浪费。
如果需要准确控制未⽤空间,并能够精确预计为⼀个或多个对象要⾮配的空间和盘区⼤⼩,那就可以使⽤UNIFORM。
2、在本地管理TableSpace中指定段空间管理
可使⽤SEGMENT SPACE MANAGEMENT⼦句来设置端控件的管理模式,有以下⼏种模式:
MANUAL(默认):使⽤段中管理空闲空间的空闲列表。
AUTO:使⽤位图来管理段中的空闲空间。
⼜称为⾃动段空间管理。
AUTO⽴功了⼀种更加简单、有效的管理⽅法,完全消除了为表空间中创建的段指定和调整PCTUSED、FREELISTS、FREELISTS GROUPS属性的任何必要。
CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
注:LOB类型不能指定⾃动段空间管理。
3、修改本地管理TableSpace
* 不能讲本地管理TableSpace改为本地管理的temp TableSpace
* 不能改变TableSpace的段空间管理办法
* 本地管理TableSpace没有必要合并空闲盘区
* 可以添加数据⽂件
* 可以改变TableSpace状态(ONLINE/OFFLINE)
* 修改TableSpace为只读or只写
* rename数据⽂件
* 启⽤/禁⽤该TableSpace数据⽂件的⾃动盘区⼤⼩
4、创建字典管理的TableSpace
CREATE TABLESPACE tbsb
DATAFILE '/u02/oracle/data/tbsb01.dbf' SIZE 50M
EXTENT MANAGEMENT DICTIONARY
DEFAULT STORAGE (
INITIAL 50K
NEXT 50K
MINEXTENTS 2
MAXEXTENTS 50
PCTINCREASE 0);
使⽤ALTER TABLESPACE语句可以进⾏以下操作:
* 添加⼀个新的⽂件
* 改变默认的存储参数
* 合并TableSpace的空闲空间
* 可以改变TableSpace状态(ONLINE/OFFLINE)
* 修改TableSpace为只读or只写
* rename数据⽂件
* 启⽤/禁⽤该TableSpace数据⽂件的⾃动盘区⼤⼩
5、临时表空间
临时表空间主要⽤于提⾼多个排序操作的并发能⼒、减⼩开销,或避免Oracle空间管理操作在⼀起进⾏。
临时表空间创建之后,可以被多个⽤户共享。
⼀个给定实例和表空间的所有排序操作共享⼀个单⼀的排序段。
即排序段为⼀个给定表空间的每个执⾏排序操作的实例⽽存在。
排序段由使⽤临时表空间⽤于排序的第⼀个语句创建,并在关闭时释放,⼀个盘区不能被多个事务共享。
可以使⽤V$SORT_SEGMENT视图来查看临时表空间排序段的空间分配和回收情况
⽤V$SORT_USAGE视图查看这些段的当前排序⽤户
注:临时表空间中不能创建明确对象。
6、创建本地管理的临时表空间
CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE '/u02/oracle/data/lmtemp01.dbf' SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;
注1:临时数据⽂件信息查询与数据⽂件不同,需要查询V$TEMPFILE和DBA_TEMP_FILES,但结构与V$DATAFILE和DBA_DATA_FILES类似。
注2:临时表空间在初次使⽤时才分配空间,可以更快创建和修改⼤⼩,但要注意磁盘⼤⼩。
7、本地管理临时表空间的修改
* 添加临时⽂件
ALTER TABLESPACE lmtemp ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE 20M REUSE;
* 改变临时⽂件状态
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' ONLINE|OFFLINE;
* 更改临时⽂件⼤⼩
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' RESIZE 4M;
* 取消临时⽂件并删除相应操作系统⽂件
ALTER DATABASE TEMPFILE '/u02/oracle/data/lmtemp02.dbf' DROP
INCLUDING DATAFILES;
8、创建字典管理的临时表空间
CREATE TABLESPACE sort
DATAFILE '/u02/oracle/data/sort01.dbf' SIZE 50M
DEFAULT STORAGE (
INITIAL 2M
NEXT 2M
MINEXTENTS 1
PCTINCREASE 0)
EXTENT MANAGEMENT DICTIONARY
TEMPORARY;。