この節では、Sun Cluster Geographic Edition 製品に Oracle Data Guard 複製の構成に必要な最初の手順について説明します。
このマニュアルには、dgmgrl など、Oracle ツールおよびコマンドの使用方法に関する情報を示す手順は、図のみに対応しています。使用している環境の必要に応じて、Oracle 関連資料を参照して、相応的な手順を決定します。
この節で例として示されている保護グループ sales-pg は、cluster-paris と cluster-newyork の 2 つの (パートナー) クラスタから成るパートナーシップ内に構成されています。Oracle RAC データベースは、各クラスタ上の個々の RAC サーバープロキシリソースグループ によって管理および監視されており、mysales_com -rac-proxy-svr-shadow-rg シャドウ RAC サーバープロキシリソースグループ によってそのシャドウが作成されます。 アプリケーションデータは mysales.com Oracle Data Guard Broker 構成の一部として、sales データベースに含まれ、Oracle Data Guard によって複製されます。
シャドウ RAC サーバープロキシリソースグループ、mysales_com-rac-proxy-svr-shadow-rg および Oracle Data Guard Broker 構成 mysales.com は cluster-paris クラスタと cluster-newyork クラスタの両方に存在します。 ただし、リソースグループがシャドウを作成する RAC サーバープロキシリソースグループ の名前は cluster-paris クラスタと cluster-newyork クラスタの両方で異なる可能性があります。 sales-pg 保護グループは、cluster-paris クラスタと cluster-newyork クラスタ間のデータ複製を管理することによって、アプリケーションデータを保護します。
この節では、次の内容について説明します。
Oracle Data Guard Broker 構成を定義するには、次の情報を決定する必要があります。
Oracle Data Guard Broker 構成の名前。たとえば、cluster-paris クラスタと cluster-newyork クラスタ間で複製される mysales.com。
複製に参加する固有のデータベース名。たとえば、sales (cluster-paris クラスタ上) および salesdr (cluster-newyork クラスタ上)。
次のデータベースの Oracle サービス名。たとえば、sales -svc (cluster-paris クラスタ上) および salesdr-svc (cluster-newyork クラスタ上)。これらの名前は tnsnames.ora ファイルに保持されています。このファイルは複製中の Oracle データベースをホストしているノードの ${ORACLE_HOME}/network/admin ディレクトリまたは Oracle ネーミングサービスディレクトリにあります。
Oracle Data Guard Broker 構成のデータベースのスタンバイのタイプ。physical または logical を設定できます。
Oracle Data Guard Broker 構成の複製モード。MaxPerformance、MaxAvailability、または MaxProtection を設定できます。
プライマリデータベースとスタンバイデータベースのペア間での Oracle Data Guard 複製を構成したあと、${ORACLE_HOME}/bin/dgmgrl コマンドを使用して Oracle Data Guard Broker 構成を作成できます。このコマンドを使用すると、以前に一覧表示された Oracle Data Guard Broker プロパティーを設定し、取得できます。
また、各クラスタ上の Oracle RAC データベースを管理する RAC サーバープロキシリソースグループ の名前を決定する必要があります。 これらの名前は、clsetup コマンドから実行される Data Service 構成ウィザードを使用するか、『Sun Cluster Data Service for Oracle RAC Guide for Solaris OS』の付録 D「Command-Line Alternatives」の手順に従って構成します。
次の表に示す Oracle Data Guard Broker 構成プロパティーのうち、Protection Mode プロパティーのみが Sun Cluster Geographic Edition を使用して変更できます。DelayMins、MaxFailure、MaxConnections、NetTimeout プロパティーなどの、構成内のその他の Oracle Data Guard Broker プロパティーは、Sun Cluster Geographic Edition ソフトウェアを使用して変更できません。これらのプロパティーを調整するには、手動で Oracle Data Guard Broker コマンドを使用する必要があります。または、SQL*Plus を使用して、spfile サーバーパラメータファイルまたは init${SID}.ora ファイルに保持されている適切なパラメータを手動で変更して、調整する必要があります。
プロパティー |
可能な値 |
説明 |
---|---|---|
Protection Mode |
MaxPerformance、MaxAvailability、または MaxProtection |
Oracle によって使用されているデータ複製モード。非同期 (MaxPerformance) から同期 (MaxProtection) の範囲。 |
Standby type |
physical または logical |
実行される複製の種類。プライマリデータベースの定義の一部として保持されている Redo Apply (physical) または SQL Apply (logical) のいずれかです。 |
Configuration name |
プライマリデータベースとスタンバイデータベースを構成する Oracle Data Guard Broker 構成の名前。 |
|
Primary database |
プライマリデータベースの名前、そのネットサービス名、およびそのデータベースのスタンバイのタイプ |
|
Secondary database |
スタンバイデータベースの名前とそのネットサービス名。 |
Sun Cluster Geographic Edition ソフトウェアでは、スイッチオーバーとテイクオーバー操作中の Oracle Data Guard Broker 構成の役割の変更を修正します。
Oracle Data Guard Broker 構成の詳細は、Oracle Data Guard Broker のマニュアル を参照してください。
次の手順では、主クラスタは cluster-paris (phys-paris-1 ノードと phys-paris-2 ノード) およびスタンバイクラスタは cluster-newyork (phys-newyork-1 と phys-newyork-2) という名前になっています。サフィックス -crs が Oracle Clusterware の仮想 IP ホスト名に追加されます。
cluster-paris 上のプライマリデータベースは sales で、sales1 および sales2 というインスタンスを持っています。 cluster-newyork 上のスタンバイデータベースは salesdr で、salesdr1 および salesdr2 というインスタンスを持っています。各データベースと各インスタンスのネットサービス名には、サフィックス -svc が追加されます。たとえば、sales-svc または sales1 -svc のようになります。
Oracle ユーザー .profile または .cshrc ファイルを編集し、正しい Oracle SID 、ORACLE_HOME、および PATH 環境変数がローカルの Oracle RAC データベースインスタンスに対して設定されていることを確認します。 特に指定がない限り、必要な操作は、保護されたデータベースインスタンスをホストする主クラスタ内のノードからコマンドを実行するだけです。
すべての主ノードおよびスタンバイノード上で Oracle Clusterware によって使用される Oracle 仮想 IP アドレスが解決できることを確認します。
phys-paris-1# getent hosts phys-paris-1-crs 10.11.112.41 phys-paris-1-crs … |
主クラスタ上にデータベースを作成します。
Oracle Database Configuration Assistant (dbca) または SQL*Plus ユーティリティーのいずれかを使用します。
プライマリデータベースに対する Oracle パスワードファイルが存在することを確認します。
oracle (phys-paris-1)$ cd ${ORACLE_HOME}/dbs oracle (phys-paris-1)$ ls -l orapwsales1 lrwxrwxrwx 1 oracle oinstall 25 November 2 02:06 orapwsales1 -> /oradata/SALES/orapwsales |
Oracle Data Guard では、主クラスタとスタンバイクラスタに参加するすべてのノードで、パスワードファイルを一致させる必要があります。
パスワードファイルがない場合は、以下の手順に従って作成します。
oracle (phys-paris-1)$ orapwd file=${ORACLE_HOME}/dbs/orapwsales1 \ password=sysdba_password |
その後、このファイルを共有ストレージ上の任意の場所に移動し、各ノードからのシンボリックリンクを作成できます。各ノード上でのローカル SID を反映するよう、ファイル名を変更します。その後、このファイルをスタンバイクラスタ (cluster-newyork) にコピーします。
sqlplus コマンドを使用して、データベースがロギングモードで動作していることを確認します。
oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> alter database force logging; Database altered. |
Oracle Data Guard Broker 構成ファイルの場所を構成します。
次のように sqlplus コマンドを実行し、これら 2 つのファイル名を構成に従った名前に置き換えます。これらのファイルが、すべての cluster-paris から見ることができる共有ストレージに置かれていることを確認します。
oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> alter system set dg_broker_config_file1='/oradata/SALES/dr1sales.dat' 2 scope=both sid='*'; System altered. SQL> alter system set dg_broker_config_file2='/oradata/SALES/dr2sales.dat' 2 scope=both sid='*'; System altered. |
すべてのデータベースインスタンスをシャットダウンします。
プライマリデータベース上で、単一のデータベースインスタンスをマウントし、Oracle データベースのフラッシュバック機能を有効にします。
oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> startup mount; ORACLE instance started. Total System Global Area 532676608 bytes Fixed Size 2031416 bytes Variable Size 276824264 bytes Database Buffers 247463936 bytes Redo Buffers 6356992 bytes Database mounted. System altered. SQL> alter database archivelog; Database altered. SQL> alter database flashback on; Database altered. SQL> alter database open; Database altered. |
もう一方のデータベースインスタンスを再起動します。
データベースのスタンバイ REDO ログを作成します。
構成によっては、多数の REDO ログを追加しなければならない場合があります。これらのログの名前、数、およびサイズは多くの要因によって決まります。要因には、OFA (Oiptimal Flexible Architecture) を使用するかどうか、オンライン REDO ログの数、これらのログのサイズなどがあります。次の例では、OFA のネーミングスキームが使用されている状況で、50 MB の REDO ログファイルを 1 つ構成する方法を示します。デフォルトでは、通常 2 ノードの Oracle RAC データベースには、6 つのログファイルを追加する必要があります。
oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> alter database add standby logfile size 50m; Database altered. |
Oracle ログのアーカイブ先を構成します。
構成によっては、Oracle ログのアーカイブ先のパラメータを 1 つ以上変更または追加しなければならない場合があります。これらのパラメータには、チューニング可能なプロパティーが数多くあります。詳細については、Oracle のマニュアルを参照してください。次の例では、ログのアーカイブ先が 2 つ設定されています。1 つはローカルクラスタ用、もう 1 つはスタンバイクラスタ用で、OFA のネーミングが使用されています。
oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> alter system set log_archive_dest_1='location=use_db_recovery_file_dest 2 arch mandatory valid_for=(all_logfiles,all_roles) 3 db_unique_name=sales' scope=both sid='*'; System altered. SQL> alter system set log_archive_dest_2='service=salesdr-svc 2 lgwr sync affirm valid_for=(online_logfiles,primary_role) 3 db_unique_name=salesdr' scope=both sid='*'; System altered. SQL> alter system set log_archive_dest_10='location=use_db_recovery_file_dest' 2 scope=both sid='*'; System altered. SQL> alter system set standby_file_management='AUTO' scope=both sid='*'; System altered. |
FAL (Fetch Archive Log) パラメータを構成します。
失われているアーカイブ REDO ログを取得するサーバー上の場所と、REDO ログの送信先となるクライアント上の場所をデータベースに認識させるには、FAL システムプロパティーを設定する必要があります。これらのプロパティーでは、ソースデータベースと宛先データベースのネットサービス名が使用されます。 次の sqlplus コマンドを実行して、構成に従った正しい値にパラメータを設定します。
oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> alter system set fal_server='salesdr-svc' scope=both sid='*'; System altered. SQL> alter system set fal_client='sales-svc' scope=both sid='*'; System altered. |
Oracle Data Guard の静的リスナーを作成します。
すべての cluster-paris ノード上で、この手順を実行します。
Oracle Data Guard では、静的リスナーを構成する必要があります。 次の例では、${ORACLE_HOME}=/oracle/oracle/product/10.2.0/db_1 を使用し、静的リスナーのエントリを追加する ${ORACLE_HOME}/network/admin/listener.ora ファイル内の場所を示します。SID_LIST_LISTENER_PHYS-PARIS-1 および (SID_NAME = sales1) 行はノードによって異なり、(GLOBAL_DBNAME=sales_DGMGRL) は cluster-newyork によって異なります。その後、これらのエントリを cluster-newyork ノード上で追加します。
oracle (phys-paris-1)$ cat ${ORACLE_HOME}/network/admin/listener.ora SID_LIST_LISTENER_PHYS-PARIS-1 = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /oracle/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = sales1) (GLOBAL_DBNAME=sales_DGMGRL) (ORACLE_HOME = /oracle/oracle/product/10.2.0/db_1) ) ) oracle (phys-paris-1)$ |
リスナーを再起動します。
静的なエントリを有効にするには、Oracle リスナープロセスを cluster-paris の各ノード上で再起動します。
oracle (phys-paris-1)$ lsnrctl stop LISTENER_PHYS_PHYS-PARIS-1 LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 29-OCT-2008 02:04:56 Copyright (c) 1991, 2006, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) The command completed successfully oracle$ lsnrctl start LISTENER_PHYS_PHYS-PARIS-1 LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 29-OCT-2008 02:05:04 Copyright (c) 1991, 2006, Oracle. All rights reserved. Starting /oracle/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Solaris: Version 10.2.0.3.0 - Production … Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "sales" has 2 instance(s). Instance "sales1", status READY, has 2 handler(s) for this service... Instance "sales2", status READY, has 1 handler(s) for this service... Service "salesXDB" has 2 instance(s). Instance "sales1", status READY, has 1 handler(s) for this service... Instance "sales2", status READY, has 1 handler(s) for this service... Service "sales_DGB" has 2 instance(s). Instance "sales1", status READY, has 2 handler(s) for this service... Instance "sales2", status READY, has 1 handler(s) for this service... Service "sales_DGMGRL" has 1 instance(s). Instance "sales1", status UNKNOWN, has 1 handler(s) for this service... Service "sales_XPT" has 2 instance(s). Instance "sales1", status READY, has 2 handler(s) for this service... Instance "sales2", status READY, has 1 handler(s) for this service... The command completed successfully |
すべてのデータベースインスタンスに対するネットサービスのネーミングエントリを確認します。
使用しているネーミングメソッド (tnsnames.ora またはディレクトリサービス) で、すべての Oracle データベースインスタンスのエントリが定義されていることを確認します。次の例では、cluster-paris クラスタのみに使用するエントリの種類を示します。また、pfile パラメータファイルを変更するときに、あとで作成するスタンバイ (salesdr) データベースインスタンスのエントリを追加します。この例では、sales データベースが、リスナー (データベースの service_names 初期化パラメータを参照) を使用して、動的に sales のサービス名を登録します。
oracle (phys-paris-1)$ cat ${ORACLE_HOME}/network/admin/tnsnames.ora SALES1-SVC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = phys-paris-1-crs)(PORT = 1521) (SEND_BUF_SIZE = 65535)(RECV_BUF_SIZE = 65535)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sales) (INSTANCE_NAME = sales1) ) ) SALES2-SVC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = phys-paris-2-crs)(PORT = 1521) (SEND_BUF_SIZE = 65535)(RECV_BUF_SIZE = 65535)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sales) (INSTANCE_NAME = sales2) ) ) SALES-SVC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = phys-paris-1-crs)(PORT = 1521) (SEND_BUF_SIZE = 65535)(RECV_BUF_SIZE = 65535)) (ADDRESS = (PROTOCOL = TCP)(HOST = phys-paris-2-crs)(PORT = 1521) (SEND_BUF_SIZE = 65535)(RECV_BUF_SIZE = 65535)) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = sales) ) ) LISTENERS_SALES = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = phys-paris-1-crs)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = phys-paris-2-crs)(PORT = 1521)) ) |
プライマリデータベースのバックアップを作成します。
次の例では、Oracle RMAN (Recovery Manager) ユーティリティーを使用して、スタンバイ cluster-newyork クラスタ上に、復元可能なプライマリデータベースのコピーを作成する方法を示します。また、この例では、スタンバイデータベースのコントロールファイルを作成する別の手順が不要になる方法について説明します。この手順を完了するためのオプションについては、Oracle のマニュアルを参照してください。
oracle (phys-paris-1)$ rman RMAN> connect target sys/DBA_password@sales-svc; RMAN> connect auxiliary /; RMAN> backup device type disk tag 'mybkup' database include current 2> controlfile for standby; RMAN> backup device type disk tag 'mybkup' archivelog all not backed up; |
スタンバイシステムにバックアップファイルをコピーします。
cluster-newyork クラスタ上に適切なディレクトリ階層を作成し、このクラスタにデータベースのバックアップをコピーします。この例で使用されているファイルの実際の場所は、データベースを構成したときに選択した場所によって異なります。
oracle (phys-newyork-1)$ mkdir -p $ORACLE_BASE/admin/salesdr oracle (phys-newyork-1)$ cd $ORACLE_BASE/admin/salesdr oracle (phys-newyork-1)$ mkdir adump bdump cdump dpdump hdump pfile udump Make the directory for the database backup oracle (phys-newyork-1)$ mkdir -p /oradata/flash_recovery_area/SALES/backupset/date Copy over the files oracle (phys-newyork-1)$ cd /oradata/flash_recovery_area/SALES/backupset/date oracle (phys-newyork-1)$ scp oracle@phys-paris-1:`pwd`/\* . Make the base directory for new database files oracle (phys-newyork-1)$ mkdir -p /oradata/SALESDR |
pfile パラメータファイルを作成します。
スタンバイ (salesdr) データベース用の適切なサーバー初期化ファイルを作成します。 このファイルの最も簡単な作成方法は、プライマリデータベース用のパラメータをコピーし、変更することです。次の例では、pfile パラメータファイルを作成する方法を示します。
oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> CREATE PFILE='/tmp/initpfile_for_salesdr.ora' FROM SPFILE; File created. SQL> quit |
pfile パラメータファイルの変更
次の例のように、主クラスタに固有のすべてのエントリをスタンバイクラスタに合うエントリに変更します。 Oracle SID によってプレフィックスが付けられているエントリ sales1 または sales2 を変更し、スタンバイデータベースのインスタンスの SID 名 (salesdr1 および salesdr2) を使用できるようにします。構成によっては、さらに変更しなければならない場合があります。
db_name パラメータは変更しないください。このパラメータは両方のクラスタ上で、sales という名前のままにしておく必要があります。
You created these directories previously *.audit_file_dest='/oracle/oracle/product/10.2.0/db_1/admin/salesdr/adump' *.background_dump_dest='/oracle/oracle/product/10.2.0/db_1/admin/salesdr/bdump' *.user_dump_dest='/oracle/oracle/product/10.2.0/db_1/admin/salesdr/udump' *.core_dump_dest='/oracle/oracle/product/10.2.0/db_1/admin/salesdr/cdump' Remove the following entry *.control_files='...list primary control files...' Add this entry *.db_unique_name='salesdr' *.dg_broker_config_file1='/oradata/SALESDR/dr1salesdr.dat' *.dg_broker_config_file2='/oradata/SALESDR/dr2salesdr.dat' *.dispatchers='(PROTOCOL=TCP) (SERVICE=salesdrXDB)' Switch the client and server entries around, as shown in the following entries *.fal_client='salesdr-svc' *.fal_server='sales-svc' *.remote_listener='LISTENERS_SALESDR' Switch the log archive destinations *.log_archive_dest_1='location=use_db_recovery_file_dest arch mandatory valid_for=(all_logfiles,all_roles) db_unique_name=salesdr' *.log_archive_dest_2='service=sales-svc lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=sales'
pfile パラメータファイルをスタンバイシステムにコピーします。
スタンバイデータベースを起動し、pfile パラメータファイルを spfile サーバーパラメータファイルに変換します。
Oracle ユーザーとして、cluster-newyork ノードの 1 つにログインし、pfile パラメータファイルを spfile サーバーパラメータファイルに変換します。
oracle (phys-newyork-1)$ ORACLE_SID=salesdr1 export ORACLE_SID oracle (phys-newyork-1)$ sqlplus '/ as sysdba' SQL> startup nomount pfile='/tmp/initpfile_for_salesdr.ora'; SQL> create spfile='/oradata/SALESDR/spfilesalesdr.ora' 2> from pfile='/tmp/initpfile_for_salesdr.ora'; SQL> shutdown |
${ORACLE_HOME}/dbs/initsalesdr1.ora ファイルをすべての cluster-newyork ノードに作成し、そのファイルに次のエントリを挿入します。
oracle (phys-newyork-1) cat ${ORACLE_HOME}/dbs/initsalesdr1.ora SPFILE='/oradata/SALESDR/spfilesalesdr.ora' |
1 つのノード上のみでデータベースを起動し、バックアップされたプライマリデータベースを復元する準備をします。
oracle (phys-newyork-1) sqlplus '/ as sysdba' You are now starting from the spfile SQL> startup nomount ORACLE instance started. Total System Global Area 532676608 bytes Fixed Size 2031416 bytes Variable Size 289407176 bytes Database Buffers 234881024 bytes Redo Buffers 6356992 bytes |
プライマリデータベースに対する Oracle パスワードファイルを、スタンバイデータベースで使用するためにコピーします。
cluster-paris クラスタ上で作成した Oracle パスワードファイルをコピーし、cluster-newyork クラスタ上の共有ストレージにそのファイルを配置します。各 cluster-newyork ノードからのこのファイルへのリンクを作成し、もう一度シンボリックリンクの名前を変更して、ローカルスタンバイノード上の Oracle SID を反映します。
Oracle Data Guard の静的リスナーを作成します。
すべての cluster-newyork ノード上で、この手順を実行します。
Oracle Data Guard では、静的リスナーを構成する必要があります。 次の例では、${ORACLE_HOME}=/oracle/oracle/product/10.2.0/db_1 を使用し、静的リスナーのエントリを追加する ${ORACLE_HOME}/network/admin/listener.ora ファイル内の場所を示します。SID_LIST_LISTENER_PHYS-NEWYORK-1 および (SID_NAME = salesdr1) 行はノードによって異なり、(GLOBAL_DBNAME=salesdr_DGMGRL) は cluster-paris によって異なります。
oracle (phys-newyork-1)$ cat ${ORACLE_HOME}/network/admin/listener.ora SID_LIST_LISTENER_PHYS-NEWYORK-1 = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /oracle/oracle/product/10.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = salesdr1) (GLOBAL_DBNAME=salesdr_DGMGRL) (ORACLE_HOME = /oracle/oracle/product/10.2.0/db_1) ) ) oracle (phys-newyork-1)$ |
リスナーを再起動します。
静的なエントリを有効にするには、Oracle リスナープロセスを cluster-newyork の各ノード上で再起動します。
oracle (phys-newyork-1)$ lsnrctl stop LISTENER_PHYS_PHYS-NEWYORK-1 LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 29-OCT-2008 02:04:56 Copyright (c) 1991, 2006, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) The command completed successfully oracle$ lsnrctl start LISTENER_PHYS_PHYS-NEWYORK-1 LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 29-OCT-2008 02:05:04 Copyright (c) 1991, 2006, Oracle. All rights reserved. Starting /oracle/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Solaris: Version 10.2.0.3.0 - Production … Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "salesdr" has 2 instance(s). Instance "salesdr1", status READY, has 2 handler(s) for this service... Instance "salesdr2", status READY, has 1 handler(s) for this service... Service "salesdrXDB" has 2 instance(s). Instance "salesdr1", status READY, has 1 handler(s) for this service... Instance "salesdr2", status READY, has 1 handler(s) for this service... Service "salesdr_DGB" has 2 instance(s). Instance "salesdr1", status READY, has 2 handler(s) for this service... Instance "salesdr2", status READY, has 1 handler(s) for this service... Service "salesdr_DGMGRL" has 1 instance(s). Instance "salesdr1", status UNKNOWN, has 1 handler(s) for this service... Service "salesdr_XPT" has 2 instance(s). Instance "salesdr1", status READY, has 2 handler(s) for this service... Instance "salesdr2", status READY, has 1 handler(s) for this service... The command completed successfully |
すべてのデータベースインスタンスに対するネットサービスのネーミングエントリを確認します。
使用しているネーミングメソッド (tnsnames.ora またはディレクトリサービス) で、すべての Oracle データベースインスタンスのエントリが定義されていることを確認します。次の例では、cluster-newyork クラスタのみに使用するエントリの種類を示します。この例では、salesdr データベースが、リスナー (データベース service_names 初期化パラメータを参照) を使用して、動的に salesdr のサービス名を登録します。
oracle (phys-newyork-1)$ cat ${ORACLE_HOME}/network/admin/tnsnames.ora SALESDR1-SVC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = phys-newyork-1-crs)(PORT = 1521) (SEND_BUF_SIZE = 65535)(RECV_BUF_SIZE = 65535)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = salesdr) (INSTANCE_NAME = salesdr1) ) ) SALESDR2-SVC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = phys-newyork-2>-crs)(PORT = 1521) (SEND_BUF_SIZE = 65535)(RECV_BUF_SIZE = 65535)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = salesdr) (INSTANCE_NAME = salesdr2) ) ) SALESDR-SVC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = phys-newyork-1-crs)(PORT = 1521) (SEND_BUF_SIZE = 65535)(RECV_BUF_SIZE = 65535)) (ADDRESS = (PROTOCOL = TCP)(HOST = phys-newyork-2-crs)(PORT = 1521) (SEND_BUF_SIZE = 65535)(RECV_BUF_SIZE = 65535)) (LOAD_BALANCE = yes) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = salesdr) ) ) LISTENERS_SALESDR = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = phys-newyork-1-crs)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = phys-newyork-2-crs)(PORT = 1521)) ) |
スタンバイリスナー listener.ora ファイルおよび tnsnames.ora ファイルに正しいエントリが設定されていることを確認し、リスナープロセスを再起動します。
これらのファイルに静的 Oracle Data Guard リスナーのエントリ、およびプライマリデータベースとスタンバイクラスタサービスのエントリが設定されていることを確認します。 Oracle ディレクトリネーミングサービスの検索を使用していない場合は、tnsnames.ora ファイルにこれらのエントリを設定する必要があります。
oracle (phys-newyork-1)$ lsnrctl stop LISTENER_PHYS-NEWYORK-1 LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 29-OCT-2008 02:04:56 Copyright (c) 1991, 2006, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) The command completed successfully oracle$ lsnrctl start LISTENER_PHYS-NEWYORK-1 LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 29-OCT-2008 02:05:04 Copyright (c) 1991, 2006, Oracle. All rights reserved. Starting /oracle/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Solaris: Version 10.2.0.3.0 - Production … Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "salesdr_DGMGRL" has 1 instance(s). Instance "salesdr1", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully |
データベースのバックアップを復元します。
cluster-newyork クラスタ上で作業を続行しながら、プライマリデータベースのバックアップからスタンバイデータベースにデータを復元できます。 次の例では、Oracle RMAN (Recovery Manager) ユーティリティーを使用する方法を示します。
oracle (phys-newyork-1) rman RMAN> connect target sys/oracle@sales-svc; RMAN> connect auxiliary /; RMAN> duplicate target database for standby nofilenamecheck; … |
スタンバイ REDO ログをスタンバイデータベースに追加します。
満たす必要のある正確な条件は、構成によって異なります。主クラスタの場合と同じ手順を実行します。
スタンバイデータベース上でフラッシュバックを有効にします。
oracle (phys-newyork-1)$ sqlplus '/ as sysdba' SQL> alter database flashback on; Datbase altered. SQL> shutdown immediate; SQL> startup mount; ORACLE instance started. … |
スタンバイデータベースを回復します。
oracle (phys-newyork-1) sqlplus '/ as sysdba' SQL> alter database recover managed standby database using current logfile disconnect; |
ログファイルの送信が動作していることを確認します。
SQL> プロンプトが表示されているときに、cluster-paris クラスタ上の 1 つのデータベースインスタンスにログインし、2 つのログスイッチを実行します。
oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> alter system switch logfile; SQL> alter system switch logfile; |
ログのアーカイブを妨げた可能性がある問題が記録されているかどうか、${ORACLE_HOME}/admin/sales/bdump/alert_sales1.log を確認します。
エラーがある場合は、修正します。この処理には時間がかかる場合があります。次のコマンドを使用して、ネットワークの接続が正しいことを確認できます。
oracle (phys-paris-1)$ tnsping salesdr-svc oracle (phys-newyork-1)$ tnsping sales-svc |
Oracle Clusterware を使用して新しいデータベースとインスタンスを登録します。
Oracle Clusterware の制御下にスタンバイデータベースを置き、Oracle Clusterware の起動時にマウントするようスタンバイデータベースを構成します。
oracle (phys-newyork-1)$ srvctl add database -d salesdr \ -r PHYSICAL_STANDBY -o $ORACLE_HOME -s mount; oracle (phys-newyork-1)$ srvctl add instance -d salesdr \ -i salesdr1 -n $phys-newyork-1; oracle (phys-newyork-1)$ srvctl add instance -d salesdr \ -i salesdr2 -n $phys-newyork-2; |
Sun Cluster Oracle RAC の管理容易性リソースを構成します。
Sun Cluster とスタンバイデータベースを統合します。 clsetup ユーティリティから使用可能な Data Service 構成ウィザードまたはブラウザベースの Sun Cluster Manager を使用できます。スタンバイデータベースを統合すると、フェイルオーバーまたはテイクオーバーの実行が必要な場合、スタンバイデータベースをプライマリデータベースのように管理できます。
作成したリソースグループおよびリソースグループは Sun Cluster Geographic Edition Oracle Data Guard 統合によって使用されます。
Oracle Data Guard をプライマリデータベースとスタンバイデータベースの両方で有効にします。
次の手順は、各クラスタ (cluster-paris および cluster-newyork) 内の 1 つのノードでのみ実行する必要があります。
oracle (phys-newyork-1)$ sqlplus '/ as sysdba' SQL> alter system set dg_broker_start=true scope=both sid='*'; SQL> quit oracle (phys-paris-1)$ sqlplus '/ as sysdba' SQL> alter system set dg_broker_start=true scope=both sid='*'; SQL> quit |
Oracle Data Guard を Sun Cluster Geographic Edition で使用するには、Oracle Data Guard Broker 構成を作成する必要があります。
次の手順では、Oracle Data Guard Broker 構成は mysales.com という名前です。 salesdr データベースは、sales データベースの physical コピーです。
プライマリデータベースの Oracle Data Guard Broker 構成を作成します。
dgmgrl コマンドを使用して、Oracle Data Guard Broker 構成を作成します。作成する Oracle Data Guard Broker 構成の名前、プライマリデータベースの名前、および接続で使用するネットサービスの名前が必要です。 この構成を Sun Cluster Geographic Edition に指定するときに、これらのプロパティーが必要になります。
oracle (phys-paris-1)$ dgmgrl sys/sysdba_password@sales-svc DGMGRL> create configuration mysales.com as primary DGMGRL> database is sales connect identifier is sales-svc; |
Oracle Data Guard Broker に接続するときにエラーが見つかった場合は、${ORACLE_HOME}/admin/sales/bdump/alert_ prim_sid.log ファイルを確認します。 この構成が作成済みかどうかは、次のコマンドを使用して確認できます。
oracle (phys-paris-1)$ dgmgrl sys/sysdba_password@sales-svc DGMGRL> show configuration; Configuration Name: mysales.com Enabled: NO Protection Mode: MaxPerformance Fast-Start Failover: DISABLED Databases: sales - Primary database Current status for "mysales.com": DISABLED |
Oracle Data Guard Broker 構成にスタンバイデータベースを追加します。
スタンバイデータベースの名前、接続で使用するネットサービスの名前、およびスタンバイのタイプ (physical または logical) が必要です。
oracle (phys-paris-1)$ dgmgrl sys/sysdba_password@sales-svc DGMGRL> add database salesdr as connect identifier is salesdr-svc maintained as physical; |
スタンバイデータベースの Apply インスタンスを構成します。
スタンバイデータベースが複数インスタンスの Oracle RAC データベースでもある場合、送信されたアーカイブ REDO ログを適用したいインスタンスを指定できます。 構成を有効にする前に、次のコマンドを実行します。
oracle$ dgmgrl sys/sysdba_password@sales-svc DGMGRL> edit database salesdr set property PreferredApplyInstance='salesdr1'; |
Oracle Data Guard Broker 構成が正しく動作していることを確認するには、構成を有効にします。
oracle (phys-paris-1)$ dgmgrl sys/sysdba_password@sales-svc DGMGRL> enable configuration; |
すべての手順を正常に実行した場合は、次のコマンドを使用して構成の状態を確認できます。
oracle$ dgmgrl sys/sysdba_password@sales-svc DGMGRL> show configuration; Configuration Name: mysales.com Enabled: YES Protection Mode: MaxPerformance Fast-Start Failover: DISABLED Databases: sales - Primary database salesdr - フィジカルスタンバイ database Current status for "mysales.com": SUCCESS |
Oracle Data Guard Broker 構成がスイッチオーバーできることを確認します。
Oracle Data Guard Broker 構成を Sun Cluster Geographic Edition に追加する前に、プライマリデータベースからスタンバイデータベースへのスイッチオーバーを実行できることと、元に戻せることを確認する必要があります。 スイッチオーバーを実行できない場合は、Sun Cluster Geographic Edition ではこの操作も実行できません。
oracle (phys-paris-1)$ dgmgrl sys/sysdba_password@sales-svcDGMGRL> switchover to salesdr Performing switchover NOW, please wait... Operation requires shutdown of instance "sales1" on database "sales" Shutting down instance "sales1"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires shutdown of instance "salesdr1" on database "salesdr" Shutting down instance "salesdr1"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "sales1" on database "sales" Starting instance "sales1"... ORACLE instance started. Database mounted. Operation requires startup of instance "salesdr1" on database "salesdr" Starting instance "salesdr1"... ORACLE instance started. Database mounted. Switchover succeeded, new primary is "salesdr" DGMGRL switchover to sales; Performing switchover NOW, please wait... Operation requires shutdown of instance "salesdr1" on database "salesdr" Shutting down instance "salesdr1"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires shutdown of instance "sales1" on database "sales" Shutting down instance "sales1"... ORA-01109: database not open Database dismounted. ORACLE instance shut down. Operation requires startup of instance "salesdr1" on database "salesdr" Starting instance "salesdr1"... ORACLE instance started. Database mounted. Operation requires startup of instance "sales1" on database "sales" Starting instance "sales1"... ORACLE instance started. Database mounted. Switchover succeeded, new primary is "sales" |