RMANのDuplicateコマンドを使用して、同一ディレクトリ構成の別筐体にデータベースを複製する。
タイトルの通りアクティブデータベース複製機能を用いて、別途バックアップなどを取得せず、
稼働中のデータベースを直接複製する。
なお、複製するデータベースのSIDは「db19」としており、複製元と複製先で同じ名前を使う。
複製先データベースでの作業
補助インスタンスの初期化パラメータファイル(PFILE)を作成
最低限、DB_NAME を設定したパラメータファイルが必要。以下のように作成する。
cat <<EOF > $ORACLE_HOME/dbs/initdb19.ora
db_name='db19'
EOF
パスワードファイルの作成
複製元からコピーしてもいいが、ここではあえて新規に作成することにする。
cd $ORACLE_HOME/dbs
orapwd FILE=orapwdb19 FORMAT=12
SYSのパスワードを聞かれるので適宜設定する。
リスナーの静的構成
複製元からの接続を受け付けるため、事前にNETCAなどでリスナーを作成しておき、listener.ora に静的構成のための設定を追加する。
cat <<EOF >> $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = db19)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = db19)
)
)
EOF
リスナーが起動していない場合は起動し、すでに起動済みの場合は設定をリロードする。
lsnrctl reload
必要なディレクトリの作成
監査ファイルの出力先ディレクトリや、複製元で設定している場合は高速リカバリ領域のディレクトリを作成しておく。
mkdir -p $ORACLE_BASE/admin/db19/adump
mkdir $ORACLE_BASE/fast_recovery_area
mkdir $ORACLE_BASE/oradata/DB19
補助インスタンスを起動する
ORACLE_SIDを設定した上で、NOMOUNTモードで起動する。
export ORACLE_SID=db19
sqlplus / as sysdba
startup nomount
複製元データベースでの作業
複製先につなげるためのクライアント設定を行う
tnsnames.ora に 複製先の補助インスタンスに接続するための設定を追加する。
ここでは、接続識別子(ネットサービス名)を 「TARGET」としている。
cat <<EOF >> $ORACLE_HOME/network/admin/tnsnames.ora
TARGET =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oradbs2.dn.home)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = db19)
)
)
EOF
複製を実行する
再度RMANを起動する。「auxiliary」に複製先データベースを指定すること。
rman target sys/oracle auxiliary sys/oracle@target
duplicate target database to db19 from active database
nofilenamecheck spfile;
エラーなく実行できれば完了。
コメント