Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Emma

ALTER SYSTEM ARCHIVE LOGとは何か

Oracleにおいて、ALTER SYSTEM ARCHIVE LOGコマンドはアーカイブログ処理を手動制御するために使用します。オプションに応じて、現行REDOログのアーカイブ強制、滞留したREDOログの一括アーカイブ、アーカイブプロセスの制御などを実行可能です。

自動アーカイブを有効化している場合でも、バックアップ実行前、リカバリ作業後、アーカイブログのギャップ解消時などに管理者が手動でログをアーカイブする必要が生じることがあります。

ALTER SYSTEM ARCHIVE LOGとは

ALTER SYSTEM ARCHIVE LOG CURRENTまたはALTER SYSTEM ARCHIVE LOG ALLを使用する前提として、データベースがARCHIVELOGモードで起動している必要があり、実行ユーザーにはSYSDBAまたはSYSOPER権限が必須です。

現在のアーカイブモードは下記コマンドで確認できます:SELECT LOG_MODE FROM V$DATABASE; または ARCHIVE LOG LIST;

コマンド概要

OracleのALTER SYSTEM ARCHIVE LOGには複数オプションが存在しますが、実務で頻出するのはCURRENTALLSTOPの3種類です。

各コマンドの動作と利用シナリオを下表にまとめます:

コマンド 同期実行 ログスイッチ発生 RAC適用範囲 推奨利用場面
ARCHIVE LOG CURRENT Y Y 全ノード RMANバックアップスクリプト
ARCHIVE LOG ALL Y N 全スレッド ログギャップ解消 / リカバリ後処理
ARCHIVE LOG STOP 非推奨:廃止予定コマンド

ALTER SYSTEM ARCHIVE LOG CURRENT:RMANバックアップに最適な安全なコマンド

ALTER SYSTEM ARCHIVE LOG CURRENTはバックアップ業務の標準コマンドです。実行するとアクティブなREDOログの強制スイッチを行い、アーカイブ処理完了後にセッション制御が戻ります。

本コマンドは同期実行となり、Oracleがアーカイブファイルをディスクに完全書き込むまで次の処理に進まない仕様です。この特徴により、バックアップスクリプト内で安定して使用でき、REDOデータが確実にアーカイブされた状態で後続処理を実行できます。

構文とRAC環境での動作

スタンドアロン環境での基本構文は以下の通りです:

ALTER SYSTEM ARCHIVE LOG CURRENT;

RAC(Real Application Clusters)環境の場合、1インスタンスから本コマンドを実行すると、全稼働ノードの全REDOスレッドに対しログスイッチとアーカイブが実行されます。特定のインスタンスのみを対象にする場合はTHREADパラメータを使用します。

-- スレッド2のREDOログを強制アーカイブ

ALTER SYSTEM ARCHIVE LOG CURRENT THREAD 2;

特定インスタンスを指定したALTER SYSTEM ARCHIVE LOG CURRENT

SWITCH LOGFILEより安全な理由

バックアップスクリプトで誤ってALTER SYSTEM SWITCH LOGFILEを使用するケースが多発します。こちらもログスイッチは発生しますが非同期処理のため、ARCnプロセスがアーカイブファイルの書き込みを完了する前にセッション制御が即時戻ります。

この状態でRMAN処理を続行すると、対象アーカイブファイルが未作成のためRMAN-06054ORA-00279といったエラーが発生します。古いスクリプトでは回避策としてSLEEP 60による待機処理を挿入していますが、安定性に欠けます。ALTER SYSTEM ARCHIVE LOG CURRENTはアーカイブ完了まで待機するためこの問題を根本的に解消します。

Oracle公式ドキュメントではホットバックアップ実行時に本コマンドを2回実行することを推奨しています。バックアップ開始前と完了後にそれぞれ実行することで、バックアップ実行期間中に生成されたすべてのREDOデータがリカバリ用セットに含まれる保証が得られます。

ALTER SYSTEM ARCHIVE LOG ALL:アーカイブログ滞留時に使用

ALTER SYSTEM ARCHIVE LOG ALLは書き込み完了済みだが未アーカイブのREDOロググループを一括でアーカイブします。ARCHIVE LOG CURRENTと異なりアクティブログの強制スイッチは行わず、閉鎖済みのログのみ全有効スレッド分走査してアーカイブ処理を実行します。

自動アーカイブ処理の遅延や一時的な停止が発生し、ログが滞留した際に適切な対処手段となります。

CURRENTオプションとの核心的な違い

最大の差異はログスイッチの有無です。ARCHIVE LOG CURRENTは即時に新しいREDOログへ切り替えるのに対し、ARCHIVE LOG ALLは既にクローズされた古いログのみ処理します。アクティブなREDOログの使用量が50%程度の状態でも本コマンドは影響を与えません。

本コマンドを使用する代表的場面

