Oracle归档日志删除

--日志监控

--登陆root用户su - grid (密码grid)asmcmd cd fra/drpdb/archivelog 或者cd fra/*/ar*lsdu

--日志删除

--Linux删除归档文件

su - oracle

rman target/

--检查控制文件和实际物理文件的差别

RMAN> crosscheck archivelog all;

RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';

--或者

--命令删除所有过期归档日志,同步控制文件的信息和实际物理文件的信息

RMAN> delete expired archivelog all;


----红色的语句执行比较慢,要耐心等待下。最后点击Yes确定执行,就可以了

----然后再用下面的语句验证下,能不能正常登录

sqlplus / as sysdba


--在不停止oracle数据库情况下 截断归档日志,重新开始新的归档!



一生产环境,归档特别多,没有及时删除便会将文件系统撑满,于是写了定时删除归档的脚本。

--命令类似:delete noprompt archivelog until time 'sysdate-2';

--RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process

--在网上搜索了点资料,原来是11g上的bug,删除归档的时候需要添加force的命令,否则便会抛出上述错误。

--即将命令改为:delete noprompt force archivelog until time 'sysdate-2'; DELETE  force ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-2';

--手工执行删除过期备份命令
delete obsolete; --报错RMAN-06091:备份通道不匹配
RMAN>  delete noprompt obsolete;
这个命令没有问题,为何会执行失败呢,列出备份信息,发现有SBT类型的备份,突然想起此oracle服务器近期通过rman整库迁移方式搬迁的,而老库是使用的NBU备份到磁带库,则老库的备份信息保留在控制文件中,而新库的控制文件在搬迁过程中使用的是老库的,这些存储在控制文件中的老库中的备份,在检查时被发现,没有分配合适的通道,无法删除。所以执行命令报错了,所以现在问题就是怎样去把控制文件中的那些到磁带的备份信息删掉。
RMAN> list backup summary;

于是执行如下,过期与废弃的SBT类型的备份都被删除了:
RMAN> allocate channel for maintenance device type sbt parms 'SBT_LIBRARY=oracle.disksbt, ENV=(BACKUP_DIR=/tmp)';
RMAN> delete noprompt obsolete;
RMAN> delete noprompt expired backup;
RMAN> release channel ;

再次执行
RMAN> crosscheck backup;--已成为expired状态
RMAN> delete expired backup;--成功删除


不能登录 内存耗尽 我把外部链接都关闭了  ps -ef|grep "local=NO" 找出数据库 外部进程 然后结束 进程 就可以进入数据库了

--在线修改,不需要重启,取消DG日志配置参数

--之前的参数配置

$ vi $ORACLE_HOME/dbs/initDRPDB1.ora

增加以下内容:

*.log_archive_config='dg_config=(DRPDB,DRPDBDG)'

*.log_archive_dest_1='location=+FRA valid_for=(all_logfiles,all_roles) db_unique_name=DRPDB'

*.log_archive_dest_2='service=DRPDBDG valid_for=(online_logfiles,primary_role) db_unique_name=DRPDBDG'

*.log_archive_dest_state_1=enable

*.log_archive_dest_state_2=enable

*.log_archive_max_processes=4

*.fal_server='drpdbdg'

40.*.fal_client='drpdb'

*.db_file_name_convert='/app/oracle/oradata/datafile','+DATA/drpdb/datafile','/app/oracle/oradata/tempfile','+DATA/drpdb/tempfile'

*.log_file_name_convert='/app/oracle/oradata/onlinelog','+DATA/drpdb/onlinelog','/app/oracle/oradata/onlinelog1','+FRA/drpdb/onlinelog'

*.standby_file_management='auto'


--修改参数

show parameter log_archive_dest_2

alter system set log_archive_dest_2=' ' sid='*';

alter system set log_archive_config='' sid='*';

alter system set "_deferred_log_dest_is_valid"=FALSE sid='*' scope=both;

alter system set "_deferred_log_dest_is_valid"=TRUE sid='*' scope=both;


show parameter fal

alter system set fal_client=''  sid='*';

alter system set fal_server=''  sid='*';


你可能感兴趣的:(Oracle归档日志删除)