Oracle19c使用adrci清理日志文件

Oracle中通常有好多日志文件,遇到异常情况会产生大量日志,造成磁盘空间紧张。
故需要清理对应文件。包括trace文件,incident文件,listener log文件等。
19c中oracle提供了一个ADRCI的命令行工具来查看ADR中的alert日志和trace信息,可以批量删除对应的日志文件。
adrci的位置在$ORACLE_HOME/bin目录下。

单机(集群)都看这里,只不过,集群是在grid用户下,而单机则是在oracle用户下。那么,怎么快速的找到它呢?

##就是这样。这里说的是 log.xml 监听日志文件
cd $ ORACLE_BASE/diag/tnslsnr/$HOSTNAME/listener/alert

下图中,显示的是监听日志文件​​log.xml​​的目录位置。
在这里插入图片描述
监听日志文件listener.log在这里!
在这里插入图片描述
如何查看监听日志文件的大小呢?
一般我们是进入监听日志文件所在目录,使用du -sh或者du -sh *或者du -sh listener.log查看其大小。但是,假如有数十上百个库,你也要一个一个进入目录,去查看吗?快捷命令来了。这样一定速度提高了效率。

cd $ ORACLE_BASE/diag/tnslsnr/$HOSTNAME/listener && du -sh *

有图有真相!我们只需要关注这两个文件夹的大小,即可决定是否需要清理。

在这里插入图片描述
如何清理呢?
首先,不需要停止监听服务。
其次,备份监听服务,以免带来不必要的麻烦,你懂的。
一般,我们这样操作。

监听日志文件log.xml如何清理呢?

使用adrci删除30天以前的
集群模式
[root@b19c01 ~]# su - grid
Last login: Wed Sep 14 23:23:47 CST 2022 on pts/3
[grid@b19c01:/home/grid]$ adrci
adrci> purge -age 43200 -type alert
adrci> exit

单机模式
[root@b19c01 ~]# su - oracle
Last login: Wed Sep 14 23:23:47 CST 2022 on pts/3
[oracle@b19c01:/home/oracle]$ adrci
adrci> purge -age 43200 -type alert
adrci> exit

1.删除incident文件
调用adrci

[root@prod-idm-storage incident]# adrci
ADRCI: Release 11.2.0.2.0 - Production on Tue May 7 15:19:08 2019
Copyright © 1982, 2009, Oracle and/or its affiliates. All rights reserved.
ADR base = “/app/oracle”

查看目录

adrci> show home
ADR Homes:
diag/rdbms/orcl/orcl

存在多个home需要指定单个home进行操作

adrci> set homepath diag/rdbms/tyrz/tyrz

查看incident

adrci> show incident
ADR Home = /app/oracle/diag/rdbms/orcl/orcl:
INCIDENT_ID PROBLEM_KEY CREATE_TIME
243353 ORA 227 2018-08-31 09:22:40.871000 +08:00
262554 ORA 227 2018-08-31 09:34:26.395000 +08:00
339426 ORA 1578 2018-09-22 06:01:46.329000 +08:00
339370 ORA 1578 2018-09-22 10:07:49.852000 +08:00
339402 ORA 1578 2018-09-22 14:08:23.558000 +08:00
339386 ORA 1578 2018-09-22 18:08:47.587000 +08:00
339394 ORA 1578 2018-09-22 22:09:26.524000 +08:00
339410 ORA 1578 2018-09-23 06:01:17.392000 +08:00
339387 ORA 1578 2018-09-23 10:10:58.257000 +08:00
339411 ORA 1578 2018-09-23 14:11:21.786000 +08:00
339412 ORA 1578 2018-09-23 18:11:59.186000 +08:00
339413 ORA 1578 2018-09-23 22:12:19.998000 +08:00
339414 ORA 1578 2018-09-24 22:01:20.661000 +08:00
339434 ORA 1578 2018-09-25 22:01:21.496000 +08:00
339415 ORA 1578 2018-09-26 22:01:09.127000 +08:00
339442 ORA 1578 2018-09-27 22:01:26.124000 +08:00
339450 ORA 1578 2018-09-28 22:01:21.893000 +08:00
339403 ORA 1578 2018-09-29 06:01:25.350000 +08:00
339418 ORA 1578 2018-09-29 10:07:14.940000 +08:00
339388 ORA 1578 2018-09-29 14:07:53.091000 +08:00
339389 ORA 1578 2018-09-29 18:08:10.510000 +08:00
339404 ORA 1578 2018-09-29 22:08:50.151000 +08:00
339419 ORA 1578 2018-09-30 06:01:15.858000 +08:00
339390 ORA 1578 2018-09-30 10:10:21.898000 +08:00
339391 ORA 1578 2018-09-30 14:10:47.874000 +08:00
339371 ORA 1578 2018-09-30 18:11:24.833000 +08:00
339405 ORA 1578 2018-09-30 22:11:47.994000 +08:00
339372 ORA 1578 2018-10-01 22:01:17.620000 +08:00
339435 ORA 1578 2018-10-02 22:01:30.078000 +08:00
339451 ORA 1578 2018-10-03 22:01:23.725000 +08:00
339420 ORA 1578 2018-10-04 22:01:21.404000 +08:00
339416 ORA 1578 2018-10-05 22:01:15.775000 +08:00
339421 ORA 1578 2018-10-06 06:01:29.564000 +08:00
339417 ORA 1578 2018-10-06 10:08:21.342000 +08:00
339422 ORA 1578 2018-10-06 14:08:52.711000 +08:00
345607 ORA 1578 2018-10-06 18:09:17.919000 +08:00
345609 ORA 1578 2018-10-06 22:09:56.154000 +08:00
339436 ORA 1578 2018-10-07 06:01:18.502000 +08:00
339406 ORA 1578 2018-10-07 10:01:23.514000 +08:00
339407 ORA 1578 2018-10-07 14:01:46.542000 +08:00
339354 ORA 1578 2018-10-07 18:02:21.533000 +08:00
339355 ORA 1578 2018-10-07 22:02:45.654000 +08:00
339498 ORA 1578 2018-10-08 22:01:23.626000 +08:00
339466 ORA 1578 2018-10-09 22:01:21.970000 +08:00
339467 ORA 1578 2018-10-10 22:01:11.649000 +08:00
339499 ORA 1578 2018-10-11 22:01:17.955000 +08:00
339443 ORA 1578 2018-10-12 22:01:24.071000 +08:00
339423 ORA 1578 2018-10-13 06:01:17.901000 +08:00
339373 ORA 1578 2018-10-13 10:06:37.319000 +08:00
339374 ORA 1578 2018-10-13 14:07:14.910000 +08:00
First 50 rows fetched (*** more available ***)

