オラクルのエクスポートデータを日別でサーバ5世代とS3にも同じものを5世代残すような作業を行い、1日1回動く一連のシェルを作成しました。
※s3cmdが入ってること前提です。
#!/bin/sh unalias -a ##これは対応するデータベースのNLS_LANGを指定する ##SELECT PARAMETER,VALUE FROM NLS_DATABASE_PARAMETERS where PARAMETER='NLS_NCHAR_CHARACTERSET' ##の結果 export NLS_LANG=AMERICAN_AMERICA.JA16EUC ##オラクルのパスを通す PATH=$PATH:$HOME/bin export PATH # variables for oracle database environment ORACLE_BASE=/u01/app/oracle ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 ORACLE_SID=hoge SAVE_LLP= LD_LIBRARY_PATH=$ORACLE_HOME/lib:$SAVE_LLP PATH=$PATH:$ORACLE_HOME/bin/ export ORACLE_BASE ORACLE_HOME ORACLE_SID NLS_LANG LANG LD_LIBRARY_PATH PATH ##日付を取得 TODAY=`date '+%y%m%d'` echo "dumpstart `date '+%y/%m/%d %H:%M:%S'`" ##エクスポートするユーザーの指定 SID="hoge" USID="hogeuser" PWD="hogepass" ##dumpされるファイル名を指定 dumpfile=/u01/app/oracle/backup/dump/${SID}-${USID}-${TODAY}.dump ##エクスポート ORACLE_SID=$SID export ORACLE_SID exp ${USID}/${PWD}@${SID} file=${dumpfile} direct=y ##エクスポートするファイルをbzip2で圧縮する echo "# bzip2 start" bzip2 --fast -f ${dumpfile} echo "# dump end `date '+%y/%m/%d %H:%M:%S'`" ##圧縮後に5世代分だけを残す他は削除 find /u01/app/oracle/backup/dump/ -type f -mtime +4 -exec /bin/rm {} ; ##S3へ転送 echo "# dump sync `date '+%y/%m/%d %H:%M:%S'`" s3cmd sync --delete /u01/app/oracle/backup/dump s3://bkup.hoge.com/oracle/hoge/
上記で、万が一サーバーもしくはデータセンターが落ちても、S3に毎日5世代データが残ってるので安心です。
こちらの記事はなかの人(kenjionsoku)監修のもと掲載しています。
元記事は、こちら