• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Oracle归档日志爆满问题的处理方法

    发布者: 雪落无声 | 发布时间: 2025-6-18 09:27| 查看数: 92| 评论数: 0|帖子模式

    1. 最近客户单位的oracle数据库出了问题,经常出现无法连接,报错提示 ORA-00257: archiver error, Connect internal only, until freed.,手动清除归档日志后可以恢复访问,但是过不了几天依旧会爆满,每日生成的归档日志很大。经过详细排查发现 sysaux 表空间使用率达到 99.9%,清理该表空间后日志恢复正常!
    复制代码
    一、先清理归档日志使得数据库能够正常连接
    1. [root@rac1 ~]# su - grid
    2. grid@+ASM1:/home/grid$ asmcmd lsdg
    3. State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
    4. MOUNTED  EXTERN  N         512   4096  1048576    409600      127                0             127              0             N  ARCH/
    5. MOUNTED  EXTERN  N         512   4096  1048576   1662976   997139                0          997139              0             N  DATA/
    6. MOUNTED  NORMAL  N         512   4096  1048576     30720    29794            10240            9777              0             Y  OCRDG/
    复制代码
    上述结果可以看到表空间仅仅剩余
    1. 127
    复制代码
    MB 可用。需要立刻释放空间。
    使用rman工具 执行 删除2天前的归档日志
    1. delete archivelog until time "sysdate-2";
    复制代码
    1. [root@rac1 ~]# su - oracle
    2. Password:
    3. oracle@orcl1:/home/oracle$rman target /
    4. Recovery Manager: Release 11.2.0.4.0 Production on Mon Oct 14 13:12:18 2024
    5. Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
    6. connected to target database: ORCL (DBID=1556520972)
    7. RMAN> delete archivelog until time "sysdate-2";  
    复制代码
    二、排查问题


    • 查看归档日志每天生成情况
    1. 发现每天都生成70~80G的日志数据,正常应该2-8G;
    复制代码
    1. RMAN> exit
    2. Recovery Manager complete.
    3. oracle@orcl1:/home/oracle$sqlplus / as sysdba
    4. SQL*Plus: Release 11.2.0.4.0 Production on Mon Oct 14 13:12:32 2024
    5. Copyright (c) 1982, 2013, Oracle.  All rights reserved.
    6. Connected to:
    7. Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
    8. With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
    9. Data Mining and Real Application Testing options

    10. SQL>
    11. SQL> SELECT TRUNC(FIRST_TIME) "TIME",SUM(BLOCK_SIZE * BLOCKS) / 1024 / 1024 / 1024 "SIZE(GB)"FROM V$ARCHIVED_LOG GROUP BY TRUNC(FIRST_TIME) order by TRUNC(FIRST_T);

    12. TIME               SIZE(GB)
    13. ------------ ----------
    14. 03-OCT-24    75.8037338
    15. 04-OCT-24    65.9294729
    16. 05-OCT-24    65.2526731
    17. 06-OCT-24    71.6385746
    18. 07-OCT-24    212.996218
    19. 08-OCT-24    138.052895
    20. 09-OCT-24    84.8484373
    21. 10-OCT-24    262.300638
    22. 11-OCT-24    74.3476553
    23. 12-OCT-24    70.9598064

    24. 10 rows selected.
    复制代码
    查看数据库表空间使用情况
    1. 发现 SYSAUX 表空间使用率达到 99.84%
    复制代码
    1. SQL> SELECT F.TABLESPACE_NAME TABLESPACE_NAME,ROUND(((D.SUMBYTES + D.EXTEND_BYTES) / 1024 / 1024 / 1024), 2) TOTAL_G,             ROUND((F.SUMBYTES + D.EXTEND_BYTES) / 1024 / 1024 / 1024, 2) FREE_G,  ROUND((D.SUMBYTES - F.SUMBYTES) / 1024 / 1024 / 1024, 2) USED_G,   ROUND((D.SUMBYTES - F.SUMBYTES) * 100 / (D.SUMBYTES + D.EXTEND_BYTES),    2) USED_PERCENT        FROM (SELECT TABLESPACE_NAME, SUM(BYTES) SUMBYTES FROM DBA_FREE_SPACE  GROUP BY TABLESPACE_NAME) F,  (SELECT TABLESPACE_NAME,      SUM(AA.BYTES) SUMBYTES,      SUM(AA.EXTEND_BYTES) EXTEND_BYTES FROM (SELECT NVL(CASE  WHEN AUTOEXTENSIBLE = 'YES' THEN      (CASE        WHEN (MAXBYTES - BYTES) >= 0 THEN         (MAXBYTES - BYTES)      END)   END,   0) EXTEND_BYTES,              TABLESPACE_NAME,              BYTES         FROM DBA_DATA_FILES) AA               GROUP BY TABLESPACE_NAME) D       WHERE F.TABLESPACE_NAME = D.TABLESPACE_NAME       ORDER BY USED_PERCENT DESC;

    2. TABLESPACE_NAME                   TOTAL_G     FREE_G         USED_G USED_PERCENT
    3. ------------------------------ ---------- ---------- ---------- ------------
    4. USERS                                   759.75      57.51         702.24        92.43
    5. SYSAUX                                       62        .10          61.90        99.84
    6. SYSTEM                                       32      31.01            .99         3.09
    7. UNDOTBS2                               32      31.64            .36         1.12
    8. UNDOTBS1                               32      31.94            .06          .18
    复制代码

    • 查找归sysaux空间占用大于200mb的对象并生成删除sql
    1. 查出的对象属于 sys用户 请使用此账户执行如下sql语句的 'OPSQL’字段语句完成清理工作。
    复制代码
    1. SQL> select distinct 'truncate table ' || segment_name || ';' as OPSQL, s.bytes / 1024 / 1024 MB from dba_segments s where s.segment_name like 'WRH$%'    and segment_type in ('TABLE PARTITION', 'TABLE')    and s.bytes / 1024 / 1024 > 200  order by s.bytes / 1024 / 1024 desc;

    2. OPSQL
    3. --------------------------------------------------------------------------------
    4.         MB
    5. ----------
    6. truncate table WRH$_ACTIVE_SESSION_HISTORY;
    7.       12436

    8. truncate table WRH$_EVENT_HISTOGRAM;
    9.       1984

    10. truncate table WRH$_LATCH_MISSES_SUMMARY;
    11.       1763


    12. OPSQL
    13. --------------------------------------------------------------------------------
    14.         MB
    15. ----------
    16. truncate table WRH$_SYSSTAT;
    17.       1600

    18. truncate table WRH$_SEG_STAT;
    19.       1280

    20. truncate table WRH$_PARAMETER;
    21.       1152


    22. OPSQL
    23. --------------------------------------------------------------------------------
    24.         MB
    25. ----------
    26. truncate table WRH$_SYSTEM_EVENT;
    27.        978

    28. truncate table WRH$_SQL_PLAN;
    29.        864

    30. truncate table WRH$_DLM_MISC;
    31.        456


    32. OPSQL
    33. --------------------------------------------------------------------------------
    34.         MB
    35. ----------
    36. truncate table WRH$_MVPARAMETER;
    37.        400

    38. truncate table WRH$_SERVICE_STAT;
    39.        312

    40. truncate table WRH$_ROWCACHE_SUMMARY;
    41.        280


    42. OPSQL
    43. --------------------------------------------------------------------------------
    44.         MB
    45. ----------
    46. truncate table WRH$_SERVICE_WAIT_CLASS;
    47.        144

    48. truncate table WRH$_SYSMETRIC_HISTORY;
    49.        144

    50. truncate table WRH$_DB_CACHE_ADVICE;
    51.        120


    52. OPSQL
    53. --------------------------------------------------------------------------------
    54.         MB
    55. ----------
    56. truncate table WRH$_SQLTEXT;
    57.        104


    58. 16 rows selected.

    59. SQL>
    复制代码
    三、处理问题
    1. 挑选较大的进行清理。如下
    复制代码
    1. SQL> truncate table WRH$_ACTIVE_SESSION_HISTORY;

    2. Table has bing truncated.

    3. SQL> truncate table WRH$_EVENT_HISTOGRAM;

    4. Table has bing truncated.

    5. SQL>
    复制代码
    四、清理后效果

    清理后可能导致客户端掉线情况,重新登录客户端即可。
    查看表空间使用情况 如下
    1. SYSAUX
    复制代码
    表空间使用率为
    1. 50%
    复制代码
    多。

    隔两天后观察归档日志生成情况如下,已经不在暴增,客户表示非常满意!

    以上就是Oracle归档日志爆满问题的处理方法的详细内容,更多关于Oracle归档日志爆满的资料请关注脚本之家其它相关文章!

    来源:https://www.jb51.net/database/328978v4l.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表