删除100天前的incident 14400=60min24100

adrci>purge -age 144000 -type incident

退出

adrci> exit

帮助

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

2.删除listener log

adrci> purge -age 8760 -type alert

3.删除TRACE
查看trace

adrci> show tracefile
diag/rdbms/oam/oam/trace/oam_vkrm_10487.trc
diag/rdbms/oam/oam/trace/oam_vkrm_6627.trc
diag/rdbms/oam/oam/trace/oam_j003_26131.trc
diag/rdbms/oam/oam/trace/oam_m000_404.trc
diag/rdbms/oam/oam/trace/oam_m000_20336.trc
diag/rdbms/oam/oam/trace/oam_w000_3502.trc
diag/rdbms/oam/oam/trace/oam_vkrm_31062.trc
diag/rdbms/oam/oam/trace/oam_m000_14702.trc
diag/rdbms/oam/oam/trace/oam_j000_949.trc
diag/rdbms/oam/oam/trace/oam_vkrm_28172.trc
diag/rdbms/oam/oam/trace/alert_oam.log
diag/rdbms/oam/oam/trace/oam_vkrm_12182.trc
diag/rdbms/oam/oam/trace/oam_w000_31588.trc
diag/rdbms/oam/oam/trace/oam_j000_6363.trc
diag/rdbms/oam/oam/trace/oam_w001_8741.trc
diag/rdbms/oam/oam/trace/oam_m000_15978.trc
diag/rdbms/oam/oam/trace/oam_vkrm_15883.trc
diag/rdbms/oam/oam/trace/oam_m000_5141.trc
diag/rdbms/oam/oam/trace/oam_j001_15641.trc
diag/rdbms/oam/oam/trace/oam_j000_21062.trc
diag/rdbms/oam/oam/trace/oam_m000_24268.trc
diag/rdbms/oam/oam/trace/oam_m000_21366.trc
diag/rdbms/oam/oam/trace/oam_vkrm_14072.trc

删除操作

adrci> purge -age 8760 -type trace

### Oracle 19c 归档日志清理方法及最佳实践 #### 清理归档日志的方法 要清理Oracle 19c中的归档日志,可以按照以下方式操作: 1. **确认数据库处于ARCHIVELOG模式** 需要先验证当前数据库是否运行在`ARCHIVELOG`模式下。这可以通过执行SQL查询完成: ```sql SELECT log_mode FROM v$database; ``` 如果返回的结果为`NOARCHIVELOG`,则表示未启用归档功能;如果为`ARCHIVELOG`,则已启用归档功能[^3]。 2. **删除本地磁盘上的归档日志文件** 使用RMAN命令可以直接清除不再需要的归档日志文件。例如,通过指定时间范围或序列号来删除旧的归档日志: ```bash rman target / DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7'; -- 删除七天前的归档日志 DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; -- 不提示直接删除 ``` 3. **配置自动清理策略** 在生产环境中,通常会结合备份计划定期清理过期的归档日志。可以在RMAN中定义保留策略(Retention Policy),从而让系统自动处理超出保留期限的数据: ```bash CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; -- 设置7天窗口内的数据可恢复 CROSSCHECK ARCHIVELOG ALL; -- 检查现有归档日志状态 DELETE EXPIRED ARCHIVELOG ALL; -- 删除标记为失效的归档日志 ``` 4. **监控存储空间并调整归档路径** 定期检查归档日志目录的空间占用情况,并考虑重新分配归档目标位置以优化资源利用效率。可通过修改初始化参数实现更改默认存储备份地址的操作: ```sql ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/new/archive/path' SCOPE=BOTH; ``` #### 最佳实践建议 为了确保高效且安全地管理归档日志,在日常运维过程中应遵循如下原则: - **制定合理的保留周期** 根据业务需求设定恰当的时间长度作为历史记录保存依据,既满足灾难恢复的要求又不会过度消耗物理介质容量。 - **实施增量式备份方案** 结合全量与差异两种类型的备份机制共同作用于整个生命周期内产生的各类变更内容之上,减少重复冗余部分所占据的比例份额。 - **加强权限控制措施** 对涉及敏感信息访问的相关账户采取严格的身份认证流程以及最小化授权准则,防止未经授权人员随意篡改或者销毁重要资料文档等行为发生概率提升至最低限度水平线之下。 ```python # Python脚本示例用于自动化检测归档日志大小 import os def check_archive_size(directory): total_size = sum(os.path.getsize(f) for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))) return round(total_size / (1024 * 1024), 2) archive_dir = '/path/to/archivelogs' print(f"Total Archive Log Size: {check_archive_size(archive_dir)} MB") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值