実務で主に3つのシナリオで活用されます。

  • アーカイブ処理障害復旧後:アーカイブ先ディスクの容量枯渇によりアーカイバーが停止した場合、容量確保後に本コマンドを実行することで滞留ログを一括書き出し可能
  • Data Guardのログギャップ解消:スタンバイDBにREDOデータの欠損が生じた際、プライマリ側で実行し全完了ログを転送可能な状態に整備
  • インスタンスリカバリ完了後:リカバリ処理後に手動で滞留アーカイブを処理し、通常運用再開前に最新データを安全に保存

実行時に出力される標準メッセージ ORA-00271

全ログが正常にアーカイブ済みの状態で本コマンドを実行すると下記メッセージが返却されます。

ORA-00271: no logs need archiving

こちらはエラーではなく正常ステータス通知です。出力された場合、バックグラウンドのアーカイバーが正常稼働し滞留ログが存在しないことを意味します。

パフォーマンスに関する注意点

複数のREDOログを一括アーカイブする処理は短期間だがI/Oサブシステムに高負荷をかけます。可能な限り業務負荷の低い時間帯に実行し、業務トランザクションとディスク帯域を奪い合わないよう調整してください。

ALTER SYSTEM ARCHIVE LOG STOP:廃止コマンド、実行するとDBが停止する危険性

ALTER SYSTEM ARCHIVE LOG STOPは旧世代のレガシーコマンドで、最新のデータベース運用では使用すべきではありません。Oracle9i以前ではARCHIVE LOG STARTと組み合わせARCnバックグラウンドプロセスを手動制御するために活用されていました。Oracle10gより廃止予定となり、新しいバージョンでは文法上実行可能ですが重大なリスクを伴うため禁止推奨です。

期待通り動作しない理由

本コマンドを実行するとOracleはアーカイバープロセスを停止し、REDOデータのアーカイブ先への書き出しを中断します。一方、データベースはトランザクションの記録をオンラインREDOログに継続して書き込み続けます。

全REDOロググループが満杯になった時点で、新規変更点を書き込む場所が存在しなくなります。DBはARCHIVELOGモードのままアーカイブ処理が停止しているため全業務を無期限に一時停止します。復旧手段はアーカイブを再開するかインスタンスをシャットダウンする以外に存在しません。

唯一の緊急利用ケース

DBAがやむを得ず使用する極限の緊急時が1つだけ存在します。アーカイバープロセスが完全にハングアップしシステムレベルでI/Oロックが発生した場合、ARCHIVE LOG STOPでプロセスを強制終了します。実行後は即時SHUTDOWN ABORTを実行し、更なる不安定化を防止する必要があります。

最新版での正しい代替手段

アーカイブ機能を無効化したい場合はSTOPコマンドを使用せず、データベースのログモードを直接変更する安全な手順を実施します。

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER DATABASE NOARCHIVELOG;

ALTER DATABASE OPEN;

ARCHIVE LOG STOPの代替手順

上記手順は制御ファイルに設定を反映し、バックグラウンドのアーカイバープロセスを安全に停止させ、予期せぬDBハングのリスクを回避します。

頻出エラーと解決方法

適切に運用されている環境でも、アーカイブ処理が起因となるDB停止エラーが発生する場合があります。各エラーコードの意味を把握することで速やかに障害を復旧し通常運用に戻せます。

ORA-00257:アーカイバーエラー – 空き容量確保までSYSDBA以外は接続不可

最も頻出するアーカイブ関連エラーです。Flash Recovery Area(FRA)を代表とするアーカイブ先ディスクの容量が枯渇した際に発生します。新規REDOデータの保存先がなくなるため、管理者以外のDB接続を一時遮断し障害拡大を抑止する仕様です。

調査・復旧手順は以下の通りです。

  1. V$RECOVERY_FILE_DESTビューから領域使用状況を確認
  2. RMANを使用し不要なアーカイブログを削除:DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';
  3. 容量逼迫が解消しない場合はdb_recovery_file_dest_sizeパラメータを拡張するか、セカンダリアーカイブ先を追加設定

ORA-00271:アーカイブが必要なログなし

ALTER SYSTEM ARCHIVE LOG ALL実行時、全完了REDOログが既にアーカイブ済みの場合に出力されます。対応作業は不要で、アーカイバーが正常稼働し滞留ログがないことを示します。

ORA-16038:ログシーケンスのアーカイブに失敗

アーカイブ先へのI/O障害または設定不備によりファイル書き込みが失敗するエラーです。主な原因は下記3点です。

  • アーカイブディレクトリのアクセス権限不備
  • ディスクまたはパーティションのオフライン
  • LOG_ARCHIVE_DEST_nに不正なパスが設定されている

RMAN-06054 / ORA-00279

RMANバックアップスクリプト内でALTER SYSTEM SWITCH LOGFILEを使用すると頻発します。非同期処理のためアーカイブ完了前にRMANがログのバックアップを試行することが原因です。前述の同期処理コマンドALTER SYSTEM ARCHIVE LOG CURRENTに置き換えることで完全に解消できます。

i2BackupによるOracleアーカイブログ保護の自動化

