RMANをバックアップコマンドをスクリプト化して、
Shellから呼び出すことはあると思います。
その際にRMANスクリプトに引数として値を渡す方法を紹介します。
この方法を使用することで「RMANスクリプト1つだけ開発し、様々なDBに配布して使いまわす」ことができます。
目次
サンプルのShellスクリプト
今回のサンプルスクリプトになります。
引数として渡す値は、「DBの接続ユーザ」、「パスワード」、「接続識別子」の3つになります。
Shell変数をRMANの引数に渡す時には、シングルクォーテーションで括った後に、さらにダブルクォーテーションで括る必要があります。
下の例をよく確認してみてください。
#!/bin/sh
# Logfile name
LOG_FILENAME=rman.log
# Set Oracle env
export ORACLE_SID="orcl"
export ORACLE_HOME="/u01/app/oracle/product/12.1.0/dbhome_1"
export USERNAME="SYS"
export PASSWORD="password"
export TNSNAME="ORCL"
# Start RMAN Script
${ORACLE_HOME}/bin/rman @"fullbackup.rman" USING \
"'${USERNAME}'" \
"'${PASSWORD}'" \
"'${TNSNAME}'" \ >> ${LOG_FILENAME} 2>&1
exit 0;
サンプルのRMANスクリプト
今回のRMANスクリプトになります。
- 「&1」に接続DBユーザ
- 「&2」にパスワード
- 「&3」に接続識別子
が引数として渡されます。
connect target &1/&2@&3;
run {
# Full backupset into spfile and archivelog
backup incremental level 0 as backupset database
spfile plus archivelog delete all input;
}
TIPS:引数を分かりやすくしておく
RMANでは&1、&2….と引数名を指定することが出来ず、番号で引数を管理するしかありません。
そんな時はRMANスクリプトのヘッダーに各引数が何が渡ってくるか書くことをオススメします。
# Arguments
# &1:USERNAME
# &2:PASSWORD
# &3:TNSNAME
# Connect
CONNECT TARGET &1/&2@&3;
~以下略~
即戦力のOracle管理術 ~仕組みからわかる効率的管理のノウハウposted with ヨメレバ
内村 友亮,近藤 聖,近藤 良,武吉 佑祐,瀬沼 裕樹 技術評論社 2012-06-05