zoukankan      html  css  js  c++  java
  • ORA-03113:通信通道的文件结尾-完美解决方案

    今天发现系统登录和查询数据特别慢,orcl进程占用内存也特别高。打开程序调试用,存储过程调用时报错【ORA-03113:通信通道的文件结尾】

    解决方案:

    oracle 文档中对这个错误这样解释:

    ORA-03113 错误就是说连接到数据库的网络中断了。有些错误由于频繁出现、原因复杂而被 Oracle DBA 们戏称之为"经典的错误"。oracle版本过小时同样会存在该问题,使用oracle 11.2.0.4 。

     

    完美解决方案:

    1、查看系统表空间用量:

    SELECT a.tablespace_name,

    a.bytes total,

    b.bytes used,

    c.bytes free,

    (b.bytes * 100) / a.bytes "% USED ",

    (c.bytes * 100) / a.bytes "% FREE "

    FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c

    WHERE a.tablespace_name = b.tablespace_name

    AND a.tablespace_name = c.tablespace_name;

    2、分析ORA-03113主要原因

    从图中主要分析SYSTEM、SYSAUX表空间用量,原因有两点:

           1)、SYSTEM中审计表aud$在数据库编程过程中,对SQL语句的编译过程,资源占用会较大,因此在sys账户下查看,

    select count(*) sum from AUD$;

    会得知,该数值会非常大。

    2)、SYSAUX则进行的是AWR快照,也会进行占用较多的空间。

    因此,出现ORA-03113,一般以上两个空间会出现严重不足情况。

    3、完美解决方式

           用sys账户dba登录,两个原因一一解决:

           1)、清理AUD$审计表记录;

           Truncate table AUD$;

           清理AUD$审计表一条命令即可。

        2)、清理AWR快照步骤稍有麻烦

                  select dbid, retention from dba_hist_wr_control;

             DBID           RETENTION

    ----------   ------------------------------------------------

    1426562503   +00008 00:00:00.0

    select min(snap_id), max(snap_id) from dba_hist_snapshot where dbid = 1426562503;

    MIN(SNAP_ID) MAX(SNAP_ID)

    ------------ ------------

            7689         7896

    exec dbms_workload_repository.drop_snapshot_range(7689, 7896,1426562503)

    PL/SQL procedure successfully completed

    select min(snap_id), max(snap_id) from dba_hist_snapshot where dbid = 1426562503;

    MIN(SNAP_ID) MAX(SNAP_ID)

    ------------ ------------

    AWR快照清理结束。

    清理后,再去查看system表空间,对比前后结果会有明显变化,这是再进行数据库开发时,不会出现ORA-03113错误。

    4、总结

    此种解决方案,针对的是数据库开发工作较多情况下,如大量的PL/SQL的函数、包、过程的开发、编译,建议在生产环境尽量不要进行开发,或是生产环境单独将审计和快照移至专门的表空间。

    参考:https://blog.csdn.net/hht006158/article/details/86589394

  • 相关阅读:
    Docker+Nginx 部署Vue+Element前端项目
    MySql取字段逗号分隔的第一个
    Mysql数据库中从表字段中存储了主表以逗号隔开的主键ID,现需求查询从表数据以及以逗号隔开的字段改为主表名称隔开(group_count() find_in_set())
    IIS 错误500.21解决方法
    IIS 出现500.19 错误处理解决方式
    Linux中vim的三种模式
    Centos7 .Net Core 使用Supervisor守护进程,进行后台运行
    Nginx反代理ASP.NET Core项目
    C# vb .net实现圆角矩形特效滤镜
    C# vb .net实现旋转特效滤镜
  • 原文地址:https://www.cnblogs.com/huanlingjisi/p/12371903.html
Copyright © 2011-2022 走看看