一、表空间概述:
表空间是数据库最大的逻辑存储结构,包含了表段、索引段、临时段等,在物理层面是由数据文件组成。
二、创建表空间
1.默认表空间
oracle默认至少创建两个表空间:SYSTEM和SYSAUX。SYSTEM表空间存储oracle系统的数据、系统的回滚段,不能offline。
SYSAUX表空间又称为辅助表空间,用来存储系统其他可选组件的系统数据,SYSTEM和SYSAUX都不能删除和更改。
2.创建本地管理表空间
本地管理表空间(Locally Managed TableSpaces)是一种新型的表空间管理,使用存储在每个数据文件中的位图来管理扩展数据块。
Ⅰ.本地管理的表空间提供以下好处:
①快速、并行的空间操作。空间分配和释放修改本地管理的资源(存储在头文件中的位图)。
②增强的性能
③允许使用可读的备用数据库,因为本地管理的临时表空间不会生成任何撤消或重做。
④空间分配得到了简化,因为当指定AUTOALLOCATE子句时,数据库会自动选择适当的数据块大小。
⑤由于必要的信息存储在文件头和位图块中,用户对数据字典的依赖性降低了。
Ⅱ.创建语法
create tablespace name
datafile filespec [autoextend_clause]
[,datafile filespec [autoextend_clause]...]
[mininum extent n [K|M]]
[default storage_clause]
[logging | nologging]
[permament | temporary]
[online | offline]
[extent management local (autoallocate | uniform size)];
mininum extent:表空间内区尺寸的基数
default storage_clause:为表空间上建立的所有对象指定默认存储参数。
default storage(
initial n [K | M]
next n [K | M]
minextents n [K | M]
maxextents [n | unlimited]
pctincrease n
)
logging | nologging:redo log file是否记录ddl操作和insert,默认Logging
permament | temporary :默认永久
online | offline :是否立即使用,默认online
extent management local (autoalllocate | uniform size):创建本地管理表空间,
autoallocate 为自动扩展,uniform size为统一区尺寸
Ⅲ创建autoallocation本地管理表空间
create tablespace scott_tbl
datafile '/u01/app/oracle/oradata/CDB1/datafile/scott_db1.dbf' size 20M,
'/u01/app/oracle/oradata/CDB1/datafile/scott_db2.dbf' size 25M
4 extent management local autoallocate;
Tablespace created.
Ⅳ创建uniform szie本地管理表空间
create tablespace scott_tbl_m
datafile '/u01/app/oracle/oradata/CDB1/datafile/scott_db3.dbf' size 20M
3 extent management local uniform size 64K;
Tablespace created.
3.创建临时表空间
Ⅰ.临时表空间作用
临时表空间包含仅在会话期间持续的临时数据。临时表空间可以提高内存中不适合的多个排序操作的并发性,并可以提高排序期间空间管理操作的效率。
临时表空间用于存储以下内容:
中间排序结果
临时表和临时索引
临时LOB
临时B-树
默认情况下,为每个新的Oracle数据库安装创建一个名为TEMP的临时表空间。可以使用CREATETABLESPACE语句创建其他临时表空间。使用CREATEUSER或ALTERUSER语句为每个数据库用户分配一个临时表空间。一个临时表空间可以由多个用户共享。
查看默认临时表空间:
SELECT PROPERTY_NAME, PROPERTY_VALUE
FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';
PROPERTY_NAME
--------------------------------------------------------------------------------------------------------------------------------
PROPERTY_VALUE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DEFAULT_TEMP_TABLESPACE
TEMP
更改默认临时表空间
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;
查看使用情况
v
s
o
r
t
s
e
g
m
e
n
t
:
查
看
临
时
表
空
间
排
序
段
中
的
空
间
分
配
和
释
放
v
sort_segment :查看临时表空间排序段中的空间分配和释放 v
sortsegment:查看临时表空间排序段中的空间分配和释放vtempseg_usage:标识这些段中的当前排序用户
dba_temp_free_space:显示每个临时表空间中分配的总空间和可用空间
Ⅱ.创建语法
extent management子句对于临时表空间是可选的,因为所有临时表空间都是使用统一大小的本地管理的扩展数据块创建的。如果在区段大小子句中指定了区段大小,则使用该区段大小。如果未指定,则Oracle数据库将使用表空间大小和文件大小来确定默认扩展数据块大小
SYS@cdb1> create temporary tablespace temp01
2 tempfile '/u01/app/oracle/oradata/CDB1/datafile/tmp1.dbf' size 20M
3 extent management local uniform size 5M;
Tablespace created.
Ⅲ临时表空间组
表空间组允许用户使用多个表空间中的临时空间。使用表空间组(而不是单个临时表空间)可以缓解由于一个表空间不足以保存排序结果而导致的问题,特别是在具有多个分区的表上。表空间组允许并行执行服务器在单个并行操作中使用多个临时表空间。
表空间组具有以下特征:
它至少包含一个表空间。对于组中包含的最大表空间数没有明确的限制。
它共享表空间的名称空间,因此其名称不能与任何表空间相同。
在为数据库分配默认临时表空间或为用户分配临时表空间时,可以在表空间名称出现的任何位置指定表空间组名称。
不用显式创建表空间组。相反,它是在将第一个临时表空间分配给组时隐式创建的。当该组包含的最后一个临时表空间从中删除时,该组将被删除。
创建临时表空间组:
create temporary tablespace temp02
tempfile '/u01/app/oracle/oradata/CDB1/datafile/tmp2.dbf' size 20M
3 tablespace group group1;
Tablespace created.
SYS@cdb1> select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
GROUP1 TEMP02
添加组员
SYS@cdb1> alter tablespace temp01 tablespace group group1;
Tablespace altered.
SYS@cdb1> select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
GROUP1 TEMP01
GROUP1 TEMP02
移除组员
SYS@cdb1> alter tablespace temp02 tablespace group '';
Tablespace altered.
SYS@cdb1> select * from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
GROUP1 TEMP01
设置临时表空间组为默认临时表空间
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE group1;