shell判斷oracle主備數據庫備份腳本


1. 腳本如下

說明:按照客戶要求,在主備數據庫上同時部署腳本,自動判斷是否是主庫,如果是主庫則進行備份,備庫不需要備份,記錄日誌爲備份庫即可,以下腳本僅供參考,可以進一步優化。

腳本說明:

1、DATABASE_ROLE查看主備庫角色變量

2、Main()函數 數據庫備份腳本

3、根據主備庫關鍵字判斷是否執行main()函數

#!/bin/bash  

# Author:roidba

# filename:/backup/backup.sh

#logfile:/backup/rman_fullbackup.log

ORACLE_SID=orcl; export ORACLE_SID

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME

PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin

####variables###

DATABASE_ROLE=`sqlplus -silent "/as sysdba" <<EOF  

SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF  

select DATABASE_ROLE from v\\\$database;

EXIT;  

EOF`

###function###

main()  

{

($ORACLE_HOME/bin/rman  <<EOF  

connect target /  

run {  

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE BACKUP OPTIMIZATION ON;

allocate channel d1 type disk;

allocate channel d2 type disk;

backup as compressed backupset database format '/backup/fulldbbakcup_%s_%p_%t.rmn' tag='fulldbbackup' include current controlfile;

backup as compressed backupset archivelog all format '/backup/backup_archive_%s_%p_%t.arc';

release channel d1;

release channel d2;

crosscheck backup;

delete noprompt expired backup;

delete noprompt archivelog until time 'sysdate - 3' backed up 1 times to device type disk;

delete noprompt backupset of archivelog until time 'sysdate - 3' ;

delete noprompt backupset of database completed before 'sysdate - 3';

}   

exit;  

EOF

)

}

 

###if-then-else###

 

if [ "$DATABASE_ROLE" = "PRIMARY" ];

then

    main

echo "***database role is primary*** " >>/backup/rman_fullbackup.log

else

    echo "database role is standby"

fi

 

2. 自動備份,使用crontab調度

sh /backup/rman_backup.sh >>/backup/rman_fullbackup.log &

crontab -e

07 20 * * *  sh /backup/rman_backup.sh >>/backup/rman_fullbackup.log &

3. 理解crontab格式

<roidb01:orcl:/backup>$more /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

 

# For details see man 4 crontabs

 

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

 

<roidb01:orcl:/backup>$


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