• Oracle Listener日志位置及压缩转移


    近日由于Oracle Listener异常断开导致应用无法上传数据,需要从listener日志开始分析问题原因。此文介绍如何获取日志位置。由于日志文件大小问题,同时将日志文件进行压缩存放。

    alert日志

    [grid@test-rac1 ~]$ lsnrctl show log_file
    
    LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 30-JUN-2016 11:02:35
    
    Copyright (c) 1991, 2014, Oracle.  All rights reserved.
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
    LISTENER parameter "log_file" set to /u1/app/grid/diag/tnslsnr/test-rac1/listener/alert/log.xml
    The command completed successfully
    

    alert日志是xml文件格式,同时它会按照固定大小自行分割。

    -rw-r-----. 1 grid oinstall 10486185 Jun 28 03:57 log_75.xml
    -rw-r-----. 1 grid oinstall 10485849 Jun 29 00:08 log_76.xml
    -rw-r-----. 1 grid oinstall 10485993 Jun 30 02:33 log_77.xml
    -rw-r-----. 1 grid oinstall  3416684 Jun 30 11:03 log.xml
    

    trace日志

    获得日志位置,trace日志为log文件,一条记录一行,比较便于阅读。

    [grid@test-rac1 ~]$ lsnrctl show trc_directory
    
    LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 30-JUN-2016 11:45:33
    
    Copyright (c) 1991, 2014, Oracle.  All rights reserved.
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
    LISTENER parameter "trc_directory" set to /u1/app/grid/diag/tnslsnr/test-rac1/listener/trace
    The command completed successfully
    
    [grid@test-rac1 ~]$ ll /u1/app/grid/diag/tnslsnr/test-rac1/listener/trace
    total 416804
    -rw-r-----. 1 grid oinstall 419234429 Jun 30 11:47 listener.log
    

    日志分割

    因为当前的listener.log日志文件已经超过400M,需要先将此文件分割。然后使用crontab定期执行日志分割操作。

    • 首先使用数据库脚本生成切割脚本
    create table tmp_t1 (a1 date, a2 varchar2(20));
    
    declare
      v_a1 date;
    begin
      v_a1 := date '2015-10-22';
      while v_a1 < date '2016-07-01' loop
        insert into tmp_t1 (a1) select v_a1 from dual;
        v_a1 := v_a1+1;
      end loop
      commit;
    end;
    
    select to_char(a1,'dd-MON-yyyy','NLS_DATE_LANGUAGE = American') from tmp_t1;
    
    update tmp_t1 set a2=to_char(a1,'dd-MON-yyyy','NLS_DATE_LANGUAGE = American');
    
    select 'sed -n ''/'||a2||'/p'' listener.log > ./rac1/listener_'||to_char(a1,'yyyymmdd')||'.log' from tmp_t1;
    

    从而得到如下的shell命令sed -n '/22-OCT-2015/p' listener.log > ./rac1/listener_20151022.log。可以将所有命令拷到一个shell脚本中执行。

    • 定期切割节本

    日志开启情况下直接改动日志文件可能引起监听异常,因此操作日志文件前需要关闭监听日志。同时监测当前的日志文件中有没有监听停止信息。

    str=`date '+%Y%m%d'`
    lsnrctl set log_status off
    mv /u1/app/grid/diag/tnslsnr/test-rac1/listener/trace/listener.log /db/listenerlog/rac1/trace/listener_$str.log
    lsnrctl set log_status on
    cd /db/listenerlog/rac1/trace
    grep service_died listener_$str.log >> ../service_died.log
    tar -czf listener_$str.log.tar.gz listener_$str.log
    if [ $? -eq 0 ] ;then
      rm /db/listenerlog/rac1/trace/listener_$str.log
    fi
    
  • 相关阅读:
    vue组件传值
    mui父子页面蒙版
    mui页面传值
    mui跳转页面短暂白屏
    Sql 向数据库中添加一行数据
    redis启动报错 no config file specified, using the default config.
    C# 合并表达式树
    .net从集合中取出下拉框类型值数据
    jquery从数组中取出满足要求的元素
    RabbitMQ Topic交换机代码实现
  • 原文地址:https://www.cnblogs.com/shenfeng/p/ora_lsnr_dir.html
Copyright © 2020-2023  润新知