oracle数据库alert 日志和trace日志文件过大清理

前言

使用sys用户登录时,提示ORA-09945: Unable to initialize the audit trail file系统空间已满,遂排查后发现alert 日志和trace文件过大。


提示:以下是本篇文章正文内容,下面案例可供参考

操作步骤

1.查询监听及文件大小并关闭

代码如下(示例):

[root@db ~]# su - oracle
[oracle@db ~]$ lsnrctl status # 下面是监听信息里的目录部分
Listener Parameter File   /usr/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
Listener Log File         /usr/app/oracle/diag/tnslsnr/db/listener/alert/log.xml
# 进入目录下查看各个文件大小
[oracle@db ~]$ cd  /usr/app/oracle/diag/tnslsnr/db/listener
[oracle@db listener]$ du -sh *
# 关闭监听
[oracle@db ~]$ lsnrctl stop

 2.查找并清理过期alert日志文件

代码如下(示例):

# 查找alter目录下3天前的xml日志
[oracle@db ~]$ find /usr/app/oracle/diag/tnslsnr/db/listener/alert -mtime +3 -name "*.xml"
# 检查无误后删除3天前的日志文件
[oracle@db ~]$ find /usr/app/oracle/diag/tnslsnr/db/listener/alert -mtime +3 -name "*.xml" | xargs rm -f

3.清理trace目录下的文件

代码如下(示例): 

# 进入监听
[oracle@db trace]$ lsnrctl

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 31-DEC-2024 13:18:48

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> show log_status # 查看监听日志文件状态 "on"是写入状态
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=15210)))
LISTENER parameter "log_status" set to ON
The command completed successfully
LSNRCTL> set log_status off #关闭写入状态
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=15210)))
LISTENER parameter "log_status" set to OFF
The command completed successfully
LSNRCTL> exit # 退出监听程序
[oracle@db trace]$ mv listener.log listener.log.bak # 重命名log文件
[oracle@db trace]$ lsnrctl # 再次进入监听(可以同时开两个控制台,就不用来回进出)

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 31-DEC-2024 13:22:24

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> set log_status on # 开启写入状态
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=15210)))
LISTENER parameter "log_status" set to ON
The command completed successfully
LSNRCTL> reload # 重启监听
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=15210)))
The command completed successfully
LSNRCTL> status # 查看监听状态
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=15210)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                31-DEC-2024 11:06:08
Uptime                    0 days 2 hr. 17 min. 57 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /usr/app/oracle/product/12.2.0/db_1/network/admin/listener.ora
Listener Log File         /usr/app/oracle/diag/tnslsnr/db/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db)(PORT=15210)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=db)(PORT=5500))(Security=(my_wallet_directory=/usr/app/oracle/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
LSNRCTL> exit # 退出监听程序
[oracle@db trace]$ ls
listener.log  listener.log.bak  #可以看到已经产生了新的log文件,bak文件可以根据情况移动或者删除



总结

以上就是今天记录的内容,本文仅仅简单介绍了在sys登陆oracle时,提示:
ERROR:ORA-09945: Unable to initialize the audit trail file
Linux Error: 28: No space left on device。
错误的解决方式,可供参考,同样的提示可能原因不尽相同请仔细分析。

### Linux清理 Oracle 数据库中的 TRC TRM 文件的方法 在 Linux 环境下,TRC TRM 文件通常是 Oracle 数据库产生的跟踪文件。这些文件可能会占用量磁盘空间,因此定期清理是非常必要的。以下是具体的清理方法: #### 使用 `find` 命令清理 TRC TRM 文件 可以通过 `find` 命令查找并删除超过指定时间的 TRC TRM 文件。以下是一个典型的命令结构[^2]: ```bash /usr/bin/find /oracle/diag/rdbms/$l_sid/$l_sid/trace -mtime +7 -name "*.trc" | xargs rm -f ``` 上述命令的作用是从 `/oracle/diag/rdbms/$l_sid/$l_sid/trace` 路径中查找修改时间为 7 天之前的 `.trc` 文件,并将其删除。 对于 TRM 文件,可以使用类似的命令: ```bash find /orc/app/oracle/diag/rdbms/orcl/orcl/trace -name "*.trm" -mtime +2 -exec rm {} \; ``` 此命令会从指定路径中查找修改时间为两天之前的 `.trm` 文件,并通过 `-exec rm {} \;` 删除它们[^3]。 #### 手动进入目录清理特定类型的日志文件 如果需要手动清理某些类型的日志文件,也可以切换到对应的目录进行操作。例如,清理 ALERT 日志下的 XML 文件: ```bash cd /u01/app/oracle/diag/rdbms/orcl/orcl/alert rm log_*.xml ``` 同样地,TRACE 日志文件所在的路径通常为 `$ORACLE_BASE/diag/rdbms/<SID>/<INSTANCE>/trace`,可以在该路径下执行清理操作[^4]。 #### 参数解释 - **`-mtime +N`**: 查找 N 天之前被修改过的文件。 - **`-name "*.ext"`**: 只匹配扩展名为 `.ext` 的文件。 - **`xargs rm -f` 或 `-exec rm {} \;`**: 对查找到的文件执行删除操作。 需要注意的是,在实际生产环境中运行此类脚本前,应先测试其效果以防止误删重要文件。 --- ### 注意事项 为了确保数据安全以及避免意外删除有用的文件,在执行清理操作时应注意以下几点: 1. 验证路径是否正确无误; 2. 设置合理的保留期限 (如 `-mtime`) 来保护近期的日志记录不被清除; 3. 提前备份关键性的诊断信息以防万一需要回溯问题原因。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值