プライマリ・コンテンツに移動
Oracle® Database管理者ガイド
12cリリース2 (12.2)
E72998-04
目次へ移動
目次
索引へ移動
索引

前
次

12 アーカイブREDOログ・ファイルの管理

アーカイブREDOログ・ファイルは、NOARCHIVELOGまたはARCHIVELOGモードの選択やアーカイブ先の指定などのタスクを実行することで管理します。

関連項目:

  • Oracle Databaseサーバーによって作成および管理されるアーカイブREDOログの作成方法は、「Oracle Managed Filesの使用」を参照してください

  • Oracle Real Application Clusters環境でのアーカイブに固有の情報については、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

12.1 アーカイブREDOログの概要

Oracle Databaseでは、書込み済のREDOログ・ファイル・グループを、アーカイブREDOログと総称される1つ以上のオフラインの保存先に保存できます。

REDOログ・ファイルをアーカイブREDOログ・ファイルに変更するプロセスは、アーカイブと呼ばれます。このプロセスを実行できるのは、データベースがARCHIVELOGモードで動作している場合のみです。自動または手動アーカイブを選択できます。

アーカイブREDOログ・ファイルは、REDOログ・グループの書込み済メンバーのいずれかのコピーです。REDOログ・グループの同一メンバーのREDOエントリ、および一意のログ順序番号が含まれています。たとえば、REDOログを多重化しており、グループ1に同一のメンバー・ファイルa_log1b_log1が含まれている場合、アーカイバ・プロセス(ARCn)によってこれらのメンバー・ファイルのうちの1つがアーカイブされます。a_log1が破損した場合でも、ARCnは同一のb_log1をアーカイブできます。アーカイブREDOログには、アーカイブを有効にした後に作成されたすべてのグループのコピーが含まれます。

データベースがARCHIVELOGモードで稼働しているときは、REDOログ・グループがアーカイブされないかぎり、ログ・ライター・プロセス(LGWR)はREDOログ・グループを再利用(上書き)できません。自動アーカイブが使用可能な場合は、バックグラウンド・プロセスARCnによってアーカイブ操作が自動的に実行されます。データベースは必要に応じて複数のアーカイバ・プロセスを起動して、一杯になったREDOログのアーカイブが遅れないようにします。

アーカイブREDOログ・ファイルは、次の目的に使用できます。

  • データベースのリカバリ

  • スタンバイ・データベースの更新

  • LogMinerユーティリティを使用したデータベースの履歴情報の取得

    関連項目:

    アーカイブREDOログ・ファイルの使用方法は、次のマニュアルを参照してください。

    • 『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』

    • スタンバイ・データベースの設定とメンテナンスは、『Oracle Data Guard概要および管理』を参照してください。

    • LogMinerのPL/SQLパッケージの使用方法は、『Oracle Databaseユーティリティ』を参照してください。

12.2 NOARCHIVELOGモードとARCHIVELOGモードの選択

データベースをNOARCHIVELOGモードとARCHIVELOGモードのどちらで実行するかを選択する必要があります。

一杯になったREDOログ・ファイル・グループをアーカイブ可能にするかどうかは、データベース上で実行されているアプリケーションの可用性と信頼性の要件によって決まります。ディスク障害の発生時にもデータベース内のデータが失われないようにする場合は、ARCHIVELOGモードを使用します。一杯になったREDOログ・ファイルをアーカイブすると、管理作業が増えます。

12.2.1 NOARCHIVELOGモードによるデータベースの実行

データベースをNOARCHIVELOGモードで実行すると、REDOログはアーカイブされません。

データベースの制御ファイルは、グループが一杯になってもアーカイブする必要がないことを示します。したがって、ログ・スイッチが発生して、一杯になったグループがアクティブでなくなると、そのグループはLGWRで再利用できるようになります。

NOARCHIVELOGモードでは、データベースはインスタンス障害からは保護されますが、メディア障害からは保護されません。オンラインREDOログ・グループに格納されているデータベースへの最新の変更のみをインスタンスのリカバリに使用できます。データベースがNOARCHIVELOGモードのときにメディア障害が発生した場合、最後にデータベース全体のバックアップを行った時点までのデータベースをリストアできます。そのバックアップ以降のトランザクションはリカバリできません。

NOARCHIVELOGモードでは、オンラインでの表領域のバックアップを実行できず、また、データベースがARCHIVELOGモードだった際に作成したオンラインの表領域バックアップも使用できません。NOARCHIVELOGモードで運用しているデータベースをリストアする場合、使用できるバックアップは、データベースのクローズ中に作成したデータベース全体のバックアップのみです。そのため、データベースをNOARCHIVELOGモードで稼働する場合は、定期的かつ頻繁にデータベース全体のバックアップを実行する必要があります。

12.2.2 ARCHIVELOGモードによるデータベースの実行

データベースをARCHIVELOGモードで実行する場合は、REDOログのアーカイブを使用可能にします。

データベースの制御ファイルは、一杯になったREDOログ・ファイルのグループがアーカイブされるまでは、LGWRでこのグループを再使用できないことを示します。一杯になったグループは、ログ・スイッチの発生直後からアーカイブに使用できます。

一杯になったグループのアーカイブには、次のような利点があります。

  • データベースのバックアップ、オンラインREDOログおよびアーカイブREDOログ・ファイルが揃っていると、オペレーティング・システムやディスクに障害が発生しても、コミットされたすべてのトランザクションをリカバリできることが保証されます。

  • アーカイブ・ログを使用可能にしておく場合、データベースがオープンされていて、システムが正常に使用できるときに実行したバックアップを使用できます。

  • スタンバイに、元のデータベースのアーカイブREDOログ・ファイルを継続的に適用することにより、スタンバイ・データベースを元のデータベースに対して最新の状態に保つことができます。

