SAP HANAログボリュームの縮小

ブログ記事 「 SAP HANAデータファイルの縮小 」 では、SAP HANAデータベースのデータボリューム ( データファイル ) の断片化を解消し、ファイルを縮小する方法をご紹介しました。
今回は、SAP HANAのログボリュームを縮小する方法をご紹介します。
最初にログボリュームはデータボリュームと異なり、自動で縮小 ( 再利用 ) してくれる機能はないようです。
ログボリュームはログセグメントと呼ばれるファイルから構成されています。( データボリュームはSAP HANAサービスごとに1つのファイルが作成されます )
ログセグメントの1ファイルのサイズは、デフォルトでは1,024MB ( 1GB ) となります。
ログボリュームが大きくなると、1GBのログセグメントファイルが追加されていることになります。
◆ ログボリュームのサイズ確認方法
ログボリュームのサイズおよびログセグメントは、以下で確認することができます。
(1) ログボリュームのサイズ
① HANA Studio ( Administration Console -> Overview )
※対象データベースで確認

② SAP GUI ( Trcd:DBACOCKPIT -> 現在のステータス -> 概要 )

(2) ログセグメントの一覧
① HANA Studio ( Administration Console -> Volumes )
※対象データベースで確認

ログセグメントの状態は、以下のどれかになります。

ログボリュームはログセグメントの状態が「 Free 」のファイルがなくなると、新しくログセグメント ( ファイル ) を作成し、新しいログセグメントに書き込みします。
ログセグメントはログボリューム ( /hana/log ) 領域のディスクサイズまで追加で作成していきます。
Freeのログセグメントがなく、ログボリュームの領域に空がないと、新しくログセグメントを作成することができなくなります。ログボリュームが拡張できなくなると、SAP HANAを起動できないか、新規要求の受付できなくなります。
( ログボリュームの空がなくても、Freeのログセグメントがある場合は、新規要求を受付ることが可能です。 )
◆ ログボリュームが満杯になる理由
再利用できるログセグメントおよびログボリューム領域の空がなくなり、ログボリュームが満杯になるのは、一般的に以下のケースで発生することがあります。
① 大量のデータ挿入・削除および、アーカイブなどによるデータ削減
② セーブポイントのスタック
③ ログバックアップが実行されていないか失敗している
<参考>
SAP Note 2083715 – Analyzing log volume full situations
SAP Note 2409471 – SAP HANA Log Volume Full on Secondary or Tertiary Site with System Replication
◆ ログボリュームの縮小
基本的にログボリュームが満杯になる原因を特定して解消させる必要がありますが、今回は「 Free 」のログセグメントが大量に存在して、ログボリューム領域 ( /hana/log ) のディスクを圧迫している場合の解消方法をご紹介します。
「 Free 」 のログセグメントは再利用可能なログセグメントのため、削除することが可能となります。このため、ログセグメントを削除することでログボリュームを縮小することが可能となります。
※注:ログセグメントのファイルは、OS上から物理的に削除してはいけません。OS上から物理削除すると不整合が発生します。
「 Free 」 のログセグメントの削除は、データボリュームの縮小と同じく、データベースに対してRECLAIMコマンドを実行することで、ログセグメントファイルを削除することができます。
<コマンド>
ALTER SYSTEM RECLAIM LOG

<参考>
SAP Note 2083715 – Analyzing log volume full situations
SAP Help – ALTER SYSTEM RECLAIM LOG Statement (System Management)
RECLAIMコマンドを実行することで、「 Free 」 のログセグメントが削除されて、ログボリュームが小さくなります。
なお、「 Free 」 のログセグメントが全て削除される訳ではありません。各SAP HANAサービスで1つ次に書き込みするためのログセグメントが残ります。

◆ 注意点
データボリュームと同じく、SAP HANA System Replication構成の場合にセカンダリサイトのログボリュームが満杯になる可能性があります。
セカンダリサイトのログボリュームが満杯になった場合は、データボリュームの時と同じく、セカンダリサイトのレプリケーションを解除して、プライマリサイトでRECLAIMコマンドを実行する。その後、セカンダリサイトへフルデータロードを実施して、ログボリュームを初期化することで解消されます。
SAP Note 2821539 – Volume /hana/log is full with log segments in status RetainedFree
SAP Note 2409471 – SAP HANA Log Volume Full on Secondary or Tertiary Site with System Replication