Oracle 11GR2 DataGuard(DG)のインストールと構成(フィジカルスタンバイ)

リファレンスドキュメントhttps://oracle-base.com/articles/11g/data-guard-setup-11gr2Oracle 11GR2   

DataGuard(DG)のインストールと構成(フィジカルスタンバイ)

 

マスターデータベース

前提条件

  • オペレーティングシステムを備えた2台のサーバー(物理サーバーまたは仮想マシン)があり、それらにOracleがインストールされています。この例では、Oracle Linux5.6とOracleDatabase11.2.0.2を使用しました。
  • メインサーバーには実行中のインスタンスがあります
  • スタンバイサーバーはデータベースソフトウェアのみをインストールします

メインサーバーの設定

ロギング

メインデータベースがアーカイブモードになっているかどうかを確認します。

SELECT log_mode FROM v$database;

LOG_MODE
------------
NOARCHIVELOG

SQL>

アーカイブモードでない場合は、アーカイブモードに切り替えます。

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

Oracleにすべての操作をログに記録させる

ALTER DATABASE FORCE LOGGING;

初期化パラメータ

dbnameおよびdbuniquenameパラメーターの設定を確認してください。現在の例(メインデータベース)では、これらはすべて「DB11G」に設定されています。

SQL> show parameter db_name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_name 			     string	 DB11G

SQL> show parameter db_unique_name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_unique_name			     string	 DB11G

SQL>

スタンバイデータベースのdbnameはプライマリデータベースのdbnameと同じになりますが、プライマリデータベースとスタンバイデータベースのdbunique名の値は異なる必要があります。プライマリデータベースとスタンバイデータベースのdbunique名の値は、LOG_ARCHIVE_CONFIGパラメーターのDG構成設定で使用する必要があります。この例では、スタンバイデータベースの値は「DB11G_STBY」です。

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(DB11G,DB11G_STBY)

適切なリモートアーカイブログの宛先を設定します。この例では、ローカルロケーションとして高速リカバリ領域を使用しています。以下のパラメーターのSERVICEおよびDB_UNIQUE_NAMEは、スタンバイ・データベース(STANDBY)の値を使用することに注意してください。

ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;

 LOG_ARCHIVE_FORMAT また、LOG_ARCHIVE_MAX_PROCESSESパラメーターを適切な値に設定し、REMOTE_LOGIN_PASSWORDFILEパラメーターを排他的に設定する必要があります。

ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=30;
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

以前の設定に加えて、メインサーバーとスタンバイサーバーをいつでも切り替えることができるようにするため。以下のパラメータを設定する必要があります。* _CONVERTパラメーターを調整して、アクティブ・サーバーとスタンバイ・サーバーのファイル名とファイル・パスの違いに適合させます。

ALTER SYSTEM SET FAL_SERVER=DB11G_STBY;
--ALTER SYSTEM SET DB_FILE_NAME_CONVERT='DB11G_STBY','DB11G' SCOPE=SPFILE;
--ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='DB11G_STBY','DB11G'  SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

一部のパラメータはデータベースの再起動後にのみ有効になるため(scope = spfile)、上記のパラメータを変更してからデータベースを再起動してください。

サービス設定

$ ORACLE_HOME / network / admin /tnsnames.oraファイルのプライマリデータベースとセカンダリデータベースについて次の情報を入力します。

DB11G =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol5-112-dga1)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DB11G.WORLD)
    )
  )

DB11G_STBY =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ol5-112-dga2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DB11G.WORLD)
    )
  )

メインデータベースをバックアップする

メインデータベースの完全バックアップを実行します。

$ rman target=/

RMAN> BACKUP DATABASE PLUS ARCHIVELOG;

バックアップ制御ファイルとPFILEを作成する

プライマリデータベースにスタンバイデータベースの制御ファイルを作成します。

ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/db11g_stby.ctl';

プライマリデータベースにスタンバイデータベースのパラメータファイルを作成します。

CREATE PFILE='/tmp/initDB11G_stby.ora' FROM SPFILE;

新しく作成されたパラメータファイル/tmp/initDB11G_stby.oraを変更して、スタンバイデータベースで使用できるようにします(パラメータ値はスタンバイデータベースの関連する値を書き込みます)

*.db_unique_name='DB11G_STBY'
*.fal_server='DB11G'
*.log_archive_dest_2='SERVICE=db11g ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G'

スタンバイサーバーのインストールと構成(手動)

ファイルをコピーする

スタンバイサーバーに必要なディレクトリを作成します。