一杯になったREDOログ・ファイルを自動的にアーカイブするようにインスタンスを構成する方法と、手動でアーカイブする方法があります。通常は、自動アーカイブの方が便利で効率的です。図12-1は、アーカイバ・プロセス(この図ではARC0)によって、一杯になったREDOログ・ファイルがデータベースのアーカイブREDOログに書き込まれる過程を示しています。

分散データベース内のデータベースをすべてARCHIVELOGモードで操作している場合は、調整式分散データベース・リカバリを実行できます。ただし、分散データベース内のデータベースのいずれかがNOARCHIVELOGモードで操作されている場合、(すべてのデータベースの整合性を維持するために)グローバルな分散データベースのリカバリは、NOARCHIVELOGモードで操作しているデータベース全体の最新のバックアップによって制限されます。

図12-1 ARCHIVELOGモードでのREDOログ・ファイルの使用

図12-1の説明が続きます
「図12-1 ARCHIVELOGモードでのREDOログ・ファイルの使用」の説明

ヒント:

アーカイブREDOログ・ファイルとそれに対応するデータベース・バックアップは、ローカル・ディスクからテープなどの永続的なオフライン記憶メディアに移動しておくことをお薦めします。アーカイブ・ログは主としてデータベース・リカバリに使用されるため、プライマリ・データベースに障害が発生した場合でも、これらのログが安全であることを保証する必要があります。

12.3 アーカイブの制御

データベースのアーカイブ・モードを設定し、アーカイブ・プロセス数を調整できます。

関連項目:

アーカイブ・モードの制御に関する追加情報は、オペレーティング・システム固有のOracleマニュアルを参照してください

12.3.1 初期データベース・アーカイブ・モードの設定

初期のアーカイブ・モードは、CREATE DATABASE文でデータベース作成の一部として設定します。

多くの場合、このプロセスで生成されるREDO情報はアーカイブする必要がないため、データベース作成時にはNOARCHIVELOGモード(デフォルト)を使用できます。初期のアーカイブ・モードを変更するかどうかは、データベースの作成後に決定します。

ARCHIVELOGモードを指定した場合は、アーカイブREDOログ・ファイルのアーカイブ先を初期化パラメータで指定する必要があります(「アーカイブ先の初期化パラメータの設定」を参照)。

12.3.2 データベース・アーカイブ・モードの変更

データベース・アーカイブ・モードを変更するには、ALTER DATABASE文でARCHIVELOG句またはNOARCHIVELOG句を使用します。

また、データベース・アーカイブ・モードを変更するには、管理者権限(AS SYSDBA)でデータベースに接続する必要があります。

次の手順は、データベース・アーカイブ・モードをNOARCHIVELOGからARCHIVELOGに切り替えます。

  1. データベース・インスタンスを停止します。
    SHUTDOWN IMMEDIATE
    

    データベースがオープンされている場合は、アーカイブ・モードを切り替える前にクローズし、対応するインスタンスを停止する必要があります。メディア・リカバリを必要とするデータファイルがある場合は、モードをARCHIVELOGからNOARCHIVELOGに変更できません。

  2. データベースをバックアップします。

    データベースに重要な変更をする前に、データベースのデータを保護するため必ずバックアップを作成してください。このバックアップは、NOARCHIVELOGモードでのデータベースの最終バックアップとなり、ARCHIVELOGモードへの切替え中に問題が生じた場合に使用できます。データベース・バックアップの作成については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

  3. 初期化パラメータ・ファイルを編集して、アーカイブREDOログ・ファイルのアーカイブ先を初期化パラメータで指定します(「アーカイブ先の初期化パラメータの設定」を参照)。
  4. 新しいインスタンスを起動し、データベースをマウントします。オープンはしません。
    STARTUP MOUNT
    

    アーカイブを使用可能または使用禁止にするには、データベースをマウントして、オープンしないようにする必要があります。

  5. データベース・アーカイブ・モードを変更します。通常の操作を実行するためにデータベースをオープンします。
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;
    
  6. データベースを停止します。
    SHUTDOWN IMMEDIATE
    
  7. データベースをバックアップします。

    データベースのアーカイブ・モードを変更すると、制御ファイルが更新されます。変更後は、すべてのデータベース・ファイルと制御ファイルのバックアップを作成する必要があります。以前のバックアップはNOARCHIVELOGモードで作成されているため、使用できなくなります。

    関連項目:

    Real Application Clusters使用時のアーカイブ・モード切替えの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください

12.3.3 手動アーカイブの実行

通常は、自動アーカイブの方が便利で効率的です。ただし、データベースの構成は手動アーカイブでのみ実行できます。

データベースを手動ARCHIVELOGモードで操作している場合は、一杯になったREDOログ・ファイルの非アクティブ・グループをアーカイブしないと、データベース操作が一時的に停止する可能性があります。

データベースを手動アーカイブ・モードで操作する手順:

  1. 「データベース・アーカイブ・モードの変更」で説明している手順に従いますが、ALTER DATABASE文は次の文で置換します。

    ALTER DATABASE ARCHIVELOG MANUAL;
    
  2. 管理者権限を持つユーザーとして、データベースに接続します。

  3. データベースがマウントされているか、オープンしていることを確認します。

  4. 手動アーカイブを実行するには、ALTER SYSTEM文でARCHIVE LOG句を指定します。たとえば次の文は、アーカイブされていないREDOログ・ファイルをすべてアーカイブします。

    ALTER SYSTEM ARCHIVE LOG ALL;
    

手動アーカイブ・モードを使用している場合、アーカイブ先にスタンバイ・データベースは指定できません。

また、自動アーカイブが使用可能な場合でも、一杯になったREDOログ・メンバーの非アクティブ・グループを別の位置に再度アーカイブする場合などに手動アーカイブを使用できます。この場合は、手動アーカイブが完了していなくてもインスタンスではREDOログ・グループを再利用できるため、ファイルが上書きされる場合があります。このような場合は、アラート・ログにエラー・メッセージが書き込まれます。

12.3.4 アーカイバ・プロセス数の調整