アーカイブログを手動管理することでDBのリカバリ性は維持できますが、人的リスクが常に伴います。アーカイブ先の容量オーバーはORA-00257を引き起こしユーザー接続を遮断し、ログギャップの放置はData Guardスタンバイとの不整合を生みます。またバックアップ時間帯にアーカイブ処理が停止するとRMANジョブが予期せず失敗する恐れがあります。これらは本番Oracle環境で頻発する課題です。

専用バックアップソリューションを導入することで運用負荷を大幅に削減可能です。i2Backupは人的操作を最小限に抑えOracle環境を保護するために開発されたエンタープライズ向けバックアッププラットフォームです。

i2Backupの主要機能

  • リアルタイム・定時データベースバックアップ:REDOログ・アーカイブログを連続的に取得し、OracleデータベースのほぼゼロRPOを実現。スタンドアロン、RAC、ADGクラスタ環境に対応し、フルDBリストアを行わず任意のログ時点までの時点リカバリが可能
  • 自動化されたバックアップワークフロー:一度設定すると1時間/毎日など任意の間隔でバックアップタスクを自動実行。手動でアーカイブコマンドを実行したりログ取得状況を監視する必要がなく、スケジューリング・クリーンアップ・保存ルール管理を全自動処理
  • スマートな保存ルールとストレージ管理:事前定義した保存ポリシーに基づき古いバックアップを自動削除。本番環境で最も多発するORA-00257の原因となるアーカイブ先容量枯渇を事前防止。ローカルディスク、NAS、テープライブラリ、オブジェクトストレージなど多種の保存先に対応
  • 改ざん不能な安全なバックアップ:データ転送・保存時にAES/SM4暗号化を適用。WORM(一度書き込み複数回読み出し)ストレージに対応し、作成後のバックアップファイルの変更・削除を禁止。コンプライアンス要件のある環境に最適
  • 一元監視とアラート通知:Web管理コンソールからバックアップタスク状況、ログ取得進捗、障害発生をリアルタイムで確認可能。メール・SMSアラートにより障害発生時に即時管理者へ通知、リカバリ目標への影響を事前回避

定時バックアップではなく常時データ保護が必要な環境にはi2CDPが最適で、バイト単位でデータ変更をリアルタイムレプリケートしRPOを限りなくゼロに抑えます。Oracleインスタンス間の高可用性・自動フェイルオーバーが必要な場合はi2Availabilityがサブ秒単位の切り替えに対応し、プライマリ環境障害時でも業務を継続します。

これらのソリューションを組み合わせることで、日常的なアーカイブログ管理からサイト間災害リカバリまでOracleデータ保護の全要件をカバーできます。下記ボタンより上記製品の60日間無料トライアルを申し込めます。

60日間無料トライアル

まとめ

本ガイドで解説した3種類のアーカイブログコマンドはそれぞれ役割が明確に分かれており、誤ったタイミングで使用すると重大な影響が発生します。ARCHIVE LOG CURRENTはアーカイブ完了まで待機する安定仕様のためバックアップスクリプトに最適、ARCHIVE LOG ALLはログ滞留時の一括処理用、ARCHIVE LOG STOPはほぼ全ての状況で使用を避けるべきで、最新Oracle環境では予期せぬDB停止を引き起こす危険なコマンドです。

日常運用ではORA-00257、ORA-16038などの頻出エラーの知識と組み合わせることで、ユーザー業務に影響を与える前に障害を速やかに復旧可能です。

一方、手動によるアーカイブログ管理には限界が存在します。本番Oracle環境を運用する場合はInfo2softのi2Backupのような専用ソリューションでバックアップスケジュール、保存ルール、ログ取得処理を自動化することで人的ミスのリスクを低減し、担当者の手作業に依存せず安定的にリカバリ目標を維持できます。

概要は準備中です

関連記事

MySQL対Oracle:パフォーマンス、構文、コスト、利用事例の比較
MySQLとOracleの選択にお悩みですか。本ガイドではパフォーマンス、構文、コスト、利用事例における主要な違いを解説し、ニーズに最適なデータベースを選定するお手伝いをします。
記事を読む
【3つの方法】Oracleデータベースへ接続する手順
Oracleデータベースへの接続方法は使用するツールや環境によって異なります。本ガイドでは代表的な3種類の接続手法を記載し、Oracleデータベース接続時に発生する一般的なエラーのトラブルシューティング方法を解説します。
記事を読む
2026年VMware監視ガイド:ツール、指標、パフォーマンス
最新のVMware環境はこれまで以上に複雑化し、管理コストも増大しています。本ガイドでは、VMwareのパフォーマンスを効率的に監視する方法、重要な監視指標、インフラストラクチャに適した監視ツールの選定方法について解説します。
記事を読む
Oracleデータベースの削除手順:安全作業完全ガイド
OracleのDROP DATABASEは恒久的な操作であり、データファイル、制御ファイル、REDOログを削除します。本ガイドでは、構文、前提条件、SQLおよびDBCAによる実行手順、一般的なエラー、代替手段、データベース削除前のデータ保護について解説します。
記事を読む
目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}