版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bisal/article/details/19068663

昨天同事说有个测试库无法登录了,用PLSQL Developer登陆后提示:

ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM
ORA-02002: error while writing to audit trail
ORA-00604: error occurred at recursive SQL level 1
ORA-01653: unable to extend table SYS.AUD$ by 8192 in tablespace SYSTEM

貌似以前听@dbsnake说过这问题。

首先SYS.AUD$是数据字典表,存储于SYSTEM表空间,存储的是审计信息,11g默认是开启审计

SQL> show parameter audit_trail
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_trail                          string      DB

上面的提示明显是指SYSTEM表空间的SYS.AUD$表无法继续扩容了,可能是磁盘空间不足,或SYSTEM表空间分配的数据文件空间不足。针对上面这个问题,有两种方法:

1、扩容SYSTEM表空间。

2、降低SYS.AUD$的容量。

之所以有第二种方法,从MOS:73408.1这篇文章可以得到结论:

SYS.AUD$ is the only SYS object that should ever be directly modified

SYS.AUD$是唯一一个可以直接修改的SYS对象。

那如何降低SYS.AUD$的容量呢?

1、最简单的方法就是truncate table SYS.AUD$,最直接,前提是不需要保留审计信息。

2、MOS中也介绍一种方法:DELETE FROM sys.aud$ WHERE obj$name='<object_name>';,删除SYS.AUD$中指定对象的审计信息。这样带来的问题很明显,就是不会降低高水位线。

3、也可以备份审计表,然后再降低容量。

CREATE TABLE backup_aud$ AS SELECT * from sys.aud$;

truncate table aud$;

exp file=aud_backup.dmp tables=backup_aud$

drop table backup_aud$;

如果仅需要降低SYS.AUD$占用的空间,此时可以再次执行insert into aud$ select * from backup_aud$;将数据导入进来。

4、要删除SYS.AUD$表需要相应的权限:要么是SYS用户,要么具有DELETE
ANY
TABLE系统权限,或者SYS用户将SYS.AUD$表的DELETE权限赋予这个用户。具有delete_catalog_role角色亦可以,但11.2.0.2之前的版本可能有bug导致这个角色没有SYS.AUD$的删除权限,需要人工添加,具体也可参见9697811这个bug描述。

5、MOS有介绍:The DELETE ANY TABLE privilege only applies to SYS objects if O7_DICTIONARY_ACCESSIBILITY=TRUE,表示如果O7_DICTIONARY_ACCESSIBILITY参数是TRUE,则只有SYS用户可以具有DELETE ANY TABLE权限。查了一些资料,也说O7_DICTIONARY_ACCESSIBILITY这个参数的作用就是保护数据字典基表,FALSE要求SYS不能以普通用户角色登录,必须用sysdba角色登录,如果TRUE则普通用户也可以访问数据字典基表,就会引起安全问题了。

SYS.AUD$无法扩容导致无法登录的问题的更多相关文章

  1. discuz 更换域名 导致qq登录不能用的问题

    今天论坛换了域名,导致qq登录不能用.于是各种百度,终于找到了解决方案,特此记录一下 解决方法:1,首先清空你站点的id和key,并且设置为未注册云平台: 2,找一个新域名(未开过云平台的就可),如果 ...

  2. 【转载】Sqlserver强制密码过期导致数据库登录失败

    Sqlserver在设置登录账户信息的时候,有个复选框信息会被默认勾上,即强制实施密码策略,默认勾选上的还有强制密码过期.如果勾上了这个强制密码过期后,则你的账户密码在一定时间登录后会提示Sqlser ...

  3. sys用户权限不足,本地登录失败 |ORA-01031 insufficient privileges|

    机器总喜欢挑放假的时候出问题,"双节"(中秋.国庆)快到了,对于搞系统运维的工程师来说其实并不轻松,于是今天赶紧装起一台数据库备用服务器以备半夜"机"叫. 安装 ...

  4. sys系统用户长时间未登录导致密码过期

    ORA-28001: the password has expired (DBD ERROR: OCISessionBegin) 问题描述:当登陆em时使用sys帐号登陆进去后,数据库实例提示ORA- ...

  5. ORA-1653: unable to extend table SYS.AUD$

    今早运维组的同事反映有个系统功能很多地方都报错,怀疑是不是数据库有什么问题.于是登录数据库检查,通过crsctl status res -t检查,发现所有集群资源都是OK的,没有哪个资源挂掉了.于是到 ...

  6. Oracle 不小心删除undo数据文件以及磁盘空间不足导致不能登录的解决办法

    在一次测试中,由于导入的数据量过大导致事务一直提交失败因为磁盘空间不够用了,一检查发现是undo表空间不够用,于是重新创建了一个表空间,准备把之前的undo表空间删除,删除时却发现一直删不掉,因为它一 ...

  7. Hadoop 服务SYS CPU过高导致宕机问题

    最近某hadoop集群多次出现机器宕机,现象为瞬间机器的sys cpu增长至100%,机器无法登录.只能硬件重启,ganglia cpu信息如下: 首先怀疑有用户启动了比较奇葩的job,导致不合理的系 ...

  8. HashMap为什么线程不安全(hash碰撞与扩容导致)

    一直以来都知道HashMap是线程不安全的,但是到底为什么线程不安全,在多线程操作情况下什么时候线程不安全? 让我们先来了解一下HashMap的底层存储结构,HashMap底层是一个Entry数组,一 ...

  9. Jenkins 配置用户权限错误导致无法登录解决方案

    最初配置Jenkins的用户管理权限时,因为不熟悉很容易将用户角色配置错误,导致配置用户后无法登录系统: 登录系统时候提示"Access Denied": 解决办法: 进入Jenk ...

随机推荐

  1. MySQL权限问题

    1.修改MySQL用户密码 .先来看一个PASSWORD()函数,MYSQL使用MD5加密 SELECT PASSWORD(‘root’); .使用mysql数据库,查看用户表 USE mysql; ...

  2. 一步一步学习IdentityServer3 (13) 令牌

    IdentityServer3中客户端保护了授权资源,不难看出在IdentityServer3中,有这样一个设置 AllowedScopes = new List<string> { &q ...

  3. Spark(五)Spark任务提交方式和执行流程

    一.Spark中的基本概念 (1)Application:表示你的应用程序 (2)Driver:表示main()函数,创建SparkContext.由SparkContext负责与ClusterMan ...

  4. Java与Redis

    1.下载Java使用Redis架包并引入 jedis-2.9.0.jar 2.用Java使用Redis如下: package com.jef.redis; import redis.clients.j ...

  5. day7 面向对象进阶

    面向对象高级语法部分 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例 ...

  6. Bootstrap--响应式导航条布局

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  7. react篇章-React Props

    state 和 props 主要的区别在于 props 是不可变的,而 state 可以根据与用户交互来改变.这就是为什么有些容器组件需要定义 state 来更新和修改数据. 而子组件只能通过 pro ...

  8. C#语言-NPOI.dll导入Excel功能的实现

    前言:刚工作那会,公司有一套完善的MVC框架体系,每当有导入EXCEL功能要实现的时候,都会借用框架里自带的导入方法,一般三下五除二就完成了,快是快,可总是稀里糊涂的,心里很没有底.前几天,在另一个原 ...

  9. java_String、StringBuilder

    在介绍String和StringBuilder前先学习一下equals方法和toString方法.API java1.6提取码:04b6 equals方法 equals方法,用于比较两个对象是否相同, ...

  10. kafka和springboot整合应用

    加载依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>s ...