LOG_ARCHIVE_MAX_PROCESSES初期化パラメータは、データベースが最初に起動するARCnプロセスの数を指定します。デフォルトのプロセス数は4です。

追加のARCnプロセスの開始の実行時オーバーヘッドを回避する手順:

  • LOG_ARCHIVE_MAX_PROCESSES初期化パラメータを設定して、インスタンス起動時に最大30のARCnプロセスを開始することを指定します。

LOG_ARCHIVE_MAX_PROCESSESパラメータは動的で、ALTER SYSTEM 文を使用して変更できます。

次の文は、データベースが起動時に6つのARCnプロセスを起動するようにデータベースを構成します。

ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=6;

また、この文は現在実行中のインスタンスにただちに影響します。ここでは現在実行されているARCnプロセスの数を増加または減少させて6にします。

12.4 アーカイブ先の指定

REDOログをアーカイブする前に、アーカイブ先を指定し、アーカイブ先の様々な状態を理解する必要があります。

「アーカイブREDOログに関する情報の表示」に示す動的パフォーマンス・ビュー(V$)を使用して、必要なすべてのアーカイブ情報を参照できます。

12.4.1 アーカイブ先の初期化パラメータの設定

REDOログのアーカイブ先を単一の場所にするか、または複数の場所にするかを選択できます。

アーカイブ先は、ローカル(ローカル・ファイル・システムまたはOracle Automatic Storage Management(Oracle ASM)ディスク・グループ内)またはリモート(スタンバイ・データベース上)を選択できます。複数の場所にアーカイブする場合は、一杯になった各REDOログ・ファイルのコピーが各アーカイブ先に書き込まれます。これらの冗長コピーは、アーカイブ先のいずれかで障害が発生した場合でもアーカイブ・ログを常に使用可能にするのに役立ちます。

単一のアーカイブ先にのみアーカイブする手順:

  • LOG_ARCHIVE_DEST初期化パラメータを使用してアーカイブ先を指定します。

複数のアーカイブ先にアーカイブする手順:

  • LOG_ARCHIVE_DEST_n初期化パラメータを使用して2箇所以上の場所にアーカイブするか、またはLOG_ARCHIVE_DESTおよびLOG_ARCHIVE_DUPLEX_DEST初期化パラメータを使用してプライマリおよびセカンダリのアーカイブ先にのみアーカイブすることを選択します。

ローカル・アーカイブ先の場合、ローカル・ファイル・システムまたはOracle ASMディスク・グループ以外に、高速リカバリ領域にアーカイブできます。データベースは高速リカバリ領域を使用して、バックアップおよびリカバリに関連する様々なファイルを格納し、それらのディスク領域を自動的に管理します。高速リカバリ領域の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

通常、アーカイブ・ログのアーカイブ先はデータベース計画で決定し、データベースのインストール時にアーカイブ先の初期化パラメータを設定します。ただし、ALTER SYSTEMコマンドを使用して、データベースの実行後にアーカイブ先を動的に追加または変更できます。アーカイブ先の変更は、次のログ・スイッチ(自動または手動)で有効になります。

次の表にアーカイブ先の選択肢の要約を示します。この後の各項で、詳細を説明します。

方法 初期化パラメータ ホスト

1

LOG_ARCHIVE_DEST_n

ここで:

nは、1から31の整数です。アーカイブ先の1から10はローカルまたはリモートの場所として使用可能です。11から31はリモートのアーカイブ先としてのみ使用可能です。

ローカル/リモート

LOG_ARCHIVE_DEST_1 = 'LOCATION = /disk1/arc'

LOG_ARCHIVE_DEST_2 = 'LOCATION=/disk2/arc'

LOG_ARCHIVE_DEST_3 = 'SERVICE=standby1'

2

LOG_ARCHIVE_DESTおよび

LOG_ARCHIVE_DUPLEX_DEST

ローカルのみ

LOG_ARCHIVE_DEST = '/disk1/arc'

LOG_ARCHIVE_DUPLEX_DEST ='/disk2/arc'

12.4.1.1 方法1: LOG_ARCHIVE_DEST_nパラメータの使用

LOG_ARCHIVE_DEST_n初期化パラメータを使用して、アーカイブ・ログの別のアーカイブ先を指定できます。

LOG_ARCHIVE_DEST_n初期化パラメータ(nは1から31の整数)を設定して、1から31を指定します。末尾に番号が付いた各パラメータによって、特定のアーカイブ先を一意に識別します。

LOG_ARCHIVE_DEST_nの位置は、次の表に示すキーワードを使用して指定します。

キーワード 意味

LOCATION

ローカル・ファイル・システムの位置またはOracle ASMディスク・グループ

LOG_ARCHIVE_DEST_n = 'LOCATION=/disk1/arc'

LOG_ARCHIVE_DEST_n = 'LOCATION=+DGROUP1/orcl/arc_1'

LOCATION

高速リカバリ領域

LOG_ARCHIVE_DEST_n = 'LOCATION=USE_DB_RECOVERY_FILE_DEST'

SERVICE

Oracle Netのサービス名を介したリモート・アーカイブ。

LOG_ARCHIVE_DEST_n = 'SERVICE=standby1'

LOCATIONキーワードを使用する場合は、次のいずれかを指定します。

  • オペレーティング・システムのローカル・ファイル・システムの有効なパス名

  • Oracle ASMディスク・グループ

  • 高速リカバリ領域を示すキーワードUSE_DB_RECOVERY_FILE_DEST

SERVICEを指定した場合、Oracle Netがスタンバイ・データベースの接続記述子に解決できるネット・サービス名を提供します。この接続記述子には、リモート・データベースへの接続に必要な情報が含まれています。

