目录

一、表空间查询使用情况

二、找寻表空间存储的数据文件路径和名称

三、增加表空间数据文件扩容表空间


一、表空间查询使用情况

使用SQL语句查询表空间使用剩余容量多少。

select total.tablespace_name,round(total.MB, 2) as Total_MB,round(total.MB - free.MB, 2) as Used_MB,round((1-free.MB / total.MB)* 100, 2) || '%' as Used_Pct 
from (
select tablespace_name, sum(bytes) /1024/1024 as MB 
from dba_free_space group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
from dba_data_files group by tablespace_name) total     
where free.tablespace_name = total.tablespace_name 
order by used_pct desc;

ORACLE数据库的表空间优化_sed

二、找寻表空间存储的数据文件路径和名称

由SQL查询语句的得知。SYSTEM和SYSAUX,HS_SYS_DATA,HS_FILE_DATA这三个表空间使用率过高。(超过95%的使用率可以打算扩容)

select   tablespace_name,   file_id,   file_name,   
round(bytes/(1024*1024),0)   total_space   
from   dba_data_files   
order   by   tablespace_name; 

ORACLE数据库的表空间优化_数据文件_02

三、增加表空间数据文件扩容表空间

使用SQL增加表空间的数据文件容量,将原来的存储空间扩容。逐条执行以下SQL语句。

特别提醒:使用alter增加时候注意数据文件命名,已经有sysdata01就命名02表空间文件。根据原表空间的是数据文件容量增加2G的存储空间。

alter tablespace HS_SYS_DATA add datafile '/u02/oradata/fzdb/sysdat02.dbf' size 2G autoextend on next 8G maxsize unlimited;
alter tablespace HS_FILE_DATA add datafile '/u02/oradata/fzdb/filedat02.dbf' size 2G autoextend on next 8G maxsize unlimited;
alter tablespace SYSTEM add datafile '/u02/oradata/fzdb/sysaux02.dbf' size 2G autoextend on next 8G maxsize unlimited;
alter tablespace SYSAUX add datafile '/u02/oradata/fzdb/sysaux02.dbf' size 2G autoextend on next 8G maxsize unlimited;

再用SQL语句进行查询,发现表空间的数据文件增加2个了。

select   tablespace_name,   file_id,   file_name,   
round(bytes/(1024*1024),0)   total_space   
from   dba_data_files   
order   by   tablespace_name; 

ORACLE数据库的表空间优化_表空间_03

再用SQL进行查询,发现表空间的总空间容量上升,使用率降低了。

select total.tablespace_name,round(total.MB, 2) as Total_MB,round(total.MB - free.MB, 2) as Used_MB,round((1-free.MB / total.MB)* 100, 2) || '%' as Used_Pct 
from (
select tablespace_name, sum(bytes) /1024/1024 as MB 
from dba_free_space group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB 
from dba_data_files group by tablespace_name) total     
where free.tablespace_name = total.tablespace_name 
order by used_pct desc;

ORACLE数据库的表空间优化_表空间_04

总结:表空间的容量是根据业务不断提升了,想方法把容量使用率降低了。第一个方案加表空间的数据文件,增大总容量降低使用率。像文中操作一样,注意表空间的数据文件命名和路径。第二个方案是删除审计快照或者删除日志,回收表空间的容量。从而降低使用率。本文偏向第一方案增加数据文件的信息,增大表空间的容量,特别需要注意的是表空间的数据文件的物理文件路径和数据文件的名字,不要搞错也不要冲突了。