#配置RMAN,備份保留15天,最佳化備份,自動備份控制檔案,控制檔案的備份位置
TEMPLATE_RMANCMD="connect target /;
run {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 15 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'oldpath_database/controlfile_backup/controlfile_%F';
}"
RMANCMD=""
#替換RMAN命令中的路徑參數
function replaceRmanCMD()
{
RMANCMD=`echo ${TEMPLATE_RMANCMD} | sed -n "s#oldpath_database#${DATABASE_PATH}#p"`
#把oracle設定為歸檔模式
function setArchiveLog()
{
sqlplus / as sysdba <<EOF
shutdown immediate;
startup mount;
alter database archivelog;
alter system set control_file_record_keep_time=30 scope=both;
alter system set log_archive_dest_1='location=${ARCHIVELOG_PATH}/archivelog' scope=both;
alter database open;
alter system archive log start;
exit;
EOF
}
#建立定時器檔案crontabfile,設定定時器
#每周日1:00執行0級備份
#每周一至周三,周五至周六1:00執行2級增量備份
#每周四1:00執行1級增量備份
#每周六16:00執行檢測
#每周日18:00刪除到期的備份資料
function setCrontab()
{
if [ -e ./crontabfile ]
then
rm ./crontabfile
fi
#建立子目錄,歸檔日誌目錄下建立archivelog
#Database Backup目錄下建立rmanlog,controlfile_backup,database_backup目錄
#如果已經存在,則不建立
function makeSubDir()
{
if [ ! -d "${ARCHIVELOG_PATH}/archivelog" ]
then
mkdir ${ARCHIVELOG_PATH}/archivelog
fi
if [ ! -d "${ARCHIVELOG_PATH}/rmanlog" ]
then
mkdir ${DATABASE_PATH}/rmanlog
fi
if [ ! -d "${ARCHIVELOG_PATH}/controlfile_backup" ]
then
mkdir ${DATABASE_PATH}/controlfile_backup
fi
if [ ! -d "${ARCHIVELOG_PATH}/database_backup" ]
then
mkdir ${DATABASE_PATH}/database_backup
fi
}
#把Database Backup目錄參數替換到oraclebackup.sh
function replaceDatabaseBakPath()
{
sed -i "s#^\(${KEY1} *= *\)\([^ ]*\)\( *.*\)#\1${DATABASE_PATH}\3#" ./oraclebackup.sh
}
#把歸檔日誌目錄參數替換到oraclebackup.sh
function replaceArchivelogBakPath()
{
sed -i "s#^\(${KEY2} *= *\)\([^ ]*\)\( *.*\)#\1${ARCHIVELOG_PATH}\3#" ./oraclebackup.sh
}
#把ORACLE_HOME等參數替換到oraclebackup.sh
function replaceOracleHome()
{
sed -i "s#^\(${KEY3} *= *\)\([^ ]*\)\( *.*\)#\1${ORACLE_BASE_VAL}\3#" ./oraclebackup.sh
sed -i "s#^\(${KEY4} *= *\)\([^ ]*\)\( *.*\)#\1${ORACLE_HOME_VAL}\3#" ./oraclebackup.sh
sed -i "s#^\(${KEY5} *= *\)\([^ ]*\)\( *.*\)#\1${ORACLE_SID_VAL}\3#" ./oraclebackup.sh
}
function usage()
{
echo "------------------------------------------------------------------------"
echo
echo "Example:"
echo " Sample: ./init.sh /aaa/bbb/databaseBackupPath /aaa/bbb/archivelogBackupPath"
echo
echo "note: The path must be exist!"
echo "------------------------------------------------------------------------"
}
#指定的路徑不存在
function pathNotExist()
{
echo "************************************************************************"
echo
echo "Path: ${1} not Exist!"
echo
echo "************************************************************************"
}
#環境變數沒找到
function envNotFound()
{
echo "************************************************************************"
echo
echo "env ${1} not found!"
echo
echo "************************************************************************"
}
function check()
{
if [ ! -d "$DATABASE_PATH" ]
then
pathNotExist ${1}
exit 0
fi
if [ ! -d "$ARCHIVELOG_PATH" ]
then
pathNotExist ${2}
exit 0
fi
if [ ! $ORACLE_BASE ]
then
envNotFound "ORACLE_BASE"
exit 0
fi
if [ ! $ORACLE_HOME ]
then
envNotFound "ORACLE_HOME"
exit 0
fi
if [ ! $ORACLE_SID ]
then
envNotFound "ORACLE_SID"
exit 0
fi
}
function main()
{
if (( $# < "2"))
then
usage
exit 0
fi