th0x4c 備忘録

[Oracle] Data Guard リアルタイム問い合わせ

目的

Data Guard の “リアルタイム問い合わせ” 機能により、REDO 適用を中断せずプライマリの更新をリアルタイムで適用しつつ、スタンバイ DB を読み取り専用でオープンする。

環境

  • OS: Oracle Enterprise Linux 5.8
  • DB: Oracle Database 11g Release 2 (11.2.0.3)
  • EM: Oracle Enterprise Manager Grid Control 11g (11.1)

リアルタイム問い合わせ

Data Guard の “リアルタイム問い合わせ” 機能により、REDO 適用を中断せずプライマリの更新をリアルタイムで適用しつつ、スタンバイ DB を読み取り専用でオープンすることができる。

今回は EM Grid Control を使用してこの機能を有効にする。

  • プライマリ DB インスタンスの “可用性” タブ内の Data Guard の項目から “設定および管理” をクリックして、Data Guard のページを開く

  • “リアルタイム問い合わせ” の “無効” をクリック

  • “リアルタイム問い合わせの有効化” をチェックして、”適用” をクリック

  • 処理中 –> 正常に適用された

  • Data Guard の構成画面に戻ると “リアルタイム問い合わせ” が “有効” になっている

実際にスタンバイ DB に接続すると、SELECT が実行可能でプライマリの変更が REDO 適用された時点で即時反映されることが確認できる。

SQL> connect scott/tiger@PROD1 -- プライマリに接続
Connected.
SQL> CREATE TABLE emp2 AS SELECT * FROM emp;

Table created.

SQL> connect scott/tiger@STDBY1_DGMGRL -- スタンバイに接続
Connected.
SQL> SELECT * FROM emp2 WHERE ROWNUM = 1; -- プライマリの更新が反映されている

     EMPNO ENAME                          JOB                                MGR
---------- ------------------------------ --------------------------- ----------
HIREDATE        SAL       COMM     DEPTNO
-------- ---------- ---------- ----------
      7369 SMITH                          CLERK                             7902
80-12-17        800                    20


SQL> UPDATE emp2 SET sal = sal * 10 WHERE empno = 7369; -- スタンバイの更新はできない
UPDATE emp2 SET sal = sal * 10 WHERE empno = 7369
       *
ERROR at line 1:
ORA-16000: database open for read-only access

[Oracle] Data Guard スナップショット・スタンバイ・データベース

目的

Data Guard の “スナップショット・スタンバイ・データベース” 機能により、スタンバイ DB を一時的に更新可能にする。

環境

  • OS: Oracle Enterprise Linux 5.8
  • DB: Oracle Database 11g Release 2 (11.2.0.3)
  • EM: Oracle Enterprise Manager Grid Control 11g (11.1)

スナップショット・スタンバイ・データベースへの変換

Data Guard の “スナップショット・スタンバイ・データベース” 機能により、スタンバイ DB が一時的に更新可能にできる。”スナップショット・スタンバイ・データベース” となっている間はプライマリからの REDO は適用されず、元に戻すとスタンバイ DB での更新は破棄されて、プライマリからの REDO 適用が再開される。例えば、一時的にスタンバイ DB をテスト環境として使用する場合に使える。

EM Grid Control を使用すると変換が楽にできる。(“変換” をクリックするだけ)

  • プライマリ DB インスタンスの “可用性” タブ内の Data Guard の項目から “設定および管理” をクリックして、Data Guard のページを開く

  • “変換” をクリック

  • “はい”

  • 処理中 –> 完了

なぜか上記画面のまま “概要” のページに戻らない。alert.log を確認して処理が終わっていそうだったら、EM の画面を切り替えてしまってよい。

  • ロールが “スナップショット・スタンバイ” になる。

スナップショット・スタンバイ DB に対しては DB に変更も可能。

$ sqlplus scott/tiger@STDBY1_DGMGRL
SQL> CREATE TABLE emp2 AS SELECT * FROM emp;

Table created.

フィジカル・スタンバイ DB に戻す場合はもう一度 EM から “変換” をクリックすればよい。

[Oracle] Data Guard スイッチオーバー

目的

Data Guard のスイッチオーバーを実行して、プライマリとスタンバイを切り替える。

環境

  • OS: Oracle Enterprise Linux 5.8
  • DB: Oracle Database 11g Release 2 (11.2.0.3)
  • EM: Oracle Enterprise Manager Grid Control 11g (11.1)

スイッチオーバーの実施

EM Grid Control を使用してスイッチオーバーを行う。

  • プライマリ DB インスタンスの “可用性” タブ内の Data Guard の項目から “設定および管理” をクリックして、Data Guard のページを開く

  • “スイッチオーバー” をクリック

  • スタンバイ・サイト に接続する OS ユーザを入力

  • プライマリ・サイト に接続する OS ユーザを入力

  • “はい”

  • 処理中 –> 完了

なぜか上記画面のまま “概要” のページに戻らない。alert.log を確認して処理が終わっていそうだったら、EM の画面を切り替えてしまってよい。

  • 今度は元スタンバイでプライマリになったインスタンスの “可用性” タブ内の Data Guard の項目から “設定および管理” をクリックして、スイッチオーバーされている(プライマリ/スタンバイが切り替わっている)ことを確認