1日に1回再起動するシステムでトランザクションログファイルが肥大化した(ファイル管理トラブル):SQL Serverトラブルシューティング(59)(1/2 ページ)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「トランザクションログファイルが肥大化したトラブルの解決策」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
トラブル 48(カテゴリー:ファイル管理トラブル):トランザクションログファイルの肥大化
「Windows Server 2012 R2」上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します。
トラブルの実例:1日に1回再起動するシステムで、システムドライブ枯渇のアラートが上がった。
トランザクションログが肥大化したことでサーバのストレージを圧迫していることは分かったが、なぜ肥大化したのかが分からない。
トラブルの原因を探る
サーバのWindowsエクスプローラから、SQL ServerのModelデータベースのトランザクションログファイルが肥大化していることを確認できました。しかし、このシステムでModelデータベースに対する変更は長らく行っていません。なぜ肥大化してしまうのか、この原因を探りましょう。
トランザクションログファイルは、データベースに対する変更履歴を記録する重要なファイルです。ただModelデータベースは、ユーザーデータベースの元になるデータベースなので、通常は変更が行われるものではありません。
今回は「DBCC LOG(*)」と呼ばれるコマンドを使い、トランザクションログの中を調査してみます。文法は「DBCC LOG(‘データベース名’)」です(図1)。
(*)注:DBCC LOGは一般には公開されていないコマンドのため、サポートの対象外になります。利用時にはテスト環境で動作確認をしてください
DBCC LOGの出力結果によって、まず、トランザクションログには「CHECKPOINT」の記録があることが分かりました。CHECKPOINTとは、SQL Serverがバッファー上のデータをデータファイルに書き出すことによってデータの整合性を保つための処理のことです。そして、このCHECKPOINTはSQL Serverが再起動されたタイミングで発生していました。
一方、Modelデータベースの復旧モデルは、規定では完全です(図2)。完全復旧モデルのデータベースは、一度完全バックアップを取得すると、その後トランザクションログはトランザクションログのバックアップをしない限り履歴を記録し続けます。
つまり、今回のトラブルは次の2つの条件が重なったことで発生していました。
- Modelデータベースに対して「完全バックアップ」をしたことがある
- 再起動を繰り返す運用ルーティンによって、トランザクションログファイルにCHECKPOINTが記録される
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
パブリックプレビューが公開されているマイクロソフトのRDB次期版「SQL Server 2016」。特徴の1つとするセキュリティ対策機能のポイントと目指すところをキーパーソンに聞いた。 - そもそも、リレーショナルデータベースとは何か?
データベースを基礎から勉強し理解を深めていくことは簡単なことではありません。本連載では、データベースに対するハードルを少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。今回は、データベースの役割と、それを管理するソフトウェアであるDBMSの基本機能について解説します。【更新】 - データの登録を行うINSERT文
- 複数の条件を指定してSELECT文を実行する
前回は、SELECT文の初歩の初歩を解説しました。今回は、複数の条件を指定して、目的のデータを取り出す方法を解説します(編集部) - Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。