LOG_ARCHIVE_DEST_n初期化パラメータを使用してアーカイブREDOログ・ファイルのアーカイブ先を設定する手順は、次のとおりです。

  1. LOG_ARCHIVE_DEST_n初期化パラメータを設定し、1から31のアーカイブ先を指定します。たとえば、次のように入力します。
    LOG_ARCHIVE_DEST_1 = 'LOCATION = /disk1/archive'
    LOG_ARCHIVE_DEST_2 = 'LOCATION = /disk2/archive'
    LOG_ARCHIVE_DEST_3 = 'LOCATION = +RECOVERY/orcl/arc_3'
    

    スタンバイ・データベースにアーカイブする場合は、SERVICEキーワードを使用して有効なネット・サービス名を指定します。たとえば、次のように入力します。

    LOG_ARCHIVE_DEST_4 = 'SERVICE = standby1'
    
  2. (オプション)スレッド番号をファイル名の一部に含めるために%tを、ログ順序番号を含めるために%sを、RESETLOGS ID (ub4で表されるタイムスタンプ値)を含めるために%rを使用して、LOG_ARCHIVE_FORMAT初期化パラメータを設定します。ファイル名の左に0(ゼロ)を埋め込むには、大文字(%T%Sおよび%R)を使用します。

    注意:

    LOG_ARCHIVE_FORMATパラメータを指定する場合は、データベースでリセットログID (%r)を指定する必要があります。このパラメータのデフォルトは、オペレーティング・システムによって異なります。

    データベースのインカネーションは、RESETLOGSオプションを指定してデータベースをオープンすると変更されます。%rを指定すると、アーカイブREDOログ・ファイル名からリセットログIDが取得されます。このリカバリ方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

    次に、LOG_ARCHIVE_FORMATの設定例を示します。

    LOG_ARCHIVE_FORMAT = arch_%t_%s_%r.arc
    

    この設定では、スレッド1、ログ順序番号100、101および102、リセットログID 509210197について次のようなアーカイブ・ログが生成されます。リセットログIDが同一の場合は、すべてのファイルが同じデータベース・インカネーションに含まれることを示します。

    /disk1/archive/arch_1_100_509210197.arc, 
    /disk1/archive/arch_1_101_509210197.arc, 
    /disk1/archive/arch_1_102_509210197.arc
    
    /disk2/archive/arch_1_100_509210197.arc, 
    /disk2/archive/arch_1_101_509210197.arc, 
    /disk2/archive/arch_1_102_509210197.arc
    
    /disk3/archive/arch_1_100_509210197.arc, 
    /disk3/archive/arch_1_101_509210197.arc, 
    /disk3/archive/arch_1_102_509210197.arc
    

LOG_ARCHIVE_FORMAT初期化パラメータは無視される場合もあります。このパラメータ詳細は、『Oracle Databaseリファレンス』を参照してください。

12.4.1.2 方法2: LOG_ARCHIVE_DESTおよびLOG_ARCHIVE_DUPLEX_DESTの使用

最大2つのアーカイブ先ディレクトリを指定するには、LOG_ARCHIVE_DESTパラメータを使用して1次アーカイブ先を指定し、必要に応じてLOG_ARCHIVE_DUPLEX_DESTで2次アーカイブ先を指定します。

アーカイブ先は、ローカルである必要があります。データベースでは、REDOログはどちらかのパラメータで指定したすべてのアーカイブ先ディレクトリにアーカイブされます。

方法2を使用する手順は、次のとおりです。

  1. LOG_ARCHIVE_DESTおよびLOG_ARCHIVE_DUPLEX_DESTパラメータにアーカイブ先を指定します(ALTER SYSTEM文を使用して、LOG_ARCHIVE_DUPLEX_DESTを動的に指定することもできます)。たとえば、次のように入力します。
    LOG_ARCHIVE_DEST = '/disk1/archive'
    LOG_ARCHIVE_DUPLEX_DEST = '/disk2/archive'
    
  2. 方法1の手順2で説明したように、LOG_ARCHIVE_FORMAT初期化パラメータを設定します。

注意:

高速リカバリ領域を構成し(DB_RECOVERY_FILE_DESTおよびDB_RECOVERY_FILE_DEST_SIZEパラメータを設定)、ローカル・アーカイブ先を指定しない場合、データベースによって自動的に高速リカバリ領域はローカル・アーカイブ先として選択され、LOG_ARCHIVE_DEST_1USE_DB_RECOVERY_FILE_DESTに設定されます。

警告:

アーカイブ・ログのアーカイブ先に常に十分なディスク領域があることを確認する必要があります。データベースがログ・ファイルをアーカイブする際にディスクが一杯であるというエラーが発生すると、致命的なエラーとなり、データベースが応答しなくなります。アラート・ログでディスクが一杯であるというメッセージを確認できます。

関連項目:

  • REDOログのアーカイブ制御に使用される初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください

  • スタンバイ・アーカイブ先の指定に使用するLOG_ARCHIVE_DEST_n初期化パラメータの使用方法は、『Oracle Data Guard概要および管理』を参照してください。この初期化パラメータには他にも指定できるキーワードがありますが、このマニュアルでは説明されていません。

  • ネット・サービス名および接続記述子についての説明は、『Oracle Database Net Services管理者ガイド』を参照してください。

  • 高速リカバリ領域の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。

12.4.2 ログ・アーカイブ先グループを使用した代替アーカイブ先の拡張

ログ・アーカイブ先グループを使用して、代替アーカイブ先の数を拡張できます。

12.4.2.1 ログ・アーカイブ先グループについて

ログ・アーカイブ先グループで複数のアーカイブ先を指定し、グループ内のアーカイブ先に優先順位を付けることができます。複数のグループを指定して、データベースに対して可能なアーカイブ先の数を拡張できます。

ログ・アーカイブ先グループを指定するには、LOG_ARCHIVE_DEST_n初期化パラメータのGROUP属性を使用します。1つのグループに最大30のログ・アーカイブ先を含めることができます。各グループの1つのメンバーがアクティブであり、他のメンバーはアーカイブ先に障害が発生した場合に使用できます。アーカイブ先が非アクティブになった場合、Oracle Databaseはグループ内に使用可能なアーカイブ先が1つ以上あれば、そのアーカイブ先に切り替えます。PRIORITY属性でアーカイブ先に優先順位を付けることで、最初に使用するアーカイブ先を指定できます。

