表空间相关用法
一个表空间就是一片磁盘区域,他又一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇等。
创建立表空间
CREATE TABLESPACE TS_FACIAL DATAFILE 'C:\oraclexe\oradata\DF_FACIAL.dbf' SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k
删除表空间
DROP TABLESPACE cheng INCLUDING CONTENTS AND DATAFILES
修改表空间大小
alter database datafile 'c:\oraclexe\oradata\XE\cheng.dbf' resize 50M
移动表空间(未移动Blob字段)
alter table move tablespace room1;
建立UNDO表空间
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M
切换表空间
ALTER SYSTEM SET undo_tablespace=UNDOTBS02;
建立临时表空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M
表空间脱机
ALTER TABLESPACE game OFFLINE;
如果是意外删除了数据文件,则必须带有RECOVER选项
ALTER TABLESPACE game OFFLINE FOR RECOVER;
使表空间联机
ALTER TABLESPACE game ONLINE;
使数据文件脱机
ALTER DATABASE DATAFILE 3 OFFLINE;
使数据文件联机
ALTER DATABASE DATAFILE 3 ONLINE;
使表空间只读
ALTER TABLESPACE game READ ONLY;
使表空间可读写
ALTER TABLESPACE game READ WRITE;
删除表空间
DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;
查看表空间信息
SELECT A.TABLESPACE_NAME,
A.BYTES TOTAL,
B.BYTES USED,
C.BYTES FREE,
(B.BYTES * 100) / A.BYTES "% USED",
(C.BYTES * 100) / A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A, SYS.SM$TS_USED B, SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME
AND A.TABLESPACE_NAME = C.TABLESPACE_NAME;
select df.tablespace_name "表空间名 ",
totalspace " 总空间 M",
freespace " 剩余空间 M",
round((1 - freespace / totalspace) * 100, 2) " 应用率 %"
from (select tablespace_name, round(sum(bytes) / 1024 / 1024) totalspace
from dba_data_files
group by tablespace_name) df,
(select tablespace_name, round(sum(bytes) / 1024 / 1024) freespace
from dba_free_space
group by tablespace_name) fs
where df.tablespace_name = fs.tablespace_name;