Ubuntu上Oracle数据库空间管理
一 日常巡检与容量评估
df -h。当使用率超过**90%**时应优先清理或扩容磁盘。select * from (
Select a.tablespace_name,
(a.bytes- b.bytes) "表空间使用大小(BYTE)",
a.bytes/(1024*1024*1024) "表空间大小(GB)",
b.bytes/(1024*1024*1024) "表空间剩余大小(GB)",
(a.bytes- b.bytes)/(1024*1024*1024) "表空间使用大小(GB)",
to_char((1 - b.bytes/a.bytes)*100,'99.99999') || '%' "使用率"
from (select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
(select tablespace_name,sum(bytes) bytes from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
union all
select c.tablespace_name,
d.bytes_used "表空间使用大小(BYTE)",
c.bytes/(1024*1024*1024) "表空间大小(GB)",
(c.bytes-d.bytes_used)/(1024*1024*1024) "表空间剩余大小(GB)",
d.bytes_used/(1024*1024*GB) "表空间使用大小(GB)",
to_char(d.bytes_used*100/c.bytes,'99.99999') || '%' "使用率"
from (select tablespace_name,sum(bytes) bytes from dba_temp_files group by tablespace_name) c,
(select tablespace_name,sum(bytes_cached) bytes_used from v$temp_extent_pool group by tablespace_name) d
where c.tablespace_name = d.tablespace_name
)
order by tablespace_name;
同时检查数据文件是否启用自动扩展、当前大小与上限:select file_name,autoextensible,increment_by,maxbytes from dba_data_files where tablespace_name='YOUR_TS';。二 扩容表空间与数据文件
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users03.dbf'
AUTOEXTEND ON NEXT 512K MAXSIZE 250M;
也可在创建表空间或新增数据文件时直接指定自动扩展。ALTER TABLESPACE <tablespace_name>
ADD DATAFILE '/data/oracle/orcl/ts_data_02.dbf'
SIZE 2G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL;
对于BIGFILE表空间,可用ALTER TABLESPACE ... ADD DATAFILE或ALTER TABLESPACE ... RESIZE进行管理(BIGFILE仅支持单个数据文件)。ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users03.dbf' RESIZE 20G;
注意:执行RESIZE前确保操作系统目录有足够空间,且尽量在非高峰时段进行。DB_BLOCK_SIZE=8KB时约32GB;使用BIGFILE可显著放大单文件上限(如128TB级别,取决于块大小与平台)。三 空间回收与碎片整理
PURGE RECYCLEBIN; -- 当前用户
PURGE DBA_RECYCLEBIN; -- DBA权限,全库
ALTER TABLE <owner>.<table_name> ENABLE ROW MOVEMENT;
ALTER TABLE <owner>.<table_name> SHRINK SPACE [CASCADE];
ALTER TABLE <owner>.<table_name> DISABLE ROW MOVEMENT;
适用前提:表需在本地管理表空间(LMT)且启用自动段空间管理(ASSM);不适用于IOT、基于ROWID的物化视图基表、函数索引、SECUREFILE LOB、压缩表等对象。四 常见应急与最佳实践
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
清理后确认ARCHIVE LOG LIST;与df -h恢复正常。CREATE BIGFILE TABLESPACE bigdata2
DATAFILE '/u01/oradata/orcl/bigdata2.dbf' SIZE 2G
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
CREATE BIGFILE TEMPORARY TABLESPACE bigdata2temp
TEMPFILE '/u01/oradata/orcl/bigdata2temp.dbf' SIZE 1G
AUTOEXTEND ON NEXT 512M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
导入大量数据时,可结合并行与DIRECTORY对象提升效率。AUTOEXTEND增量与上限,避免“无限增长”;定期巡检使用率并规划扩容。DROP PARTITION清理过期分区,回收空间最快速。