ログ・アーカイブ先グループは、グループの作成時に指定されるグループ番号で参照されます。最大8つのグループを使用できます。グループ内のREDOデータをアーカイブする場所を指定するには、すべてのログ・アーカイブの保存先にSERVICE属性を指定する必要があります。

グループ内のアーカイブ先に優先順位を付けるには、アーカイブ先のPRIORITY属性を1から8の範囲の整数に設定します。数値が小さいほど優先度が高くなります。優先順位によって、データベースがマウントされたとき、またはアクティブなアーカイブ先に障害が発生したときにグループ内のどのアーカイブ先がアクティブになるかが決まります。たとえば、2PRIORITY値は7PRIORITY値よりも優先順位が高くなります。したがって、グループ内の現在アクティブでPRIORITY値が1のアーカイブ先が非アクティブになった場合、PRIORITY値が2のアーカイブ先は、PRIORITY値が7のアーカイブ先よりも前に使用されます。PRIORITY属性がアーカイブ先に設定されていない場合、デフォルト値は1です。

優先順位は、以前に失敗したアーカイブ先が使用可能になったときにも考慮されます。アクティブなアーカイブ先が失敗し、Oracle Databaseがより低い優先順位のアーカイブ先に切り替えた場合、Oracle Databaseはより高い優先順位のアーカイブ先が再度使用可能になったときに、そのアーカイブ先に切り替えます。たとえば、優先順位が1のアクティブなアーカイブ先が非アクティブになり、Oracle Databaseが優先順位2のアーカイブ先に切り替えた場合、Oracle Databaseは、優先順位2のアーカイブ先に障害が発生していなくても、優先順位1のアーカイブ先が再度使用可能になったときに、そのアーカイブ先に再度切り替えます。

ただし、同じグループに割り当てられた複数のアーカイブ先が同じ優先順位を持つことがあります。たとえば、優先順位が1のアーカイブ先が3つある場合があります。このようなグループでは、アーカイブ先の障害により、同じ優先順位の別のメンバーに切り替えられます。この場合、両方のアーカイブ先が同じ優先順位を持つため、元のアーカイブ先が再度使用可能になったときに、そのアーカイブ先への切替えは行われません。最初のアーカイブ先が再度使用可能になった後で2番目のアーカイブ先に障害が発生した場合、データベースは最初のアーカイブ先またはグループ内の同じ優先順位を持つ別のアーカイブ先に切り替えます。

関連項目:

『Oracle Data Guard概要および管理』

12.4.2.2 ログ・アーカイブ先グループの指定

LOG_ARCHIVE_DEST_n初期化パラメータのGROUP属性を使用して、ログ・アーカイブ先グループを指定します。

最大8つのログ・アーカイブ先グループを作成でき、各グループには最大30のアーカイブ先を指定できます。

ログ・アーカイブ先グループを指定するには、データベースをARCHIVELOGモードで実行する必要があります。
  • LOG_ARCHIVE_DEST_n初期化パラメータを設定し、GROUP属性を含めてログ・アーカイブ先グループを指定します。

    オプションで、PRIORITY属性を含めて、システムの起動時またはアーカイブ先の障害発生時にアクティブにするグループ内のログ・アーカイブ先を指定します。

例12-1 2つのログ・アーカイブ先グループの指定

この例では、2つのログ・アーカイブ先グループ(1および2)を指定します。各グループには3つのログ・アーカイブ先が指定されています。

LOG_ARCHIVE_DEST_1 = 'SERVICE=SITEa VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1'
LOG_ARCHIVE_DEST_2 = 'SERVICE=SITEb VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1'
LOG_ARCHIVE_DEST_3 = 'SERVICE=SITEc VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1'

LOG_ARCHIVE_DEST_4 = 'SERVICE=SITE1 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=2'
LOG_ARCHIVE_DEST_5 = 'SERVICE=SITE2 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=2'
LOG_ARCHIVE_DEST_6 = 'SERVICE=SITE3 VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=2'

例12-2 ログ・アーカイブ先グループ内での優先順位の指定

この例では、単一のログ・アーカイブ先グループ内のアーカイブ先に異なる優先順位レベルを指定します。具体的には、アーカイブ先1および2はどちらも優先順位レベル1で、アーカイブ先3は優先順位レベル2、アーカイブ先4は優先順位レベル3です。

LOG_ARCHIVE_DEST_1 = 'SERVICE=SITE1 SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=1'
LOG_ARCHIVE_DEST_2 = 'SERVICE=SITE2 SYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=1'
LOG_ARCHIVE_DEST_3 = 'SERVICE=SITE3 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=2'
LOG_ARCHIVE_DEST_4 = 'SERVICE=SITE4 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) GROUP=1 PRIORITY=3'

この例で、サイト1、2および3はREDOを転送するだけのOracle Data Guard遠隔同期インスタンス、およびサイト4は実際のリモート・スタンバイ・データベースにすることができます。または、サイト1、2、3および4のすべてをスタンバイ・データベースにして、それらがアクティブな宛先であるときにREDOを他のサイトにカスケードするように構成できます。

