Oracle11g如何清理数据库的历史⽇志详解
本⽂主要给⼤家介绍了关于Oracle 11g清理数据库历史⽇志的相关内容,分享出来供⼤家参考学习,下⾯话不多说了,来⼀起看看详细的介绍
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⽬录下警告⽇志是⼀个名为l的⽂件,这个⽇志每到11M左右就会分割成⼀个l的⽇志,逐渐累加。
删除监听⽇志的⽅法如下:
切换到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
repository文件夹可以删除吗
Usage: PURGE [[-i <id1> | <id1> <id2>] |
[-age <mins> [-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 <mins>]: Users can specify the purging policy either to all
the diagnostic data or the specified type. The data older than <mins>
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⽬录下的内容,可以使⽤该⽅法。
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。