Oracle Data Guard その⑥ [DBMS]
スタンバイDBの構築まで出来ましたので、今度はプライマリDBとスタンバイDBを入れ替えるスイッチオーバーをしてみます。
[スイッチオーバー]
プライマリDB→スタンバイDB
スタンバイDB→プライマリDB
ちなみに、プライマリDBが破損してスタンバイDBをプライマリDBにするのはフェイルオーバーと言います。
[フェイルオーバー]
プライマリDB→破棄
スタンバイDB→プライマリDB
[スイッチオーバー]
スイッチオーバーやフェイルオーバーは dgmgrl で行います。
スイッチオーバーの場合、どちらのサーバーにコネクトしてもかまいません。
予め show configuration でどちらがプライマリでどちらがスタンバイであるか調べます。
今回は pan がプライマリです。
以下のコマンドで themisto へスイッチオーバーします。
switchover to so1_themisto
スイッチオーバー後に再コネクト(コネクトしているのは操作ミス。そんな必要はありません。)して切り替わっている事を確認しています。
スイッチオーバーしたので、元プライマリDBにコネクトして DELETE してみてもスタンバイDBでリードオンリーになっているので削除出来ません。
スイッチオーバーはプライマリDBとスタンバイDBが入れ替わるだけなので何回でも行えます。
switchover to so1_pan でプライマリDBを元に戻しています。
スイッチオーバーは来たるべきフェイルオーバーに備えてスタンバイ側の準備をするための機能といったところでしょうか。
[フェイルオーバー]
フェイルオーバーはスタンバイ側にコネクトして行います。
プライマリ側が壊れている前提だからかと思います。
予め show configuration でどちらがプライマリでどちらがスタンバイであるか調べます。
今回は pan がプライマリです。
以下のコマンドで themisto へフェイルオーバーします。
failover to so1_themisto
フェイルオーバー後に dgmgrl でステイタスを確認すると、元プライマリDBは再インストールが必要になってます。
実際に元プライマリDBの dgmgrl にコネクトしてみても再構築が必要だと言われてしまいます。
実際にDBへコネクトしても、オープンされません。
元プライマリDBはそのままでは使えませんのでバックアップから戻して、スタンバイDBとして再構築する必要があります。
再びプライマリDBとして使う場合は、スタンバイDBとして再構築した後にスイッチオーバーしてプライマリDBにします。
その前に、新しくプライマリになった側で Data Guard Broaker で元プライマリDBの情報を一旦削除します。
remove database so1_pan
後はスタンバイDB構築と同じ手順でスタンバイDBとして作成します。
・DBリストア(又はDBコピー)
・スタンバイ用コントロールファイル作成↓とコピー
alter database create standby controlfile as 'E:\oracle\SO1\CNTRLSO1.DBF' reuse;
・Data Guard Broaker に構成追加↓とプロパティの設定
add database so1_themisto as connect identifier is so1_themisto maintained as physical;
・Data Guard Broaker の構成有効化
enable configuration;
とりあえず以上
[スイッチオーバー]
プライマリDB→スタンバイDB
スタンバイDB→プライマリDB
ちなみに、プライマリDBが破損してスタンバイDBをプライマリDBにするのはフェイルオーバーと言います。
[フェイルオーバー]
プライマリDB→破棄
スタンバイDB→プライマリDB
[スイッチオーバー]
スイッチオーバーやフェイルオーバーは dgmgrl で行います。
スイッチオーバーの場合、どちらのサーバーにコネクトしてもかまいません。
予め show configuration でどちらがプライマリでどちらがスタンバイであるか調べます。
今回は pan がプライマリです。
以下のコマンドで themisto へスイッチオーバーします。
switchover to so1_themisto
スイッチオーバー後に再コネクト(コネクトしているのは操作ミス。そんな必要はありません。)して切り替わっている事を確認しています。
スイッチオーバーしたので、元プライマリDBにコネクトして DELETE してみてもスタンバイDBでリードオンリーになっているので削除出来ません。
スイッチオーバーはプライマリDBとスタンバイDBが入れ替わるだけなので何回でも行えます。
switchover to so1_pan でプライマリDBを元に戻しています。
スイッチオーバーは来たるべきフェイルオーバーに備えてスタンバイ側の準備をするための機能といったところでしょうか。
[フェイルオーバー]
フェイルオーバーはスタンバイ側にコネクトして行います。
プライマリ側が壊れている前提だからかと思います。
予め show configuration でどちらがプライマリでどちらがスタンバイであるか調べます。
今回は pan がプライマリです。
以下のコマンドで themisto へフェイルオーバーします。
failover to so1_themisto
フェイルオーバー後に dgmgrl でステイタスを確認すると、元プライマリDBは再インストールが必要になってます。
実際に元プライマリDBの dgmgrl にコネクトしてみても再構築が必要だと言われてしまいます。
実際にDBへコネクトしても、オープンされません。
元プライマリDBはそのままでは使えませんのでバックアップから戻して、スタンバイDBとして再構築する必要があります。
再びプライマリDBとして使う場合は、スタンバイDBとして再構築した後にスイッチオーバーしてプライマリDBにします。
その前に、新しくプライマリになった側で Data Guard Broaker で元プライマリDBの情報を一旦削除します。
remove database so1_pan
後はスタンバイDB構築と同じ手順でスタンバイDBとして作成します。
・DBリストア(又はDBコピー)
・スタンバイ用コントロールファイル作成↓とコピー
alter database create standby controlfile as 'E:\oracle\SO1\CNTRLSO1.DBF' reuse;
・Data Guard Broaker に構成追加↓とプロパティの設定
add database so1_themisto as connect identifier is so1_themisto maintained as physical;
・Data Guard Broaker の構成有効化
enable configuration;
とりあえず以上
スイッチした側でもSAPを起動できる様にするには、SAPを両側ともドメインインストールするか、ローカルインストールの場合はスイッチした側で以下を実行すればSAPが起動できる様になります。
sqlplus /nolog @oradbusr.sql SAPSR3 NT <stabdby server name> <SID>
brconnect -u / -f chpass -o sapsr3 -p <sap_pwd>
SAPを起動するにはOPS$<コンピュータ名>|<ドメイン名>\OSユーザのOracleユーザとテーブルSAPUSER が必要になるので、それが上記設定になります。
でも、SSOとかSSLは出来ないかも?
それとJavaSystemも内部にインスタンスIDを持っているので簡単にはいかないみたいです。
SAPをOracleと別サーバにすると、Oracleへの接続情報を変える事で使える様です。この場合は別途SAPのみHigh Availability を考えないと。
以上はSAPの公式な情報ではないので注意願います。
by aki-aoki (2010-12-17 23:19)