次の優先順位のルールに従って処理が行われます。

  • アーカイブ先1とアーカイブ先2はどちらも優先順位レベル1であるため、このどちらかをデフォルトのアクティブなアーカイブにすることができます。

  • アーカイブ先1がアクティブで、その後使用不能になった場合、Oracle Databaseはアーカイブ先2に切り替えます。同様に、アーカイブ先2がアクティブで、その後使用不能になった場合、Oracle Databaseはアーカイブ先1に切り替えます。アーカイブ先1または2がどちらも使用可能な場合、その一方が使用されます。

  • アーカイブ先1とアーカイブ先2の両方が使用不能になった場合は、アーカイブ先3が使用されます。

  • アーカイブ先3がアクティブなときに、アーカイブ先1またはアーカイブ先2が使用可能になった場合、Oracle Databaseは使用可能な優先順位1のアーカイブ先に切り替えます。

  • アーカイブ先1、2および3がすべて使用不能になった場合は、アーカイブ先4が使用されます。

  • アーカイブ先4がアクティブなときにアーカイブ先1、2または3が使用可能になった場合、Oracle Databaseはまず使用可能な優先順位1のアーカイブ先に切り替えて、次に、使用可能な優先順位2のアーカイブ先に切り替えます。

関連項目:

『Oracle Data Guard概要および管理』

12.4.3 アーカイブ先の状態の理解

複数の変数によって、アーカイブ先のステータスが決定されます。

各アーカイブ先は次のような可変特性を持っており、これらの特性によってその状態が決まります。

  • Valid/Invalid: ディスクの位置またはサービス名情報が指定されているかどうか、およびそれらが有効かどうかを示します。

  • Enabled/Disabled: 位置の使用可能状態と、データベースがアーカイブ先を使用できるかどうかを示します。

  • Active/Inactive: アーカイブ先へのアクセスに問題があったかどうかを示します。

これらの特性は、何通りかの組合せが可能です。インスタンスの各アーカイブ先について現在の状態などの情報を取得するには、V$ARCHIVE_DESTビューを問い合せます。

LOG_ARCHIVE_DEST_STATE_n(nは1から31の整数)初期化パラメータを使用すると、指定したアーカイブ先(n)の使用可能状態を制御できます。

  • ENABLEは、アーカイブ先としてデータベースが使用できることを示します。

  • DEFERは、その位置が一時的に使用禁止になっていることを示します。

  • ALTERNATEは、代替アーカイブ先を示します。代替アーカイブ先の使用可能状態はDEFERです。その親アーカイブ先に障害が発生すると、代替アーカイブ先の使用可能状態はENABLEになります。ALTERNATEは、LOG_ARCHIVE_DEST_11からLOG_ARCHIVE_DEST_31のアーカイブ先には指定できません。

12.4.4 代替アーカイブ先の指定

別のアーカイブ先に障害が発生した場合にのみ、ある場所がアーカイブ先になるように指定する場合は、その場所を代替アーカイブ先にできます。ローカルとリモート両方のアーカイブ先を代替アーカイブ先にできます。

次の例では、LOG_ARCHIVE_DEST_4LOG_ARCHIVE_DEST_3の代替アーカイブ先になります。

ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = 'LOCATION=/disk4/arch';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = 'LOCATION=/disk3/arch MAX_FAILURE=1
   ALTERNATE=LOG_ARCHIVE_DEST_4';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_4=ALTERNATE;

SQL> SELECT dest_name, status, destination FROM v$archive_dest;
 
DEST_NAME               STATUS    DESTINATION
----------------------- --------- ----------------------------------------------
LOG_ARCHIVE_DEST_1      VALID     /disk1/arch
LOG_ARCHIVE_DEST_2      VALID     /disk2/arch
LOG_ARCHIVE_DEST_3      VALID     /disk3/arch
LOG_ARCHIVE_DEST_4      ALTERNATE /disk4/arch

12.5 ログ転送モードの概要

アーカイブ・ログをアーカイブ先に転送する場合のモードには、ノーマル・アーカイブ転送およびスタンバイ転送という2つのモードがあります。ノーマル転送では、ファイルはローカル・ディスクに転送されます。スタンバイ転送では、ファイルはネットワークを介してローカルまたはリモートのスタンバイ・データベースに転送されます。

12.5.1 通常転送モード

通常転送モードでは、アーカイブ先はデータベースの別のディスク・ドライブです。

この構成では、アーカイブがインスタンスに必要な他のファイルと競合せず、短時間で完了します。アーカイブ先は、LOG_ARCHIVE_DEST_nまたはLOG_ARCHIVE_DESTパラメータで指定します。

12.5.2 スタンバイ転送モード

スタンバイ転送モードでは、アーカイブ先はローカルまたはリモートのスタンバイ・データベースです。

注意:

ローカル・ディスク上でスタンバイ・データベースをメンテナンスすることも可能ですが、スタンバイ・データベースはリモート・サイトでメンテナンスし、最大限の障害対策を講じることをお薦めします。

関連項目:

  • 『Oracle Data Guard概要および管理』

  • サービス名を使用してリモート・データベースに接続する方法の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください

12.6 アーカイブ先の障害管理

アーカイブ先で発生した障害が、自動アーカイブ・モードで操作している場合のエラー原因となることがあります。Oracle Databaseには、アーカイブ先の障害に関連する問題を最小限に抑えるためのプロシージャが用意されています。

12.6.1 正常なアーカイブ先の最小数の指定

オプションの初期化パラメータ LOG_ARCHIVE_MIN_SUCCEED_DEST=nによって、データベースがオンライン・ログ・ファイルを再利用できるようになるまでにREDOログ・グループを正常にアーカイブすることが必要なアーカイブ先の最小数が決定されます。デフォルト値は1です。nの有効値は、二重化を使用する場合は1から2、多重化を使用する場合は1から31です。

12.6.1.1 必須およびオプションのアーカイブ先の指定

LOG_ARCHIVE_DEST_n初期化パラメータを使用すると、アーカイブ先としてOPTIONAL(デフォルト)またはMANDATORYを指定できます。

  • LOG_ARCHIVE_DEST_n初期化パラメータでアーカイブ先をOPTIONAL (デフォルト)またはMANDATORYに設定します。

