Oracle Standard Editionで可能なフィジカル・スタンバイ・データベース検証(基本スタンバイ)
ディザスターリカバリ用に基本スタンバイの検証を行う。
プライマリデータベース(P)とスタンバイデータベース(S)の冗長構成を作成することができ、プライマリデータベースにて作成されたアーカイブログを逐次スタンバイデータベースへ転送し適用するというもの。
スタンバイデータベースはmount状態であるため読み取り・書き込みが不可。
リードオンリーでopenすると読み込みのみ可能となるが、アーカイブログの適用は不可となる。
今回はRMANバックアップセットから複製して、構築していく流れ。
前提条件
検証環境
DB | DBVersion | OS | SID | HOST |
---|---|---|---|---|
P | 11.2.0.4.5 SEone | Oracle Linux 6.5 | STBY2 | PHOST |
S | 11.2.0.4.5 SEone | Oracle Linux 6.5 | STBY2 | SHOST |
基本スタンバイ構築手順
- oracle インストール(P,S)
- RMANにてバックアップ取得(P)
- RMANにてスタンバイ制御ファイルバックアップ取得(P)
- フォルダ構成をあわせる(S)
- バックアップセットのコピー(P,S)
- 初期化パラメータのコピー(P,S)
- パスワードファイルのコピー(P,S)
- RMANバックアップセットからリストア・リカバリまで(S)
- プライマリでアーカイブログのコピーし、スタンバイで適用(P,S)
- 起動方法(S)
1. oracle インストール(P,S)
SQL>select id,tx,to_char(cdate,'YYYYMMDD HH24:MI:SS') from oreore; ID TX TO_CHAR(CDATE,'YY ---------- -------------------- ----------------- 1 befo bkup database 20150309 19:33:03 SQL>alter system archive log current; システムが変更されました。 SQL>select id,tx,to_char(cdate,'YYYYMMDD HH24:MI:SS') from oreore; ID TX TO_CHAR(CDATE,'YY ---------- -------------------- ----------------- 1 befo bkup database 20150309 19:33:03 2 after archive 20150309 19:42:26
2. RMANにてバックアップ取得(P)
RMAN> backup database; backupが開始されました(開始時間: 15-03-09) チャネル: ORA_DISK_1が割り当てられました チャネルORA_DISK_1: SID=13 デバイス・タイプ=DISK チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています 入力データファイル・ファイル番号=00001 名前=/opt/app/oracle/oradata/stby2/system01.dbf 入力データファイル・ファイル番号=00002 名前=/opt/app/oracle/oradata/stby2/sysaux01.dbf 入力データファイル・ファイル番号=00005 名前=/opt/app/oracle/oradata/bokuore.dbf 入力データファイル・ファイル番号=00003 名前=/opt/app/oracle/oradata/stby2/undotbs01.dbf 入力データファイル・ファイル番号=00004 名前=/opt/app/oracle/oradata/stby2/users01.dbf チャネルORA_DISK_1: ピース1(15-03-09)を起動します チャネルORA_DISK_1: ピース1(15-03-09)が完了しました ピース・ハンドル=/opt/app/oracle/fast_recovery_area/STBY2/backupset/2015_03_09/o1_mf_nnndf_TAG20150309T194344_bhtyc0yn_.bkp タグ=TAG20150309T194344 コメント=NONE チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:15 チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています 現行の制御ファイルをバックアップ・セットに組み込んでいます バックアップ・セットに現行のSPFILEを組み込んでいます チャネルORA_DISK_1: ピース1(15-03-09)を起動します チャネルORA_DISK_1: ピース1(15-03-09)が完了しました ピース・ハンドル=/opt/app/oracle/fast_recovery_area/STBY2/backupset/2015_03_09/o1_mf_ncsnf_TAG20150309T194344_bhtycjz4_.bkp タグ=TAG20150309T194344 コメント=NONE チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01 backupが完了しました(完了時間: 15-03-09)
3. RMANにてスタンバイ制御ファイルバックアップ取得(P)
- ここで取得したスタンバイ用制御ファイルのバックアップセットを覚えておく。(o1_mf_ncnnf_TAG20150309T194612_bhtyhp3t_.bkp)
RMAN> backup current controlfile for standby; backupが開始されました(開始時間: 15-03-09) チャネルORA_DISK_1の使用 チャネルORA_DISK_1: フル・データファイル・バックアップ・セットを開始しています チャネルORA_DISK_1: バックアップ・セットにデータファイルを指定しています バックアップ・セットにスタンバイ制御ファイルを組み込んでいます チャネルORA_DISK_1: ピース1(15-03-09)を起動します チャネルORA_DISK_1: ピース1(15-03-09)が完了しました ピース・ハンドル=/opt/app/oracle/fast_recovery_area/STBY2/backupset/2015_03_09/o1_mf_ncnnf_TAG20150309T194612_bhtyhp3t_.bkp タグ=TAG20150309T194612 コメント=NONE チャネルORA_DISK_1: バックアップ・セットが完了しました。経過時間: 00:00:01 backupが完了しました(完了時間: 15-03-09)
4. フォルダ構成をあわせる(S)
mkdir -p /opt/app/oracle/fast_recovery_area/stby2 mkdir -p /opt/app/oracle/admin/stby2/{adump,dpdump,pfile} mkdir -p /opt/app/oracle/oradata/stby2 chown -R oracle:oinstall /opt/app/oracle/fast_recovery_area/stby2 chown -R oracle:oinstall /opt/app/oracle/admin/stby2/{adump,dpdump,pfile} chown -R oracle:oinstall /opt/app/oracle/oradata/stby2
5. バックアップセットのコピー(P→S)
$ scp -rp /opt/app/oracle/fast_recovery_area/STBY2 SHOST:/opt/app/oracle/fast_recovery_area/ o1_mf_ncnnf_TAG20150309T194612_bhtyhp3t_.bkp 100% 9568KB 9.3MB/s 00:00 o1_mf_nnndf_TAG20150309T194344_bhtyc0yn_.bkp 100% 1143MB 51.9MB/s 00:22 o1_mf_ncsnf_TAG20150309T194344_bhtycjz4_.bkp 100% 9600KB 9.4MB/s 00:00
6. 初期化パラメータのコピー(P→S)
SQL>create pfile from spfile; ファイルが作成されました。 $ scp -p /opt/app/oracle/product/11.2.0.4/dbhome_1/dbs/initstby2.ora SHOST:/opt/app/oracle/product/11.2.0.4/dbhome_1/dbs/ initstby2.ora 100% 1044 1.0KB/s 00:00
Sで初期化パラメータの編集を行う。
リソースに違いがあればメモリサイズの編集等。
7. パスワードファイルのコピー(P→S)
SQL>create pfile from spfile; ファイルが作成されました。 $ scp -p /opt/app/oracle/product/11.2.0.4/dbhome_1/dbs/orapwstby2 SHOST:/opt/app/oracle/product/11.2.0.4/dbhome_1/dbs/ orapwstby2
8. RMANバックアップセットからリストア・リカバリまで(S)
- インスタンスの起動
RMAN> startup nomount; Oracleインスタンスが起動しました システム・グローバル領域の合計は、 12827369472バイトです。 Fixed Size 2265224バイト Variable Size 1979715448バイト Database Buffers 10838081536バイト Redo Buffers 7307264バイト
- 制御ファイルのリストア時に先ほど取得したスタンバイ用制御ファイルのバックアップセットを指定する
RMAN> restore standby controlfile from '/opt/app/oracle/fast_recovery_area/STBY2/backupset/2015_03_09/o1_mf_ncnnf_TAG20150309T194612_bhtyhp3t_.bkp'; restoreが開始されました(開始時間: 15-03-09) リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています チャネル: ORA_DISK_1が割り当てられました チャネルORA_DISK_1: SID=98 デバイス・タイプ=DISK チャネルORA_DISK_1: 制御ファイルをリストア中です チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:01 出力ファイル名=/opt/app/oracle/oradata/stby2/control01.ctl 出力ファイル名=/opt/app/oracle/fast_recovery_area/stby2/control02.ctl restoreが完了しました(完了時間: 15-03-09)
- マウントしてリストアリカバリする
RMAN> alter database mount; RMAN> run { restore database; recover database; }
この時点でスタンバイデータベースの完成となる。
マウント状態なので検索はできない。
9. プライマリのアーカイブログをコピーし適用する(P→S)
- データ追加し、アーカイブ化しSへ転送(P)
>select id,tx,to_char(cdate,'YYYYMMDD HH24:MI:SS') from oreore; ID TX TO_CHAR(CDATE,'YY ---------- -------------------- ----------------- 1 befo bkup database 20150309 19:33:03 2 after archive 20150309 19:42:26 3 stby recover go 20150309 19:57:59 4 onemore alter archiv 20150309 20:03:03 >alter system archive log current; システムが変更されました。 scp -rp /opt/app/oracle/fast_recovery_area/STBY2/archivelog SHOST:/opt/app/oracle/fast_recovery_area/STBY2/
- Pのアーカイブを適用する(S)
SQL> recover automatic standby database; ORA-00279: 変更984281(03/09/2015 20:03:45で生成)にはスレッド1が必要です ORA-00289: 検討すべきログ・ファイル:/opt/app/oracle/fast_recovery_area/STBY2/archivelog/201 5_03_09/o1_mf_1_10_%u_.arc ORA-00280: 変更984281(スレッド1)は順序番号10に存在します。 ORA-00278: ログ・ファイル'/opt/app/oracle/fast_recovery_area/STBY2/archivelog/2015_03_09/o1 _mf_1_10_%u_.arc'はこのリカバリでは必要なくなりました ORA-00308: アーカイブ・ログ/opt/app/oracle/fast_recovery_area/STBY2/archivelog/2015_03_09/o 1_mf_1_10_%u_.arcをオープンできません。 ORA-27037: ファイル・ステータスを取得できません。 Linux-x86_64 Error: 2: No such file or directory Additional information: 3 ログの指定: {<RET>=suggested | filename | AUTO | CANCEL} cancel
アーカイブログ適用されるが、以降のアーカイブログも適用しようとするのでエラーとなってしまう。
10. 起動方法(S)
リードオンリーモードとアクティブモードの起動方法がある。
- リードオンリーモードで起動すると、読み取りのみ可能となる。再度スタンバイデータベースに戻すことが可能。
- アクティブモードで起動すると、読み取りと書き込みが可能になる。再度スタンバイデータベースに戻すことは不可。
リードオンリーモードで起動
- アーカイブログが適用されているか確認する。
SQL> alter database open read only; データベースが変更されました。 SQL> select * from oreore; ID TX CDATE ---------- -------------------- -------- 1 befo bkup database 15-03-09 2 after archive 15-03-09 3 stby recover go 15-03-09 4 onemore alter archiv 15-03-09
ちゃんとPにinsertした値が入っている。
- スタンバイデータベースに戻す
SQL>shutdown SQL>startup nomount SQL>alter database mount standby database;
これでスタンバイデータベースに戻る。
アクティブモードで起動
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE; データベースが変更されました。 SQL> alter database open; データベースが変更されました。
その他:オンラインredoログを適用する(P→S)
プライマリデータベース起動時にオンラインredoログをスタンバイデータベースへ適用はできない。
プライマリデータベース停止時には可能となる。
- DBシャットダウンしオンラインredoログをコピー(P)
SQL> shutdown immediate データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 $ rsync -ua /opt/app/oracle/oradata/stby2/redo01.log SHOST:/opt/app/oracle/oradata/stby2/ $ rsync -ua /opt/app/oracle/oradata/stby2/redo02.log SHOST:/opt/app/oracle/oradata/stby2/ $ rsync -ua /opt/app/oracle/oradata/stby2/redo03.log SHOST:/opt/app/oracle/oradata/stby2/
- オンラインredoログの適用(S)
SQL> recover automatic standby database; ORA-00279: 変更1215296(03/17/2015 15:58:50で生成)にはスレッド1が必要です ORA-00289: 検討すべきログ・ファイル:/opt/app/oracle/fast_recovery_area/STBY2/archivelog/2015_03_17/o1_mf_1_36_%u_.arc ORA-00280: 変更1215296(スレッド1)は順序番号36に存在します。 ORA-00278: ログ・ファイル'/opt/app/oracle/fast_recovery_area/STBY2/archivelog/2015_03_17/o1_mf_1_36_%u_.arc'はこのリカバリでは必要なくなりました ORA-00308: アーカイブ・ログ/opt/app/oracle/fast_recovery_area/STBY2/archivelog/2015_03_17/o1_mf_1_36_%u_.arcをオープンできません。 ORA-27037: ファイル・ステータスを取得できません。 Linux-x86_64 Error: 2: No such file or directory Additional information: 3 ログの指定: {<RET>=suggested | filename | AUTO | CANCEL} /opt/app/oracle/oradata/stby2/redo01.log ←ここで対象のオンラインREDOログを指定してあげる ログが適用されました。 メディア・リカバリが完了しました。
これでオンラインredoログが適用され完全同期される。
基本スタンバイ導入のメリット・デメリット
メリット
デメリット
- 数分置きにログスイッチを行わなくてはならないのでチェックポイントの回数が増え負荷が大きくなる。
- プライマリデータベースが全損した場合がスタンバイデータベースでオンラインREDOログ分のデータが損失してしまうことになる。
- アーカイブログ転送や適用の仕組みを実装してあげる必要がある。
費用が安くなる分めんどうな手間が増えるって感じ。