-
Oracle 11g DataGuard の構成
Oracle Database 11g Enterprise Edition リリース 11.1.0.6.0 - 64 ビット製品
Red Hat Enterprise Linux Server リリース 5.3 (Tikanga)
1. テスト環境の準備
1. メイン データベースとスタンバイ データベースは同じ Oracle バージョンを持ち、Linux などの同じプラットフォーム上で実行されますが、サーバー ハードウェアは異なる場合があります。
2. プライマリ・データベースはアーカイブ・モードで実行する必要があり、ユーザーがログなしやその他の方法で REDO を書き込んで、対応する操作がスタンバイ・データベースに送信されなくなることを防ぐために、必ずプライマリ・データベースで FORCE LOGGING をオープンしてください。
3. プライマリ データベースとスタンバイ データベースはどちらも単一インスタンスまたは RAC アーキテクチャに適用でき、同じデータ ガード構成でロジカル スタンバイとフィジカル スタンバイを混在させることができます。
4. データベースでは同じストレージ アーキテクチャを使用することをお勧めします。たとえば、ストレージに ASM/OMF を使用する場合、プライマリ、スタンバイに関係なく ASM/OMF を使用する必要があります。
5. スタンバイ ライブラリの環境はプライマリ ライブラリと同じです。
2. メインライブラリの調整
1. メインデータベースを強制ログモードに変更します。
データベースの強制ログを変更します。
2. パスワードを作成する
orapwd ファイル=$ORACLE_HOME/dbs/orapwtest パスワード=テスト エントリ=3
3. メインライブラリの初期化パラメータを変更します。
db_unique_name ='test01'
db_name はデータベースの名前を指定し、db_unique_name はデータベースの別の名前 (プライマリ データベースとスタンバイ データベース) を指定します。これは、db_name の一意の識別子です。実際には、アプリケーションと管理を容易にするために、同じ db_name を持つデータベースを区別するためです。 10g以降のパラメータです。
log_archive_config='DG_CONFIG=(test01,test02)'
test01、test02 は .db_unique_name です
log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
log_archive_dest_state_1 を決定する
log_archive_dest_state_1=enable #デフォルトはenableです
log_archive_dest_state_2= 有効にする
/*次の部分は、ホストをスタンバイ データベースに切り替えるために使用されます*/
fal_server=test_db_02
fal_client=test_db_01
スタンバイファイル管理=自動
#プライマリデータベースとセカンダリデータベースのファイルまたはパスが異なる場合
db_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
log_file_name_convert='/u01/app/oracle/oradata/test','/u01/app/oracle/oradata/test'
ノンストップ ライブラリのコマンドを使用してパラメータを変更できるように、パラメータ ファイルには spfile を使用することをお勧めします。
4. データベースがアーカイブログ モードで実行されていることを確認します。
SQL> アーカイブログリスト
データベースログモード アーカイブモードなし
自動アーカイブが無効になっています
アーカイブ先 USE_DB_RECOVERY_FILE_DEST
最も古いオンライン ログ シーケンス 2
現在のログシーケンス 4
データベースをアーカイブログモードに調整します
SQL> 即時シャットダウン
SQL> 起動マウント
SQL> データベース アーカイブログを変更します。
SQL> データベースを開きます;
5. メインデータベースにスタンバイログを作成します(切り替え用)
データベースの変更 マネージド・スタンバイ・データベースの回復 cancel;#未実行
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;
SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;
mkdir -p /u01/app/oracle/standby/test
SQL>データベースの変更でスタンバイ ログファイル グループ 4('/u01/app/oracle/standby/test/stdby_redo04.log') サイズ 50M を追加します。
SQL>alter データベース追加スタンバイ ログファイル グループ 5('/u01/app/oracle/standby/test/stdby_redo05.log') サイズ 50M;
SQL>データベースの変更でスタンバイ ログファイル グループ 6('/u01/app/oracle/standby/test/stdby_redo06.log') サイズ 50M を追加します。
SQL>データベースの変更、マネージド・スタンバイ・データベースのリカバリ、セッションからの切断;#未実行
3. スタンバイデータベースの作成
1. スタンバイデータベースに pwdfile を作成します。
orapwd ファイル=$ORACLE_HOME/dbs/orapwtest パスワード=テスト エントリ=3
パスワードはプライマリデータベースと同じである必要があります
2. プライマリ データベースとは異なるスタンバイ データベースの初期化パラメータを次のように変更します。
db_unique_name=test02
log_archive_dest_1='location=/u01/app/oracle/arch/test valid_for=(all_logfiles,all_roles) db_unique_name=test02'
log_archive_dest_2='service=test_db_01 ARCH ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=test01'
fal_client='test_db_02'
fal_server='test_db_01'
db_file_name_convert='/u01/app/oracle/oradata/TEST01/datafile','/u01/app/oracle/oradata/TEST02/datafile'
log_file_name_convert='/u01/app/oracle/oradata/TEST01/onlinelog','/u01/app/oracle/oradata/TEST02/onlinelog', '/u01/app/oracle/flash_recovery_area/TEST01/onlinelog','/u01 /app/oracle/flash_recovery_area/TEST01/onlinelog'
変更後、次のステートメントを使用して表示します。
SQL> select * from V$DATAGUARD_CONFIG;
DB_UNIQUE_NAME
-------------------------------------------------- --------------------------------------
テスト01
テスト02
4. 対応するディレクトリ、ダンプファイルディレクトリ、データファイルディレクトリ、アーカイブディレクトリを作成します。
mkdir -p /u01/app/oracle/oradata
mkdir -p /u01/app/oracle/flash_recovery_area
mkdir -p /u01/app/oracle/arch/test
5. スタンバイ・データベースのlistener.oraファイルとtnsnames.oraファイルを構成して、メイン・データベースでのリスニングを再開し、tnspingが通過できるかどうかを確認します。
6. スタンバイ・データベースを非マウント状態で開始します。
SQL> 起動番号
7. RMAN の複製機能を使用してスタンバイ データベースを作成すると、11g はバックアップを作成せずにスタンバイ データベースに直接コピーできます。
RMAN> rman 補助 /
ターゲットsys/test@test_db_01に接続します
スタンバイ dorecover nofilenamecheck のターゲット データベースを複製します。
スタンバイデータベースのステータスを確認する
SQL> v$database からデータベース ロール、保護モード、保護レベルを選択します。
SQL> select sequence# 、v$archived_log から sequence# 順に適用されます。
8. Redoアプリケーションのメインライブラリを起動します。
SQL> 現在のシステム アーカイブ ログを変更します。
スタンバイ データベース、11g はデータベース アプリケーション ログを読み取り専用で開くことができます
SQL> データベースを変更して読み取り専用で開きます。
SQL> データベースの変更 マネージド・スタンバイ・データベースのリカバリ セッションから切断;
現在のログファイルを使用してデータベースを変更し、セッションアプリケーションログから切断してマネージドスタンバイデータベースを回復することもできます。
現在使用しているログファイルがない場合は、スタンバイのアーカイブログを適用します。
現在のログファイルの使用は、ログがスタンバイ REDO ログに転送されるときに適用されます。これはリアルタイムであり、スタンバイ REDO ログが必要です。
4. スタンバイサーバーの管理モードと読み取り専用モード
1. 管理モードで起動します。
SQL>即時シャットダウン;
SQL>スタートアップ番号;
SQL>データベースの変更 スタンバイ データベースをマウントします。
SQL>データベースの変更、マネージド・スタンバイ・データベースのリカバリ、セッションからの切断;
2. 読み取り専用モードで起動します。
SQL>即時シャットダウン;
SQL>スタートアップ番号;
SQL>データベースの変更 スタンバイ データベースをマウントします。
SQL>データベースを変更して読み取り専用で開きます。
(3) 管理リカバリモードで読み取り専用モードに移行した場合
SQL> マネージド・スタンバイ・データベースのリカバリー・キャンセル;
SQL> データベースを変更して読み取り専用で開きます。
この時点で、一時データ ファイルをデータベースに追加できます (これはホット バックアップ中にはバックアップされません)。
のように
alter tablespace temp add tempfile '/u02/oradata/test/temp01.dbf' サイズ 100M;
5. 読み取り専用モードからマネージドリカバリモードへ
SQL> マネージド スタンバイ データベースをリカバリし、セッションから切断します。
5. アクティブデータベースとスタンバイデータベースを切り替える
lsnrctl 停止
SQL> データベースコミットを変更して、セッションをシャットダウンしてフィジカルスタンバイにスイッチオーバーします。
SQL> 即時シャットダウン;
SQL> 起動マウント;
SQL> データベースの変更、マネージド スタンバイ データベースの回復、切断;
lsnrctl の開始
バックアップ
SQL> データベースコミットを変更してプライマリにスイッチオーバーします。
SQL> 即時シャットダウン;
SQL> 起動
6. 以下の添付ファイルは構成ファイルの内容です。
リスナー.ora
リスナー =
(説明=
(アドレス = (プロトコル = TCP)(ホスト = oracle6)(ポート = 1521))
)
tnsnames.ora
TEST_DB_02 =
(説明=
(アドレス_リスト =
(アドレス = (プロトコル = TCP)(ホスト = 192.168.202.5)(ポート = 1521))
)
(CONNECT_DATA =
(サービス名 = test02)
)
)
TEST_DB_01 =
(説明=
(アドレス_リスト =
(アドレス = (プロトコル = TCP)(ホスト = 192.168.202.6)(ポート = 1521))
)
(CONNECT_DATA =
(サービス名 = test01)
)
)
ファイル
test.__db_cache_size=1526726656
test.__java_pool_size=16777216
test.__large_pool_size=16777216
test.__oracle_base='/u01/app/oracle'#ORACLE_BASE 環境から設定
test.__pga_aggregate_target=1342177280
test.__sga_target=2013265920
test.__shared_io_pool_size=0
test.__shared_pool_size=436207616
test.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/test/adump'
*.audit_trail='db'
*.compatibility='11.1.0.0.0'
*.control_files='/u01/app/oracle/oradata/test/control01.ctl','/u01/app/oracle/oradata/test/control02.ctl','/u01/app/oracle/oradata/test/ control03.ctl'
*.db_block_size=8192
*.db_domain='greatsky.com'
*.db_name='テスト'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='test01'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'
*.fal_client='TEST_DB_01'
*.fal_server='TEST_DB_02'
*.log_archive_config='dg_config=(test01,test02)'
*.log_archive_dest_1='location=/u01/app/oracle/arch/test/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=test01'
*.log_archive_dest_2='SERVICE=test_db_02 LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=test02'
*.memory_target=3347054592
*.open_cursors=300
*.プロセス=150
*.remote_login_passwordfile='EXCLUSIVE'
*.service_names='test.greatsky.com','test01.greatsky.com'
*.standby_file_management='自動'
*.undo_tablespace='UNDOTBS1'