Oracle Listener日志位置及压缩转移
2016-07-01 10:52
369 查看
近日由于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
相关文章推荐
- oracle11g创建表
- Yii 1.1: Increasing AR performance in connections with Oracle
- java 操作oracle的blob类型数据
- ORACLE SQL性能优化(全)
- oracle11g给某个用户创建表空间
- C# 获取 oracle 存储过程的 返回值1
- C# 获取 oracle 存储过程的 返回值
- oracle 多条语句同时执行(比如返回两个dataset)
- oracle 跨数据库取数据
- windows下安装oracle 数据库软件打补丁,总是检测到有活动进程
- oracle11g 新特性密码延迟验证引发的 血案
- Mybatis oracle 最原始分页代码
- Oracle创建表失败&连接失败
- Oracle切换UNDO空间数据库后存储过程无法正常编译
- oracle第二天
- oracle学习篇八:约束
- ORACLE中DBMS_SQL的用法
- ORACLE频繁被锁
- Oracle中向表中插入数据
- oracle创建表空间、用户