LOG_ARCHIVE_MIN_SUCCEED_DEST=nパラメータでは、すべてのMANDATORYアーカイブ先と、非スタンバイのOPTIONALアーカイブ先をいくつか使用して、LGWRがオンライン・ログを上書きできるかどうかが判断されます。以下のルールが適用されます。

  • アーカイブ先としてMANDATORY属性を指定しないと、OPTIONALが指定されます。

  • ローカル・アーカイブ先を少なくとも1つは指定する必要があります。この場合は、OPTIONALまたはMANDATORYを宣言できます。

  • MANDATORY属性は、LOG_ARCHIVE_DEST_1からLOG_ARCHIVE_DEST_10のアーカイブ先にのみ指定できます。

  • LOG_ARCHIVE_MIN_SUCCEED_DESTの最小値は1なので、LOG_ARCHIVE_MIN_SUCCEED_DEST=nの値を指定すると、Oracle Databaseでは、少なくとも1つのローカル・アーカイブ先がMANDATORYとして扱われます。

  • LOG_ARCHIVE_MIN_SUCCEED_DESTには、アーカイブ先の数を超える値や、MANDATORYのアーカイブ先の数とOPTIONALのローカル・アーカイブ先の数との合計を超える値は指定できません。

  • MANDATORYのアーカイブ先にDEFERを指定した場合で、アーカイブ・ログがスタンバイ・サイトに転送されないままオンライン・ログが上書きされるときは、ログを手動でスタンバイ・サイトに転送する必要があります。

アーカイブ・ログを二重化する場合は、LOG_ARCHIVE_DESTおよびLOG_ARCHIVE_DUPLEX_DESTパラメータを使用して、アーカイブ先が必須かオプションかを指定できます。以下のルールが適用されます。

  • LOG_ARCHIVE_DESTによって宣言されたアーカイブ先は必須です。

  • LOG_ARCHIVE_DUPLEX_DESTによって宣言されたアーカイブ先は、LOG_ARCHIVE_MIN_SUCCEED_DEST = 1であればオプション、LOG_ARCHIVE_MIN_SUCCEED_DEST = 2であれば必須です。

12.6.1.2 正常なアーカイブ先の数の指定: 使用例

LOG_ARCHIVE_DEST_nおよびLOG_ARCHIVE_MIN_SUCCEED_DEST初期化パラメータの関係は、使用例を見ると理解しやすくなります。

12.6.1.2.1 オプションのローカル・アーカイブ先へのアーカイブ例

この例では、それぞれOPTIONALとして宣言している3つのローカル・アーカイブ先にアーカイブします。

表12-1に、この場合のLOG_ARCHIVE_MIN_SUCCEED_DEST=nに考えられる値を示します。

表12-1 使用例1のLOG_ARCHIVE_MIN_SUCCEED_DESTの値

意味

1

データベースは、最低1つのOPTIONALのアーカイブ先へのアーカイブに成功した場合のみログ・ファイルを再利用できます。

2

データベースは、最低2つのOPTIONALのアーカイブ先へのアーカイブに成功した場合のみログ・ファイルを再利用できます。

3

データベースは、OPTIONALのすべてのアーカイブ先へのアーカイブに成功した場合のみログ・ファイルを再利用できます。

4以上

エラーです。値がアーカイブ先数を超えています。

この例は、LOG_ARCHIVE_DEST_nパラメータを使用してアーカイブ先を明示的にMANDATORYに設定していない場合でも、LOG_ARCHIVE_MIN_SUCCEED_DESTが1、2または3に設定されていれば、データベースは必ずこれらの位置の1つ以上に正常にアーカイブすることを示しています。

12.6.1.2.2 必須およびオプションのアーカイブ先へのアーカイブ例

この例では、MANDATORYおよびOPTIONALのローカル・アーカイブ先にアーカイブします。

次のような状況を考えてみます。

  • MANDATORYのアーカイブ先は2つ指定されている。

  • OPTIONALのアーカイブ先は2つ指定されている。

  • アーカイブ先は、いずれもスタンバイ・データベースではない。

表12-2に、LOG_ARCHIVE_MIN_SUCCEED_DEST=nに考えられる値を示します。

表12-2 使用例2のLOG_ARCHIVE_MIN_SUCCEED_DESTの値

意味

1

データベースは、この値を無視してMANDATORYのアーカイブ先の数(この例では2)を使用します。

2

データベースは、OPTIONALのアーカイブ先へのアーカイブに失敗しても、ログ・ファイルを再利用できます。

3

データベースは、最低1つのOPTIONALのアーカイブ先へのアーカイブに成功した場合のみログを再利用できます。

4

データベースは、OPTIONALのアーカイブ先へのアーカイブに両方とも成功した場合のみログを再利用できます。

5以上

エラーです。値がアーカイブ先数を超えています。

この例は、アーカイブ先が少なくなるようにLOG_ARCHIVE_MIN_SUCCEED_DESTを設定した場合でも、データベースはその設定とは無関係に、MANDATORYとして指定されているアーカイブ先に必ずアーカイブすることを示しています。

12.6.2 障害アーカイブ先への再アーカイブ

LOG_ARCHIVE_DEST_nパラメータのREOPEN属性を使用して、エラーの発生後にARCnが障害アーカイブ先への再アーカイブを試行するかどうかと、その時期を指定します。REOPENは、OPENエラーのみでなく、すべてのエラーに適用されます。

REOPEN=nでは、ARCnが障害アーカイブ先の再オープンを試行するまでの最小秒数を設定します。nのデフォルト値は300秒です。値に0(ゼロ)を指定すると、REOPEN属性はオフになり、ARCnは障害発生後にアーカイブを試行しません。REOPENキーワードを指定しない場合、ARCnはエラー発生後にアーカイブ先を再オープンしません。

REOPENを使用して、ARCnが再接続とアーカイブ・ログ転送を試行する回数を指定することはできません。REOPENは成功または失敗で終了します。

