表空间和数据文件
数据表空间
ORALCE8之前的版本中,表空间中的磁盘空间管理是由数据字典来管理的,但这种方式系统效率比较低。ORACLE8开始使用本地管理的表空间,效率较高。9i开始默认使用这种方式。
create tablespace 数据表表空间名
datafile 'E:\oracle\product\10.2.0\oradata\devl\BPMMES.dbf'
size 500M
extent management local
uniform size 2M;
要查询表空间的相关信息,可以访问这两个表 dba_tablespaces 或 dba_data_files 。
还原表空间
create undo tablespace 还原表表空间名
datafile 'E:\oracle\product\10.2.0\oradata\devl\BPMMES.dbf'
size 500M
extent management local;
索引表空间
create tablespace 索引表表空间名
datafile 'E:\oracle\product\10.2.0\oradata\devl\BPMMES.dbf'
size 500M
extent management local
uniform size 2M;
临时表空间
create temporary tablespace 临时表表空间名
tempfile 'E:\oracle\product\10.2.0\oradata\devl\BPMMES.dbf'
size 500M
extent management local
uniform size 2M;
临时表空间是排序操作使用的,当用户的SQL语句中使用了例如:order by,group by子句时,因为数据量很大ORACLE服务器就会把中间的一些排序结果放到临时表空间中,如果经常会用到多重排序时,使用临时表空间会提高效率。
临时表空间不能删除,必须先使用ALTER DATABASE将新的吧临时表空间设置成默认临时表空间,然后才能删除就的临时表空间。
设置默认临时表空间:
Alter database default temporary tablespace 临时表空间名
查询建立后的表空间状态
查询表空间对应的操作系统文件,名称,以及大小信息:
select file_id, file_name, tablespace_name, bytes/(1024*1024) MB
from dba_data_files
where tablespace_name like '表空间名'
查询看是本地管理还是数据字典管理等信息:
select tablespace_name, block_size, extent_management, segment_space_management, min_extlen, contents
from dba_tablespaces
where tablespace_name like '%##%'
查询临时表空间和与之对应的临时数据文件的信息:
select f.file#, t.ts#, f.name "File", t.name "Tablespace"
from v$tempfile f,
v$tablespace t
where f.ts# = t.ts#
and t.name like '%##%';
设置表空间为脱
有时需要将某一表空间设置为脱机状态,以进行数据库维护。当一个表空间被设置为脱机状态时,该表空间上的数据是不可以访问的。如果当DB被关闭时,某一表空间为脱机状态,当DB重新打开后这一表空间将还是脱机状态。
以下的表空间不能被设置为脱机状态:1,系统表空间;2,有活动的表空间;3,默认临时表空间。
可通过v$datafile来判断是否处于联机状态。
关闭
Alter tablespace 表空间名 offline
打开
Alter tablespace 表空间名 online
只读表空间
只读表空间不需要重做日志的保护,所以提高了系统效率,且备份容易。
Alter tablespace 表空间名 read
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/295691/viewspace-366096/ ,如需转载,请注明出处,否则将追究法律责任。