簡單DG歸檔日誌刪除腳本

最近在擺弄DG,由於磁盤資源緊缺,需要一個歸檔日誌處理的策略

網上找了幾個腳本,發現寫的那麼麻煩

毛了,於是簡單寫了一個,實際路徑等可以自己在修改

主庫備庫都可以用,自己再做crontab就好,建議錯開時間進行

需要注意,提前查詢DEST_ID,下面這個是主庫刪除的腳本(備庫只需更改dest_id即可),我的主庫v$archived_log裏,主庫的歸檔dest_id=1,備庫是dest_id=2

 

  1. #!/bin/bash 
  2.  
  3. ############ easy script by lcrash @ 2011-1-25############ 
  4. for delete DG archive log                              # 
  5. # you should modify USER_HOME && make sure del_dir exists# 
  6. and you can change your keep date by modify SQL below  # 
  7. ########################################################## 
  8.  
  9. USER_HOME=/opt/oracle 
  10. DEL_DIR=$USER_HOME/del_arch 
  11.  
  12. source $USER_HOME/.bash_profile  
  13. $ORACLE_HOME/bin/sqlplus -S "/as sysdba" <<EOF 
  14. set heading off 
  15. set feedback off 
  16. spool /opt/oracle/del_arch/del_arch.list 
  17. select 'rm -rf '||name from v\$archived_log  
  18. where DEST_ID=1 and SEQUENCE#<(select max(SEQUENCE#) from v\$archived_log where applied='YES'and COMPLETION_TIME<=sysdate-0; 
  19. spool off 
  20. exit 
  21. EOF 
  22.  
  23. cd $DEL_DIR 
  24. sed -n '/dbf/p' del_arch.list>del_arch_do.sh 
  25. chmod +x del_arch_do.sh 
  26. source del_arch_do.sh 
  27.  
  28. rm del_arch.list 
  29. mv {,`date +%Y-%m-%d-%H`}del_arch_do.sh 
  30.  
  31.  
  32. rman target / <<EOF 
  33. crosscheck archivelog all
  34. delete obsolete; 
  35. delete noprompt expired archivelog all
  36. EOF 

by the way:

1、我開始使用uniread sqlplus,發現動不了,浪費時間,後面修改爲$ORACLE_HOME/bin/sqlplus

防止其他別名取代出問題

2、腳本中的SQL語句一句話太長居然給我認成兩行,非常惱火

於是將where語句另換行


╮(╯▽╰)╭
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章