フィジカルData Guardの構成
本ページではフィジカルデータガード+保護モード:最大パフォーマンスの構築手順をまとめています。構成
本構成ではプライマリ、スタンバイ共に一つのサーバ内で構成します。項目 | プライマリDB | スタンバイDB |
---|---|---|
OS | WindowsXp Professional x86 | |
oracleのバージョン | 10.2.0.4 | |
ORACLE_HOME | E:\oracle\product\10.2.0\db_1 | |
データファイル等の領域 | E:\oracle\oradata\ORCL102 | E:\oracle\oradata\ORCL102S |
アーカイブログ領域 | E:\oracle\product\10.2.0\flash_recovery_area\ORCL102 | E:\oracle\product\10.2.0\flash_recovery_area\ORCL102S |
DB_NAME | ORCL102 | ORCL102 |
INSTANCE_NAME | ORCL102 | ORCL102S※ |
手順概要
1 スタンバイDB用ディレクトリの作成
スタンバイDBが利用するフォルダを作成します。C:\>mkdir E:\oracle\admin\ORCL102S\adump C:\>mkdir E:\oracle\admin\ORCL102S\bdump C:\>mkdir E:\oracle\admin\ORCL102S\cdump C:\>mkdir E:\oracle\admin\ORCL102S\udump C:\>mkdir E:\oracle\oradata\ORCL102S C:\>mkdir E:\oracle\product\10.2.0\flash_recovery_area\ORCL102S
2 スタンバイDB用のwindowsサービス作成
oradimコマンドによりスタンバイDBのサービスを作成します。 -intpwdで指定するパスワード認証用のパスワードはプライマリDBのSYSユーザと同じパスワードを指定します。 パスワードの設定が一致しない場合プライマリDBがスタンバイDBへREDOログ等を転送することができずORA-01031がアラートログに記録されます。C:\>oradim -new -sid ORCL102S -intpwd change_on_install -pfile 'E:\oracle\product\10.2.0\db_1\database\initORCL102S.ora' -startmode manual インスタンスが作成されました。 →Windows のサービス画面に「OracleServiceORCL102S」サービスが追加される
3 スタンバイ制御ファイルの作成
プライマリDBから、スタンバイ制御ファイルを作成します。SYS@ORCL102 > ALTER DATABASE CREATE STANDBY CONTROLFILE 2 AS 'E:\ORACLE\ORADATA\ORCL102S\CONTROL01.CTL' REUSE; データベースが変更されました。
4 プライマリDB、LISTENERの停止
リスナーを停止します。以下の例では「LISTENER」という名前のリスナーを停止しています。C:\>lsnrctl stop LISTENER LSNRCTL for 32-bit Windows: Version 10.2.0.4.0 - Production on 21-3月 -2011 22:05:08 Copyright (c) 1991, 2007, Oracle. All rights reserved. (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=WIN1)(PORT=1521)))に接続中 コマンドは正常に終了しました。sqlplusよりプライマリDBであるORCL102をimmediateモードで停止します。
SYS@ORCL102 > shutdown immediate データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。
5 listener.ora,tnsnames.oraの修正
E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\listener.oraにスタンバイDBを静的認識させるよう斜線部分を追加します。SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = ORCL102) (ORACLE_HOME = E:\oracle\product\10.2.0\db_1) ) (SID_DESC = (SID_NAME = ORCL102S) (ORACLE_HOME = E:\oracle\product\10.2.0\db_1) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN1)(PORT = 1521)) ) )E:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.oraに斜線部分のスタンバイDBへの接続定義を追加します。
ORCL102 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL102) ) ) ORCL102S = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = WIN1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL102S) ) )
6 プライマリDBのデータファイル、REDOログをスタンバイ用としてコピー
プライマリDBのデータファイル、、REDOログをスタンバイDB用のデータファイル配置ディレクトリにコピーします。制御ファイルはスタンバイ制御ファイルを使用するのでコピーは不要です。C:\>copy E:\oracle\oradata\ORCL102\USERS01.DBF E:\oracle\oradata\ORCL102S\USERS01.DBF 1 個のファイルをコピーしました。 C:\>copy E:\oracle\oradata\ORCL102\SYSAUX01.DBF E:\oracle\oradata\ORCL102S\SYSAUX01.DBF 1 個のファイルをコピーしました。 C:\>copy E:\oracle\oradata\ORCL102\SYSTEM01.DBF E:\oracle\oradata\ORCL102S\SYSTEM01.DBF 1 個のファイルをコピーしました。 C:\>copy E:\oracle\oradata\ORCL102\TEMP01.DBF E:\oracle\oradata\ORCL102S\TEMP01.DBF 1 個のファイルをコピーしました。 C:\>copy E:\oracle\oradata\ORCL102\UNDOTBS01.DBF E:\oracle\oradata\ORCL102S\UNDOTBS01.DBF 1 個のファイルをコピーしました。 C:\>copy E:\oracle\oradata\ORCL102\REDO01.LOG E:\oracle\oradata\ORCL102S\REDO01.LOG 1 個のファイルをコピーしました。 C:\>copy E:\oracle\oradata\ORCL102\REDO02.LOG E:\oracle\oradata\ORCL102S\REDO02.LOG 1 個のファイルをコピーしました。 C:\>copy E:\oracle\oradata\ORCL102\REDO03.LOG E:\oracle\oradata\ORCL102S\REDO02.LOG 1 個のファイルをコピーしました。なお、バックアップ対象の一覧は以下のSQLにより確認できます。
SELECT NAME FROM V$DATAFILE
SELECT NAME FROM V$TEMPFILE
SELECT MEMBER FROM V$LOGFILE
7 初期化パラメータファイルの修正
・プライマリDBの初期化パラメータファイル(E:\oracle\product\10.2.0\db_1\database\initORCL102.ora)の修正、追記斜線部分がData Guardに関連するパラメータとなります。
audit_file_dest='E:\oracle\admin\ORCL102\adump' background_dump_dest='E:\oracle\admin\ORCL102\bdump' core_dump_dest='E:\oracle\admin\ORCL102\cdump' user_dump_dest='E:\oracle\admin\ORCL102\udump' compatible='10.2.0.1.0' control_files='E:\oracle\oradata\ORCL102\control01.ctl' db_block_size=8192 db_domain='' db_file_multiblock_read_count=16 job_queue_processes=10 nls_language='JAPANESE' nls_territory='JAPAN' open_cursors=300 sga_target=300M pga_aggregate_target=32M undo_management='AUTO' undo_tablespace='UNDOTBS01' processes=150 remote_login_passwordfile='EXCLUSIVE' log_archive_format='ARC%S_%R.%T' ##for Data Guard db_name='ORCL102' INSTANCE_NAME=orcl102 DB_UNIQUE_NAME=orcl102 log_archive_dest_1='LOCATION=E:\oracle\product\10.2.0\flash_recovery_area\ORCL102' log_archive_dest_2='SERVICE=ORCL102S LGWR ASYNC REOPEN=60' log_archive_dest_state_1=enable log_archive_dest_state_2=enable・ スタンバイDB用の初期化パラメータファイル(E:\oracle\product\10.2.0\db_1\database\initORCL102S.ora)の作成
斜線部分がData Guardに関連するパラメータとなります。ポイントは以下の点です。
- 同一ORACLE_HOMEを共有する構成のためINSTANCE_NAMEとDB_UNIQUE_NAMEはプライマリとは同じ名前を使うことができない
- プライマリとスタンバイでデータファイルのパスが異なるためXX_file_name_convertパラメータにてデータファイルとREDOログのパスを変更させている
audit_file_dest='E:\oracle\admin\ORCL102S\adump' background_dump_dest='E:\oracle\admin\ORCL102S\bdump' core_dump_dest='E:\oracle\admin\ORCL102S\cdump' user_dump_dest='E:\oracle\admin\ORCL102S\udump' compatible='10.2.0.1.0' control_files='E:\oracle\oradata\ORCL102S\CONTROL01S.CTL' db_block_size=8192 db_domain='' db_file_multiblock_read_count=16 job_queue_processes=10 nls_language='JAPANESE' nls_territory='JAPAN' open_cursors=300 sga_target=300M pga_aggregate_target=32M undo_management='AUTO' undo_tablespace='UNDOTBS01' processes=150 remote_login_passwordfile='EXCLUSIVE' log_archive_format='ARC%S_%R.%T' ##for Data Guard db_name=ORCL102 INSTANCE_NAME=ORC102S DB_UNIQUE_NAME=ORC102S log_archive_dest_1='LOCATION=E:\oracle\product\10.2.0\flash_recovery_area\ORCL102S' standby_archive_dest='E:\oracle\product\10.2.0\flash_recovery_area\ORCL102S' log_archive_dest_state_1=enable db_file_name_convert =('E:\oracle\oradata\ORCL102\', 'E:\oracle\oradata\ORCL102S\') log_file_name_convert=('E:\oracle\oradata\ORCL102\', 'E:\oracle\oradata\ORCL102S\')
8 LISTENERの起動
listenerを起動させます。C:\>lsnrctl start LISTENER LSNRCTL for 32-bit Windows: Version 10.2.0.4.0 - Production on 21-3月 -2011 22:57:45 Copyright (c) 1991, 2007, Oracle. All rights reserved. tnslsnrを起動しています。お待ちください... TNSLSNR for 32-bit Windows: Version 10.2.0.4.0 - Production システム・パラメータ・ファイルはE:\oracle\product\10.2.0\db_1\network\admin\listener.oraです。 ログ・メッセージをE:\oracle\product\10.2.0\db_1\network\log\listener.logに書き込みました。 リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN1)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=WIN1)(PORT=1521)))に接続中 リスナーのステータス ------------------------ 別名 LISTENER バージョン TNSLSNR for 32-bit Windows: Version 10.2.0.4.0 - Production 開始日 21-3月 -2011 22:57:46 稼働時間 0 日 0 時間 0 分 3 秒 トレース・レベル off セキュリティ ON: Local OS Authentication SNMP OFF パラメータ・ファイル E:\oracle\product\10.2.0\db_1\network\admin\listener.ora ログ・ファイル E:\oracle\product\10.2.0\db_1\network\log\listener.log リスニング・エンドポイントのサマリー... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN1)(PORT=1521))) サービスのサマリー... サービス"ORCL102"には、1件のインスタンスがあります。 インスタンス"ORCL102"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります... サービス"ORCL102S"には、1件のインスタンスがあります。 インスタンス"ORCL102S"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります... コマンドは正常に終了しました。
9 スタンバイDBのmount
スタンバイDBを以下の手順でstandby モードでmountします。C:\>set ORACLE_SID=ORCL102S C:\>sqlplus SQL*Plus: Release 10.2.0.4.0 - Production on 月 3月 21 22:59:50 2011 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. ユーザー名を入力してください: / as sysdba アイドル・インスタンスに接続しました。 SYS@ORCL102S > STARTUP NOMOUNT; ORACLEインスタンスが起動しました。 Total System Global Area| 314572800|bytes Fixed Size | 1296460|bytes Variable Size | 96470964|bytes Database Buffers | 209715200|bytes Redo Buffers | 7090176|bytes SYS@ORCL102S > ALTER DATABASE MOUNT STANDBY DATABASE; データベースが変更されました。
10 スタンバイREDOの作成
起動したスタンバイDB側でスタンバイREDOを作成します。 ポイントは以下の点です。・ロググループにプライマリDBのREDOログで使われている番号は使えません。 既存のロググループ番号はv$logで確認できます。
・スタンバイREDOのサイズは プライマリDBのREDOログと同じサイズにします。
SYS@ORCL102S > ALTER DATABASE ADD STANDBY LOGFILE GROUP 11 2 ('E:\ORACLE\ORADATA\ORCL102S\STANDBYREDO11.LOG') SIZE 512M; データベースが変更されました。 SYS@ORCL102S > ALTER DATABASE ADD STANDBY LOGFILE GROUP 12 2 ('E:\ORACLE\ORADATA\ORCL102S\STANDBYREDO12.LOG') SIZE 512M; データベースが変更されました。 SYS@ORCL102S > ALTER DATABASE ADD STANDBY LOGFILE GROUP 13 2 ('E:\ORACLE\ORADATA\ORCL102S\STANDBYREDO13.LOG') SIZE 512M; データベースが変更されました。
11 プライマリDBの起動
プライマリDBを起動します。C:\>set ORACLE_SID=ORCL102 C:\>sqlplus SQL*Plus: Release 10.2.0.4.0 - Production on 月 3月 21 23:33:55 2011 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. ユーザー名を入力してください: / as sysdba アイドル・インスタンスに接続しました。 SYS@ORCL102 > startup ORACLEインスタンスが起動しました。 Total System Global Area| 314572800|bytes Fixed Size | 1296460|bytes Variable Size | 96470964|bytes Database Buffers | 209715200|bytes Redo Buffers | 7090176|bytes データベースがマウントされました。 データベースがオープンされました。設定に誤りがなければこの状態でプライマリ側でアーカイブログを出力させるとスタンバイ側のstandby_archive_destパラメータで指定した ディレクトリにアーカイブログが自動転送されます。アーカイブログは以下のコマンドにより出力させることが可能です。
SYS@ORCL102 > alter system archive log current; システムが変更されました。アーカイブログがスタンバイ側に転送されるとスタンバイ側のv$archived_logに転送されたログが追加されます。 この時点ではアーカイブログは転送されただけの状態のためAPPLIED列はNO(未適用)となります。
SYS@ORCL102S > select sequence#,name,applied from v$archived_log; SEQUENCE#|NAME |APPLIE ----------|------------------------------------------------------------------------------|------ 13|E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL102S\ARC00013_0744146573.001 |NO 14|E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL102S\ARC00014_0744146573.001 |NO 15|E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL102S\ARC00015_0744146573.001 |NO 16|E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL102S\ARC00016_0744146573.001 |NO
12 REDOのリアルタイム適用の開始
スタンバイ側で以下のコマンドを実行することでリアルタイム適用が開始され、しばらくするとAPPLIEDがYESに変わります。SYS@ORCL102S > ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; データベースが変更されました。 SYS@ORCL102S > select sequence#,name,applied from v$archived_log; SEQUENCE#|NAME |APPLIED ----------|------------------------------------------------------------------------------|------- 13|E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL102S\ARC00013_0744146573.001 |YES 14|E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL102S\ARC00014_0744146573.001 |YES 15|E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL102S\ARC00015_0744146573.001 |YES 16|E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL102S\ARC00016_0744146573.001 |YES
13 REDOのリアルタイム適用の終了
以下のコマンドでリアルタイム適用を即時停止することができます。SYS@ORCL102S > ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; データベースが変更されました。
14 プライマリDB、スタンバイDBの停止
データガード環境での起動・停止は以下の順番で行います。・起動
スタンバイDBの起動→プライマリDBの起動
・停止
プライマリDBの停止→スタンバイDBの停止