概要
このドキュメントでは、プライマリデータベースのスタンバイデータベースが再構築されたときに、Prime Networkでデータベースの複製または同期の問題を解決する手順を順を追って説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- プライマリ・データベースのSWITCHOVER_STATUSがUNRESOLVABLE GAPに設定されている場合にのみ、セカンダリ・データベースを再構築するには、次の手順を使用します。
- プライマリデータベースがREAD WRITEモードで、セカンダリデータベースがREAD ONLYモードまたはREAD ONLY WITH APPLYモードであることを確認します。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- Prime Networkリリース3.9以降
- Oracle Database 11Gリリース
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
背景説明
1.プライマリ・データベースのswitchover_statusを確認するには、次のコマンドを使用します。
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
UNRESOLVABLE GAP
注:Prime Central Geo HAスイッチオーバーが突然失敗し、Prime Central GEO HAシステムまたはデータベースロールのステータス(両方ともスタンバイ)が破損し、最後のアクティブ/スタンバイステータスに応じてプライマリまたはセカンダリを再構築する必要があります。
注:その他すべてのケースでは、Cisco TACでSRを開き、データベースレプリケーションの問題を解決します。
2.プライマリおよびセカンダリデータベースの現在のモードを確認するには、次のコマンドを使用します。
SQL> select open_mode from v$database;
問題
Prime Network Database Replicationの障害。
Prime Networkアプリケーションは、このような障害を通知するシステムイベントを作成します。これは、Event Vision GUIクライアントで使用可能です。
トラブルシュート
ソリューションの前に、次のような基本的なトラブルシューティング手順を実行します。
1.プライマリおよびセカンダリPrime Network Gateway間のネットワーク接続および/または遅延に関連する問題を確認します。
2. Primaryの次のデータベース・ログをチェックして、データベース関連のORAエラーを探します。
<database_home_directory>/diag/rdbms/anadb/anadb/trace/alert_anadb.log
3.プライマリおよびセカンダリ・データベースのopen_mode、current_scn、スイッチオーバー・ステータスをチェックします。
SQL> select open_mode from v$database;
SQL> select current_scn from v$database;
SQL> select switchover_status from v$database;
4.データベースレプリケーションの根本原因は、プライマリとセカンダリのPrime Network Gateway間のネットワーク通信の問題、データベースの破損、またはデータベースに関連する同様のエラーが原因である可能性があります。
解決方法
プライマリおよびセカンダリPrime Network Gatewayでのデータベース復元手順の実行:
ステップ1:現在スケジュールされているバックアップジョブは、ファイルシステム内のアーカイブのログファイルを数日間保持します。アーカイブ・ログ・ファイルを削除しないようにするには、backup_daily.sh、backup_high_daily.sh、backup_weekly.sh、backup_high_weekly.shの次の行をコメント化します。
delete noprompt archivelog until time ...を#delete noprompt archivelog until time ...に変更します。
注:これらの'.sh'スクリプトはoracleユーザーによって所有され、$ORACLE_HOME/ana_scriptsディレクトリに格納されています。
ステップ2:プライマリ・データベースで、sysdbaとしてログインし、システム上のREDOファイルの数を検索し、次のコマンドを実行します。
SQL> select member from v$logfile;
各ログに対して、このコマンドを実行します。したがって、前のコマンドが6行を返した場合は、次のコマンドを6回実行します。
SQL>alter system switch logfile;
ステップ3:スタンバイデータベースで、sysdbaとしてログインし、spfileからpfileを作成します。
SQL>create pfile='$ORACLE_HOME/dbs/ana_sb_init.ora' from spfile;
ステップ4:スタンバイ・データベースにsysdbaとしてログインし、データファイル、バックアップ・ピース、REDOログおよびアーカイブ・ログ・ファイルへのディレクトリ・パスを検索します。これを行うには、次のコマンドを使用します。
データ・ファイルを検索するには、次の手順に従います。
SQL> select name from v$datafile;
バックアップファイルを検索するには:
rman target /
RMAN> list backup;
REDOログ・ファイルを検索する手順は、次のとおりです。
SQL> select member from v$logfile;
archiveLogを検索するには:
SQL> show parameter log_archive_dest_1;
データベースをシャットダウンします。
sqlplus / as sysdba
SQL> shutdown immediate;
ステップ5:対応するディレクトリからすべてのデータファイル・ファイル、バックアップ・ピース、REDOログ・ファイルおよびアーカイブ・ファイルを削除します(ステップ4でパスが見つかりました)。
次に、ステップ3で作成したファイルでnomountを再起動します。
sqlplus / as sysdba
SQL>startup nomount pfile='$ORACLE_HOME/dbs/ana_sb_init.ora;
ステップ6:プライマリデータベースで、バックアップフォルダ内のすべての元のバックアップピースをコピーし、別の場所に保存します。
ステップ7:プライマリ・データベースでRMANに接続し、delete backupを使用してファイル・システムからすべての物理バックアップ・ピースを削除します。
#rman target /
RMAN>delete backup;
ステップ8:プライマリデータベースでRMANに接続し、データベース、スタンバイ制御ファイル、およびアーカイブの完全バックアップをこの順序で実行します。次のコマンドを実行します。
#rman target /
RMAN>backup database;
RMAN>backup format '$BACKUP_DIR/Control%U' current controlfile for Standby;
RMAN>backup archivelog all;
注:$BACKUP_DIRは、以前にリストのバックアップを持つ現在のバックアップフォルダであり、今後はControl%Uと呼ばれるようになります。これは変数ではありません。
ステップ9:プライマリ・データベースでRMANに接続し、リスト・バックアップを使用して、ステップ8で作成したスタンバイ制御フィールドのckp scnを検索します。$BACKUP_DIR/Control%Uという名前のファイルを検索します。
BSキー・タイプLVサイズ・デバイス・タイプ経過時間
— — — — — —
2358 Full 1.09M DISK 00:00:04 21-JAN-14
BPキー:2358ステータス:使用可能な圧縮:YESタグ:TAG20140121T162311
ピース名:/export/home/oracle/backup/Control9nouks3f_1_1
付属のスタンバイ制御ファイル:Ckp SCN:164541747 Ckp時間:2014年1月21日
注:この例では、スタンバイ制御ファイルのバックアップは/export/home/oracle/backup/Control9noks3f_1_1です。このファイル名の下の行に「Ckp SCN:164541747". ステップ13では、重複実行ブロックに番号「164541747」を使用します。
ステップ10:プライマリデータベースで、ステップ8で作成したすべてのバックアップピースをtarアップします。rootユーザとして、tarファイルをスタンバイデータベースのバックアップフォルダにSCPします。
ステップ11:スタンバイ・データベースでrootユーザーとしてログインし、chownを使用してtarファイルのファイル所有権をoracle:dbaに変更します。次に、ユーザーをoracle(su - oracle)に戻し、tarファイルを解凍します。
ステップ12:プライマリゲートウェイで、prime networkユーザとしてログインし、~/Mainディレクトリにcdして、sysパスワードを取得するには、次のコマンドを実行します。
./runRegTool.sh –gs 127.0.0.1 get 127.0.0.1 persistency/general/EmbeddedDBSystemPass
注:戻されたsysパスワードは、次の手順でプライマリデータベースからスタンバイデータベースに接続するために使用されます。
ステップ13:プライマリデータベースでターゲットデータベース(プライマリ)に接続し、次に補助データベース(スタンバイ)に接続します。 次に、複製実行ブロックを実行して、スタンバイ・データベースを作成します。
#rman target /
RMAN>connect auxiliary sys/$sys_pwd@ANADB_SB
RMAN>run {
set until scn $SCN_NUMBER;
duplicate target database
for Standby
dorecover
spfile
set "db_unique_name"="anadb_sb"
set LOG_ARCHIVE_DEST_2="Service=anadb ASYNC LGWR VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
database_unique_name=anadb"
set FAL_CLIENT="anadb_sb"
set FAL_SERVER="anadb"
set log_file_name_convert="$REDO","$REDO"
nofilenamecheck;
}
注:$sys_pwdは、ステップ12で取得したsysパスワードです。実行ブロックの$SCN_NUMBERは、ステップ9で取得した例です。$REDOは、REDOログの場所の後に/が続きます。
ステップ14:ステップ13の実行ブロックが完了したら、スタンバイ・データベースにsysdbaとしてログインし、次のコマンドを実行してスタンバイ・データベースを読み取り専用モードに起動し、次に適用モードで読み取り専用を実行します。
sqlplus / as sysdba
SQL>shutdown immediate;
SQL>startup nomount;
SQL>alter database mount Standby database;
SQL>recover managed Standby database using current logfile disconnect from session;
SQL>recover managed Standby database cancel;
SQL>alter database open read only;
SQL>recover managed Standby database using current logfile disconnect from session;
ステップ15:プライマリデータベースの検証後、backup_daily.sh、backup_high_daily.sh、backup_weekly.sh、backup_high_weekly.shの次の行のコメントを解除します。
noprompt archivelog until time ...を変更して、noprompt archivelog until time ...を削除します。
確認
プライマリおよびセカンダリPrime Networkゲートウェイでのデータベースの検証:
1. REDOログ・ファイルの数と名前がプライマリ・データベースとスタンバイ・データベースで同じであることを確認します。
2.プライマリ・データベースとスタンバイ・データベースのデータファイルの数とサイズが同じであることを確認します。
3.プライマリ・データベースとスタンバイ・データベースの両方で次のコマンドを使用して、スタンバイ・データベースの現在のSCNがプライマリ・データベースのSCNに追いつくことを示します。
sqlplus / as sysdba
SQL>select current_scn from v$database;
4.プライマリデータベースのopen_modeがREAD WRITEおよびREAD ONLY WITH APPLY on Standbyデータベースであることを確認します。
sqlplus / as sysdba
SQL>select open_mode from v$database;
5.プライマリのswitchover_statusがTO STANDBYであり、スタンバイデータベースでNOT ALLOWEDであることを確認します。
sqlplus / as sysdba
SQL>select switchover_status from v$database;
6.アーカイブログが転送中であることを確認する
Primarydatabase:
SQL> alter system switch logfile;
セカンダリデータベース:
新しいファイルが~/archに作成されていることを確認します。
7.今後Event Vision GUIでデータベースレプリケーションの失敗が発生しないことを確認します(20分以内)。