# oracle监听日志listener.log过大处理方法(linux&windows) > 过大后的影响情况一般为,无法连接,监听异常,或者无法读写 ## 一、问题描述 当Oracle监听日志过大时,查看监听监听状态报错并非常缓慢。业务无法连接到数据库,登陆数据库服务器,查看监听已经断掉,尝试重启监听,重启失败;查看监听日志listener.log的大小已经超过9G以上。 在oracle中,如果不对监听日志文件进行截断(定期清理),那么监听日志文件会变得越来越大,由于一些老旧的OS不支持2GB以上的文件,故当listener.log文件超过2GB时,会出现无法处理新的连接,新的操作系统虽然不会出现这个问题,但我们依然需要对其进行定期清理。 ## 二、解决方法 清除日志文件内容(不可删除文件再创建新文件)。 ### 1、linux操作步骤: 步骤1:停止监听服务进程(tnslsnr)记录日志 ```bash $ lsnrctl set log_status off; ``` 步骤2:拷贝listener.log文件 ```bash $ cp listener.log listener.log.bak ``` 步骤3:清空listener.log文件内容 ```bash $ echo '' > listener.log ``` 步骤4:查看日志文件大小,确认是否被清空 ```bash $ du -sk * ``` 步骤5:开启监听服务进程(tnslsnr)日志 ```bash $ lsnrctl set log_status on; ``` 步骤6:查看监听日志是否正常运行,如果不断更新,说明没问题(假如没人连接数据库,我们是看不到变化的,此时我们可以使用sqlplus连接数据库,看listener.log是否会更新 ```bash $ tail -f listener.log ``` #### 自动脚本 ```bash #!/bin/bash lsnrctl set log_status off; # 根据自身情况复制迁移 # cp listener.log listener.log.bak echo '' > listener.log lsnrctl set log_status on; ``` ### 2、windows操作步骤 步骤1:运行cmd,停止监听服务进程(tnslsnr)记录日志 命令: ```bash lsnrctl set log_status off ```  步骤2:切换到监听日志文件位置,并打开cmd,清空文件 命令: ```bash cls >listener.log ``` dir命令可以查看当前文件夹下的内容并显示其详细信息  步骤3:开启监听服务进程(tnslsnr)日志 命令: ```bash lsnrctl set log_status on ```  #### 自动脚本 ```bash #!/bin/bash lsnrctl set log_status off # cd d:/目录 cls >listener.log lsnrctl set log_status on ```