ShellからRMANを実行し、Shell変数を引数渡しする方法

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

Amazon

Kindle

楽天ブックス

7net

honto

e-hon

紀伊國屋書店

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次