千家信息网

Oracle11g怎么清理数据库的历史日志

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Oracle11g怎么清理数据库的历史日志",在日常操作中,相信很多人在Oracle11g怎么清理数据库的历史日志问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2026年11月02日Oracle11g怎么清理数据库的历史日志

这篇文章主要介绍"Oracle11g怎么清理数据库的历史日志",在日常操作中,相信很多人在Oracle11g怎么清理数据库的历史日志问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Oracle11g怎么清理数据库的历史日志"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 创建存放数据库待删除日志文件路径

用于存放准备删除,这里假设放在/home/oracle/delete路径下

$ cd /home/oracle/delete

$ mkdir -p audit_file_dest background_dump_dest user_dump_dest core_dump_dest listenr_log_dest

2. 查看不同数据库日志文件所在路径

$ sqlplus / as sysdba

SQL> show parameter dest

找到audit_file_dest,background_dump_dest,user_dump_dest,core_dump_dest对应的值

audit_file_dest路径下存放的是数据库审计信息文件

background_dump_dest路径下存放的是数据库的trace文件和alert日志文件

user_dump_dest路径下存放的是sql trace之后session的trace文件

core_dump_dest路径下存放的是应用程序日志,除非数据库出了问题,否则基本上不会有什么信息

下文使用黑体的audit_file_dest,background_dump_dest,user_dump_dest,core_dump_dest代替真实路径。

3. 数据库审计信息文件清理

进入audit_file_dest路径下,将30天之前的文件移到准备删除的文件夹,执行命令如下:

(1)执行如下命令查看当前所在路径,确定是否无误

$ cd audit_file_dest

$ pwd

(2)执行如下命令查看30天前的审计文件

$ find audit_file_dest -mtime +30 -name \*.aud

(3)执行如下命令,将文件移至待删除文件夹

$ find audit_file_dest -mtime +30 -name \*.aud -exec mv {} /home/oracle/delete/audit_file_dest \;

(4)查看审计目录下30天前的审计文件以及待删除文件夹下的文件

$ find audit_file_dest -mtime +30 -name \*.aud

$ ls /home/oracle/delete/audit_file_dest

(5)等待2日,确保日志文件移走对Oracle数据库运行无影响之后,手工执行删除命令

$ cd /home/oracle/delete

$ rm -rf audit_file_dest

4. 数据库trace文件和alert日志清理

4.1. 清理trace文件

进入background_dump_dest路径下,将30天之前的文件移到准备删除的文件夹,执行命令如下:

(1)执行如下命令查看当前所在路径,确定是否无误

$ cd background_dump_dest

$ pwd

(2)执行如下命令查看30天前的审计文件

$ find background_dump_dest -mtime +30 -name \*.tr*

(3)执行如下命令,将文件移至待删除文件夹

$ find background_dump_dest -mtime +30 -name \*.tr* -exec mv {} /home/oracle/delete/background_dump_dest \;

(4)查看审计目录下30天前的审计文件以及待删除文件夹下的文件

$ find background_dump_dest -mtime +30 -name \*.aud

$ ls /home/oracle/delete/background_dump_dest

(5)等待2日,确保日志文件移走对Oracle数据库运行无影响之后,手工执行删除命令

$ cd /home/oracle/delete

$ rm -rf background_dump_dest

4.2. 清理alert日志

alert日志,可以直接删除alert日志(或echo清理),可自动生成,无需关闭数据库(前提最好是将原来的cp备份)

(1)进入日志所在路径

$ cd background_dump_dest
(2)cp备份
cp alert_$ORACLE_SID.log alert_$ORACLE_SID.log.bak (确保空间足够)

(3)删除原来alert日志文件
方法1:echo >alert_$ORACLE_SID.log (这个方法清理后原来的alert文件还在)
方法2:rm alert_$ORACLE_SID.log (直接删除掉)

(4)测试方法2删除的alert文件会自动生成
SQL> alter system switch logfile;

(5)看是否生成新的日志文件
SQL> show parameter dump
SQL> exit
$ cd /u01/app/oracle/diag/rdbms/db11g/db11g/trace
$ ls -lrt
可看到最新生成的alert日志文件

5. 数据库sql trace文件清理

数据库默认user_dump_dest和background_dump_dest路径一致,如不一致,参考4.1的方法进行操作即可。

