- 最近客户单位的oracle数据库出了问题,经常出现无法连接,报错提示 ORA-00257: archiver error, Connect internal only, until freed.,手动清除归档日志后可以恢复访问,但是过不了几天依旧会爆满,每日生成的归档日志很大。经过详细排查发现 sysaux 表空间使用率达到 99.9%,清理该表空间后日志恢复正常!
复制代码 一、先清理归档日志使得数据库能够正常连接
- [root@rac1 ~]# su - grid
- grid@+ASM1:/home/grid$ asmcmd lsdg
- State Type Rebal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
- MOUNTED EXTERN N 512 4096 1048576 409600 127 0 127 0 N ARCH/
- MOUNTED EXTERN N 512 4096 1048576 1662976 997139 0 997139 0 N DATA/
- MOUNTED NORMAL N 512 4096 1048576 30720 29794 10240 9777 0 Y OCRDG/
复制代码 上述结果可以看到表空间仅仅剩余MB 可用。需要立刻释放空间。
使用rman工具 执行 删除2天前的归档日志- delete archivelog until time "sysdate-2";
复制代码- [root@rac1 ~]# su - oracle
- Password:
- oracle@orcl1:/home/oracle$rman target /
- Recovery Manager: Release 11.2.0.4.0 Production on Mon Oct 14 13:12:18 2024
- Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
- connected to target database: ORCL (DBID=1556520972)
- RMAN> delete archivelog until time "sysdate-2";
复制代码 二、排查问题
- 发现每天都生成70~80G的日志数据,正常应该2-8G;
复制代码- RMAN> exit
- Recovery Manager complete.
- oracle@orcl1:/home/oracle$sqlplus / as sysdba
- SQL*Plus: Release 11.2.0.4.0 Production on Mon Oct 14 13:12:32 2024
- Copyright (c) 1982, 2013, Oracle. All rights reserved.
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
- Data Mining and Real Application Testing options
- SQL>
- 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);
- TIME SIZE(GB)
- ------------ ----------
- 03-OCT-24 75.8037338
- 04-OCT-24 65.9294729
- 05-OCT-24 65.2526731
- 06-OCT-24 71.6385746
- 07-OCT-24 212.996218
- 08-OCT-24 138.052895
- 09-OCT-24 84.8484373
- 10-OCT-24 262.300638
- 11-OCT-24 74.3476553
- 12-OCT-24 70.9598064
- 10 rows selected.
复制代码 查看数据库表空间使用情况- 发现 SYSAUX 表空间使用率达到 99.84%
复制代码- 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;
- TABLESPACE_NAME TOTAL_G FREE_G USED_G USED_PERCENT
- ------------------------------ ---------- ---------- ---------- ------------
- USERS 759.75 57.51 702.24 92.43
- SYSAUX 62 .10 61.90 99.84
- SYSTEM 32 31.01 .99 3.09
- UNDOTBS2 32 31.64 .36 1.12
- UNDOTBS1 32 31.94 .06 .18
复制代码
- 查找归sysaux空间占用大于200mb的对象并生成删除sql
- 查出的对象属于 sys用户 请使用此账户执行如下sql语句的 'OPSQL’字段语句完成清理工作。
复制代码- 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;
- OPSQL
- --------------------------------------------------------------------------------
- MB
- ----------
- truncate table WRH$_ACTIVE_SESSION_HISTORY;
- 12436
- truncate table WRH$_EVENT_HISTOGRAM;
- 1984
- truncate table WRH$_LATCH_MISSES_SUMMARY;
- 1763
- OPSQL
- --------------------------------------------------------------------------------
- MB
- ----------
- truncate table WRH$_SYSSTAT;
- 1600
- truncate table WRH$_SEG_STAT;
- 1280
- truncate table WRH$_PARAMETER;
- 1152
- OPSQL
- --------------------------------------------------------------------------------
- MB
- ----------
- truncate table WRH$_SYSTEM_EVENT;
- 978
- truncate table WRH$_SQL_PLAN;
- 864
- truncate table WRH$_DLM_MISC;
- 456
- OPSQL
- --------------------------------------------------------------------------------
- MB
- ----------
- truncate table WRH$_MVPARAMETER;
- 400
- truncate table WRH$_SERVICE_STAT;
- 312
- truncate table WRH$_ROWCACHE_SUMMARY;
- 280
- OPSQL
- --------------------------------------------------------------------------------
- MB
- ----------
- truncate table WRH$_SERVICE_WAIT_CLASS;
- 144
- truncate table WRH$_SYSMETRIC_HISTORY;
- 144
- truncate table WRH$_DB_CACHE_ADVICE;
- 120
- OPSQL
- --------------------------------------------------------------------------------
- MB
- ----------
- truncate table WRH$_SQLTEXT;
- 104
- 16 rows selected.
- SQL>
复制代码 三、处理问题
- SQL> truncate table WRH$_ACTIVE_SESSION_HISTORY;
- Table has bing truncated.
- SQL> truncate table WRH$_EVENT_HISTOGRAM;
- Table has bing truncated.
- SQL>
复制代码 四、清理后效果
清理后可能导致客户端掉线情况,重新登录客户端即可。
查看表空间使用情况 如下表空间使用率为多。
隔两天后观察归档日志生成情况如下,已经不在暴增,客户表示非常满意!
以上就是Oracle归档日志爆满问题的处理方法的详细内容,更多关于Oracle归档日志爆满的资料请关注脚本之家其它相关文章!
来源:https://www.jb51.net/database/328978v4l.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |