バックアップベースのデータベース複製(複製元に接続しない場合)

RMANのDuplicateコマンドを使用して、同一ディレクトリ構成の別筐体にデータベースを複製する。

タイトルの通りバックアップベースかつ複製元に接続しない方法で行う。11gR2から実行可能な方式で、アクティブデータベース複製が利用できない場合は基本的にこの方法になるだろう。

なお、複製するデータベースのSIDは「db19」としており、複製元と複製先で同じ名前を使う。

複製元データベースでの作業

複製元データベースのバックアップを取得する

バックアップ先は個別に指定することとする。RMANを起動し、以下のように実行。制御ファイル、アーカイブログ、SPFILEのバックアップを同時に取得している。

run {
    allocate channel c1 device type disk format '/home/oracle/backup/%U';
    backup database include current controlfile plus archivelog;
    backup spfile;
}

取得したバックアップを複製先に転送する

ネットワークで通信できるのであればscpコマンドなどを使って転送する。複製先には事前にディレクトリを作成しておくこと。

scp -r /home/oracle/backup/* oracle@oradbs2.dn.home:/home/oracle/backup

複製先データベースでの作業

補助インスタンスの初期化パラメータファイル(PFILE)を作成

最低限、DB_NAME を設定したパラメータファイルが必要。以下のように作成する。

cat <<EOF > $ORACLE_HOME/dbs/initdb19.ora
db_name='db19'
EOF

パスワードファイルの作成

複製元からコピーしてもいいが、ここではあえて新規に作成することにする。

cd $ORACLE_HOME/dbs
orapwd FILE=orapwdb19 FORMAT=12

SYSのパスワードを聞かれるので適宜設定する。

必要なディレクトリの作成

監査ファイルの出力先ディレクトリや、複製元で設定している場合は高速リカバリ領域のディレクトリを作成しておく。

mkdir -p $ORACLE_BASE/admin/db19/adump
mkdir $ORACLE_BASE/fast_recovery_area

補助インスタンスを起動する

ORACLE_SIDを設定した上で、NOMOUNTモードで起動する。

export ORACLE_SID=db19
sqlplus / as sysdba
startup nomount

複製を実行する

RMANを起動する。「auxiliary」には補助インスタンスのユーザ名、パスワードを指定する。

rman auxiliary sys/oracle
run {
    duplicate target database to db19 nofilenamecheck spfile
    backup location '/home/oracle/backup';
}

エラーなく実行できれば完了。

コメント