6. 数据库监听日志清理

Oracle 11g的监听日志和告警日志分别在$ORACLE_BASE/diag/tnslsnr/hostname/listener/trace和$ORACLE_BASE/diag/tnslsnr/hostname/listener/alert目录下,前面的hostname根据实际主机名而定,以下对监听日志和告警日志所在目录简称为trace目录和alert目录。
trace目录下产生的日志文件比较大,是主要清理的对象,而alert目录下产生的文件比较小,基本不需要清除。在trace目录下监听日志是一个名为listener.log的文件,而在alert目录下警告日志是一个名为log.xml的文件,这个日志每到11M左右就会分割成一个log_XXXX.xml的日志,逐渐累加。

删除监听日志的方法如下:
切换到oracle用户
$ su oracle
$ lsnrctl set log_status off
$ mv listener.log listener.log.bak (备份一下监听文件 )
$ lsnrctl set log_status on (这时候会自动创建一个listener.log文件)
监听日志启动后就会自动创建一个全新的listener.log文件,备份好的文件可以删除。
如果不执行上述的命令直接删除listener.log,系统是不会创建的。

警告日志可以用以下命令移动或者删除(先到指定目录下,再执行此命令)
find . -mtime +10 -exec mv {} /home/oracle/delete/listenr_log_dest \;


要看警告日志可以在oracle用户下执行adrci
$adrci
在adrci目录下可以输入help可以看帮助命令。输入help show alert,可以看到show alert的详细用法。

show alert
会提示让你选择日志的目录或者退出
adrci> show alert

Choose the alert log from the following homes to view:

1: diag/rdbms/db1/db1
2: diag/tnslsnr/oracle/listener
Q: to quit
Please select option: 1
输入1就看db1下的,输入2就看listener目录下的,输入q就退出。
看完alert的日志后输入 :q退出,操作方法跟vi命令类似。

SHOW TRACEFILE
可以看到监听日志文件

7. adrci命令使用

11G adrci(Automatic Diagnostic Repository Command Interpreter)清理 ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP目录下的文件


PS:补充11g还可用adrci清理: 具体步骤如下

$ adrci

ADRCI: Release 11.2.0.4.0 - Production on Fri Jun 2 18:31:34 2017

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

ADR base = "/u01/app/oracle"
adrci> show home
ADR Homes:
diag/tnslsnr/db/listener

diag/rdbms/cams/cams
adrci> set homepath diag/rdbms/cams/cams
adrci> help purge

Usage: PURGE [[-i | ] |
[-age [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]]]:

Purpose: Purge the diagnostic data in the current ADR home. If no
option is specified, the default purging policy will be used.

Options:
[-i id1 | id1 id2]: Users can input a single incident ID, or a
range of incidents to purge.

[-age ]: Users can specify the purging policy either to all
the diagnostic data or the specified type. The data older than
ago will be purged

[-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]: Users can specify what type of
data to be purged.

Examples:
purge
purge -i 123 456
purge -age 60 -type incident

如果要清理 /u01/app/oracle/diag/rdbms/cams/cams目录下的内容,可以使用该方法。

到此,关于"Oracle11g怎么清理数据库的历史日志"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

文件 日志 数据 数据库 命令 目录 路径 方法 审计 监听 文件夹 输入 所在 历史 备份 学习 生成 信息 准备 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是第几次科技革命的成果 互联网络科技有限公司 狮子座互联网科技有限公司 互联网科技的未来发展 青海省互联网新科技 海南科技产业互联网平台 蓝色互联网科技 互联网科技教育视频 昊天互联网科技有限公司 互联网科技公司有风险吗 互联网与医疗科技 链环科技传统企业怎么转型互联网 长沙茂晟互联网科技有限公司 工业互联网山东科技大学 众安科技工业互联网合作 广东工业互联网大赛深圳学泰科技 领航科技大厦互联网公司 互联网科技快讯热点 上海互联网科技公司ppt 知域互联网科技有限公司官网 智网互联网科技 哈尔滨秒房互联网科技有限公司 互联网科技有哪些公司 辽宁互联网新科技 高科技互联网发展前景如何 互联网第三次科技革命特征 国产互联网科技公司 版纳互联网科技选哪家 科技互联网专业务虚会材料 银川新华互联网科技学校招聘
0