本文总结了Oracle数据库表空间使用情况查询,以及创建表空间、表空间扩容、设置表空间自增长、删除表空间的实现方式,可以处理表空间空间不足时提供处理方案。
查看表空间使用情况
select upper(f.tablespace_name) "表空间名",
d.tot_grootte_mb "表空间大小(M)",
d.tot_grootte_mb - f.total_bytes "已使用空间(M)",
to_char(round((d.tot_grootte_mb - f.total_bytes) / d.tot_grootte_mb * 100,
2),
'990.99') "使用比",
f.total_bytes "空闲空间(M)",
f.max_bytes "最大块(M)"
from (select tablespace_name,
round(sum(bytes) / (1024 * 1024), 2) total_bytes,
round(max(bytes) / (1024 * 1024), 2) max_bytes
from sys.dba_free_space
group by tablespace_name) f,
(select dd.tablespace_name,
round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb
from sys.dba_data_files dd
group by dd.tablespace_name) d
where d.tablespace_name = f.tablespace_name
order by 4 desc;
创建表空间
创建表空间名称为:test_tablespace,文件路径存放在:D:\ORACLE\ORADATA\ORCL\test_space.DBF,初始化大小512MB,自增长单次扩容50MB,表空间最大空间1G。
create tablespace test_tablespace
datafile 'D:\ORACLE\ORADATA\ORCL\test_space.DBF'
size 512M autoextend on next 50M maxsize 1024M;
执行SQL查询创建表空间的结果。
select t.FILE_ID,t.TABLESPACE_NAME,t.FILE_NAME from sys.dba_data_files t ;
修改表空间
- 新增表空间文件为表空间扩容
为 test_tablespace表空间新增文件D:\ORACLE\ORADATA\ORCL\test_space02.DBF,初始化大小为:512MB,自增长单次扩容20MB,表空间不限大小。
alter tablespace test_tablespace add datafile 'D:\ORACLE\ORADATA\ORCL\test_space02.DBF'
size 512m autoextend on next 20m maxsize unlimited;
- 修改数据文件为表空间扩容
修改为自增长模式,单次扩容20MB,表空间最大5G。
alter database datafile 'D:\ORACLE\ORADATA\ORCL\test_space.DBF'
autoextend on next 50m maxsize 5120m;
执行SQL查询创建表空间的结果,以及查看文件路径下生成的文件。
select t.FILE_ID,t.TABLESPACE_NAME,t.FILE_NAME from sys.dba_data_files t ;
删除表空间
- 只删除表空间
drop tablespace test_tablespace;
- 删除表空间以及表空间文件
drop tablespace test_tablespace including contents and datafiles cascade constraint;