OPTIONALアーカイブ先にREOPENを指定すると、データベースはエラーがある場合にオンライン・ログを上書きできます。MANDATORYのアーカイブ先にREOPENを指定すると、正常にアーカイブできない場合に本番データベースの機能が停止します。この状況では、次の方法を検討してください。

  • 障害アーカイブ先に手動でアーカイブする。

  • アーカイブ先を遅延させる、アーカイブ先をオプションとして指定する、サービスを変更するのいずれかの方法によってアーカイブ先を変更する。

  • アーカイブ先を削除する。

REOPENキーワードを使用する場合は、次の点に注意してください。

  • ARCnは、ログ・ファイルの先頭からアーカイブ操作を開始する場合にのみ、アーカイブ先を再オープンし、実行中の操作の途中で再オープンすることはありません。ARCnは、常に先頭からログ・コピーを再試行します。

  • 特定の時間またはデフォルト設定でREOPENを指定した場合、ARCnは記録されたエラー発生時刻からREOPEN間隔が経過した時刻が現在時刻より前かどうかをチェックします。現在時刻より前であれば、ARCnはログ・コピーを再試行します。

  • REOPEN句は、ACTIVE=TRUEのアーカイブ先状態に影響を及ぼします。VALIDおよびENABLED状態は変化しません。

    ここは間違っています。アーカイブ先は非アクティブ、有効または無効になります。ACTIVEステータスはありません。そのため、「REOPEN句はアーカイブ先ステータスをVALIDに設定する」とする必要があると思われます。DL

12.7 ARCHIVELOGプロセスによって生成されるトレース出力の制御

バックグラウンド・プロセスは適宜、トレース・ファイルに情報を書き込みます。ARCHIVELOGプロセスの場合は、トレース・ファイルに書き込む出力を制御できます。

archivelogプロセス用のトレース・ファイルに生成される出力を制御する方法:

  • LOG_ARCHIVE_TRACE初期化パラメータを設定してトレース・レベルを0、1、2、4、8などに指定します。

パラメータ値として、必要な各トレース・レベルの合計を設定することにより、トレース・レベルを組み合せることができます。たとえば、LOG_ARCHIVE_TRACE=12に設定すると、トレース・レベル8および4の出力が生成されます。また、プライマリ・データベースとスタンバイ・データベースには、異なる値を設定できます。

LOG_ARCHIVE_TRACEパラメータのデフォルト値は0(ゼロ)です。このレベルでは、エラー条件が発生すると、ARCHIVELOGプロセスによって適切なアラートおよびトレース・エントリが生成されます。

このパラメータの値は、ALTER SYSTEM文で動的に変更できます。例:

ALTER SYSTEM SET LOG_ARCHIVE_TRACE=12;

この方法で行った変更は、次回のアーカイブ操作の開始時に有効になります。

関連項目:

12.8 アーカイブREDOログに関する情報の表示

アーカイブREDOログに関する情報を表示するには、動的パフォーマンス・ビューまたはARCHIVE LOG LISTコマンドを使用します。

12.8.1 アーカイブREDOログ・ファイルのビュー

アーカイブREDOログ・ファイルに関する情報を動的パフォーマンス・ビューのセットに問い合せることができます。

アーカイブREDOログ・ファイルに関して役立つ情報を含む動的パフォーマンス・ビューがいくつかあります。次の表に要約を示します。

動的パフォーマンス・ビュー 説明

V$DATABASE

データベースがARCHIVELOGモードとNOARCHIVELOGモードのいずれであるか、およびMANUAL(アーカイブ・モード)が指定されているかどうかが表示されます。

V$ARCHIVED_LOG

制御ファイルに格納されたアーカイブ・ログ履歴情報が表示されます。リカバリ・カタログを使用している場合は、RC_ARCHIVED_LOGビューにも同様の情報が含まれます。

V$ARCHIVE_DEST

現行インスタンス、すべてのアーカイブ先、各アーカイブ先の現行の値、モードおよび状態が表示されます。

V$ARCHIVE_PROCESSES

インスタンスの各アーカイブ・プロセスの状態情報が表示されます。

V$BACKUP_REDOLOG

アーカイブ・ログのバックアップ情報が含まれます。リカバリ・カタログを使用している場合は、RC_BACKUP_REDOLOGビューにも同様の情報が含まれます。

V$LOG

データベースのREDOログ・グループをすべて表示し、その中でアーカイブする必要があるグループを示します。

V$LOG_HISTORY

アーカイブ済ログや各アーカイブ・ログのSCN範囲などのログ履歴情報が含まれます。

たとえば、次の問合せでは、アーカイブする必要があるREDOログ・グループが表示されます。

SELECT GROUP#, ARCHIVED
   FROM SYS.V$LOG;

GROUP#     ARC
--------   ---
       1   YES
       2   NO

現行のアーカイブ・モードを確認するには、V$DATABASEビューを問い合せます。

SELECT LOG_MODE FROM SYS.V$DATABASE;

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

12.8.2 ARCHIVE LOG LISTコマンドの使用

SQL*PlusコマンドのARCHIVE LOG LISTを使用して、接続されているインスタンスのアーカイブ情報を表示します。

例:

SQL> ARCHIVE LOG LIST

Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            D:\oracle\oradata\IDDB2\archive
Oldest online log sequence     11160
Next log sequence to archive   11163
Current log sequence           11163

この表示は、現行インスタンスのアーカイブREDOログの設定に関して必要なすべての情報を示します。

  • このデータベースは現在ARCHIVELOGモードで操作されています。

  • 自動アーカイブは使用可能です。

  • アーカイブREDOログのアーカイブ先は、D:\oracle\oradata\IDDB2\archiveです。

  • 一杯になったREDOログ・グループのうち、最も古いものの順序番号は11160です。

  • 一杯になったREDOログ・グループのうち、次にアーカイブされるものの順序番号は11163です。

  • 現行のREDOログ・ファイルの順序番号は11163です。

関連項目:

ARCHIVE LOG LISTコマンドの詳細は、『SQL*Plusユーザーズ・ガイドおよびリファレンス』を参照してください