Comments
Description
Transcript
Oracle Data Guard 11g フィジカル・スタンバイ設定ガイド
Oracle Data Guard 11g フィジカル・スタンバイ設定ガイド Date: 2008 年 3 月 Version: 1.0 -1Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 謝辞 2006 年 11 月、日本オラクル株式会社は株式会社日立製作所やグリッド戦略パートナー各社と 協業体制を確立し、企業のシステム基盤の最適化を実現する次世代のビジネス・ソリューション を構築するため、先鋭の技術を集結した「Oracle GRID Center(オラクル・グリッド・センター)」 (http://www.oracle.co.jp/solutions/grid_center/index.html) を 開 設 し ま し た 。 本 稿 は 、 Oracle GRID Center の趣旨にご賛同頂いたインテル株式会社、シスコシステムズ株式会社のハードウェ ア・ソフトウェアのご提供および技術者によるご支援などの多大なるご協力を得て作成しており ます。ここに協賛企業各社およびご協力頂いた技術者に感謝の意を表します。 ※本ドキュメントの無断転載を禁じます 免責事項 このドキュメントは単に情報として提供され、内容は予告なしに変更される場合があります。 このドキュメントに誤りが無いことの保証や、商品性又は特定目的への適合性の黙示的な保証や 条件を含め明示的又は黙示的な保証や条件は一切無いものとします。日本オラクル株式会社およ び株式会社日立製作所は、このドキュメントについていかなる責任も負いません。また、このド キュメントによって直接又は間接にいかなる契約上の義務も負うものではありません。このドキ ュメントを形式、手段(電子的又は機械的)、目的に関係なく、日本オラクル株式会社および株式 会社日立製作所の書面による事前の承諾なく、複製又は転載することはできません。 商標類 Oracle は,米国 Oracle Corporation 及びその子会社,関連会社の登録商標です。 Linux は、Linus Torvalds の米国およびその他の国における登録商標あるいは商標です。 その他の名称は、各社の商標または登録商標です。 -2Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 1 目次 1 目次 ......................................................................................................................................... 3 2 はじめに.................................................................................................................................. 4 3 構築環境.................................................................................................................................. 4 4 ハードウェアおよびオペレーティングシステム要件 .............................................................. 5 5 ソフトウェア要件.................................................................................................................... 5 6 スタンバイ・データベース構築手順 ....................................................................................... 6 6.1 6.2 6.3 6.4 6.5 6.6 プライマリ・データベースでの事前設定 ............................................................................. 6 スタンバイ・データベースの作成........................................................................................ 7 管理リカバリモードの開始 ............................................................................................... 15 プライマリ・データベースの構成変更............................................................................... 16 REDO転送・適用確認 ...................................................................................................... 17 フラッシュバック・データベースの構成 ........................................................................... 18 7 リアルタイム・クエリー設定手順......................................................................................... 20 7.1 リアルタイム・クエリー設定手順...................................................................................... 20 7.2 リアルタイム・クエリー停止手順...................................................................................... 24 8 スナップショット・スタンバイ変更手順 .............................................................................. 25 8.1 フィジカル・スタンバイからスナップショット・スタンバイへの 8.2 スナップショット・スタンバイからフィジカル・スタンバイへの 変更手順 ................. 25 変更手順 ................. 27 9 スイッチオーバー/スイッチバック 手順............................................................................... 30 9.1 スイッチオーバー手順 ........................................................................................................ 30 9.2 スイッチバック手順............................................................................................................ 36 10 フェイルオーバー/フェイルバック 手順 ........................................................................... 37 10.1 フェイルオーバー手順 ...................................................................................................... 37 10.2 フェイルバック手順.......................................................................................................... 40 11 Data Guard Brokerの構成................................................................................................ 43 11.1 Data Guard Broker の構成手順 .................................................................................... 43 11.2 ファスト・スタート・フェイルオーバーの設定手順 ..................................................... 48 11.3 ファスト・スタート・フェイルオーバーの詳細設定 ..................................................... 51 -3Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 2 はじめに 本書は Oracle Data Guard 11g フィジカル・スタンバイ・データベースの構築ガイドです。本 書では LinuxOS 上に構築された既存の Oracle Real Application Clusters (以降、RAC)構成を使 用して、LinuxOS 上に Oracle RAC 構成のフィジカル・スタンバイ・データベースを追加し、 Oracle Data Guard 構成を作成する手順を紹介します。また Oracle Database 11g Release 1 の 新機能であるリアルタイム・クエリー、スナップショット・スタンバイの設定手順、スイッチオ ーバー、フェイルオーバーの基本的な手順を紹介します。 (注意:本書は Oracle Data Guard の実際に使用した設定や手順を紹介するものであり、全ての 環境において本書と同じ設定や手順を推奨するものではありません。また、全ての環境で同じ実 行結果やログ出力になることを保証するものではありません) 3 構築環境 本書で使用しているコマンドの実行例や設定例は以下の環境を仮定したものとなります。 ・プライマリ・データベース(2 ノード RAC 構成) ノード 1 ノード 2 TOKYO1 TOKYO2 ホスト名 10.196.7.40 10.196.7.41 PublicLAN 用 IP アドレス 192.168.7.40 192.168.7.41 PrivateLAN 用 IP アドレス VIP TOKYO1-vip TOKYO2-vip ORACLE_HOME /oracle/db/product/11.1.0/db_1 DB_UNIQUE_NAME TOKYO TOKYO1 TOKYO2 インスタンス名 +ASM1 +ASM2 ASM インスタンス名 ・スタンバイ・データベース(2 ノード RAC 構成) - フィジカル・スタンバイ・データベース ノード 1 ノード 2 OSAKA1 OSAKA2 ホスト名 10.196.8.42 10.196.8.43 PublicLAN 用 IP アドレス 192.168.8.42 192.168.8.43 PrivateLAN 用 IP アドレス VIP OSAKA1-vip OSAKA2-vip ORACLE_HOME /oracle/db/product/11.1.0/db_1 DB_UNIQUE_NAME OSAKA OSAKA1 OSAKA2 インスタンス名 +ASM1 +ASM2 ASM インスタンス名 また本書で紹介している手順は以下の条件を満たしている環境を前提とした手順となります。 ・プライマリ・データベースが作成済みである ・プライマリ・データベースは Automatic Storage Management (以降、ASM)を使用している ・スタンバイ・データベース・サーバーには Oracle Database のソフトウェアの インストールが完了している ・スタンバイ・データベース・サーバーには Oracle Clusterware の インストールが完了している ・スタンバイ・データベース用の ASM インスタンスが作成済みである ・スタンバイ・データベース用の ASM インスタンス上でディスクグループが作成済みである ・プライマリ・スタンバイ両データベースともフラッシュリカバリ領域を使用している -4Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 4 ハードウェアおよびオペレーティングシステム要件 4.1 Oracle Data Guard 構成 Oracle Data Guard 環境は以下の構成で作成することが可能です 1) プライマリ・データベース:RAC / スタンバイ・データベース:RAC *プライマリ、スタンバイ間で RAC 構成のノード数が異なっていても可 2) プライマリ・データベース:RAC / スタンバイ・データベース:シングル 3) プライマリ・データベース:シングル / スタンバイ・データベース:RAC 4) プライマリ・データベース:シングル / スタンバイ・データベース:シングル 本書では 1) の構成について示します。 4.2 オペレーティングシステム要件 Oracle Database 11g Release 1 では Oracle Data Guard 構成の柔軟性が増し、プライマリ・ データベース、スタンバイ・データベース間で CPU アーキテクチャやワードサイズが異なる構 成も可能です。 また一部のオペレーティングシステム(2007 年 12 月時点では Linux と Windows)では、プライマ リ・データベースとスタンバイ・データベース間でオペレーティングシステムが異なる構成を実 現することも可能です。 Oracle Data Guard 構成の前提となる Oracle Database 11g Release 1 ソフトウェアのインスト ールのためのオペレーティングシステム要件等の情報は、インストレーションガイド及びリリー スノートをご参照ください。 5 ソフトウェア要件 Oracle Database Enterprise Edition を使用している必要があります。Oracle Data Guard 11g 新 機 能 で あ る リ ア ル タ イ ム ・ ク エ リ ー を 使 用 す る た め に は 、 追 加 ラ イ セ ン ス と し て Enterprise Edition の他に Oracle Active Data Guard オプションが必要となります。 -5Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 6 スタンバイ・データベース構築手順 6.1 プライマリ・データベースでの事前設定 フィジカル・スタンバイ・データベースを作成する前にプライマリ・データベースで以下の 4 点 の確認を行う必要があります。 6.1.1 6.1.2 6.1.3 6.1.4 強制ロギングの有効化 アーカイブログモードへの変更 パスワード・ファイルの作成 初期化パラメータファイルの作成 6.1.1 強制ロギングの有効化 プライマリ・データベースで強制ロギングを有効にするために以下の SQL 文を発行します。 SQL> alter database force logging; 現在のデータベースで強制ロギングが有効となっているかは以下の SQL 文で確認可能です。 SQL> select force_logging from v$database; 実行例: SQL> select force_logging from v$database; FOR ------YES 6.1.2 アーカイブ・ログ・モードへの変更 プライマリ・データベースはアーカイブ・ログ・モードで稼動している必要があります。プラ イマリ・データベースがアーカイブ・ログ・モードで稼動しているか確認します。現在データベ ースがアーカイブ・ログ・モードで稼動しているかどうかは以下のコマンドを実行することで確 認することができます。 SQL> archive log list; 実行例: SQL> archive log list; Database log mode Automatic archival Archive destination Oldest online log sequence Current log sequence No Archive Mode Disabled +ARCH_FLASHBACK 26 28 データベースがノーアーカイブ・ログ・モードで稼動している場合はアーカイブ・ログ・モー -6Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved ドへ変更します。アーカイブ・ログ・モードへは以下の SQL 文を実行することで変更可能です。 アーカイブ・ログ・モードへの変更を行う際は、インスタンスは mount 状態で実施する必要があ ります。 $ srvctl stop database –d tokyo $ srvctl start database –d tokyo –o mount SQL> alter database archivelog; アーカイブ・ログ・モードへの変更を実施後、再度以下コマンドを実行し、アーカイブ・ログ・ モードに変更されていることを確認します。 SQL> archive log list; 実行例: SQL> archive log list; Database log mode Automatic archival Archive destination Oldest online log sequence Next log sequence to archive Current log sequence Archive Mode Enabled +ARCH_FLASHBACK 26 28 28 6.1.3 パスワード・ファイルの作成 Oracle Data Guard 環境では REDO 転送セッションの認証に SSL プロトコルもしくはパスワ ード・ファイル認証を使用することが可能です。本書では REDO ログ転送セッションの認証にパ スワード・ファイルを使用する手順を紹介します。(SSL プロトコルでの認証についての詳細は、 マニュアル「Oracle Data Guard 概要および管理 11g リリース 1(11.1)」をご覧ください。) プライマリ・データベースにパスワード・ファイルが存在しない場合にはパスワード・ファイ ルを作成します。 $ cd $ORACLE_HOME/dbs $ orapwd file=’orapw$ORACLE_SID’ password=<password> *<password> の部分は sys ユーザーのパスワードを指定します 6.1.4 初期化パラメータファイルの作成 プライマリ・データベースで使用している spfile から pfile を作成します。 SQL> create pfile=’<ファイル名>’ from spfile; 作成した pfile については後述します。 6.2 スタンバイ・データベースの作成 Oracle Database 11g Release 1 では Recovery Manager (以下 RMAN)の duplicate コマンド -7Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved の機能拡張により起動中のプライマリ・データベースからバックアップファイルを作成せずに直 接スタンバイ・データベースを作成することが可能となりました。本書ではこの新機能を使用し た手順でのスタンバイ・データベースの作成手順を紹介します。スタンバイ・データベースの作 成は以下の流れで実施します。 6.2.1 スタンバイ・データベース・サーバーでの listener.ora の設定 6.2.2 OracleNet の設定 6.2.3 スタンバイ・データベース用パスワード・ファイルの作成 6.2.4 スタンバイ・データベース用初期化パラメータ・ファイルの作成 6.2.5 初期化パラメータ・ファイルの配置 6.2.6 ディレクトリの作成 6.2.7 スタンバイ・インスタンスの起動 6.2.8 RMAN の起動と接続 6.2.9 duplicate コマンドの実行 6.2.10 スタンバイ REDO ログの作成 6.2.11 OCR へのリソース登録(RAC 固有) (従来通り RMAN にて取得したバックアップファイルを使用してスタンバイ・データベースを作 成する手順や OS コマンドを使用して取得したバックアップからスタンバイ・データベースを作 成する手順でも構築は可能です。従来の手順の詳細についてはマニュアル「Oracle Data Guard 概要および管理」をご覧ください。) 6.2.1 スタンバイ・データベース・サーバーでの listener.ora の設定 RMAN の duplicate コマンドを使用するためにはプライマリ・データベースおよび RMAN を 起動するクライアントマシンからスタンバイ・データベース・サーバーへ OracleNet 経由で接続 する必要があります。RMAN からの OracleNet 接続を可能とするために、スタンバイ・データ ベース・サーバー上のリスナーにスタンバイ・データベースの情報を静的構成にて登録します。 duplicate コマンドはスタンバイ・データベース・サーバーのうちの1ノードに接続可能であれ ば実行可能なため、この設定はスタンバイ・データベース・サーバーの 1 ノードのみの実施で構 いません。 Listener.ora の記述例: LISTENER_OSAKA1 = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =OSAKA1-vip)(PORT = 1521)(IP = FIRST)) (ADDRESS = (PROTOCOL = TCP)(HOST = 10.196.8.42)(PORT = 1521)(IP = FIRST)) ) ) SID_LIST_LISTENER_OSAKA1 = (SID_LIST = (SID_DESC = (SID_NAME = OSAKA1) (GLOBAL_DBNAME=OSAKA1) (ORACLE_HOME = /oracle/db/product/11.1.0/db_1) ) ) (この時点ではスタンバイ・データベースには制御ファイルもデータファイルもなく mount を -8Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 実施することができないため PMON による動的構成ではサービスが登録されません。 ) サービスが登録されていない状態では OracleNet 経由での接続もできないため RMAN からの 接続もできません。RMAN を使用してアクティブ・データベースからのスタンバイ・データベ ース作成を実行する際は、接続のために静的構成が必須作業となります) 6.2.2 Tnsnames.ora の設定 REDO 転送のためにプライマリ、スタンバイ両データベース間で OracleNet 接続を可能にしま す。また duplicate コマンドを使用してスタンバイ・データベースを作成するためには、RMAN を起動するマシンからプライマリ、スタンバイ両データベースに OracleNet 経由で接続可能であ る必要があります。 プライマリ、 スタンバイ両データベース及び RMAN を起動するマシン(RMAN クライアント)上で OracleNet の設定を実施します。RMAN クライアントからスタンバイ・デー タベースへの接続情報は、項番 6.2.1 で登録したサービスを利用してください。 (今回の実行例ではスタンバイ・データベース・サーバー上で RMAN を起動し duplicate コマン ドを実行するため、スタンバイ・データベースで RMAN クライアントの設定も包括しています。) プライマリ・データベースの tnsnames.ora 設定例: OSAKA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = OSAKA1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = OSAKA2-vip)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = OSAKA) ) ) OSAKA1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = OSAKA1-vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = OSAKA1) ) ) スタンバイ・データベースの tnsnames.ora 設定例: TOKYO = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = TOKYO1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = TOKYO2-vip)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TOKYO) ) ) OSAKA1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = OSAKA1-vip)(PORT = 1521)) -9Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved ) (CONNECT_DATA = (SERVER = DEDICATED) (SID = OSAKA1) ) 6.2.3 スタンバイ・データベース用パスワード・ファイルの作成 Oracle Data Guard 構成ではプライマリ・データベースのパスワード・ファイルのコピーをス タンバイ・データベース用にリネームし、スタンバイ・データベースに配置する必要があります。 duplicate コマンドを使用してスタンバイ・データベースを作成する場合、duplicate コマンド実 行時にプライマリ・データベースからパスワードファイルがコピー、上書きされます。しかしな がら、RMAN で duplicate コマンドを実行するためにスタンバイ・インスタンスに接続する際も パスワード・ファイルが必要となるため、duplicate コマンド実行時に使用するパスワード・ファ イルをスタンバイ・サーバーで作成する必要があります。 プライマリ・データベースからパスワード・ファイルをコピーし、「orapw$ORACLE_SID」と ファイル名に変更して $ORACLE_HOME/dbs 配下に配置します。 実行例: $ cp orapwtokyo1 $ORACLE_HOME/dbs/orapwosaka1 ここで作成するパスワード・ファイルは、前述した通り duplicate コマンド実行時にプライマ リ・データベースからコピー、上書きされる一時的なものであるため、プライマリ・データベー スからファイルをコピーしなくともスタンバイ・データベース・サーバー上で以下の手順を実行 することで作成可能です。 $ cd $ORACLE_HOME/dbs $ orapwd file=orapw$ORACLE_SID password=<password> *<password> の部分はプライマリ・データベースと同一の sys ユーザーのパスワードを 指定します 6.2.4 スタンバイ・データベース用初期化パラメータ・ファイルの作成 スタンバイ・データベースで使用する初期化パラメータ・ファイルを作成します。項番 6.1.4 で作成した pfile をスタンバイ・データベース・サーバー上へコピー後、スタンバイ・データベ ース用に初期化パラメータ・ファイルを編集します。以下はスタンバイ・データベース用に編集 したパラメータの設定例です。各パラメータの設定値の詳細はマニュアル「Oracle Database リフ ァレンス 11g リリース 1(11.1)」をご参照ください。 ##RAC 関連パラメータ *.cluster_database=true *.cluster_database_instances=2 *.db_unique_name='osaka' osaka1.instance_number=1 osaka2.instance_number=2 osaka1.thread=1 osaka2.thread=2 osaka1.undo_tablespace='UNDOTBS1' osaka2.undo_tablespace='UNDOTBS2' *.remote_listener='LISTENERS_OSAKA' - 10 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved ##Oracle Data Guard 関連パラメータ *.log_archive_config='dg_config=(tokyo,osaka)' *.log_archive_dest_1='location=+ARCH_FLASHBACK VALID_FOR=(all_logfiles,all_role) DB_UNIQUE_NAME=osaka' *.log_archive_dest_2='SERVICE=tokyo ASYNC VALID_FOR=(online_logfiles,primary_role) DB_UNIQUE_NAME=tokyo' *.db_file_name_convert='+DATA/TOKYO/DATAFILE/','+DATA/OSAKA/DATAFILE/', '+DATA/TOKYO/TEMPFILE/','+DATA/OSAKA/TEMPFILE/' *.log_file_name_convert='+REDO1/TOKYO/','+REDO1/OSAKA/', '+REDO2/TOKYO/','+REDO2/OSAKA/' *.standby_file_management='AUTO' *.fal_server='tokyo' *.fal_client='osaka' *.log_archive_trace=16383 ##その他のパラメータ *.compatible='11.1.0.0.0' *.diagnostic_dest='/oracle/db' *.audit_file_dest='/oracle/db/admin/osaka/adump' osaka1.background_dump_dest=’ /oracle/db/diag/rdbms/osaka/osaka1/trace’ osaka2.background_dump_dest=’ /oracle/db/diag/rdbms/osaka/osaka2/trace’ osaka1.core_dump_dest=’ /oracle/db/diag/rdbms/osaka/osaka1/cdump’ osaka2.core_dump_dest=’ /oracle/db/diag/rdbms/osaka/osaka2/cdump’ osaka1.user_dump_dest=’ /oracle/db/diag/rdbms/osaka/osaka1/trace’ osaka2.user_dump_dest=’ /oracle/db/diag/rdbms/osaka/osaka2/trace’ *.control_files='+DATA/OSAKA/control01.ctl','+DATA/OSAKA/control02.ctl', '+DATA/OSAKA/control03.ctl' *.db_recovery_file_dest='+ARCH_FLASHBACK' *.dispatchers='(PROTOCOL=TCP) (SERVICE=osakaXDB)' *.remote_login_passwordfile='EXCLUSIVE' 6.2.5 初期化パラメータ・ファイルの配置 項番 6.2.4 で作成したパラメータ・ファイルからスタンバイ・データベース用の spfile を作成 し配置します。スタンバイ・データベース・サーバー上で SQL*Plus から ASM インスタンスに 接続し spfile を配置するディレクトリを作成します。 (1) 配置ディレクトリの作成 下記の実行例では「DATA」という名称のディスクグループに DB_UNIQUE_NAME である 「OSAKA」ディレクトリを作成しています。 実行例: $ export ORACLE_SID=+ASM1 SQL> alter diskgroup DATA add directory ‘+DATA/OSAKA’; または ASMCMD ユーティリティを使用して ASM インスタンスに接続し mkdir コマンドを使用 してディレクトリを作成することも可能です。 実行例: - 11 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved $ export ORACLE_SID=+ASM1 $ asmcmd ASMCMD> mkdir ‘+DATA/OSAKA’ (2) spfile の作成 項番 6.2.4 で作成した初期化パラメータ・ファイルから spfile を作成し、(1)で作成したディレ クトリに配置します。SQL*Plus にてアイドル状態のスタンバイ・インスタンスに接続し、 spfile<DB_UNIQUE_NAME>.ora の名称で spfile を作成、配置します。 SQL> create spfile=’<spfile ファイル名> from pfile=’<項番 6.2.4 で編集したファイル名’; 実行例: SQL> create spfile=’+DATA/OSAKA/spfileosaka.ora’ from pfile=’/work/initstandby.ora’; (3) init.ora の作成 (2)で作成した spfile を使用してスタンバイ・データベースが起動できるように全てのスタンバ イ・データベース・サーバーで以下の内容で pfile を作成します。 $ cd $ORACLE_HOME/dbs $ echo “SPFILE=’<spfile フルパス>’ ” > init<SID 名>.ora 実行例: $ cd $ORACLE_HOME/dbs $ echo “SPFILE=’+DATA/OSAKA/spfileosaksa.ora’ “ > initosaka1.ora 6.2.6 ディレクトリの作成 全てのスタンバイ・データベース・サーバー上で初期化パラメータ AUDIT_FILE_DEST、 BACKGROUND_DUMP_DEST、CORE_DUMP_DEST、USER_DUMP_DEST で指定された ディレクトリの存在が存在することを確認します。存在しない場合は OS コマンドを使用してデ ィレクトリを作成します。 実行例: $ mkdir –p /oracle/db/admin/osaka/adump $ mkdir –p /oracle/db/diag/rdbms/osaka/osaka1/trace $ mkdir –p /oracle/db/diag/rdbms/osaka/osaka1/cdump 6.2.7 スタンバイ・インスタンスの起動 RMAN からスタンバイ・データベースに接続を行うためにはスタンバイ・インスタンスが nomount の状態で起動している必要があります。項番 6.2.5 で作成した spfile を使用してスタン バイ・インスタンスを nomount モードで起動します。 SQL> startup nomount 6.2.8 RMAN の起動と接続 - 12 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved RMAN を起動しプライマリ、スタンバイ両データベースへ接続を行います。 $ rman target ‘sys/<password>@<プライマリ接続情報>’ auxiliary ‘sys/<password>@<スタンバイ接続情報>’ 実行例: $ rman target ‘sys/oracle@tokyo’ auxiliary ‘sys/oracle@osaka1’ 6.2.9 duplicate コマンドの実行 duplicate コマンドを実行し稼動中のプライマリ・データベースからデータファイルのコピー を実施します。 RMAN> duplicate target database for standby from active database; ・for standby: スタンバイ・データベースとして使用する目的で duplicate コマンドを実行する際に付与するオプション ・from active database: 起動中のデータベースからデータベースの複製を行う際に使用するオプション Oracle Database 11g Release 1 新機能 上記の duplicate コマンドでは、パスワード・ファイルのコピー、スタンバイ・データベース 用制御ファイルのコピー、データファイルのコピーが実行されます。正常にコマンドが完了する とスタンバイ・データベースが mount された状態で作成されています。 6.2.10 スタンバイ REDO ログの作成 作成したスタンバイ・データベースへ接続しスタンバイ REDO ログ・ファイルを作成します。 スタンバイ REDO ログ・ファイルはプライマリ・データベースの REDO ログ・ファイルと同じ サイズである必要があります。またスタンバイ REDO ログ・ファイルはプライマリ・データベー スの REDO ログ・ファイルのグループ数より1つ以上多く作成する必要があります。 ・スタンバイ REDO ログ・ファイル数の算出方法 スタンバイ REDO ログ・ファイル数 ≧ (プライマリ・データベースの REDO ファイルグループ数 + 1) × REDO スレッド数 例えばプライマリ・データベースが 2 ノード RAC 構成で各スレッド毎に3つの REDO ロググル ープが存在する場合は以下の通り 8 グループ以上のスタンバイ REDO ログ・ファイルを作成する 必要があります。 (3+1) × 2 = 8 今回の環境ではプライマリ・データベースが 2 ノード RAC 構成で各スレッドごとに3つの REDO ロググループが存在し REDO ログ・ファイル1つのサイズが 4G であるため以下のような SQL 文を実行することになります。 実行例: SQL> alter database add standby logfile thread 1 group 7 - 13 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 2 ‘+REDO1/primary/st_redo07.log’ size 4G; SQL> alter database add standby logfile thread 1 group 8 2 ‘+REDO1/primary/st_redo08.log’ size 4G; SQL> alter database add standby logfile thread 1 group 9 2 ‘+REDO1/primary/st_redo09.log’ size 4G; SQL> alter database add standby logfile thread 1 group 10 2 ‘+REDO1/primary/st_redo10.log’ size 4G; SQL> alter database add standby logfile thread 2 group 11 2 ‘+REDO2/primary/st_redo11.log’ size 4G; SQL> alter database add standby logfile thread 2 group 12 2 ‘+REDO2/primary/st_redo12.log’ size 4G; SQL> alter database add standby logfile thread 2 group 13 2 ‘+REDO2/primary/st_redo13.log’ size 4G; SQL> alter database add standby logfile thread 2 group 14 2 ‘+REDO2/primary/st_redo14.log’ size 4G; スタンバイ REDO ログ・ファイルの追加は以下の SQL 文のように、ファイル名を指定せずに行 う こ と も 可 能 で す 。 こ の 場 合 は 、 初 期 化 パ ラ メ ー タ db_create_file_dest お よ び db_recovery_file_dest で指定されたディレクトリ以下に自動的に作成されます。 SQL> alter database add standby logfile thread <スレッド番号> group <グループ番号> 2 size <サイズ>; 6.2.11 OCR へのリソース登録(RAC 環境固有手順) duplicate コマンドにて作成したスタンバイ・データベースはこの時点では OCR に登録されて いません。srvctl コマンドを使用して OCR へデータベースリソース、インスタンスリソースの 登録を行います。 実行例: $ srvctl add database -d osaka -o /oracle/db/product/11.1.0/db_1 -n tokyo -r physical_standby -p "+DATA/OSAKA/spfileosaka.ora" ‐d:DB_UNIQUE_NAME (必須) ‐o:ORACLE_HOME のパス (必須) ‐n:DB_NAME ‐r:データベースロール 今回はフィジカルスタンバイ・データベースのため physical_standby を指定 ‐p:srvctl コマンドで起動した際に使用する spfile のフルパス (任意) 実行例: $ srvctl add instance -d osaka -i osaka1 -n osaka1 $ srvctl add instance -d osaka -i osaka2 -n osaka2 ‐d:DB_UNIQUE_NAME (必須) ‐i:インスタンス名 (必須) ‐n:ノード名 (必須) - 14 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 登録したインスタンスリソースと ASM リソースの間の依存関係を OCR に登録します。 実行例: $ srvctl modify instance -d osaka -i osaka1 -a +ASM1 $ srvctl modify instance -d osaka -i osaka2 -a +ASM2 ‐d:DB_UNIQUE_NAME (必須) ‐i:インスタンス名 (必須) ‐a:ASM インスタンス名 (必須) ASM リソースを有効化し起動させます。 実行例: $srvctl enable asm -n osaka1 -i +ASM1 $srvctl enable asm -n osaka1 -i +ASM1 $srvctl start asm -n osaka1 $srvctl start asm -n osaka2 6.3 管理リカバリモードの開始 フィジカル・スタンバイ・データベースでは MRP プロセス(管理リカバリプロセス)により REDO ログ・ファイルの適用が行われます。スタンバイ・データベースで MRP プロセスを起動 し REDO 適用を開始します SQL> alter database recover managed standby database using current logfile 2 disconnect from session; ・using current logfile: このオプションを付与するとスタンバイ・データベースに転送された REDO レコードはアーカ イブの出力を待つことなく、スタンバイ REDO ログ・ファイルから直接スタンバイ・データベ ースに適用されます。(Oracle Database 10g Release 1 からの新機能:リアルタイム適用) ・disconnect from session: オプションを付与することでバックグラウンドでプロセスが起動されます。 省略した場合はフォアグラウンドで実行されるため実行したプロンプトに制御が返りません。 スタンバイ・データベースで以下の SQL 文を実行することで MRP プロセスが起動している かを確認することが可能です。(MRP プロセスが起動している場合はレコードが返されます。) SQL> select process,pid,status,thread#,sequence# from v$managed_standby 2 where process='MRP0'; 実行例: SQL> select process,pid,status,thread#,sequence# from v$managed_standby 2 where process='MRP0'; - 15 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved PROCESS PID STATUS THREAD# SEQUENCE# -------------- ---------- ------------------------- ---------------- -------------------MRP0 2716.2 APPLYING_LOG 1 40 また、OS コマンドで ora_mrp0_<sid 名> プロセスが起動しているか確認することで MRP プ ロセスの起動を確認することも可能です。スタンバイ・データベースが RAC 環境の場合、MRP プロセスは1ノードでのみ起動します。 管理リカバリモードを停止させる場合は以下の SQL 文を実行します。 SQL> alter database recover managed standby database cancel; 6.4 プライマリ・データベースの構成変更 6.4.1 初期化パラメータの変更 プライマリ・データベースの初期化パラメータのうち Oracle Data Guard 構成に必要なパラ メータの変更を行います。以下はプライマリ・データベースでのパラメータ変更例です。各パラ メータの設定値の詳細はマニュアル「Oracle Database リファレンス 11g リリース 1(11.1)」を ご参照ください。 *.log_archive_config='dg_config=(osaka,tokyo)' *.log_archive_dest_1='location=+ARCH_FLASHBACK VALID_FOR=(all_logfiles,all_roles) DB_UNIQUE_NAME='tokyo' *.log_archive_dest_2='service='osaka' ASYNC VALID_FOR=(online_logfile,primary_role) db_unique_name='osaka' *.db_file_name_convert='+DATA/osaka/datafile/','+DATA/tokyo/datafile', '+DATA/osaka/tempfile/','+DATA/tokyo/tempfile/' *.log_file_name_convert='+REDO1/OSAKA/','+REDO1/TOKYO/', '+REDO2/OSAKA/','+REDO2/TOKYO/' *.fal_server='osaka' *.fal_client='tokyo' *.standby_file_management='AUTO' *.remote_login_passwordfile='EXCLUSIVE' 6.4.2 スタンバイ REDO ログ・ファイルの作成 スタンバイ REDO ログ・ファイルを作成します。今回の環境ではプライマリ・データベースが 2 ノード RAC 構成で各スレッドごとに3つの REDO ロググループが存在し REDO ログ・ファイ ル1つのサイズが 4G であるため以下のような SQL 文を実行することになります。 実行例: SQL> alter database add standby logfile thread 1 group 7 2 ‘+REDO1/standby/st_redo07.log’ size 4G; SQL> alter database add standby logfile thread 1 group 8 2 ‘+REDO1/standby/st_redo08.log’ size 4G; SQL> alter database add standby logfile thread 1 group 9 2 ‘+REDO1/standby/st_redo09.log’ size 4G; SQL> alter database add standby logfile thread 1 group 10 2 ‘+REDO1/standby/st_redo10.log’ size 4G; - 16 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved SQL> alter database add standby logfile thread 2 group 11 2 ‘+REDO2/standby/st_redo11.log’ size 4G; SQL> alter database add standby logfile thread 2 group 12 2 ‘+REDO2/standby/st_redo12.log’ size 4G; SQL> alter database add standby logfile thread 2 group 13 2 ‘+REDO2/standby/st_redo13.log’ size 4G; SQL> alter database add standby logfile thread 2 group 14 2 ‘+REDO2/standby/st_redo14.log’ size 4G; スタンバイ REDO ログ・ファイルの作成は以下の SQL 文のように、ファイル名を指定せずに行 う こ と も 可 能 で す 。 こ の 場 合 は 、 初 期 化 パ ラ メ ー タ db_create_file_dest お よ び db_recovery_file_dest で指定されたディレクトリ以下に自動的に作成されます。 SQL> alter database add standby logfile thread <スレッド番号> group <グループ番号> 2 size <サイズ>; 6.5 REDO 転送・適用確認 プライマリ・データベースでログ・スイッチを実施し、スタンバイ・データベースに正常に転 送されているか確認を行います。 6.5.1 既存のアーカイブ REDO ログ・ファイルの識別 スタンバイ・データベースで v$archived_log を問い合わせ、既存のアーカイブ REDO ログ・ ファイルを識別します。 SQL> select thread#, sequence#,first_time,next_time from v$archived_log; 実行例: SQL> select thread#, sequence#,first_time,next_time from v$archived_log; THREAD# SEQUENCE# FIRST_TIME NEXT_TIME ---------- ---------- ----------------- ----------------1 14 08/03/12 15:39:14 08/03/12 15:39:57 2 14 08/03/12 15:39:40 08/03/12 15:39:58 6.5.2 ログ・スイッチを実行しアーカイブ REDO ログ・ファイルを出力 プライマリ・データベースでログ・スイッチを実施し、現行の REDO ログ・ファイルのアーカ イブ REDO ログ・ファイルを出力させます。 SQL> alter system archive log current; 6.5.3 スタンバイ・データベースでアーカイブ REDO ログ・ファイルの出力確認 スタンバイ・データベースで v$archived_log を問い合わせ、アーカイブ REDO ログ・ファイ - 17 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved ルが転送されたことを確認します。 SQL> select thread#, sequence#,first_time,next_time from v$archived_log; 実行例: SQL> select thread#, sequence#,first_time,next_time from v$archived_log; THREAD# SEQUENCE# FIRST_TIME NEXT_TIME ---------- ---------- ----------------- ----------------1 14 08/03/12 15:39:14 08/03/12 15:39:57 2 14 08/03/12 15:39:40 08/03/12 15:39:58 2 15 08/03/12 15:39:58 08/03/12 15:41:16 1 15 08/03/12 15:39:57 08/03/12 15:41:18 転送されたアーカイブ REDO ログ・ファイルは順に適用されていきます。 6.6 フラッシュバック・データベースの構成 プライマリ・スタンバイ両データベースでフラッシュバック・データベースの設定を有効にし ます。フラッシュバック・データベースの設定は必須ではありませんが、フラッシュバック・デ ータベースの設定を有効にしておくことにより、フェイルオーバー発生後の旧プライマリ・デー タベースを新スタンバイ・データベースとして容易に再構成することが可能です。フラッシュバ ック・データベースの設定を有効にしておくことを推奨します。 (本書では以降で紹介する手順でもフラッシュバック・データベースの機能が有効になっているこ とを前提に説明を行っています。) 現在フラッシュバック・データベースが有効となっているかどうかは以下の SQL 文を実行するこ とで確認することができます。 SQL> select flashback_on from v$database; 実行例: SQL> select flashback_on from v$database; FLASHBACK_ON ------------------------YES 6.6.1 初期化パラメータの設定 以下の2つの初期化パラメータを設定します。 ・db_recovery_file_dest:フラッシュリカバリ領域として使用する領域のフルパス ・db_recovery_file_dest_size:フラッシュリカバリ領域のサイズ (db_recovery_file_dest を設定する前に db_recovery_file_dest_size を設定する必要がありま す。db_recovery_file_dest_size が設定されていない状態で db_recovery_file_dest の設定を行 うとエラーとなり設定ができません。 ) - 18 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 6.6.2 フラッシュバック・データベースの有効化 フラッシュバック・データベースの設定を有効にします。以下の SQL 文を実行することでフラ ッシュバック・データベースを有効化することが可能です。フラッシュバック・データベースを 有効化する際、データベースは mount 状態である必要があります。 SQL> alter database flashback on; (RAC 環境固有手順) RAC 環境の場合はデータベースを mount 状態にするだけではなく、SQL 文を実行するイン スタンス以外のインスタンスを停止させておく必要があります。複数インスタンスが mount され ている状態でフラッシュバック・データベースを有効化しようとすると以下のようにエラーとな ります。 SQL> alter database flashback on; alter database flashback on * ERROR at line 1: ORA-38777: database must not be started in any other instance. またスタンバイ・データベースで実行する場合、管理リカバリモード中はフラッシュバック・ データベースを有効にできないため、管理リカバリモードを停止させる必要があります。管理リ カバリモードが開始している状態でフラッシュバック・データベースを有効化しようとすると以 下のようにエラーとなります。 SQL> alter database flashback on; alter database flashback on * ERROR at line 1: ORA-01153: an incompatible media recovery is active - 19 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 7 リアルタイム・クエリー設定手順 Oracle Database 11g Release 1 よりフィジカル・スタンバイ・データベースを読み取り専用で open させた状態で REDO ログの適用を行うことが可能となりました。この機能をリアルタイム・ クエリーと呼びます。本項では、スタンバイ・データベースが mount されている状況からリアル タイム・クエリーの設定を行う手順を紹介します。 7.1 リアルタイム・クエリー設定手順 7.1.1 管理リカバリモードの停止 スタンバイ・データベースで管理リカバリモードが開始している場合は停止します。 SQL> alter database recover managed standby database cancel; 7.1.2 スタンバイ・データベースを読み取り専用で open スタンバイ・データベースを読み取り専用で open します。RAC 環境で両ノードとも読み取り 専用で起動させたい場合は両インスタンスで実行する必要があります。 SQL> alter database open; 管理リカバリモードが開始している状態では読み取り専用で open した際にエラーとなり、イ ンスタンスを open させることができません。 SQL> alter database open; alter database open * ERROR at line 1: ORA-01154: database busy. Open, close, mount, and dismount not allowed now 7.1.3 管理リカバリモードの開始 読み取り専用で open した状態で管理リカバリモードを開始します。 SQL> alter database recover managed standby database using current logfile 2 disconnect from session; 以下は読み取り専用で open 中に管理リカバリモードを開始した際のスタンバイ・データベー ス側のアラートログの出力例です。 (本書に記載されているアラートログの出力例は初期化パラメータ log_archive_trace=16383 を 指定した状態でのアラートログ出力例となります) スタンバイ・データベースアラートログ出力例: ##SQL 文実行 Mon Jan 21 12:53:34 2008 alter database recover managed standby database using current logfile disconnect from - 20 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved session Attempt to start background Managed Standby Recovery process (osaka1) ##MRP プロセス起動 Mon Jan 21 12:53:34 2008 MRP0 started with pid=42, OS id=3847 MRP0: Background Managed Standby Recovery process started (osaka1) Fast Parallel Media Recovery enabled Mon Jan 21 12:53:39 2008 Managed Standby Recovery starting Real Time Apply Media Recovery Waiting for thread 2 sequence 65 (in transit) Recovery of Online Redo Log: Thread 2 Group 14 Seq 65 Reading mem 0 Mem# 0: +REDO2/osaka/st_redo14.log Media Recovery Waiting for thread 1 sequence 96 (in transit) Recovery of Online Redo Log: Thread 1 Group 10 Seq 96 Reading mem 0 Mem# 0: +REDO1/osaka/st_redo10.log Completed: alter database recover managed standby database using current logfile disconnect from session 7.1.4 設定確認 リアルタイム・クエリーが有効となっているか確認を行います。v$instance を問い合わせ、 status 列が”OPEN”となっていることを確認します。また項番 6.3 と同様の手順で MRP プロセ スが起動していることを確認します。 SQL> select status from v$instance; SQL> select process,pid,status,thread#,sequence# from v$managed_standby 2 where process='MRP0'; 実行例: SQL> select status from v$instance; STATUS -----------OPEN SQL> select process,pid,status,thread#,sequence# from v$managed_standby 2 where process='MRP0'; PROCESS PID STATUS THREAD# SEQUENCE# -------------- ---------- ------------------------- ---------------- -------------------MRP0 2716.2 APPLYING_LOG 1 40 7.1.5 REDO 適用確認 項番 6.5 と同様の手順で REDO 適用確認を実施します。以下はプライマリ・データベースでロ グ・スイッチを実行した際のアラートログの出力例です。 プライマリ・データベース(ノード1)アラートログ出力例: ##ログ・スイッチの実行 Mon Jan 21 13:04:15 2008 Beginning log switch checkpoint up to RBA [0x61.2.10], SCN: 378631178 - 21 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved Thread 1 advanced to log sequence 97 Current log# 2 seq# 97 mem# 0: +REDO1/tokyo/redo02.log ##LNS プロセスによりスタンバイ・データベースへ thread #1 sequence#96 の ##REDO ログ・ファイルの転送が完了する Mon Jan 21 13:04:15 2008 LNS: Completed archiving log 1 thread 1 sequence 96 (tokyo1) LNS: Closing remote archive destination LOG_ARCHIVE_DEST_2: 'standby' (tokyo1) ##アーカイバプロセスによりローカル出力先へ thread #1 sequence#96 のアーカイブログを出力 Mon Jan 21 13:04:15 2008 ARC3: Evaluating archive log 1 thread 1 sequence 96 ARC3: Beginning to archive thread 1 sequence 96 (378625000-378631178) (tokyo1) ARC3: Creating local archive destination LOG_ARCHIVE_DEST_1: '+ARCH_FLASHBACK' (thread 1 sequence 96) (tokyo1) ##LNS プロセスにより thread #1 sequence#97 の REDO ログ・ファイルの ##スタンバイ・データベースへのログ転送が開始される LNS: Creating remote archive destination LOG_ARCHIVE_DEST_2: 'osaka' (thread 1 sequence 97) (tokyo1) LNS: Transmitting activation ID 0x0 LNS: Standby redo logfile selected for thread 1 sequence 97 for destination LOG_ARCHIVE_DEST_2 LNS: Beginning to archive log 2 thread 1 sequence 97 (tokyo1) RAC 環境では各スレッドのアーカイブ REDO ログ情報はそれぞれのノードのアラートログ上に のみ出力されます。以下は同時刻のプライマリ・データベースのノード2(=スレッド2)のアラー トログ出力例です。 プライマリ・データベース(ノード2)アラートログ出力例: ##ログ・スイッチの実行 Mon Jan 21 13:04:17 2008 Beginning log switch checkpoint up to RBA [0x42.2.10], SCN: 378631181 Thread 2 advanced to log sequence 66 Current log# 5 seq# 66 mem# 0: +REDO2/tokyo/redo05.log ##LNS プロセスによりスタンバイ・データベースへ thread #2 sequence#65 の ##REDO ログ・ファイルの転送が完了する Mon Jan 21 13:04:17 2008 LNS: Completed archiving log 4 thread 2 sequence 65 (tokyo2) LNS: Closing remote archive destination LOG_ARCHIVE_DEST_2: 'osaka' (tokyo2) ##アーカイバプロセスによりローカル出力先へ thread #2sequence#65 のアーカイブログを出力 Mon Jan 21 13:04:17 2008 ARC3: Evaluating archive log 4 thread 2 sequence 65 ARC3: Beginning to archive thread 2 sequence 65 (378625003-378631181) (tokyo2) - 22 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved ARC3: Creating local archive destination LOG_ARCHIVE_DEST_1: '+ARCH_FLASHBACK' (thread 2 sequence 65) (tokyo2) ##LNS プロセスにより thread #2 sequence#97 の REDO ログ・ファイルの ##スタンバイ・データベースへのログ転送が開始される LNS: Creating remote archive destination LOG_ARCHIVE_DEST_2: 'osaka' (thread 2 sequence 66) (tokyo2) LNS: Transmitting activation ID 0x0 LNS: Standby redo logfile selected for thread 2 sequence 66 for destination LOG_ARCHIVE_DEST_2 LNS: Beginning to archive log 5 thread 2 sequence 66 (tokyo2) 以下は同時刻のスタンバイ・データベース側で MRP プロセスが起動しているノードでのアラー トログ出力例です。 スタンバイ・データベースアラートログ出力: ## thread #1 sequence#96 の REDO ログ受信が完了 Mon Jan 21 13:04:15 2008 RFS[2]: Completed archive primary log 1 thread 1 sequence 96 (osaka1) ## thread#1 sequence#96 のアーカイブログがローカル出力先へ出力 Mon Jan 21 13:04:15 2008 ARC3: Evaluating archive log 10 thread 1 sequence 96 ARC3: Beginning to archive thread 1 sequence 96 (378625000-378631178) (osaka1) ARC3: Creating local archive destination LOG_ARCHIVE_DEST_1: '+ARCH_FLASHBACK' (thread 1 sequence 96) (osaka1) ## thread #1 sequence#97 の REDO ログ受信開始 RFS[2]: Begin archive primary thread 1 sequence 97 (osaka1) Primary database is in MAXIMUM PERFORMANCE mode RFS[2]: Successfully opened standby log 9: '+REDO1/osaka/st_redo09.log' ## thread #2 sequence#65 の REDO ログ受信が完了 Mon Jan 21 13:04:17 2008 RFS[6]: Completed archive primary log 4 thread 2 sequence 65 (osaka1) ## thread#2 sequence#65 のアーカイブログがローカル出力先へ出力 Mon Jan 21 13:04:17 2008 ARC0: Evaluating archive log 14 thread 2 sequence 65 ARC0: Beginning to archive thread 2 sequence 65 (378625003-378631181) (osaka1) ARC0: Creating local archive destination LOG_ARCHIVE_DEST_1: '+ARCH_FLASHBACK' (thread 2 sequence 65) (osaka1) ## thread #2 sequence#66 の REDO ログ受信開始 RFS[6]: Begin archive primary thread 2 sequence 66 (osaka1) Primary database is in MAXIMUM PERFORMANCE mode RFS[6]: Successfully opened standby log 13: '+REDO2/osaka/st_redo13.log' - 23 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved ## thread #1 sequence#97 の REDO ログ ## thread #2 sequence#66 の REDO ログの適用開始 Media Recovery Waiting for thread 1 sequence 97 (in transit) Recovery of Online Redo Log: Thread 1 Group 9 Seq 97 Reading mem 0 Mem# 0: +REDO1/osaka/st_redo09.log Media Recovery Waiting for thread 2 sequence 66 (in transit) Recovery of Online Redo Log: Thread 2 Group 13 Seq 66 Reading mem 0 Mem# 0: +REDO2/osaka/st_redo13.log 7.2 リアルタイム・クエリー停止手順 リアルタイム・クエリーを停止し再度 mount 状態で REDO 適用を行いたい場合は、一旦スタ ンバイ・データベースを停止してから mount モードで再起動させる必要があります。 7.2.1 管理リカバリモードの停止 管理リカバリモードを停止します。 SQL> alter database recover managed standby database cancel; 7.2.2 データベースの停止 読み取り専用で open している状態から mount 状態へ変更するためには一旦スタンバイ・デー タベースを shutdown させる必要があります。 実行例: $ srvctl stop database –d osaka 7.2.3 データベースを mount で再起動 スタンバイ・データベースを mount モードで再起動させます。 実行例: $ srvctl start database –d osaka –o mount 7.2.4 管理リカバリモードの開始 管理リカバリモードを開始します。 SQL> alter database recover managed standby database using current logfile 2 disconnect from session; - 24 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 8 スナップショット・スタンバイ変更手順 本項ではフィジカル・スタンバイから Oracle Database 11g Release 1 の新機能であるスナッ プショット・スタンバイへの変更手順およびスナップショット・スタンバイからフィジカル・ス タンバイへの変更手順を紹介します。 スナップショット・スタンバイの機能を使用するためにはフラッシュバック・データベースの 機能が有効になっている必要があります。フラッシュバック・データベースの設定については「6.6 フラッシュバック・データベースの構成」を参照してください。 8.1 フィジカル・スタンバイからスナップショット・スタンバイへの 変更手順 8.1.1 管理リカバリモードの停止 フィジカル・スタンバイ・データベースで管理リカバリモードが開始している場合は管理リカ バリモードを停止します。 SQL> alter database recover managed standby database cancel; 8.1.2 スナップショット・スタンバイ・ロールへ変更 フィジカル・スタンバイ・ロールからスナップショット・スタンバイ・ロールへ変更します。 SQL> alter database convert to snapshot standby; (RAC 環境固有手順) RAC 環境の場合スナップショット・スタンバイ・ロールへの変更を実行するインスタンス以外 のインスタンスは停止している必要があります。事前に1インスタンスを除いてインスタンスを 停止してください。 複数インスタンスが起動している状態でスナップショット・スタンバイ・ロールへの変更を実行 するとエラーとなります。 SQL> alter database convert to snapshot standby; 行 1 でエラーが発生しました。: ORA-38777: 他のインスタンスでデータベースを起動しないでください。 以下はスナップショット・スタンバイ・ロールへ変更時のスタンバイ・データベースのアラート ログ出力例となります。 スタンバイ・データベースアラートログ出力例: ##ロール変更実行 Mon Jan 21 15:33:52 2008 alter database convert to snapshot standby ##リストアポイントの作成 Mon Jan 21 15:33:52 2008 - 25 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved Created guaranteed restore point SNAPSHOT_STANDBY_REQUIRED_01/21/2008 15:33:52 tkcrrxms: Killing 4 processes (all RFS) #フィジカル・スタンバイ・データベースのアクティブ化を開始 RESETLOGS after incomplete recovery UNTIL CHANGE 378638462 Resetting resetlogs activation ID 1481216091 (0x5849905b) Online log +REDO1/osaka/redo01.log: Thread 1 Group 1 was previously cleared Online log +REDO1/osaka/redo02.log: Thread 1 Group 2 was previously cleared Online log +REDO1/osaka/redo03.log: Thread 1 Group 3 was previously cleared Online log +REDO2/osaka/redo04.log: Thread 2 Group 4 was previously cleared Online log +REDO2/osaka/redo05.log: Thread 2 Group 5 was previously cleared Online log +REDO2/osaka/redo06.log: Thread 2 Group 6 was previously cleared #ロール変更完了 Standby became primary SCN: 378638460 Mon Jan 21 15:33:54 2008 Setting recovery target incarnation to 89 Converting standby mount to primary mount. ACTIVATE STANDBY: Complete - Database mounted as primary (osaka1) ALTER DATABASE CONVERT TO SNAPSHOT STANDBY: Complete (osaka1) Completed: alter database convert to snapshot standby 8.1.3 データベースの停止 ロール変更実行後は dismount 状態となり、そのままの状態から mount および open すること ができないため、一旦データベースを停止します。 実行例: $ srvctl stop database –d osaka 8.1.4 データベースの起動 データベースを read/write モードでオープンします。 実行例: $ srvctl start database –d osaka –o open 8.1.5 ステータス確認 正常にスナップショット・スタンバイへの変更が完了できているかステータスを確認します。 v$database を問い合わせ database_role 列が”SNAPSHOT STANDBY”となっており、且つ open_mode 列が”READ WRITE”となっていることを確認します。 SQL> select database_role,open_mode from v$database; 実行例: SQL> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE --------------------------------- --------------------- 26 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved SNAPSHOT STANDBY READ WRITE スナップショット・スタンバイ・データベース・ロールで起動したスタンバイ・データベースは、 read/write モードで起動されており、テスト用途等で使用することが可能です。 8.2 スナップショット・スタンバイからフィジカル・スタンバイへの 変更手順 スナップショット・スタンバイからフィジカル・スタンバイ・データベースへ戻す手順を紹介 します。 8.2.1 データベースの停止 スナップショット・スタンバイ・ロールのデータベースが open している場合は停止します。 実行例: $ srvctl stop database –d osaka フィジカル・スタンバイ・ロールへの変更は mount 状態で実行する必要があります。open 状 態で変更を実行しようとするとエラーとなります。 SQL> alter database convert to physical standby; 行 1 でエラーが発生しました。: ORA-01126: データベースはこのインスタンスでマウントし、 どのインスタンスでもオープンしないでください 8.2.2 データベースを mount モードで起動 データベースを mount モードで起動します。RAC 環境の場合は処理を実行する 1 インスタン ス以外は停止させておく必要があります。 実行例: $ srvctl start instance –d osaka –i osaka1 –o mount 8.2.3 フィジカル・スタンバイ・ロールへ変更 スナップショット・スタンバイ・ロールからフィジカル・スタンバイ・ロールへ変更します。 SQL> alter database convert to physical standby; 以下はフィジカル・スタンバイ・データベースへの変更を実施した際のスタンバイ・データベー スのアラートログ出力例となります。 スタンバイ・データベースアラートログ出力: ##ロール変更実行 Mon Jan 21 16:21:11 2008 alter database convert to physical standby - 27 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved ALTER DATABASE CONVERT TO PHYSICAL STANDBY (osaka1) ##フラッシュバック・データベースの実行 Mon Jan 21 16:21:11 2008 Flashback Restore Start Flashback Restore Complete ##リストアポイントの削除 Guaranteed restore point dropped The primary database controlfile was created using the 'MAXLOGFILES 192' clause. There is space for up to 186 standby redo logfiles Use the following SQL commands on the standby database to create standby redo logfiles that match the primary database: ALTER DATABASE ADD STANDBY LOGFILE 'srl1.f' SIZE 0; ALTER DATABASE ADD STANDBY LOGFILE 'srl2.f' SIZE 0; ALTER DATABASE ADD STANDBY LOGFILE 'srl3.f' SIZE 0; ALTER DATABASE ADD STANDBY LOGFILE 'srl4.f' SIZE 0; ALTER DATABASE ADD STANDBY LOGFILE 'srl5.f' SIZE 0; ALTER DATABASE ADD STANDBY LOGFILE 'srl6.f' SIZE 0; ALTER DATABASE ADD STANDBY LOGFILE 'srl7.f' SIZE 0; Setting recovery target incarnation to 88 #ロール変更完了 Completed: alter database convert to physical standby 8.2.4 データベースの停止 ロール変更実行後は dismount 状態となり、そのままの状態から mount および open すること ができないため、一旦データベースを停止します。 実行例: $ srvctl stop database –d osaka 8.2.5 データベースの起動 フィジカル・スタンバイ・ロールでスタンバイ・データベースを起動します。 実行例: $ srvctl start database –d osaka –o mount もしくは $ srvctl start database –d osaka –o open 8.2.6 ステータス確認 項番 8.1.5 と同様に v$database を問い合わせ database_role 列が” PHYSICAL STANDBY”と なっていることを確認します。また項番 8.2.5 にてデータベースを起動している場合は、 open_mode 列が”READ ONLY”となっていることを確認します。 - 28 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved SQL> select database_role,open_mode from v$database; 実行例: SQL> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE -------------------------------- -------------------PHYSICAL STANDBY READ ONLY 8.2.7 管理リカバリモードの開始 管理リカバリモードを開始し、REDO ログの適用を実施することでスナップショット・スタン バイとなっていた間の変更を反映させます。 SQL> alter database recover managed standby database using current logfile 2 disconnect from session; - 29 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 9 スイッチオーバー/スイッチバック 手順 Oracle Data Guard 環境ではスイッチオーバーを実行することで、プライマリ・データベース とスタンバイ・データベースの同期を取り、ロールの変更を行うことが可能です。スイッチオー バーはメンテナンス等の計画停止時に使用します。 本項では一般的なスイッチオーバー、スイッチバックの実行手順を紹介します。 (本項ではプライマリ、スタンバイ両データベース・サーバーでコマンド、SQL 文を実施する必 要があります。またロールの変更も発生するため、実行コマンド、SQL 文に関しては例として使 用している環境の DB_UNIQUE_NAME(=TOKYO or OSAKA)を用いて、どちらのデータベー ス・サーバーで実行すべきコマンド、SQL 文であるかを明示します。スイッチオーバー実行前の 状態は、TOKYO=プライマリ・ロール、OSAKA=スタンバイ・ロールとします。) 9.1 スイッチオーバー手順 スイッチオーバーは以下の流れで実行します。 9.1.1 1 ノードを除いてインスタンスを停止 9.1.2 プライマリ・データベースをフィジカル・スタンバイ・ロールへ変更 9.1.3 旧プライマリ・インスタンスの停止 9.1.4 旧プライマリ・インスタンスの起動 9.1.5 スタンバイ・データベースにてステータス確認 9.1.6 スタンバイ・データベースをプライマリ・ロールへ変更 9.1.7 新プライマリ・データベースのステータス確認 9.1.8 新プライマリ・データベースの open 9.1.9 MRP プロセスの起動 9.1.10 Redo 転送確認 (手順 9.1.3 と 9.1.4 は、手順 9.1.8 の後に行うことも可能です。このようにするとプライマリ・ データベースのダウンタイムを最小化できます) 9.1.1 1 ノードを除いてインスタンスを停止(RAC 固有手順) RAC 環境ではスイッチオーバー実行前にプライマリ・データベース、スタンバイ・データベ ース共に 1 ノードを除いてインスタンスを停止する必要があります。 実行例(TOKYO 側で実行): $ srvctl stop instance –d tokyo –i tokyo2 –o immediate 実行例(OSAKA 側で実行): $ srvctl stop instance –d osaka –i osaka2 –o immediate 9.1.2 プライマリ・データベースをフィジカル・スタンバイ・ロールへ変更 プライマリ・データベースをフィジカル・スタンバイ・ロールへ変更します。 TOKYO 側で実行: SQL> alter database commit to switchover to physical standby with session shutdown; ・with session shutdown: - 30 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved スイッチオーバー実行時にプライマリ・データベースにアクティブなセッションが残っていた 場合、そのセッションを切断しロール変更処理を継続させます。with session shutdown の 指定なしで実行時にアクティブなセッションが残っていた場合、アクティブなセッションが なくなるまでロール変更処理が待機されます。 (RAC 環境下では CRS からの状態監視に使用されている racgimon のセッションが常に存在 しているため with session shutdown なしで実行するとロール変更が待機状態となりロール 変更処理が完了しません。racgimon は停止することができないため、RAC 環境下で スイッチオーバーを実行する際は with session shutdown オプションが必須となります) 以下はプライマリ・データベースでフィジカル・スタンバイ・ロールへの変更を実行した際のア ラートログの出力例です。 TOKYO(プライマリ)側のアラートログ出力例: ##SQL 文の実行 Mon Jan 21 18:23:24 2008 alter database commit to switchover to physical standby with session shutdown ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY (tokyo1) ・・省略・・ ##アクティブセッションの切断(with session shutdown オプションによる動作) Active process 21164 user 'oracle' program 'oracle@tokyo1 (TNS V1-V3)' Active process 18190 user 'oracle' program 'oracle@tokyo1 (TNS V1-V3)' Active process 8694 user 'oracle' program 'oracle@tokyo1 (TNS V1-V3)' Active process 8590 user 'oracle' program 'oracle@tokyo1 (TNS V1-V3)' CLOSE: all sessions shutdown successfully. ・・省略・・ ## sequence#114 のアーカイブ REDO ログ・ファイルに End-Of-Redo マーカーをつけて出力 ## スタンバイ・データベースへ送信 Thread 1 closed at log sequence 114 Successful close of redo thread 1 ARCH: Noswitch archival of thread 1, sequence 114 ARCH: End-Of-Redo Branch archival of thread 1 sequence 114 ARCH: Evaluating archive log 2 thread 1 sequence 114 ARCH: Beginning to archive thread 1 sequence 114 (378669124-Infinity) (tokyo1) ARCH: Creating remote archive destination LOG_ARCHIVE_DEST_2: 'osaka' (thread 1 sequence 114) (tokyo1) ARCH: Transmitting activation ID 0x5856024d OCISessionBegin with PasswordVerifierSYS succeeded Client pid [31825] attached to RFS pid [19164] at remote instance number [1] at dest 'osaka' ARCH: Creating local archive destination LOG_ARCHIVE_DEST_1: '+ARCH_FLASHBACK' (thread 1 sequence 114) ・・省略・・ ##プライマリ・データベースで MRP プロセスが起動しリカバリが実行される Mon Jan 21 18:23:57 2008 MRP0 started with pid=29, OS id=1825 - 31 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved MRP0: Background Managed Standby Recovery process started (tokyo1) Fast Parallel Media Recovery NOT enabled Mon Jan 21 18:24:02 2008 Managed Standby Recovery not using Real Time Apply ・・省略・・ ##MRP プロセスが停止しスイッチオーバーが完了 Media Recovery End-Of-Redo indicator encountered Media Recovery Applied until change 378669139 MRP0: Media Recovery Complete: End-Of-REDO (tokyo1) MRP0: Background Media Recovery process shutdown (tokyo1) Mon Jan 21 18:24:03 2008 Switchover: Complete - Database shutdown required (tokyo1) Completed: alter database commit to switchover to physical standby with session shutdown 以下は同じタイミングでスタンバイ・データベースのアラートログ出力例です。 OSAKA(スタンバイ)側のアラートログ出力例: ##End-Of-Redo マーカーのついた sequence#114 のアーカイブ REDO ログ・ファイルを受信 Mon Jan 21 18:23:54 2008 Redo Shipping Client Connected as PUBLIC -- Connected User is Valid RFS[9]: Assigned to RFS process 19164 RFS[9]: Identified database type as 'physical standby' RFS[9]: End-Of-Redo archival of thread 1 sequence 114 RFS[9]: Begin archive primary thread 1 sequence 114 (osaka1) RFS[9]: Completed archive primary log 2 thread 1 sequence 114 (osaka1) ・・省略・・ ##End-Of-Redo マーカーのついたアーカイブ REDO ログ・ファイルを適用し MRP プロセスが 停止 Identified End-Of-Redo for thread 1 sequence 114 Resetting standby activation ID 1482031693 (0x5856024d) Media Recovery End-Of-Redo indicator encountered Media Recovery Applied until change 378669139 MRP0: Media Recovery Complete: End-Of-REDO (osaka1) MRP0: Background Media Recovery process shutdown (osaka1) 9.1.3 旧プライマリインスタンスの停止 旧プライマリ・データベースでのロール変更完了後、インスタンスは nomount 状態となって おりそのまま mount および open することができないため、インスタンスを停止します。 実行例(TOKYO 側で実行): $ srvctl stop database –d tokyo 9.1.4 旧プライマリインスタンスの起動 - 32 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 旧プライマリ・データベースを起動します。(mount もしくは open) 実行例(TOKYO 側で実行): $ srvctl start database -d tokyo -o mount もしくは $ srvctl start database -d tokyo -o open 9.1.5 スタンバイ・データベースにてステータス確認 スタンバイ・データベースでスイッチオーバーが可能な状態であることを確認します。下記 SQL 文を実行した結果、switchover_status が“TO PRIMARY”と出力されていればスイッチ オーバー可能です。 OSAKA 側で実行: SQL> select switchover_status from v$database; 実行例: SQL> select switchover_status from v$database; SWITCHOVER_STATUS ---------------------------------TO PRIMARY スタンバイ・データベースで管理リカバリモードが開始されていない等、未適用の REDO ログ がある場合は、switchover_status が”TO PRIMARY”以外の出力となります。この場合は全ての REDO ログの適用が完了するまでスイッチオーバーを実行できません。未適用の REDO がある 場合は管理リカバリモードを開始し適用を行う必要があります。 (以下は未適用の REDO ログがある場合の switchover_status の出力の一例です) SQL> select switchover_status from v$database; SWITCHOVER_STATUS ------------------------------------SWITCHOVER PENDING SQL> alter database recover managed standby database disconnect from session; 9.1.6 スタンバイ・データベースをプライマリ・ロールへ変更 フィジカル・スタンバイ・データベースをプライマリ・ロールへ変更します。 OSAKA 側で実行: SQL> alter database commit to switchover to primary; 以下はプライマリ・ロールへロール変更を実施した際のスタンバイ・データベース側のアラート ログの出力例となります。 - 33 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved OSAKA(スタンバイ)側のアラートログ出力例: ##SQL 文実行 Mon Jan 21 18:28:28 2008 alter database commit to switchover to primary ALTER DATABASE SWITCHOVER TO PRIMARY (osaka1) ・・省略・・ ##フィジカル・スタンバイ・データベースのアクティブ化を開始 Online log +REDO1/osaka/redo01.log: Thread 1 Group 1 was previously cleared Online log +REDO1/osaka/redo02.log: Thread 1 Group 2 was previously cleared Online log +REDO1/osaka/redo03.log: Thread 1 Group 3 was previously cleared Online log +REDO2/osaka/redo04.log: Thread 2 Group 4 was previously cleared Online log +REDO2/osaka/redo05.log: Thread 2 Group 5 was previously cleared Online log +REDO2/osaka/redo06.log: Thread 2 Group 6 was previously cleared ##スイッチオーバーの完了 Standby became primary SCN: 378669137 Converting standby mount to primary mount. Switchover: Complete - Database mounted as primary (osaka1) Completed: alter database commit to switchover to primary 9.1.7 新プライマリ・データベースのステータス確認 新プライマリ・データベースのステータスを確認します。下記 SQL 文を実行し、新プライマリ・ データベースのロールが”PRIMARY”となっていることを確認します。 OSAKA 側で実行: SQL> select database_role from v$database; 実行例: SQL> select database_role from v$database; DATABASE_ROLE --------------------------PRIMARY 9.1.8 新プライマリ・データベースの open ロール変更実施後はインスタンスが mount 状態となっているため、open させる必要がありま す。 OSAKA 側で実行: SQL> alter database open; 9.1.9 管理リカバリモードの開始 新スタンバイ・データベースにて管理リカバリモードを開始し REDO 適用を開始します。 TOKYO 側で実行: - 34 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved SQL> alter database recover managed standby database using current logfile 2 disconnect from session; 以下は管理リカバリモードを開始した際の新スタンバイ・データベースでのアラートログ出力例 となります。 TOKYO(新スタンバイ)側のアラートログ出力: ##SQL 文実行 Mon Jan 21 18:34:35 2008 alter database recover managed standby database using current logfile disconnect Attempt to start background Managed Standby Recovery process (tokyo1) ##MRP プロセスの起動 Mon Jan 21 18:34:35 2008 MRP0 started with pid=41, OS id=7929 MRP0: Background Managed Standby Recovery process started (tokyo1) Fast Parallel Media Recovery enabled Mon Jan 21 18:34:40 2008 Managed Standby Recovery starting Real Time Apply ・・省略・・ ##REDO ログ・ファイルのクリア処理を実施 ##全ての REDO ログ・ファイルの数だけ実施されます Clearing online redo logfile 1 +REDO1/tokyo/redo01.log Clearing online log 1 of thread 1 sequence number 113 Mon Jan 21 18:35:55 2008 Clearing online redo logfile 1 complete ・・省略・・ ##全ての REDO ログ・ファイルのクリア処理が終了後 MRP プロセスによる ##REDO 適用が開始される Mon Jan 21 18:49:51 2008 Media Recovery Log +ARCH_FLASHBACK/tokyo/archivelog/2008_01_21/ thread_1_seq_116.1702.644611783 Media Recovery Log +ARCH_FLASHBACK/tokyo/archivelog/2008_01_21/ thread_2_seq_79.1705.644610819 Media Recovery Log +ARCH_FLASHBACK/tokyo/archivelog/2008_01_21/ thread_2_seq_80.1703.644611779 Media Recovery Waiting for thread 2 sequence 81 (in transit) Recovery of Online Redo Log: Thread 2 Group 13 Seq 81 Reading mem 0 Mem# 0: +REDO2/tokyo/st_redo13.log Media Recovery Waiting for thread 1 sequence 117 (in transit) Recovery of Online Redo Log: Thread 1 Group 10 Seq 117 Reading mem 0 Mem# 0: +REDO1/tokyo/st_redo10.log 9.1.10 Redo 転送確認 項番 6.5 と同様の手順を実施し REDO ログ・ファイルがスタンバイ・データベースへ正常に 転送、適用されていることを確認し、Oracle Data Guard 構成が正常な状態であることを確認し ます。 - 35 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 9.2 スイッチバック手順 スイッチバックとはスイッチオーバーを実行して変更したロールを元に戻す操作を指します。 スイッチオーバーと同様の手順でロールの変更を行います。スイッチオーバー実行時とはロール が入れ替わっている点を注意して実行してください。 - 36 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 10 フェイルオーバー/フェイルバック 手順 プライマリ・データベースに障害が発生した場合 Oracle Data Guard 環境ではプライマリ・デ ータベースを切り離し、スタンバイ・データベースを新たなプライマリ・データベースとするこ とができます。 本項では一般的なフェイルオーバー、フェイルバックの実行手順を紹介します。 (本項ではプライマリ、スタンバイ両データベースでコマンド、SQL 文を実施する必要がありま す。またロールの変更も発生するため、実行コマンド、SQL 文に関しては例として使用している 環境の DB_UNIQUE_NAME(=TOKYO or OSAKA)を用いて、どちらのデータベースで実行すべ きコマンド、SQL 文であるかを明示します。フェイルオーバー実行前の状態は、TOKYO=プラ イマリ・ロール、OSAKA=スタンバイ・ロールとします。) 10.1 フェイルオーバー手順 フェイルオーバーは以下の流れで実行します。 10.1.1 10.1.2 10.1.3 10.1.4 10.1.5 10.1.6 10.1.7 10.1.8 アーカイブ REDO ログ・ファイルの GAP 確認 欠落しているアーカイブ REDO ログ・ファイルのコピー アーカイブ REDO ログ・ファイルの登録 REDO 適用と管理リカバリの停止 1 ノードを除いてインスタンスを停止 スタンバイ・データベースをプライマリ・データベースへ変更 新プライマリ・データベースのステータス確認 新プライマリ・データベースの open 10.1.1 アーカイブ REDO ログ・ファイルの GAP 確認 スタンバイ・データベースで下記 SQL を実行しアーカイブ REDO ログ・ファイルの GAP が 存在するかを確認します。GAP が存在しない場合は項番 10.1.4 の手順へ進みます。 OSAKA 側で実行: SQL>select thread#,low_sequence#,high_sequence# from v$archive_gap; 10.1.2 欠落しているアーカイブ REDO ログ・ファイルのコピー スタンバイ・データベースで欠落しているアーカイブ REDO ログ・ファイルをプライマリ・デ ータベースからコピーします。 10.1.3 アーカイブ REDO ログ・ファイルの登録 欠落しているアーカイブ REDO ログ・ファイルをスタンバイ・データベース上で登録する必要 があります。 OSAKA 側で実行: SQL> alter database register physical logfile ‘<アーカイブ REDO ログ・ファイル名>’; 項番 10.1.1 から項番 10.1.3 の手順をアーカイブ REDO ログ・ファイルの GAP が存在しなくな るまで繰り返し実行します。 - 37 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 10.1.4 REDO 適用と管理リカバリモードの停止 現在スタンバイ・データベースで受信している REDO ログ・ファイルを全て適用し管理リカバ リモードを停止します。この操作を行うと受信できていない REDO ログ・ファイルに含まれる更 新データの損失が発生します。 OSAKA 側で実行: SQL> alter database recover managed standby database finish force; ・force: force オプションを付与することでスタンバイ・データベース上のアクティブな RFS プロセ スを終了します。force オプションは Oracle Database 10g Release 2 での追加機能ですが、 Oracle Database 11g Release 1 では省略可能です。 以下は上記 SQL 文を実行した際のスタンバイ・データベースのアラートログ出力例となります。 OSAKA(スタンバイ)側のアラートログ出力例: ##SQL 文実行 alter database recover managed standby database finish force Terminal Recovery: Stopping real time apply ・・省略・・ ## thread#2 sequence#4 のアーカイブ REDO ログ・ファイルと thread#1 sequence#7 の ## アーカイブ REDO ログ・ファイルに End-Of-Redo マーカーをつけ、その時点までの ## リカバリを実行 Media Recovery Start: Managed Standby Recovery (osaka1) Fast Parallel Media Recovery enabled Tue Oct 30 17:03:52 2007 Managed Standby Recovery not using Real Time Apply parallel recovery started with 3 processes Terminal Recovery timestamp is '10/30/2007 17:03:54' Terminal Recovery: applying standby redo logs. Terminal Recovery: thread 2 seq# 4 redo required Terminal Recovery: Recovery of Online Redo Log: Thread 2 Group 14 Seq 4 Reading mem 0 Mem# 0: +REDO2/osaka/st_redo14.log Identified End-Of-Redo for thread 2 sequence 4 Terminal Recovery: thread 1 seq# 7 redo required Terminal Recovery: Recovery of Online Redo Log: Thread 1 Group 10 Seq 7 Reading mem 0 Mem# 0: +REDO1/osaka/st_redo10.log Identified End-Of-Redo for thread 1 sequence 7 Incomplete recovery applied all redo ever generated. Recovery completed through change 94726893 time 10/30/2007 16:55:14 Media Recovery Complete (osaka1) Terminal recovery recovered to last consistent point in redo stream But it did not apply all redo; some data may be lost Terminal Recovery: successful completion Resetting standby activation ID 1474839234 (0x57e842c2) - 38 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 10.1.5 1 ノードを除いてインスタンスを停止(RAC 環境固有手順) RAC 環境ではフェイルオーバー実行前に 1 ノードを除いてインスタンスを停止する必要があ ります。 実行例(OSAKA 側で実行): $ srvctl stop instance –d osaka –i osaka2 –o immediate 10.1.6 スタンバイ・データベースをプライマリ・データベースへ変更 スタンバイ・データベースをプライマリ・データベースへと変更します。 OSAKA 側で実行: SQL> alter database commit to switchover to primary; 以下はプライマリ・ロールへロール変更を実行した際のスタンバイ・データベースのアラートロ グ出力例となります。 OSAKA(スタンバイ)側のアラートログ出力例: ##SQL 文実行 Tue Oct 30 17:13:33 2007 alter database commit to switchover to primary ALTER DATABASE SWITCHOVER TO PRIMARY (osaka1) Maximum wait for role transition is 15 minutes. ・・省略・・ ##フィジカル・スタンバイ・データベースのアクティブ化を開始 RESETLOGS after complete recovery through change 94726893 Online log +REDO1/osaka/redo01.log: Thread 1 Group 1 was previously cleared Online log +REDO1/osaka/redo02.log: Thread 1 Group 2 was previously cleared Online log +REDO1/osaka/redo03.log: Thread 1 Group 3 was previously cleared Online log +REDO2/osaka/redo04.log: Thread 2 Group 4 was previously cleared Online log +REDO2/osaka/redo05.log: Thread 2 Group 5 was previously cleared Online log +REDO2/osaka/redo06.log: Thread 2 Group 6 was previously cleared Standby became primary SCN: 94726871 ##ロール変更完了 Tue Oct 30 17:13:39 2007 Setting recovery target incarnation to 21 Converting standby mount to primary mount. Switchover: Complete - Database mounted as primary (osaka1) Completed: alter database commit to switchover to primary 10.1.7 新プライマリ・データベースのステータス確認 新プライマリ・データベースのステータスを確認します。下記 SQL 文を実行し、新プライマリ・ データベースのロールが”PRIMARY”となっていることを確認します。 OSAKA 側で実行: - 39 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved SQL> select database_role from v$database; 実行例: SQL> select database_role from v$database; DATABASE_ROLE --------------------------PRIMARY 10.1.8 新プライマリ・データベースの open 新しいプライマリ・データベースを open します。フェイルオーバー実施後はインスタンスが mount 状態となっているため、open させる必要があります。また RAC 環境の場合、停止してい た他のインスタンスも起動させます。 実行例(OSAKA 側で実行): SQL> alter database open; $ srvctl start instance -d osaka -i osaka2 -o open 10.2 フェイルバック手順 フェイルオーバー実行後は、新プライマリ・データベースに対するスタンバイ・データベース が存在しない状態となっているため、ロールを元の状態に戻すためには旧プライマリ・データベ ースを復旧後、再度同期が取れた Oracle Data Guard 構成を構築する必要があります。旧プラ イマリ・データベースを復旧する手段は、旧プライマリ・データベースの障害の状況やバックア ップの有無等により影響されるため、状況に応じて手順を選択する必要があります。 新プライマリ・データベースが正常に動作している状況であれば、構築時と同様の手順を用い て新プライマリ・データベースからフィジカル・スタンバイ・データベースを作成し、Oracle Data Guard 構成を構築することが可能です。 今回は以下の条件を満たしている状況での旧プライマリ・データベースの復旧手順を紹介しま す。 (1) 旧プライマリ・データベースが正常に mount 可能である (2) 旧スタンバイ・データベースと通信可能である (3) フラッシュバック・データベース機能が有効となっている 10.2.1 新プライマリ・データベースがプライマリ・ロールになった SCN の確認 新プライマリ・データベースでスイッチオーバーを実行しプライマリ・ロールに変更された SCN を確認します。 OSAKA 側で実行: SQL> select to_char(standby_became_primary_scn) from v$database; 実行例: SQL> select to_char(standby_became_primary_scn) from v$database; - 40 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved TO_CHAR(STANDBY_BECAME_PRIMARY_SCN) -----------------------------------------------------------------------7257191 10.2.2 旧プライマリ・データベースの起動 旧プライマリ・データベースを mount モードで起動します。 RAC 環境の場合後続の処理を実施する際は 1 ノードを除いて停止している必要があるため、1 ノ ードのみ起動させます。 実行例(TOKYO 側で実行): $ srvctl start instance -d tokyo -i tokyo1 -o mount 10.2.3 旧プライマリ・データベースでフラッシュバック・データベースを実行 旧プライマリ・データベースでフラッシュバック・データベースを実行します。フラッシュバ ックするポイントには 10.2.1 で確認した SCN を指定します。 TOKYO 側で実行: SQL> flashback database to scn <ロール変更時の SCN>; 実行例: SQL> flashback database to scn 7257191; 10.2.4 プライマリ・ロールからフィジカル・スタンバイ・ロールへ変更 旧プライマリ・データベースをプライマリ・ロールからフィジカル・スタンバイ・ロールへ変 更します。 TOKYO 側で実行: SQL> alter database convert to physical standby; 10.2.5 旧プライマリ・データベースの停止 フィジカル・スタンバイ・ロールへのロール変更の実行が完了後、インスタンスは nomount 状 態となっています。そのまま mount および open することができないため、インスタンスを停止 します。 実行例(TOKYO 側で実行): $ srvctl stop database -d tokyo 10.2.6 旧プライマリ・データベースの起動 旧プライマリ・データベースを起動します。(mount もしくは open) 実行例(TOKYO 側で実行): $ srvctl start database -d tokyo -o mount - 41 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved もしくは $ srvctl start database -d tokyo -o open 10.2.7 管理リカバリモードの開始 新スタンバイ・データベースにて管理リカバリモードを開始し REDO 適用を開始します。 TOKYO 側で実行: SQL> alter database recover managed standby database using current logfile 2 through last switchover disconnect from session; ・through last swithover: フェイルオーバー後、新スタンバイ・データベースにて MRP を初めて起動した際、上記 オプションを付与せずコマンドを実行すると、フェイルオーバー時の End-Of-Redo マーカー がつけられた REDO ログを適用した時点で MRP プロセスが停止します。REDO ログ適用を 継続するには、再度 MRP プロセスを起動する必要があります。 through last switchover オプションを付与することで この工程を短縮することが可能にな り、End-Of-Redo マーカーがつけられた REDO ログを適用後も MRP プロセスが起動した 状態となります。 10.2.8 REDO 転送確認 項番 6.5 と同様の手順を実施し REDO ログ・ファイルがスタンバイ・データベースへ正常に 転送、適用されていることを確認し、Oracle Data Guard 構成が正常な状態であることを確認し ます。 10.2.9 スイッチオーバーの実行 必要に応じて項番 9 と同様の手順でスイッチオーバーを実行しロールの変更を行います。 - 42 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 11 Data Guard Broker の構成 Oracle Database 11g Release 1 ではファスト・スタート・フェイルオーバー(FSFO) の機能 も強化されました。本項ではファスト・スタート・フェイルオーバーを設定するために必要な Data Guard Broker の構成手順、ファスト・スタート・フェイルオーバーの設定手順、Data Guard Broker を使用した基本的な操作方法を紹介します。尚、本項では Data Guard Broker の構成管 理を行う手段としてコマンドラインインターフェイス(DGMGRL)を使用した手順を紹介します。 Oracle Data Guard 構成は前項までで使用していた環境をそのまま使用することを前提としてい ます。 11.1 Data Guard Broker の構成手順 ファスト・スタート・フェイルオーバーを使用するためには、プライマリ・データベース、ス タンバイ・データベースを管理するオブザーバを起動させる必要があります。オブザーバはプラ イマリ・データベース・サーバーおよびスタンバイ・データベース・サーバーとは別のマシンに て動作させることが推奨されます。本書では、プライマリ・データベース・サーバー、スタンバ イ・データベース・サーバーとは別に監視用のマシンを用意し、オブザーバを起動させ Oracle Data Guard 構成の監視をさせます。(以降の手順では監視用に用意したマシンをオブザーバマシ ンと呼ぶことします。) 11.1.1 Oracle Client のインストール コマンドラインインターフェイス(以下 DGMGRL)を使用するために、オブザーバマシンに Oracle Client ソフトウェアをインストールします。Oracle Universal Installer を起動し、イン ストールタイプの「Administrator」オプションを選択して Oracle Client ソフトウェアをインス トールします。インストール後 DGMGRL が使用可能となります。 11.1.2 初期化パラメータの設定 Oracle Data Guard 環境にて Broker の構成に必要な初期化パラメータを設定します。 Data Guard Broker を使用するためにはプライマリ、スタンバイの各データベースで spfile を使 用している必要があります。spfile ではなく pfile を指定している場合は項番 6.2.5 の流れを参考 に spfile を作成してください。 Broker の構成に必要な初期化パラメータは以下の通りです。 (1)DG_BROKER_CONFIG_FILE1 (2)DG_BROKER_CONFIG_FILE2 Data Guard Broker 構成ファイルの格納先を指定します。このパラメータを設定後 Broker の 初回起動時に指定したパスに Data Guard Broker 構成ファイルが作成されます。パラメータの指 定には以下の注意事項があります。 ・このパラメータは初期化パラメータ DG_BROKER_START が FALSE に設定されている 場合のみ設定、変更することが可能です。DG_BROKER_START が TRUE となっている 場合は、先に DG_BROKER_START の値を FALSE に変更する必要があります。 ・RAC 環境の場合、各インスタンスで同一の値に設定する必要があります。 ・RAC 環境の場合、Broker の構成ファイルは全てのインスタンスからアクセス可能な場所に - 43 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 配置する必要があります。 DG_BROKER_CONFIG_FILE1、DG_BROKER_CONFIG_FILE2 は alter system 文で変更可 能です。DG_BROKER_START が TRUE となっている場合は FALSE に変更後、パラメータの 変更を実施します。 両データベースにて実行: SQL> alter system set dg_broker_start=false; SQL> alter system set dg_broker_config_file1=<構成ファイルパス>; SQL> alter system set dg_broker_config_file2=<構成ファイルパス>; 実行例(プライマリ・データベースで実行): SQL>alter system set dg_broker_config_file1='+DATA/TOKYO/dgtokyo1.dat'; SQL>alter system set dg_broker_config_file2='+DATA/TOKYO/dgtokyo2.dat'; 実行例(スタンバイ・データベースで実行): SQL>alter system set dg_broker_config_file1='+DATA/OSAKA/dgosaka1.dat'; SQL>alter system set dg_broker_config_file2='+DATA/OSAKA/dgosaka2.dat'; (3)DG_BROKER_START Data Guard Broker の起動、停止を指定します。DG_BROKER_START=TRUE を指定すると Data Guard Broker が起動します。(指定したインスタンスで DMON プロセスが起動します) DG_BROKER_START は alter system 文で設定可能です。(1)、(2)の値を設定後、このパラメー タを TRUE に設定し Data Guard Broker を起動します。 両データベースで実行: SQL> alter system set dg_broker_start=true; 11.1.3 リスナーの設定 DGMGRL で操作中にオブザーバマシンからインスタンスを再起動できるようにするために、 プライマリ、スタンバイの各インスタンスのローカル・リスナーにサービスの静的構成を登録す る 必 要 が あ り ま す 。 各 イ ン ス タ ン ス の listene.ora の GLOBAL_DBNAME 属 性 の 値 を 、 dg_unique_name_DGMGRL.db_domain の形式とした値に設定します。この設定は全てのノー ドで実行する必要があります。 SID_LIST_LISTENER= (SID_LIST = (SID_DESC= (SID_NAME=<sid 名>) (GLOBAL_DBNAME=<db_unique_name>_DGMGRL.<db_domain>) (ORACLE_HOME=<ORACLE_HOME パス>) ) ) - 44 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved listener.ora 設定例: SID_LIST_LISTENER_TOKYO1= (SID_LIST= (SID_DESC= (SID_NAME=tokyo1) (GLOBAL_DBNAME=tokyo_DGMGRL) (ORACLE_HOME=/oracle/db/product/11.1.0/db_1) ) ) 11.1.4 オブザーバマシンのネットワーク設定 オブザーバマシンからプライマリ、スタンバイ両データベースに OracleNet 経由で接続できる 必要があります。オブザーバマシンで Oracle Net 接続の設定を行います。各データベースへの接 続情報は項番 6.2.2 で設定した接続情報を使用します。 tnsnames.ora 設定例: TOKYO = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = tokyo1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = tokyo2-vip)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = tokyo) ) ) OSAKA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = osaka1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = osaka2-vip)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = osaka) ) ) 12.1.5 DGMGRL の起動、接続 オブザーバマシンにて DGMGRL を起動します。オブザーバマシンにて dgmgrl と入力するこ とで DGMGRL が起動されます。DGMGRL 起動後はプライマリ・データベースへ接続を行いま す。 (1) DGMGRL の起動 $dgmgrl - 45 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 実行例: $dgmgrl DGMGRL for Linux: Version 11.1.0.6.0 - Production Copyright (c) 2000, 2005, Oracle. All rights reserved. DGMGRL へようこそ。詳細は"help"と入力してください。 DGMGRL> (2) プライマリ・データベースへ接続 DGMGRL> connect sys/<password>@<プライマリへの接続情報> 実行例: DGMGRL> connect sys/oracle@tokyo 接続されました。 DGMGRL> 11.1.6 Data Guard Broker 構成の作成 Data Guard Broker では管理する対象のデータベースを Data Guard Broker 構成と呼ばれる 単位で管理します。Data Guard Broker を起動した初期の状態では Broker 構成が存在しないた め、Broker 構成を作成します。本書では ‘hitachi’という名称の Broker 構成を作成します。 Broker 構成を作成するためには、プライマリ・データベースへ接続した状態で DGMGRL より create configuration コマンドを実行します。 DGMGRL> create configuration ‘<Broker 構成名>’ as primary database is > ‘<プライマリ・データベースの DB_UNIQUE_NAME>’ > connect identifier is <プライマリ・データベースへの接続情報>; 実行例: DGMGRL> create configuration 'hitachi' as primary database is 'tokyo' > connect identifier is tokyo; 構成"hitachi"が、プライマリ・データベース"tokyo"で作成されました 作成した Broker 構成情報は show configuration コマンドで確認可能です。Broker 構成が完了 後、show configuration コマンドで作成した Broker 構成が表示されることを確認してください。 DGMGRL> show configuration; 実行例: DGMGRL> show configuration; Configuration Name: Enabled: Protection Mode: hitachi NO MaxPerformance - 46 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved Databases: tokyo - Primary database Fast-Start Failover: DISABLED "hitachi"の現在のステータス: DISABLED 11.1.7 Broker 構成へのスタンバイ・データベースの追加 作成した Broker 構成へスタンバイ・データベースの情報を追加します。DGMGRL より add database コマンドを実行し、スタンバイ・データベースを追加します。 DGMGRL>add database ‘<スタンバイ・データベースの DB_UNIQUE_NAME>’ > connect identifier is <スタンバイ・データベースへの接続情報>; 実行例: DGMGRL> add database 'osaka' as connect identifier is osaka maintained as physical; データベース"osaka"が追加されました コマンド実行後、show configuration コマンドを使用して Broker 構成にスタンバイ・データ ベースが追加されていることを確認します。 実行例: DGMGRL> show configuration; Configuration Name: hitachi Enabled: NO Protection Mode: MaxPerformance Databases: tokyo - Primary database osaka - Physical standby database => スタンバイ・データベースが追加されている Fast-Start Failover: DISABLED "hitachi"の現在のステータス: DISABLED 11.1.8 Broker 構成の有効化 Broker 構成は作成した直後は無効な状態となっているため明示的に有効化する必要がありま す。DGMGRL より enable configuration コマンドを使用して Broker 構成を有効にします。 DGMGRL> enable configuration; 実行例: DGMGRL> enable configuration; 有効になりました。 - 47 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved コマンド実行後、show configuration コマンドを使用して Broker 構成が有効な状態となってい るか確認します。show configuration を実行して表示される情報内の Configuration の Enable の 部分が「YES」と表示されていること及び Broker 構成のステータスが「SUCCESS」と表示される ことを確認します。 実行例: DGMGRL> show configuration; Configuration Name: hitachi Enabled: YES => 「YES」と表示されている Protection Mode: MaxPerformance Databases: tokyo - Primary database osaka - Physical standby database Fast-Start Failover: DISABLED "hitachi"の現在のステータス: SUCCESS => 「SUCCESS」と表示されている 以上で Broker 構成の作成は完了です。Broker 構成の作成完了後は DGMGRL から Broker 構成 の設定変更やスイッチオーバー等の処理を実行することが可能です。 11.2 ファスト・スタート・フェイルオーバーの設定手順 ファスト・スタート・フェイルオーバーの設定を行うことで、プライマリ・データベースの障 害時に Data Guard Broker により、事前に選択したスタンバイ・データベースへ自動的にフェイ ルオーバーを実行することできます。本項ではファスト・スタート・フェイルオーバーの設定手 順を紹介します。 11.2.1 事前設定 ファスト・スタート・フェイルオーバーを使用するためには以下の条件を満たしている必要が あります。 1) Broker 構成が最大可用性モードまたは最大パフォーマンスモードで動作している 本書で構成している環境は最大パフォーマンスモードで稼動しています。本書と同一の手順、 設定で構成を実施した場合は上記条件は満たした状態で構成されています。 (最大可用性モードで動作させる場合の設定は、以下マニュアルを参照ください。 Oracle Data Guard 概要および管理 11g リリース 1 Oracle Data Guard Broker 11g リリース 1) 2)ファスト・スタート・フェイルオーバーのターゲットに選択したスタンバイ・データベース の LogXptMode の設定が保護モードに適した値(SYNC、ASYNC)に設定されており、プライ マリ・データベースにスタンバイ REDO ログ・ファイルが構成されている 本書で構成している環境は最大パフォーマンスモード、ASYNC で稼動しています。本書と 同一の手順、設定で構成した場合は上記条件は満たした状態で構成されています。 - 48 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved (異なる構成での設定変更手順等はマニュアルを参照ください) 3) プライマリ、スタンバイ両データベースでフラッシュバック・データベースが有効化されて おり、フラッシュ・リカバリ領域が設定されている 設定されていない場合は項番 6.6 を参照し設定を行ってください。 4) オブザーバマシンで DGMGRL が起動可能であり、プライマリ・スタンバイ両データベース に接続可能である 設定されていない場合は項番 11.1.1、11.1.4 を参照し設定を行ってください。 5) プライマリ、スタンバイ両データベース・サーバーのリスナーでサービスの静的構成を登録 し、オブザーバマシンより再起動が可能となっている 設定されていない場合は項番 11.1.3 を参照し設定を行ってください。 11.2.2 ファスト・スタート・フェイルオーバー先の登録 Broker 構成内に含まれるスタンバイ・データベースの中からフェイルオーバー先を選択し、タ ーゲットデータベースとして登録します。フェイルオーバー先の登録は DGMGRL より edit database コマンドを使用して実行することが可能です。 DGMGRL> edit database <プライマリ・データベースの DB_UNIQUE_NAME> > set property faststartfailovertarget=<スタンバイ・データベースの DB_UNIQUE_NAME>; 実行例: DGMGRL> edit database tokyo set property faststartfailovertarget=osaka; プロパティ"faststartfailovertarget"が更新されました また、ファスト・スタート・フェイルオーバー実行後のプライマリ・データベース(旧スタンバイ・ データベース)のフェイルオーバー先を選択し、ターゲットデータベースとして登録します。本書 の構成では旧スタンバイ・データベースのフェイルオーバー先として旧プライマリ・データベー スを指定します。 DGMGRL> edit database <スタンバイ・データベースの DB_UNIQUE_NAME> > set property faststartfailovertarget=<プライマリ・データベースの DB_UNIQUE_NAME>; 実行例: DGMGRL> edit database osaka set property faststartfailovertarget=tokyo; プロパティ"faststartfailovertarget"が更新されました 11.2.3 ファスト・スタート・フェイルオーバーの有効化 フェイルオーバー先を登録しただけではファスト・スタート・フェイルオーバーの設定は無効 となったままであるため、明示的に有効化する必要があります。DGMGRL より enable fast_start failover コマンドを実行してファスト・スタート・フェイルオーバーを有効化します。 DGMGRL>enable fast_start failover; - 49 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 実行例: DGMGRL> enable fast_start failover; 有効になりました。 ファスト・スタート・フェイルオーバーを有効後 show configuration コマンドを使用して Broker 構成の状態を確認し、Fast-Start Failover の部分が「ENABLE」となっていることを確認します。 実行例: DGMGRL> show configuration Configuration Name: hitachi Enabled: YES Protection Mode: MaxPerformance Databases: tokyo - Primary database osaka - Physical standby database - Fast-Start Failover target => フェイルオーバーのターゲットとして指定 されている Fast-Start Failover: ENABLED => 「ENABLE」となっている "hitachi"の現在のステータス: 警告: ORA-16608: 1 つ以上のデータベースに警告があります Broker 構成のステータスに警告が出力されていますが、これは次の手順で説明するオブザーバが 起動していないことが原因です。 11.2.4 オブザーバの起動 オブザーバマシン上でオブザーバを実行します。オブザーバを起動すると Broker 構成内のデ ータベースの状態がオブザーバにより監視されます。オブザーバを起動するためには DGMGRL より start observer コマンドを実行します。 (オブザーバの起動後は、ファスト・スタート・フェイルオーバーが発生する条件を満たすとフェ イルオーバーが発生することになります。オブザーバを起動する前に項番 11.3 の内容を確認し、 ファスト・スタート・フェイルオーバーの条件設定を確認してください。) DGMGRL> start observer; *start observer を実行するとオブザーバが起動されますが、start observer を実行したプロン プトは別のクライアント接続から stop observer が実行されオブザーバが停止されるまで制 御がユーザーに戻りません。オブザーバが起動した状態で DGMGRL を使用する場合は、別の クライアント接続から操作を実行する必要があります。 オブザーバの起動後 DGMGRL から show configuration を実行し、状態の確認を行います。 実行例: DGMGRL> show configuration Configuration - 50 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved Name: Enabled: hitachi YES => 「YES」と表示されている Protection Mode: MaxPerformance Databases: tokyo - Primary database osaka - Physical standby database - Fast-Start Failover target Fast-Start Failover: ENABLED => 「ENABLE」と表示されている "hitachi"の現在のステータス: SUCCESS => 「SUCCESS」と表示されている 以上でファスト・スタート・フェイルオーバーの設定は完了です。オブザーバマシンからプライ マリ・データベースへの通信が途切れる等、プライマリ・データベースでの障害を検知すると、 ファスト・スタート・フェイルオーバーが実行されます。 以下はプライマリ・データベースの全ノードを abort にて終了させ、ファスト・スタート・フェ イルオーバーが実行された際のオブザーバの画面出力例となります。 ファスト・スタート・フェイルオーバー時の出力例: 20:13:57.77 2007 年 12 月 14 日 金曜日 データベース"osaka"へのファスト・スタート・フェイルオーバーを開始しています... 現在フェイルオーバーを実行しています。お待ちください... フェイルオーバーに成功しました。新規プライマリは"osaka"です 20:15:07.61 2007 年 12 月 14 日 金曜日 ##フェイルオーバー完了後、旧プライマリ・データベースを mount させると自動的に ##再構成を実施しスタンバイ・データベースとして構成します 20:16:54.03 2007 年 12 月 14 日 金曜日 データベース"tokyo"の修復を開始しています... データベース"tokyo"を修復しています。お待ちください... 操作上、インスタンス"tokyo1" (データベース"tokyo") を停止する必要があります インスタンス"tokyo1"の停止中... ORA-01109: データベースがオープンされていません。 データベースがディスマウントされました。 ORACLE インスタンスがシャットダウンされました。 操作上、インスタンス"tokyo1" (データベース"tokyo") を起動する必要があります インスタンス"tokyo1"の起動中... ORACLE インスタンスが起動しました。 データベースがマウントされました。 データベース"tokyo"の修復を続行します... データベース"tokyo"の修復に成功しました 20:17:59.34 2007 年 12 月 14 日 金曜日 11.3 ファスト・スタート・フェイルオーバーの詳細設定 - 51 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved Oracle Database 11g Release 1 ではファスト・スタート・フェイルオーバーの条件やファス ト・スタート・フェイルオーバー実行時の動作をより詳細に設定することができるようになりま した。本項ではファスト・スタート・フェイルオーバーの設定のうち代表的な設定に関して設定 値の確認方法及び設定値の変更手順を紹介します。各パラメータの詳細等はマニュアル「Oracle Data Guard Broker 11g リリース 1」をご参照ください。 11.3.1 ファスト・スタート・フェイルオーバー実行時の動作設定 ここではファスト・スタート・フェイルオーバー実行時の動作設定について Threshold と Lag Limit の2つについて紹介します。その他のパラメータについてはマニュアル「Oracle Data Guard Broker 11g リリース 1」をご参照ください。 1) FastStartFailoverThreshold プライマリ・データベースの可用性に問題があることをオブザーバが検知した際に、プライ マリ・データベースに再接続を試みる期間を設定します。 2) FastStartFailoverLagLimit 最大パフォーマンスモードで動作している際に REDO 適用に関してプライマリ・データベー スからスタンバイ・データベースが遅れることができる時間を指定します。プライマリ、ス タンバイ・データベース間の適用遅延がこの設定値を越えている状態では、プライマリ・デ ータベースに障害が発生してもファスト・スタート・フェイルオーバーは実行されません。 それぞれのパラメータの現在の設定値は DGMGRL から show fast_start failover コマンドを実 行することで確認することが可能です。FastStartFailoverThreshold は show fast_start failover の実行結果の「Threshold」部分、FastStartFailoverLagLimit は show fast_start failover の実行 結果の「Lag Limit」部分で確認することが可能です。 実行例 DGMGRL> show fast_start failover; Fast-Start Failover:DISABLED Threshold: 30 seconds => FastStartFailoverThreshold の設定値 Target: (none) Observer: (none) Lag Limit: 60 seconds => FastStartFailoverLagLimit の設定値 Shutdown Primary: FALSE Auto-reinstate: TRUE ・・(省略)・・ 各パラメータの設定値は DGMGRL より edit configuration コマンドを使用して変更することが 可能です。 DGMGRL>edit configuration set property <パラメータ名>=<設定値>; 実行例: DGMGRL>edit configuration set property FastStartFailOverLagLimit=120; 11.3.2 ファスト・スタート・フェイルオーバー実行条件の設定 - 52 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved ここではファスト・スタート・フェイルオーバー実行条件について、設定値の確認方法と設定 値の変更方法を記載します。ファスト・スタート・フェイルオーバーが実行される条件として以 下の 1)から 5)のそれぞれのケースでの条件を設定することが可能です。それぞれのケースが発生 した際に、ファスト・スタート・フェイルオーバーを実行するか否かを指定することができます。 1) データファイル・オフライン(Datafile Offline) 書込みエラーのためデータファイルがオフラインになった場合 2) 破損したディクショナリ(Corrupted Dictionary) データベース内の重要なディクショナリが破損した場合 3) 破損した制御ファイル(Corrupted Controlfile) ディスク障害のために制御ファイルが破損した場合 4) アクセス不可能なログ・ファイル(Inaccessible Logfile) I/O エラーのために LGWR がどの REDO ログメンバーにも書き込みができない場合 5) スタック・アーカイバ(Stuck Archiver) デバイスが使用できないため、REDO ログをアーカイブできない場合 また、プライマリ・データベースで発生する ORA-エラーをファスト・スタート・フェイルオー バーの条件として設定することも可能です。 それぞれの設定値は DGMGRL より show fast_start failover を実行した結果から確認すること が可能です。1)から 5)の設定に関しては「Health Conditions:」の部分にてフェイルオーバーが有 効となっているか否かを確認することが可能です。ORA-エラーに関しては「Oracle Error Conditions:」の出力から確認することが可能です。 実行例: DGMGRL> show fast_start failover; ・・(省略)・・ Configurable Failover Conditions Health Conditions: Corrupted Controlfile Corrupted Dictionary Inaccessible Logfile Stuck Archiver Datafile Offline YES YES NO NO YES Oracle Error Conditions: (none) 設定値は DGMGRL から enable/disable fast_start failover condition を実行することで変更する ことが可能です。 有効化 DGMGRL>enable fast_start failover condition <パラメータ名>; 無効化 DGMGRL>disable fast_start failover condition <パラメータ名>; - 53 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved 実行例: DGMGRL>enable fast_start failover condition 'Inaccessible Logfile'; DGMGRL>enable fast_start failover condition 60 本ドキュメントご利用にあたっての注意事項 本ホワイトペーパに記載されている内容は、Oracle GRID Center にて実施された検証結果にも とづくものあり、すべての環境において同様の結果が得られるとは限りません。効果はお客様の 環境およびその他の要因によって異なる可能性があります。 - 54 Copyright © 2008 Hitachi, Ltd. All Rights Reserved. Copyright © 2008 Oracle Corporation Japan. All Rights Reserved