-
归档日志删除脚本.txt
2020-06-01 17:44:38归档日志删除脚本,仅供参考学习,适用于oracle数据库版本,个人经验总结, 个人已经尝试过,暂时没有发现问题,可以根据每个人的需求进行修改保留时间 -
RMAN 配置归档日志删除策略
2020-04-01 10:40:45归档日志删除策略适用于所有归档位置(使用快速闪回区FRA/不使用FRA)。本文主要描述归档日志删除策略并给出了具体的演示。 1、关于归档日志删除策略 也就是哪些归档日志符合删除策略能够被删除,如前所述,归档位置...Oracle 11g中对于归档日志的删除,除了遵循RMAN保留策略外,也可以通过RMAN来配置归档日志的删除策略,也就是归档日志何时可以被删除。归档日志删除策略适用于所有归档位置(使用快速闪回区FRA/不使用FRA)。本文主要描述归档日志删除策略并给出了具体的演示。
1、关于归档日志删除策略
也就是哪些归档日志符合删除策略能够被删除,如前所述,归档位置适用于所有归档位置(使用快速闪回区FRA/不使用FRA)
当启用该策略后,如归档日志存在于FRA中,则Oracle会尽可能根据保留他们,一旦FRA空间告急,则Oracle会根据归档日志删除策略自动删除
对于不在FRA中的归档日志,需要手动使用delete obsolete或delete archivelog方式来删除日志
无论归档日志存在于FRA内或外,都可以通过BACKUP ... DELETE INPUT or DELETE ARCHIVELOG方式来删除
该策略不适用于使用LogMiner方式从主数据库传送到逻辑standby生成的外部归档日志文件,因为这些日志文件不能够在逻辑standy上备份或恢复
2、配置归档日志删除策略
使用下面的方式来配置归档日志删除策略
configure archivelog deletion policy to backed up 2 times to sbt;
configure archivelog deletion policy to backed up 1 times to device type disk;
configure archivelog deletion policy to applied on standby;
configure archivelog deletion policy to shipped on standby;
configure archivelog deletion policy clear;
对于Oracle 10g没有该特性,但有一个类似的用于配置归档日志被备份次数,如下;
configure archivelog backup copies for device type disk to ${archiveretention};
3、禁用归档日志删除策略
缺省情况下,该策略被设置为none。也就是说根据RMAN备份保留策略,对于FRA中的归档日志,被备份过一次(到磁盘或磁带)即符合条件被删除
如果Oracle不再需要当前的归档日志用于保证数据库时点恢复或数据库闪回,则RMAN备份保留策略认为当前日志为obsolete
在SYSDATE-'DB_FLASHBACK_RETENTION_TARGET'之后创建的归档日志是需要被保留的
4、启用归档日志删除策略
一旦启用该策略,则指定的归档日志被备份数量达到设定值后,这些归档日志能够被删除
BACKUP ARCHIVELOG 会在未超出指定备份数的情况下(比如设置为2)备份归档日志到指定位置,如超出2次,则RMAN会跳过这些备份过2次的归档日志
对于上述的情形,可以为BACKUP ARCHIVELOG适用force选项来强制备份归档日志
如果启用该策略且配置为APPLIED ON STANDBY子句,则所有强制standby位置被apply后,这些归档日志会被RMAN删除
如果启用该策略且配置为SHIPPED ON STANDBY子句,则所有强制standby位置被成功传送后,这些归档日志会被RMAN删除
————————————————
版权声明:本文为CSDN博主「这个就不用说了吧」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fsfsdfsdw/article/details/84194044 -
mysql怎么删除归档日志_归档日志删除需要注意项
2021-01-19 04:32:13delete archivelog all将会毫无保留的删除所有的归档日志(在控制文件中有相应记录的)1、delete archivelog all将会毫无保留的删除所有的归档日志(在控制文件中有相应记录的)2、归档日志的信息被记录在控制文件之中,...delete archivelog all将会毫无保留的删除所有的归档日志(在控制文件中有相应记录的)
1、delete archivelog all将会毫无保留的删除所有的归档日志(在控制文件中有相应记录的)
2、归档日志的信息被记录在控制文件之中,其生存期和可保留的总数也受到控制文件创建初以及参数control_file_record_keep_time限制
3、对于那些已经在控制文件中被覆盖的归档日志,该方式不起作用,使用backup archivelog all delete input同样不起作用
4、注意backup archivelog all时delete input与delete all input有些差异,前者删除仅仅被备份过的归档日志,而后者则对于多个归档位置下的所有归档日志全部删除。
5、视图v$archived_log或gv$archived_log提供了归档日志的相关详细信息
6、建议备份归档日志后再删除。注,RAC+ASM下切不可使得archivedlog文件夹为空,,否则,整个文件夹连同上级空目录会被删除
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
-
关于ORACLE归档日志删除不完全问题
2020-02-28 17:57:11关于Oracle归档日志删除(前提是数据库处于归档模式 SQL>archive log list;--Automatic archival 为 Enabled),目前遇到过两种情况,一是先手动删除了归档文件(服务器直接删除),二是通过Rman删除,一方案可能会...关于Oracle归档日志删除(前提是数据库处于归档模式 SQL>archive log list;--Automatic archival 为 Enabled),目前遇到过两种情况,一是先手动删除了归档文件(服务器直接删除),二是通过Rman删除,一方案可能会存在数据库信息冗余,二方案可能会造成实际归档文件数量大于数据库中记录的文件数量,解决方案:
一:手动删除归档文件(服务器直接删除)造成的问题解决
场景:服务器中直接删除归档文件,造成 v$archived_log 视图中记录的日志文件会多余实际归档文件数量,
1、首先查看归档日志目录下文件数量 ls -l | wc -l
2、执行SQL>select count(*) from v$archived_log;--检查数据库中记录的归档文件数量(正常情况下sql数量应该大于第一步查询的文件数量,因为已经删除了服务器归档文件)
3、进入Rman,
rman target /
执行 crosscheck archivelog all; --检查控制文件和实际物理文件的差别。(此时显示的文件数量应小于上面SQL的数量,原理同第二步)
然后执行 delete expired archivelog all; --删除控制文件中不存在的失效的归档日志
然后可以再次检查归档路径下文件数量与crosscheck数量是否相等,
A、若相等,则归档文件都是可以关联到的,
然后检查 SQL与归档文件数量是否相等,
1.1、若相等,则表名归档文件与控制文件记录的归档信息一一对应,可以结束退出。
1.2、若不等,即SQL查询数量大于归档文件数量,则表名数据库中记录的归档信息多余实际归档文件数量,
执行 SQL>select dest_id,sequence#,name,blocks from v$archived_log ; 会发现有很多NAME字段为空的数据
这种数据是通过非正常途径删除归档文件造成,可无需理会,若想让查询的数量与归档文件保持一致可采用以下方案
a)、rman>delete archivelog all;--删除所有归档文件
b)、rman>execute sys.dbms_backup_restore.resetCfileSection(11);--清空控制文件记录的归档信息,11代表归档
(SQL>select rownum-1, type from v$controlfile_record_section;--可通过此SQL查询到上面的11)
此时再次查询SQL>select count(*) from v$archived_log;会发现数量为0
c)、然后执行:rman>catalog start with '/oradata/archive/'; --将归档日志写入到控制文件
此时再次执行上面的查询SQL会发现归档信息已写入控制文件,数量与归档文件数量一致
B、若不等,及归档文件数量大于控制文件中的归档记录信息,
1:此时如果归档文件不多,可以采用手工找出多余的归档文件进行删除
2:如果归档文件较多,可以通过linux的系统命令find在归档日志中找出多余crosscheck的文件并进行删除
3:然后进入rman执行:rman>catalog start with '/oradata/archive/'; --将归档日志写入到控制文件
然后执行rman>delete noprompt archivelog until time 'sysdate-7'; --删除七天前的归档日志
保留天数根据实际需求填写
这里不要采用rman>delete noprompt archivelog until time 'sysdate-7';--删除七天前的归档日志
由于catalog start with 会将归档记录信息中的归档日志完成时间改为执行命令的时间。
若不等:
1)、归档文件数量结果小于crosscheck数量,则说明实际文件数量小于记录信息,此时可以采用删除归档在数据库中的记录信息,然后将归档文件重新导入到数据库中记录
具体操作
首先执行:SQL>select dest_id,sequence#,name,blocks from v$archived_log;--查看归档信息
然后使用RMAN执行:delete archivelog all;
再次执行:SQL>select dest_id,sequence#,name,blocks from v$archived_log;--会发现有name为空的数据
然后执行:execute sys.dbms_backup_restore.resetCfileSection(11);--11代表归档
再次执行:SQL>select dest_id,sequence#,name,blocks from v$archived_log;--结果为空
然后执行:catalog start with '/oradata/archive/'; --将归档日志写入到控制文件(A)
再次执行:SQL>select count(*) from v$archived_log;--数量与文件数量相同
到此完成
2)、归档文件数量结果大于crosscheck数量,则说明实际文件数量大于记录信息,若磁盘存储空间足够可以不用管,
若想让归档文件与归档记录信息保持一致,可以采用以下几个方案:
一:此时如果归档文件不多,可以采用手工找出多余的归档文件进行删除
二:如果归档文件较多,可以通过linux的系统命令find在归档日志中找出多余crosscheck的文件并进行删除
三:采用(1)步骤
注:采用catalog start with 后再使用RMAN删除命令时需要注意1)、delete archivelog all completed before 'SYSDATE-7';--命令意思删除7天前所有的归档日志。保留一周时间
该命令可能会失效,无法删除七天前的归档文件,因为该命令是根据归档文件的完成时间进行删除归档文件,
执行过catalog start with后,控制文件中记录的归档文件的完成时间会更改为执行命令的时间,可以采用2)方式删除
2)、delete noprompt archivelog until time 'sysdate-7';--删除七天前的归档日志该命令是按照归档日志的创建时间进行删除
二、通过RMAN删除
1、进入rman
rman target /
首先执行
delete archivelog all completed before 'SYSDATE-7';--删除7天前所有的归档日志。(按照归档日志完成时间删除)
或
delete noprompt archivelog until time 'sysdate-7';--删除7天前所有的归档日志。(按照归档日志创建时间删除)
然后执行 crosscheck archivelog all;--检查控制文件与实际归档文件
然后执行 delete expired archivelog all; --删除控制文件中不存在的失效的归档日志
此时归档日志清理完成
检查 归档日志路径下的归档文件数量、与crosscheck、SQL>select count(*) from v$archived_log; 三者数量是否一致,
若一致则表示没有冗余信息,若不一致,可采用一方案解决
-
Oracle归档日志删除
2013-12-25 14:27:28Oracle归档日志删除 我们都都知道在controlfile中记录着每一个archivelog的相关信息,当然们在OS下把这些物理文件delete掉后,在我们的 controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视...Oracle归档日志删除
我们都都知道在controlfile中记录着每一个archivelog的相关信息,当然们在OS下把这些物理文件delete掉后,在我们的
controlfile中仍然记录着这些archivelog的信息,在oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了!这时候我们要做手工的清除的话,下面我经过实验,可以尝试这种方法:
[执行顺序如下:手工删除archivelog --->crosscheck--->delete expired最后可以用list copy检查]
1. 进入rman
2. connect target /
3. crosscheck archivelog all;
crosscheck archivelog all;验证的是DB的归档日志即log_archive_dest参数指定位置的文件,当手工删除了归档日志以后,Rman备份会检测到日志缺失,从而无法进一步继续执行。所以此时需要手工执行crosscheck过程,之后Rman备份可以恢复正常。
4. delete expired archivelog all;命令删除所有过期归档日志:
这时候我们再去OEM中看就一定看不到,如果你的从来没有做过这个动作的话,我们可以比较从这个动作前的controlfile后动作后的controlfile的大小!
ORACLE正确删除归档并回收空间的方法
一个ORACLE归档日志经常满,表现为/oraarchive这个文件空间占用100%大家一定抱怨ORACLE为何没有归档维护工具,很多人直接删除了事,错了,ORACLE有,而且很智能,可以正确的删除归档和FLASHBACK,不过切记,ORACLE归档日志对于ORACLE的数据恢复和备份非常重要,不到万不得已不要删除归档日志。
删除归档日志的过程
以ORACLE用户身份登录到数据库服务器主机或通过网络连接
进入ORACLE数据备份工具
rman target/
或rman target/@orcl
在命令窗口里面执行
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
说明
SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库
DELETE ARCHIVELOG FROM TIME 'SYSDATE-7';
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面2条命令
crosscheck archivelog all;
delete expired archivelog all;
所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能
3.简要介绍一下report obsolete命令
使用report obsolete命令报告过期备份
RMAN> report obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
Report of obsolete backups and copies
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set 125 01-NOV-04
Backup Piece 125 01-NOV-04 /data1/oracle/orabak/full_1_541045804
Backup Set 131 04-NOV-04
Backup Piece 131 04-NOV-04 /data1/oracle/orabak/full_AVATAR2_20041104_131
....
Backup Set 173 06-DEC-04
Backup Piece 173 06-DEC-04 /data1/oracle/orabak/full_AVATAR2_20041206_173
Backup Set 179 11-DEC-04
Backup Piece 179 11-DEC-04 /data1/oracle/orabak/arch544588206.arc
.....
Backup Piece 189 17-DEC-04 /data1/oracle/orabak/arch545106606.arc
Backup Set 190 17-DEC-04
Backup Piece 190 17-DEC-04 /data1/oracle/orabak/arch545106665.arc
Backup Set 191 20-DEC-04
Backup Piece 191 20-DEC-04 /data1/oracle/orabak/arch_AVATAR2_20041220_194
Archive Log 2973 20-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2985.dbf
Archive Log 2971 20-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2984.dbf
.....
Archive Log 2705 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2717.dbf
Archive Log 2704 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2716.dbf
Archive Log 2703 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2715.dbf
Archive Log 2702 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2714.dbf
4.使用delete obsolete命令删除过期备份:
RMAN> delete obsolete;
RMAN retention policy will be applied to the command
RMAN retention policy is set to redundancy 1
using channel ORA_DISK_1
Deleting the following obsolete backups and copies:
Type Key Completion Time Filename/Handle
-------------------- ------ ------------------ --------------------
Backup Set 125 01-NOV-04
Backup Piece 125 01-NOV-04 /data1/oracle/orabak/full_1_541045804
....
Archive Log 2704 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2716.dbf
Archive Log 2703 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2715.dbf
Archive Log 2702 17-DEC-04 /opt/oracle/oradata/avatar2/archive/1_2714.dbf
Do you really want to delete the above objects (enter YES or NO)? yes
deleted backup piece
backup piece handle=/data1/oracle/orabak/full_AVATAR2_20041206_173 recid=173 stamp=544156241
.....
deleted archive log
archive log filename=/opt/oracle/oradata/avatar2/archive/1_2715.dbf recid=2703 stamp=545108268
deleted archive log
archive log filename=/opt/oracle/oradata/avatar2/archive/1_2714.dbf recid=2702 stamp=545107659
Deleted 286 objects
RMAN> crosscheck archivelog all;
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=19 devtype=DISK
specification does not match any archive log in the recovery catalog
5 在rman中用crosscheck检查归档日志,2个归档日志都是失败的:
RMAN> crosscheck archivelog all;
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
对归档日志的验证失败
存档日志文件名 =D:ORACLEORADATATESTARCHIVE1_47.DBF记录 ID=1时间戳 =572866
683
对归档日志的验证失败
存档日志文件名 =D:ORACLEORADATATESTARCHIVE11_48.DBF记录 ID=2时间戳 =57286
6931
已交叉检验的 2对象
6 试着同步一下,看行不行,结果不行,crosscheck还是失败:
RMAN> resync catalog;
正在启动全部恢复目录的 resync
完成全部 resync
RMAN> crosscheck archivelog all;
释放的通道: ORA_DISK_1
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=14 devtype=DISK
对归档日志的验证失败
存档日志文件名 =D:ORACLEORADATATESTARCHIVE1_47.DBF记录 ID=1时间戳 =572866
683
对归档日志的验证失败
存档日志文件名 =D:ORACLEORADATATESTARCHIVE11_48.DBF记录 ID=2时间戳 =57286
6931
已交叉检验的 2对象
7 用list expired看看是否有失效的archive log,证明没有失效的archive log:
RMAN> list expired archivelog all;
说明与恢复目录中的任何存档日志均不匹配
8 更改语言环境试试,结果再次crosscheck,2个archive log都成功了:
RMAN> exit
恢复管理器完成。
C:>set nls_lang=american_america.zhs16gbk
C:>rman catalogrman/rman@safetarget /
Recovery Manager: Release 9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
connected to target database: TEST (DBID=1870953724)
connected to recovery catalog database
RMAN> crosscheck archivelog all;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=9 devtype=DISK
validation succeeded for archived log
archive log filename=D:ORACLEORADATATESTARCHIVE1_47.DBF recid=1 stamp=57286
6683
validation succeeded for archived log
archive log filename=D:ORACLEORADATATESTARCHIVE11_48.DBF recid=2 stamp=5728
66931
Crosschecked 2 objects
Oracle 删除归档日志实例
[日期:2010-08-12]
来源:Linux社区 作者:crasshopper
当Oracle 归档日志满了后,将无法正常登入Oracle,需要删除一部分归档日志才能正常登入Oracle。
一、首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186.dbf”,建议操作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。
二、把归档日志的物理文件删除后,我们就可以正常登入Oracle了,但是还没完全把归档日志删除干净,Oracle的controlfile中仍然记录着这些archivelog的信息,在Oracle的OEM管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,接下去我们要做的就是这个工作。
我们利用RMAN进行删除操作,操作步骤如下:(WIN客户端系统为例)
1.指定数据库实例
C:\Documents and Settings\Administrator>SET Oracle_SID =orcl
2.连接数据库
C:\Documents and Settings\Administrator>RMAN TARGET SYS/sysadmin@orcl
3.查看归档日志的状态
RMAN> list archivelog all;
4.手工删除归档日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
说明:
SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库
DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 删除从7天前到现在的全部日志,慎用
UNIX/LINUX下也可以通过FIND找到7天前的归档数据,使用EXEC子操作删除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
这样做仍然会在RMAN里留下未管理的归档文件
仍需要在RMAN里执行下面2条命令
crosscheck archivelog all;
delete expired archivelog all;
所以还不如上面的方法好用,不过用FIND的好处就是,可以在条件上,和EXEC子项上做很多操作,实现更复杂的功能
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2010-08/27746.htm
-
Linux 增加归档日志删除脚本
2017-08-24 15:18:48一、基于Linux服务器端的 归档日志删除脚本 生产库部署环境: 1、创建detele_archivelog.sh脚本 选择存放脚本的路径 [oracle@localhost ~]$ cd /home/oracle/ --打开/home/oracle [oracle@localhost ~]$ ... -
oracle归档日志删除
2014-05-26 14:11:28Oracle删除归档日志的实现方法 Oracle归档日志满了后,就需要删除一部分归档日志,下文对Oracle删除归档日志的方法作了详尽的阐述,如果您感兴趣的话,不妨一看。 Oracle删除归档日志使我们经常会用到的操作,... -
oracle归档日志删除方法
2019-02-14 18:02:09oracle归档日志处理方法 -
ORACLE归档日志删除方法
2018-05-16 11:21:32oracle日志文件相信大家都已经有一定的了解了,下面主要为您介绍oracle日志文件类型及归档日志模式,如果您感兴趣的话,不妨一看。Oralce两种日志文件类型:联机日志文件这是Oracle用来循环记录数据库改变的操作系统... -
归档日志删除策略
2017-11-03 23:11:00CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS;...启用归档删除策略: RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK; 新的 RMAN 配置参数: CONFIGURE ARCHIVELOG DELET... -
oracle 历史归档日志删除不了
2018-05-02 11:35:13测试环境一台数据库服务器归档日志满了,由于尚未上线,并没有做删除归档方面的定时任务,从而导致归档日志将文件系统撑满的问题。于是用rman删除归档,直接删掉所有归档:delete archivelog until time '... -
Oracle归档日志删除=-转载
2011-07-14 02:56:26Oracle归档日志删除2009-12-03 16:24:56| 分类: ORACLE | 标签: |字号大中小 订阅 我们都都知道在controlfile中记录着每一个archivelog的相关信息,当然们在OS下把这些物理文件delete掉后,在我们的controlfil
-
php split() 函数的用法
-
数字图像处理国外名校试卷
-
我最喜欢的 12 个VSCode 插件!
-
es6解构赋值
-
2021-03-03
-
【布道者】Linux极速入门
-
MySQL Router 实现高可用、负载均衡、读写分离
-
2021-03-03
-
华为1+X认证——网络系统建设与运维(初级)
-
华为1+X——网络系统建设与运维(高级)
-
线性代数(第五版)课后习题答案.pdf
-
西方文化史复习资料与考点整理.pdf
-
浙江科技学院《电力电子》18套历年期末考试试卷.pdf
-
云开发后台+微信扫码点餐小程序+cms网页管理后台 含后厨端和用户端
-
python单元测试之pytest
-
关于深浅拷贝的问题
-
中山大学《酒店管理》期末考试试卷.pdf
-
西南科技大学《大物》多套期末复习试卷含答案.pdf
-
JDBC
-
C语言零基础入门(详细讲解)