Oracle Data Guard 是通过归档文件来进行数据同步的。 主库的归档文件,我们可以在RMAN 备份的时候进行删除,但是备库的归档文件无法自动删除,需要写脚本来定时删除。如果直接删除归档文件的话,可能会出现一种情况,就是归档文件还没有来的急apply,就被删除掉了。所以最安全的做法是在删除归档文件做一个判断。 然后在删除。整理的一个删除备库的shell 脚本如下:[oracle@linuxidc www.linuxidc.com]$ cat del_st_archive.sh#!/usr/bin/ksh# created by tianlesoftware# 2010/12/24export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1export ORACLE_SID=xxxxexport SHELL_DIR=/u02/scriptsdel_seq=`ls /u02/archivelog/|head -1|cut -f2 -d_`echo $del_seq$ORACLE_HOME/bin/sqlplus -s "user/pwd@sid_pd as sysdba" <<eof >/u02/scripts/max_sn.logset head off;set feedback;select max(sequence#) from v$log_history;exit;eofmax_sn=`cat /u02/scripts/max_sn.log|awk "{print $1}"|grep ^[0-9]`max_sn=`expr $max_sn - 30`-- 我这里是保留最近的30个归档文件,这个具体情况自己决定echo $max_snwhile [ $del_seq -lt $max_sn ]dorm /u02/archivelog/1_"$del_seq"_737806218.arc-- 这里是我定义归档文件的格式,具体根据自己的归档文件格式来匹配,关键是匹配日志的sequence no。del_seq=`expr $del_seq + 1`echo $del_seqdone--脚本里的红色部分根据自己的情况进行修改[oracle@linuxidc www.linuxidc.com]$ lsdel_st_archive.sh del_st_arch.log max_sn.log--max_sn.log 是存放最大seq 的tmp文件。 用来进行比较的添加到crontab,定时执行:[oracle@linuxidc www.linuxidc.com]$ crontab -l00 6 * * * /u02/scripts/del_st_archive.sh >/u02/scripts/del_st_arch.log 2>&1Linux Crontab 定时任务 命令详解 http://www.linuxidc.com/Linux/2007-09/7681.htmOracle中表级列的默认值控制Oracle alert log 按天存放脚本相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)