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


      

      在一次测试中,由于导入的数据量过大导致事务一直提交失败因为磁盘空间不够用了,一检查发现是undo表空间不够用,于是重新创建了一个表空间,准备把之前的undo表空间删除,删除时却发现一直删不掉,因为它一直在使用,于是关闭数据库,手动的删掉。然后重启数据库,于是乎各种问题来了

      1 使用SYS 账号登录时报错:ORA-09817: Write to audit file failed

      然后在使用df -h命令系统检查一下,发现Oracle安装目录所对应的磁盘空间已满,于是删除3天以前的trace文件,然后看到之前的undo表空间对应的数据文件也顺便给删了结果就悲剧了

      删除trace文件之后,可以使用 SYS AS SYSDBA命令登录到数据库了,但是启动数据库时报错,在启动到open阶段时报错,能够启动到mount阶段。

    ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
    ORA-01110: data file 3: '/usr/oracle/app/oradata/orcl/undotbs01.dbf'

     

    2 ORA-01157与ORA-01110错误

    先查看具体的错误,登录到RAM模式,输入命令: list failure;

     RMAN> list failure 

    using target database control file instead of recovery catalog
    List of Database Failures
    =========================

    Failure ID Priority Status Time Detected Summary
    ---------- -------- --------- ------------- -------
    42 HIGH OPEN 24-MAY-17 One or more non-system datafiles are missing

    报告显示数据文件丢失

     

    查资料输入命令以下即可:

    alter database datafile 7 offline drop;

    但是这样操作有可能丢失部分数据,慎用

    然后shutdown immediate,再startup,数据库成功启动。

     

    3 删除undo表空间报错:ORA_01548

    数据库成功启动之后,查询之前的UNDOTBS1还在,于是使用删除语句

    drop tablespace UNDOTBS1 including contents; 报错

      ORA-01548: active rollback segment '_SYSSMU6_2443381498$', terminated drop tablespace;

      查询UNDOTBS1处于非offline的segment

    select segment_name,tablespace_name,status
    from dba_rollback_segs;

     

    修改文件/usr/oracle/app/admin/orcl/pfile/init.ora.95201623739(先备份再修改),如下:
    undo_management=manual
    undo_retention=10800
    undo_tablespace=UNDOTBS2
    _CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU6_2443381498$) -- 此处要将所有处于NEEDS RECOVERY状态的 segment全部放进来

     

    关闭数据库: shutdown immediate

    使用修改后的pfile启动数据:startup pfile='/usr/oracle/app/admin/orcl/pfile/init.ora.95201623739';

     

    然后再删除UNDOTBS1 ,成功删除未报之前的错误。

     

     

  • 相关阅读:
    28SQL 撤销索引、表以及数据库
    常见漏洞利用讲解
    6JavaScript 输出
    29_SQL ALTER TABLE 语句
    【首发】入门必看,性能测试指标详解,小白从零入门性能测试
    使用阿里云oss,在小程序端部分图片有时候显示,有时候不显示
    (0 , _auth.default) is not a function的问题
    uniapp开发小程序onReachBottom只触发一次
    Httprunner环境搭建
    4、vite创建vue项目
  • 原文地址:https://www.cnblogs.com/Latiny/p/6900506.html
Copyright © 2020-2023  润新知