建立表空间
CREATE TABLESPACE devdata
DATAFILE '/oracle/oradata/db/devdata.dbf' SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k
删除表空间
DROP TABLESPACE devdata INCLUDING CONTENTS AND DATAFILES;
修改表空间大小
alter database datafile '/path/devdata.dbf' resize 100M
移动表至另一表空间
alter table move tablespace room1;
一、建立表空间
CREATE TABLESPACE devdata
DATAFILE '/oracle/oradata/db/devdata.dbf' SIZE 500M
UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k
二、建立UNDO表空间
CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M
#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间:
ALTER SYSTEM SET undo_tablespace=UNDOTBS02 scope=both;
三、建立临时表空间
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M
四、改变表空间状态
1.使表空间脱机
ALTER TABLESPACE devdata OFFLINE;
如果是意外删除了数据文件,则必须带有RECOVER选项
ALTER TABLESPACE devdata OFFLINE FOR RECOVER;
2.使表空间联机
ALTER TABLESPACE devdata ONLINE;
3.使数据文件脱机
ALTER DATABASE DATAFILE 3 OFFLINE;
4.使数据文件联机
ALTER DATABASE DATAFILE 3 ONLINE;
5.使表空间只读
ALTER TABLESPACE devdata READ ONLY;
6.使表空间可读写
ALTER TABLESPACE devdata READ WRITE;
五、删除表空间
DROP TABLESPACE devdata INCLUDING CONTENTS AND DATAFILES;
六、扩展表空间
首先改变数据库的字符
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
查看表空间的名字和所属文件
select
b.file_name 物理文件名,
b.tablespace_name 表空间,
b.bytes/1024/1024 大小M,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name;
1.增加数据文件
ALTER TABLESPACE devdata
ADD DATAFILE '/oracle/oradata/db/devdata2.dbf' SIZE 1000M;
2.手动增加数据文件尺寸
ALTER DATABASE DATAFILE '/oracle/oradata/db/devdata.dbf'
RESIZE 4000M;
3.设定数据文件自动扩展
ALTER DATABASE DATAFILE '/oracle/oradata/db/devdata.dbf'
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M;
4.设定后查看表空间信息
select
a.a1 表空间名称,
c.c2 类型,
c.c3 区管理,
b.b2/1024/1024 表空间大小M,
(b.b2-a.a2)/1024/1024 已使用M,
substr((b.b2-a.a2)/b.b2*100,1,5) 利用率
from
(select tablespace_name a1, sum(nvl(bytes,0)) a2 from
dba_free_space group by tablespace_name) a,
(select tablespace_name b1,sum(bytes) b2 from
dba_data_files group by tablespace_name) b,
(select tablespace_name c1,contents c2,extent_management c3 from dba_tablespaces) c
where a.a1=b.b1 and c.c1=b.b1;