$ mkdir -p /u01/app/oracle/oradata/DB11G
$ mkdir -p /u01/app/oracle/fast_recovery_area/DB11G
$ mkdir -p /u01/app/oracle/admin/DB11G/adump

プライマリサーバーからスタンバイサーバーにファイルをコピーします。

$ # Standby controlfile to all locations.
$ scp oracle@ol5-112-dga1:/tmp/db11g_stby.ctl /u01/app/oracle/oradata/DB11G/control01.ctl
$ cp /u01/app/oracle/oradata/DB11G/control01.ctl /u01/app/oracle/fast_recovery_area/DB11G/control02.ctl

$ # Archivelogs and backups
$ scp -r oracle@ol5-112-dga1:/u01/app/oracle/fast_recovery_area/DB11G/archivelog /u01/app/oracle/fast_recovery_area/DB11G
$ scp -r oracle@ol5-112-dga1:/u01/app/oracle/fast_recovery_area/DB11G/backupset /u01/app/oracle/fast_recovery_area/DB11G

$ # Parameter file.
$ scp oracle@ol5-112-dga1:/tmp/initDB11G_stby.ora /tmp/initDB11G_stby.ora

$ # Remote login password file.
$ scp oracle@ol5-112-dga1:$ORACLE_HOME/dbs/orapwDB11G $ORACLE_HOME/dbs

バックアップはFRAコピーの一部としてスタンバイサーバーにコピーされることに注意してください。バックアップがFRAに保存されていない場合は、バックアップをスタンバイサーバーにコピーし、プライマリサーバーで使用されているのと同じパスにする必要があります。

聞き始める

必ずスタンバイサーバーで監視を開始してください。

$ lsnrctl start

バックアップを復元

変更したPFILEからSPFILEを作成します。

$ export ORACLE_SID=DB11G
$ sqlplus / as sysdba

SQL> CREATE SPFILE FROM PFILE='/tmp/initDB11G_stby.ora';

制御ファイルとデータファイルを復元する

$ export ORACLE_SID=DB11G
$ rman target=/

RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;

REDOログを作成する

スタンバイサーバーのオンラインREDOログを作成します。

ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=MANUAL;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo01.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo02.log') SIZE 50M;
ALTER DATABASE ADD LOGFILE ('/u01/app/oracle/oradata/DB11G/online_redo03.log') SIZE 50M;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

