表空间相关用法

一个表空间就是一片磁盘区域,他又一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇等。

创建立表空间
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;

posted @ 2011-02-22 14:37  吾爱易逝  阅读(303)  评论(0编辑  收藏  举报