share facebook facebook twitter menu hatena pocket slack

2011.08.23 TUE

Oracleのエクスポートデータの世代をS3へ

櫛田 草平

WRITTEN BY 櫛田 草平

オラクルのエクスポートデータを日別でサーバ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)監修のもと掲載しています。
元記事は、こちら

櫛田 草平

櫛田 草平

cloudpackで運用、保守、構築、夜間対応を担当しており、日々様々な課題に対応していますのでこの経験を記事にしていけたらと思います。 櫛田 草平

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。