Oracle数据库报错01653错误,表空间不足

oracle数据库表空间不足,错误截图:

解决步骤:

一、先链接数据库

su - oracle

链接数据库后,查看进入相关的数据库实例中

如:查看实例目录
cd $ORACLE_BASE
切换相应的数据库实例到---xxxx ,《数据库服务》
source /home/oracle/.bash_profile_bm

二、进入SQL状态
sqlplus / as sysdba

三、查看表空间大小

SELECT * FROM ( 
  SELECT D.TABLESPACE_NAME, 
          SPACE || 'M' "SUM_SPACE(M)", 
          BLOCKS "SUM_BLOCKS", 
          SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)", 
          ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%' 
             "USED_RATE(%)", 
          FREE_SPACE || 'M' "FREE_SPACE(M)" 
     FROM (  SELECT TABLESPACE_NAME, 
                    ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, 
                    SUM (BLOCKS) BLOCKS 
               FROM DBA_DATA_FILES 
           GROUP BY TABLESPACE_NAME) D, 
          (  SELECT TABLESPACE_NAME, 
                    ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE 
               FROM DBA_FREE_SPACE 
           GROUP BY TABLESPACE_NAME) F 
    WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) 
   UNION ALL                                                           
   SELECT D.TABLESPACE_NAME, 
          SPACE || 'M' "SUM_SPACE(M)", 
          BLOCKS SUM_BLOCKS, 
          USED_SPACE || 'M' "USED_SPACE(M)", 
          ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%' "USED_RATE(%)", 
          NVL (FREE_SPACE, 0) || 'M' "FREE_SPACE(M)" 
     FROM (  SELECT TABLESPACE_NAME, 
                    ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE, 
                    SUM (BLOCKS) BLOCKS 
               FROM DBA_TEMP_FILES 
           GROUP BY TABLESPACE_NAME) D, 
          (  SELECT TABLESPACE_NAME, 
                    ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE, 
                    ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE 
               FROM V$TEMP_SPACE_HEADER 
           GROUP BY TABLESPACE_NAME) F 
    WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+) 
   ORDER BY 1)  
   WHERE TABLESPACE_NAME IN ('SYSAUX','SYSTEM'); 

四、清空AUD$:

TRUNCATE TABLE sys.aud$;

注意:执行TRUNCATE TABLE语句需要足够的权限。通常,只有DBA(数据库管理员)或具有相应权限的用户才能对sys模式下的表执行TRUNCATE操作。普通用户通常不具备这样的权限。因此,在执行TRUNCATE TABLE sys.aud$之前,需要确保当前用户具有足够的权限。

要检查权限,可以使用以下SQL语句(注意,这只是一个示例,实际检查权限的方法可能因数据库配置而异):

SQL:
SELECT * FROM DBA_TAB_PRIVS WHERE TABLE_NAME = 'AUD$' AND OWNER = 'SYS' AND GRANTEE = USER;

如果查询结果返回了当前用户的权限记录,那么说明当前用户具有执行TRUNCATE操作的权限。

执行该语句:TRUNCATE TABLE sys.aud$;

这条语句将快速删除sys.aud$表中的所有数据,并且通常比DELETE语句更快,因为它不会逐行删除数据,而是直接释放表中的数据段。

验证sys.aud$表是否已被成功清空‌:

为了验证sys.aud$表是否已被成功清空,可以执行以下SQL语句来检查表中的行数:

清空前数据情况:

oracle数据库中的AUD$表用于存储审计日志信息的表。该表记录了数据库的操作,如登录、用户修改、删除、更新等以及其他与安全相关的事件。

审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值