第18回:現役DBAが解説 ~運用保守編~ Oracle Databaseのアーカイブログの運用について

第18回:現役DBAが解説 ~運用保守編~ Oracle Databaseのアーカイブログの運用について

技術者向け・データベースの技術情報発信

皆様こんにちは。DBコンサルティング部の中山です。今回は、実際に保守しているOracle Databaseのアーカイブログ領域をパンクさせないための取り組みをご紹介したいと思います。

目次

アーカイブログとは

はじめに、アーカイブログについて簡単にご説明します。

アーカイブログとは、データベースがアーカイブログモードである場合に出力される更新履歴が記録されたログのことです。データ更新が多いほど出力されます。
※厳密にはREDOログがアーカイブされたものですが、REDOとの関係は今回は割愛します。

多くの本番・商用環境では、リカバリする際に可能な限り障害発生前まで戻すというケースが想定されているため、アーカイブログモードでの運用が採用されています。

アーカイブログ出力について

出力先、フォーマットはデータベースのパラメータで設定できます。大半の環境ではデータベースバックアップの際に、アーカイブログも同時にバックアップして削除する構成になっているかと思いますが、それ以外では基本的に蓄積され続けます。つまり、大量のデータ更新が発生した場合、出力先の領域がパンクする可能性があります。

領域がパンクすると、アーカイブログが出力できなくなり、内部接続(sysdba)を除いてデータベースへ接続できなくなり、バッチ処理やジョブが異常終了し、最悪サービスが停止します。

領域をパンクさせないために

本題に移りますが、私達が実際に運用している環境では以下の対策を講じています。

Oracle Enterprise Manager Cloud Controlによる出力先Disk Groupの領域監視

急激なログ出力が発生する様なデータ更新は、強制中止したところでログ出力はすぐには止まらないケースがほとんどです(内部処理が蓄積されているため)。

そのため、警告・クリティカルの2段階設定をしており、50%を警告閾値としています。
※警告閾値を超過した時点でメール送付される仕組みにしています。

アーカイブログ単体を退避する手順を準備している

「退避しなければ領域がパンクする」という場合に備え、アーカイブログ一覧の取得からRMANによる退避コマンドの自動生成までを記載した手順書を準備しています。この場合、退避先の領域を予め確認しておく必要があります。

<参考までに> Linux環境 2ノードRAC構成

退避先フォルダ /home/oracle
Thread(1or2) 1
SEQ(始) 10
SEQ(終) 19

この図の様に退避先フォルダ、スレッド番号、シーケンス番号を入力すれば式を埋め込んだbackupコマンドが自動生成されます。

(できれば)アプリ会社の定例会議にDBAが参加する

事前にデータ更新タイミングが分かれば監視体制を取れるので、領域パンクのリスクは減ります。ですが、全ての会議に参加するのは現実的ではないので、データ洗い替えや新機能リリースなどでデータ投入等の作業がある場合はDBAに連携して頂くようにDBAからアプリ会社へアナウンスしています。

最後に

手順書があったことで急なログ出力に対処できた実績もありました。アーカイブログ運用に限ったことではありませんが、サービス停止に直結しかねないので、普段から監視するような仕組みや急なログ出力にも対応できる準備を予め整えておくことをお勧めいたします。