Oracleテーブル毎に自動バックアップ化

Oracleをテーブル毎に自動バックアップする方法です。

-- exp.sql --
set line 300;
select 'D:\oracle\ora81\BIN\exp userid=user/pass@sid'
     || ' file=user.' || table_name || '.dmp tables=user.' || table_name
  from user_tables
 order by table_name
;

【実行】:sqlplus -s user/pass@sid < exp.sql > exp.log (exp.logを整形して実行すればOK。)

完成版:

#!/bin/bash 

export D=`date +%Y%m%d` 

echo `date` 'Start Bak Oracle user hoge.' > $LOG 

find . -mtime +7 -print -exec rm {} \;
sqlplus -s user/pass@sid < exp.sql > exp.log
grep exp exp.log > exp.sh
chmod 755 exp.sh
./exp.sh
tar -cf bak.dmp.tar.$D *.dmp
gzip -f9 bak.dmp.tar.$D
echo `date` 'End Bak Oracle user hoge.' >> $LOG