オンラインREDOログに加えて、スタンバイREDOログをスタンバイデータベースとプライマリデータベース(プライマリ/スタンバイスイッチで使用)に作成する必要があります。スタンバイREDOログは、少なくとも最大のオンラインREDOログと同じ大きさで、オンラインログより1つ多く設定する必要があります。以下に示すように、プライマリサーバーとスタンバイサーバーの両方で作成する必要があります。

ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 ('/u01/app/oracle/oradata/DB11G/standby_redo01.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 ('/u01/app/oracle/oradata/DB11G/standby_redo02.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 ('/u01/app/oracle/oradata/DB11G/standby_redo03.log') SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 ('/u01/app/oracle/oradata/DB11G/standby_redo04.log') SIZE 50M;

上記の操作が完了すると、プライマリデータベースはスタンバイデータベースにログを送信できます。

ログアプリケーションを開始します

スタンバイサーバーでログ受信アプリケーションを起動します。

# Foreground redo apply. Session never returns until cancel. (这个是不会停止会话)
#ALTER DATABASE RECOVER MANAGED STANDBY DATABASE; 

# Background redo apply. Control is returned to the session once the apply process is started.
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

ログアプリケーションをキャンセルする必要がある場合。

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

必要に応じて、次のコマンドを使用してアプリケーションを遅らせることができます。

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DELAY 30 DISCONNECT FROM SESSION;

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY DISCONNECT FROM SESSION;

スタンバイREDOログを構成している場合は、次のコマンドを使用してリアルタイムログアプリケーションを起動できます。

現在のログファイルを使用したALTERDATABASE RECOVER MANAGED STANDBY DATABASE;

ログ転送のテスト

プライマリサーバーで、アーカイブされた最新のREDOログを確認し、ログの切り替えを強制します。

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

SELECT sequence#, first_time, next_time
FROM   v$archived_log
ORDER BY sequence#;

ALTER SYSTEM SWITCH LOGFILE;

新しいアーカイブREDOログがスタンバイ・サーバーに到達し、適用されていることを確認してください。

ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';

SELECT sequence#, first_time, next_time, applied
FROM   v$archived_log
ORDER BY sequence#;

Dataguardの保護モード(保護モード)

メインデータベースには、次の3つの保護モードがあります。

  • 最大可用性:REDO情報が少なくとも1つのスタンバイロケーションのオンラインREDOログおよびスタンバイREDOログに書き込まれる前に、プライマリサービスのトランザクションはコミットされません。使用可能なスタンバイデータベースがない場合、スタンバイデータベースが再び使用可能になるまで、最大パフォーマンスモードと同じように動作します。
  • 最大パフォーマンス:プライマリデータベースで送信されたトランザクションは、REDO情報がオンラインREDOログに書き込まれた直後に実行されます。スタンバイサーバーへのREDO情報の送信は非同期であるため、プライマリサーバーのパフォーマンスには影響しません。
  • 最大限の保護:REDO情報がオンラインREDOログに書き込まれ、スタンバイREDOログが少なくとも1つの代替場所にある前に、プライマリサービスのトランザクションはコミットされません。適切な代替場所がない場合、プライマリデータベースはシャットダウンされます

デフォルトでは、新しく作成されたスタンバイデータベースの場合、プライマリデータベースは最大パフォーマンスモードになります。

SELECT protection_mode FROM v$database;

PROTECTION_MODE
--------------------
MAXIMUM PERFORMANCE

SQL>

次のコマンドを使用して、これら3つの保護モードを切り替えることができます。

-- Maximum Availability.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;

-- Maximum Performance.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;

-- Maximum Protection.
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=db11g_stby AFFIRM SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DB11G_STBY';
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
ALTER DATABASE OPEN;

プライマリデータベースとスタンバイデータベース間の切り替え(切り替え)

次のステートメントを使用して、プライマリデータベースとスタンバイデータベースの役割の切り替えを実行できます。切り替えプロセス全体でデータが失われることはありません。

プライマリデータベースは次のコマンドを実行してスタンバイデータベースに切り替えます

-- Convert primary database to standby
CONNECT / AS SYSDBA
ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY;

-- Shutdown primary database
SHUTDOWN IMMEDIATE;

-- Mount old primary database as standby database
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

スタンバイサーバーは次のコマンドを実行してプライマリデータベースに切り替えます

-- Convert standby database to primary
CONNECT / AS SYSDBA
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

-- Shutdown standby database
SHUTDOWN IMMEDIATE;

-- Open old standby database as primary
STARTUP;

これが完了したら、ログ転送をテストします。すべてが正常な場合は、別のスイッチを使用してプライマリデータベースを元のサーバーに戻します。

フェイルオーバー

プライマリデータベースが使用できない場合は、次のステートメントを使用して、スタンバイデータベースをプライマリデータベースとしてアクティブ化できます。

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH;
ALTER DATABASE ACTIVATE STANDBY DATABASE;

スタンバイデータベースがプライマリデータベースになっているため、完全バックアップをすぐに実行する必要があります

フラッシュバックデータベース

 スイッチオーバーはプライマリデータベースとスタンバイデータベースの両方で安全ですが、フェイルオーバーにより、元のプライマリデータベースがスタンバイデータベースに変換されなくなります。フラッシュバックデータベースが有効になっていない場合は、元のプライマリデータベースを破棄して、スタンバイデータベースとして再作成する必要があります。

もう1つの方法は、プライマリデータベースでフラッシュバックデータベースを有効にすることです(必要に応じて、スタンバイデータベースを有効にすることもできます)。これにより、フェイルオーバーが発生した場合に、プライマリデータベースをフェイルオーバー前の時間にフラッシュバックし、すばやく変換できます。スタンバイデータベース。

詳細については、公式リリースドキュメントを参照してください:https//docs.oracle.com/cd/E11882_01/server.112/e41134/scenarios.htm#SBYDB00910

 

読み取り専用スタンバイデータベースおよび(ADG)Active Data Guard

 読み取り専用モードで開くと、アーカイブログの配布は続行されますが、スタンバイデータベースでのログの適用が停止するため、ログリカバリがオンになるまでスタンバイデータベースはますます陳腐化していきます。

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;

ログアプリケーションを復元するには、実行してください

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

11gで、OracleはActive DataGuard機能を導入しました。これにより、スタンバイデータベースを読み取り専用モードで開くことができますが、REDO情報は適用されます。これは、代替のサービスクエリを使用できることを意味しますが、それらはまだ最新です。この機能を使用するには、ライセンスを購入する必要があります。次のコマンドは、ADGを有効にする方法を示しています。

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

 

おすすめ

転載: blog.csdn.net/VoiceRoom/article/details/106803914
おすすめ