前言
oracle启用归档日志的状态下,会在指定的归档日志目录生成大量的日志文件,而且这些日志文件默认是不会定期清理。长时间运行下,会占用大量的存储空间,最终可能导致oracle没有足够的空间维持启动状态。
在oracle的控制文件中记录着每一个归档日志文件得相关信息。当手动删除了归档日志的物理文件后,控制文件中依然记录着已删除的归档日志信息。所以当我们删除归档日志文件时,不仅需要删除物理文件,还要删除控制文件中对应的信息。
一、切换oracle用户
[root@ea9446c43596 /]# su - oracle
二、查看归档日志路径
归档日志路径不一定相同,如果不清楚归档日志在哪,可以通过命令find / -name *.dbf查找
[oracle@ea9446c43596 ~]$ cd /home/oracle/app/oracle/oradata/archlogs/ [oracle@ea9446c43596 archlogs]$ ls 1_10_900206934.dbf 1_12_900206934.dbf 1_14_900206934.dbf 1_5_900206934.dbf 1_7_900206934.dbf 1_9_900206934.dbf 1_11_900206934.dbf 1_13_900206934.dbf 1_4_900206934.dbf 1_6_900206934.dbf 1_8_900206934.dbf
三、方法一:删除归档日志物理文件
如果之前手动删除过物理文件,可以查看这个方法,将控制文件中归档日志记录删除
1 删除物理文件
删除物理文件:1_4_900206934.dbf
[oracle@ea9446c43596 archlogs]$ rm -f 1_4_900206934.dbf
2 查看控制文件
通过如下命令查看oracle控制文件记录归档日志信息,发现"1_4_900206934.dbf"还存在
rman target /rman登录命令
list archivelog all;查看所有的归档日志
[oracle@ea9446c43596 archlogs]$ rman target /
recovery manager: release 11.2.0.1.0 - production on mon dec 12 10:01:18 2022
copyright (c) 1982, 2009, oracle and/or its affiliates. all rights reserved.
connected to target database: helowin (dbid=1384114315)
rman> list archivelog all;
using target database control file instead of recovery catalog
list of archived log copies for database with db_unique_name helowin
=====================================================================
key thrd seq s low time
------- ---- ------- - ---------
3 1 4 a 07-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_4_900206934.dbf
4 1 5 a 07-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_5_900206934.dbf
5 1 6 a 08-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_6_900206934.dbf
6 1 7 a 09-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_7_900206934.dbf
7 1 8 a 09-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_8_900206934.dbf
8 1 9 a 10-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_9_900206934.dbf
9 1 10 a 10-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_10_900206934.dbf
10 1 11 a 10-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_11_900206934.dbf
11 1 12 a 11-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_12_900206934.dbf
12 1 13 a 11-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_13_900206934.dbf
13 1 14 a 11-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_14_900206934.dbf
3 对比检查归档日志物理文件和控制文件一致性
如果你之前已经删除过物理文件,并没有删除控制文件中的信息,请看如下操作:
crosscheck archivelog all;优先使用这个命令,核验比对物理文件和归档日志记录信息一致性
list expired archivelog all;crosscheck后,可以使用这个命令,查看有哪些过期的日志文件
rman> crosscheck archivelog all;
allocated channel: ora_disk_1
channel ora_disk_1: sid=772 device type=disk
validation failed for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_4_900206934.dbf recid=3 stamp=1122847256
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_5_900206934.dbf recid=4 stamp=1122894018
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_6_900206934.dbf recid=5 stamp=1122948041
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_7_900206934.dbf recid=6 stamp=1122980424
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_8_900206934.dbf recid=7 stamp=1123029988
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_9_900206934.dbf recid=8 stamp=1123066818
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_10_900206934.dbf recid=9 stamp=1123095615
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_11_900206934.dbf recid=10 stamp=1123124827
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_12_900206934.dbf recid=11 stamp=1123153640
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_13_900206934.dbf recid=12 stamp=1123184937
validation succeeded for archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_14_900206934.dbf recid=13 stamp=1123211251
crosschecked 11 objects
rman> list expired archivelog all;
list of archived log copies for database with db_unique_name helowin
=====================================================================
key thrd seq s low time
------- ---- ------- - ---------
3 1 4 x 07-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_4_900206934.dbf
4 删除过期文件
delete expired archivelog all;删除过期日志文件,在执行命令后,会提示你将要删除哪些过期的日志文件
rman> delete expired archivelog all;
released channel: ora_disk_1
allocated channel: ora_disk_1
channel ora_disk_1: sid=772 device type=disk
list of archived log copies for database with db_unique_name helowin
=====================================================================
key thrd seq s low time
------- ---- ------- - ---------
3 1 4 x 07-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_4_900206934.dbf
do you really want to delete the above objects (enter yes or no)? yes
deleted archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_4_900206934.dbf recid=3 stamp=1122847256
deleted 1 expired objects
四、方法二:rman删除归档日志
这种方法,可以将控制文件中记录信息和物理文件同步删除,更为方便。
1 查看控制文件记录
rman target /登录rman
list archivelog all;查看所有归档日志信息
[oracle@ea9446c43596 archlogs]$ rman target /
recovery manager: release 11.2.0.1.0 - production on mon dec 12 10:14:25 2022
copyright (c) 1982, 2009, oracle and/or its affiliates. all rights reserved.
connected to target database: helowin (dbid=1384114315)
rman> list archivelog all;
using target database control file instead of recovery catalog
list of archived log copies for database with db_unique_name helowin
=====================================================================
key thrd seq s low time
------- ---- ------- - ---------
4 1 5 a 07-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_5_900206934.dbf
5 1 6 a 08-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_6_900206934.dbf
6 1 7 a 09-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_7_900206934.dbf
7 1 8 a 09-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_8_900206934.dbf
8 1 9 a 10-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_9_900206934.dbf
9 1 10 a 10-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_10_900206934.dbf
10 1 11 a 10-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_11_900206934.dbf
11 1 12 a 11-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_12_900206934.dbf
12 1 13 a 11-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_13_900206934.dbf
13 1 14 a 11-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_14_900206934.dbf
2 删除指定日期前日志
delete archivelog all completed before 'sysdate - 3';删除3天前的归档日志,在删除控制文件记录的同时,也会将物理文件删除。
rman> delete archivelog all completed before 'sysdate - 3';
allocated channel: ora_disk_1
channel ora_disk_1: sid=772 device type=disk
list of archived log copies for database with db_unique_name helowin
=====================================================================
key thrd seq s low time
------- ---- ------- - ---------
4 1 5 a 07-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_5_900206934.dbf
5 1 6 a 08-dec-22
name: /home/oracle/app/oracle/oradata/archlogs/1_6_900206934.dbf
do you really want to delete the above objects (enter yes or no)? yes
deleted archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_5_900206934.dbf recid=4 stamp=1122894018
deleted archived log
archived log file name=/home/oracle/app/oracle/oradata/archlogs/1_6_900206934.dbf recid=5 stamp=1122948041
deleted 2 objects
3 查看物理文件
在上一步中删除了1_5_900206934.dbf和1_6_900206934.dbf文件,观察物理文件列表后,可以看到物理文件也会被同步删除。
[oracle@ea9446c43596 archlogs]$ ls 1_10_900206934.dbf 1_12_900206934.dbf 1_14_900206934.dbf 1_8_900206934.dbf 1_11_900206934.dbf 1_13_900206934.dbf 1_7_900206934.dbf 1_9_900206934.dbf
五、使用到的命令集合
登录rman
rman target /
查看所有归档日志
list archivelog all;
对比控制文件、物理文件
crosscheck archivelog all;
查看过期归档日志
list expired archivelog all;
删除过期归档日志
delete expired archivelog all;
删除指定日期归档日志
delete archivelog all completed before 'sysdate - n';
退出rman
exit;
总结
到此这篇关于oracle数据库如何删除归档日志文件的文章就介绍到这了,更多相关oracle删除归档日志文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论