归档日志满造成数据库宕机

SYS@EMREP>startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size             130025040 bytes
Database Buffers          150994944 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-16038: log 1 sequence# 61 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1:
'/u01/app/oracle/product/10.2.0/EMREP/redo01.log'

SYS@EMREP>show parameter db_recovery_file

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /u01/app/oracle/flash_recovery
                                                 _area
db_recovery_file_dest_size           big integer 2G
SYS@EMREP>archive  log  list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     61
Next log sequence to archive   61
Current log sequence           63
SYS@EMREP>shutdown  abort
ORACLE instance shut down.
SYS@EMREP>startup  mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size             130025040 bytes
Database Buffers          150994944 bytes
Redo Buffers                2973696 bytes
Database mounted.
SYS@EMREP>alter  system set  db_recovery_file_dest_size=30g  scope=both;

System altered.

SYS@EMREP>select *from v$flash_recovery_area_usage;

FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE                   0                         0               0
ONLINELOG                     0                         0               0
ARCHIVELOG                19.57                         0              41
BACKUPPIECE                   0                         0               0
IMAGECOPY                     0                         0               0
FLASHBACKLOG                  0                         0               0

6 rows selected.

SYS@EMREP>select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
SUM(PERCENT_SPACE_USED)*3/100
-----------------------------
                        .5871

SYS@EMREP>exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining options
[oracle@secdb2 ~]$ rman  target /

Recovery Manager: Release 10.2.0.1.0 - Production on Fri Sep 21 20:53:10 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: EMREP (DBID=4017259525, not open)


RMAN> crosscheck archivelog all;

using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_20_85fhs0gq_.arc recid=1 stamp=794239906
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_21_85fhtnls_.arc recid=2 stamp=794239957
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_22_85fhvpm7_.arc recid=3 stamp=794239992
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_23_85fhx1d1_.arc recid=4 stamp=794240036
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_24_85fhyq15_.arc recid=5 stamp=794240088
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_25_85fj2kv2_.arc recid=6 stamp=794240211
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_26_85fj507h_.arc recid=7 stamp=794240289
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_27_85fnxzs7_.arc recid=8 stamp=794245185
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_28_85fvt7gv_.arc recid=9 stamp=794252234
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_29_85g50cxt_.arc recid=10 stamp=794261646
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_30_85gbrrk3_.arc recid=11 stamp=794267547
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_17/o1_mf_1_31_85gcbbfl_.arc recid=12 stamp=794268107
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_32_85gl88gj_.arc recid=13 stamp=794275210
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_33_85gw5360_.arc recid=14 stamp=794285348
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_34_85h79yrt_.arc recid=15 stamp=794296769
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_35_85hlqlnq_.arc recid=16 stamp=794308468
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_36_85hy7hyh_.arc recid=17 stamp=794320241
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_37_85j9lvvx_.arc recid=18 stamp=794331869
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_38_85jkp51n_.arc recid=19 stamp=794340167
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_39_85jx8c80_.arc recid=20 stamp=794352012
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_18/o1_mf_1_40_85k28mnm_.arc recid=21 stamp=794357141
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_41_85kbwjh9_.arc recid=22 stamp=794365970
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_42_85knp9c7_.arc recid=23 stamp=794376010
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_43_85l02m97_.arc recid=24 stamp=794387668
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_44_85lcj7mq_.arc recid=25 stamp=794399369
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_45_85lq97s4_.arc recid=26 stamp=794411433
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_46_85m2chcb_.arc recid=27 stamp=794422769
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_47_85mb6cdn_.arc recid=28 stamp=794430797
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_48_85mmzgvx_.arc recid=29 stamp=794440816
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_19/o1_mf_1_49_85mtpch2_.arc recid=30 stamp=794447693
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_20/o1_mf_1_50_85n2qgtn_.arc recid=31 stamp=794455919
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_20/o1_mf_1_51_85nffzfd_.arc recid=32 stamp=794466880
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_20/o1_mf_1_52_85nppkvb_.arc recid=33 stamp=794476371
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_20/o1_mf_1_53_85o1cxv0_.arc recid=34 stamp=794487295
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_20/o1_mf_1_54_85odt99q_.arc recid=35 stamp=794499018
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_20/o1_mf_1_55_85or6psv_.arc recid=36 stamp=794510680
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_20/o1_mf_1_56_85p1906g_.arc recid=37 stamp=794519969
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_20/o1_mf_1_57_85p8dj9l_.arc recid=38 stamp=794527249
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_21/o1_mf_1_58_85phd7gc_.arc recid=39 stamp=794534410
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_21/o1_mf_1_59_85pr46p3_.arc recid=40 stamp=794543368
validation succeeded for archived log
archive log filename=/u01/app/oracle/flash_recovery_area/EMREP/archivelog/2012_09_21/o1_mf_1_60_85q2oqf4_.arc recid=41 stamp=794554169
Crosschecked 41 objects

RMAN> delete expired archivelog all;

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
specification does not match any archive log in the recovery catalog

RMAN> delete obsolete;

RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
using channel ORA_DISK_1
no obsolete backups found

RMAN> crosscheck backupset;

using channel ORA_DISK_1

RMAN> delete expired backupset;

using channel ORA_DISK_1

SYS@EMREP>alter database open;

Database altered.

向Secooler 致敬!
Johnson
2012-9-21

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20985606/viewspace-744775/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20985606/viewspace-744775/

<think>嗯,用户的问题是关于在Spring项目宕机时如何配置日志捕捉,以便进行问题排查。首先,我需要回忆一下Spring项目中常用的日志框架,比如Logback或者Log4j2,这些都是常见的。然后,用户提到宕机时的日志捕捉,可能需要考虑在应用关闭时记录相关事件,比如未完成的请求或者资源释放的情况。 记得Spring有提供一些生命周期钩子,比如@PreDestroy注解或者实现DisposableBean接口,这些可以在Bean销毁前执行一些操作。另外,Spring的事件机制,比如ContextClosedEvent,可以用来监听应用上下文关闭的事件,这样可以在应用关闭时触发日志记录。 另外,JVM的Shutdown Hook也是一个关键点,通过Runtime.getRuntime().addShutdownHook()可以注册一个钩子,在JVM关闭时执行一些清理或日志记录的任务。不过要注意,这时候可能部分资源已经释放,所以需要确保日志框架在此时还能正常工作。 日志文件的滚动策略也很重要,比如配置Logback的RollingFileAppender,确保在应用关闭时当前的日志文件能正确归档,避免丢失最近的日志信息。异步日志可能会在关闭时丢失数据,所以可能需要配置异步Appender的等待策略,确保所有日志都被写出。 还有,用户提到的引用中有一个关于Spring Event的问题,在关闭期间发布事件可能会导致异常,所以需要确认在这种情况下使用事件监听是否可靠,或者是否有其他更可靠的方法来记录日志。 可能需要综合这些方面,提供一个分步骤的配置方法,包括生命周期钩子、事件监听、Shutdown Hook、日志框架配置以及健康检查等。同时,要确保示例代码正确,比如如何注册Shutdown Hook,如何配置Logback的appender,以及如何监听ContextClosedEvent。 还要考虑用户可能遇到的问题,比如日志文件没有正确关闭,或者异步日志丢失信息,所以在配置中需要特别指出这些注意事项。最后,生成的相关问题要围绕日志配置、关闭事件处理、高可用设计等方面,帮助用户进一步了解相关知识。</think>### Spring项目宕机日志捕捉配置方法 在Spring项目异常关闭时,可通过以下配置实现关键日志捕捉: #### 一、生命周期钩子配置 1. **使用`@PreDestroy`注解** 在Bean销毁前记录状态: ```java public class ResourceMonitor { @PreDestroy public void logShutdown() { LoggerFactory.getLogger(this.getClass()) .info("应用开始关闭,未释放资源:{}", getPendingResources()); } } ``` 2. **实现`DisposableBean`接口** 强制执行资源检查: ```java public class ConnectionPool implements DisposableBean { @Override public void destroy() { LoggerFactory.getLogger(this.getClass()) .warn("剩余数据库连接数:{}", activeConnections.size()); } } ``` #### 二、事件监听机制 监听上下文关闭事件: ```java @Component public class ShutdownEventListener { private static final Logger logger = LoggerFactory.getLogger(ShutdownEventListener.class); @EventListener(ContextClosedEvent.class) public void handleContextClose() { logger.error("应用上下文开始关闭!最后心跳时间:{}", LocalDateTime.now()); // 添加自定义关闭逻辑 } } ``` > 注意:在关闭后期阶段,部分Spring功能可能已不可用[^2] #### 三、JVM关闭钩子 注册全局Shutdown Hook: ```java @SpringBootApplication public class Application { public static void main(String[] args) { Runtime.getRuntime().addShutdownHook(new Thread(() -> { LoggerFactory.getLogger(Application.class) .error("JVM关闭钩子触发!当前线程状态:{}", Thread.currentThread().getState()); })); SpringApplication.run(Application.class, args); } } ``` #### 四、日志框架增强配置(以Logback为例) ```xml <!-- logback-spring.xml --> <configuration> <!-- 确保立即刷新的滚动策略 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern> <immediateFlush>true</immediateFlush> </encoder> </appender> <!-- 异步日志配置 --> <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <queueSize>1024</queueSize> <discardingThreshold>0</discardingThreshold> <appender-ref ref="FILE" /> </appender> </configuration> ``` #### 五、健康检查集成 在Actuator端点中暴露关闭状态: ```yaml # application.yml management: endpoints: web: exposure: include: health,shutdown endpoint: health: show-details: always ``` **关键注意事项:** 1. 使用`immediateFlush: true`确保日志及时写入(可能影响性能) 2. 异步日志队列设置`discardingThreshold=0`防止日志丢失 3. 定期测试kill -9等强制关闭场景下的日志完整性 4. 结合APM工具(如SkyWalking)进行全链路追踪
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值