Oracle 一些表空间问题的处理

本文详细介绍了解决Oracle数据库中SYSAUX、USER和SYSTEM表空间不足的问题,包括如何检查表空间占用情况、清理AWR数据、增加表空间数据文件及调整审计功能,提供了实用的SQL脚本和操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,SYSAUX 表空间不足

SYSAUX 表空间做为 SYSTEM 表空间的辅助表空间,主要存放 EM 相关的内容以及表统计信息,AWR快照,审计信息等,而如果 SYSAUX 表空间在默认条件下你如果不做任何配置,随着时间的推移,会膨胀的越来越大。

1、是什么占用了 sysaux 空间

select occupant_name, schema_name, occupant_desc, space_usage_kbytes
  from v$sysaux_occupants
 order by space_usage_kbytes desc

Oracle 一些表空间问题的处理

可以看到是主要是 AWR 占用了空间。

2、清除 AWR

SQL> connect / as sysdba
SQL> @?/rdbms/admin/catnoawr.sql
SQL> @?/rdbms/admin/catawrtb.sql

3、查看表空间占用情况

SELECT B.TABLESPACE_NAME 表空间,
       B.FILE_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

二、USER 表空间不足

1、zabbix 报警表空间不足

Oracle 一些表空间问题的处理

2、查看数据库表空间占用情况

SELECT B.TABLESPACE_NAME 表空间,
       B.FILE_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

Oracle 一些表空间问题的处理

3、增加表空间

Alter tablespace USERS  add datafile '/ordata/orcl/users17.dbf' size 20G;

三、SYSTEM 表空间不足

1、查看表空间使用率

SELECT B.TABLESPACE_NAME 表空间,
       B.FILE_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

2、查找占用大的对象

从dba_segments中找出占用SYSTEM表空间中排名前10位的大对象。

SELECT *
  FROM (SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MB
          FROM DBA_SEGMENTS
         WHERE TABLESPACE_NAME = 'SYSTEM'
         GROUP BY SEGMENT_NAME
         ORDER BY 2 DESC)
 WHERE ROWNUM < 10;

3、关闭审计(可选)

system表空间满了以后,对审计表进行清空,用新的审计表覆盖旧的审计表,如果用处不大,我们可以选择关闭审计功能,如下

sqlplus / nolog
connect sys/sys as sysdba
alter system set audit_trail='NONE' scope=spfile;
shutdown immediate;
startup;

4、清空审计日志

truncate table  SYS.AUD$;

5、给表空间增加数据文件

alter tablespace system add datafile '/data/orcl/system02.dbf' size 2G;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值